ハトネコエ Web がくしゅうちょう

プログラミングやサーバー・Web制作、チームマネジメントなど得た技術のまとめ

はじめてで♥ドキドキ☆の AWS の感想

Amazon Web Services、略してAWS、なんだか難しそう〜なイメージあって手が出せていなかったのですが、
最近サーバーの設定とかにも少しずつ興味出てきたので、おそるおそる触ってみることにしました。

先達はあらまほしきことなり(教えてくれる人ほしいよぉ…)って感じですが、調べながらがんばろう……。

ところで最近Markdownで記述する機会が多くて、久々にはてな記法使おうとしたら戸惑いますね。
改行のときにスペース入れるのが地味にめんどいけど、今日からMarkdown記法で書いていこうっと。

1. まず AWS にどんなサービスがあるか見た

「AWS is 何」を3行でまとめてみるよ - Qiita
親切すぎることにここで解説してくれています。

真面目に全部理解しようとすると脳が焼き切れそうだったので、
前半部分を重点的になんとなーくの理解をして、あとは理解できなくともとりあえずやってみることにしました。

2. アカウント取得

Amazonのアカウント持っていればいい話なのでここは難なくクリア。

Amazon.co.jp でなくて Amazon.com のアカウントが必要ですので、持っていない人は取得必要になると思われー

3. チュートリアルインスタンス作成

親切なことにAmazon先生がチュートリアルを用意してくれています。

https://aws.amazon.com/jp/start-now/

最初に必要になる、Amazon EC2によるインスタンス(1つのサーバー)の作成方法がていねいに書かれていますのでこれで出来ました。

まあ、ただ、ハマりどころはあります。

3-a. リージョンに注意

f:id:nekonenene:20160817050044p:plain

ここ、今は「東京」の設定になっていますが、最初は「バージニア」でした。
チュートリアル進めてる途中で、Amazonのドキュメント読んでリンク飛んだらリージョン(地域設定)が「オレゴン」に変わってて、
「あれ? 私の作ったインスタンスがない? どこ?」ってなりました。

リージョンごとに設定は全く引き継がれないんですね。

当然、東京のサーバー使うのがアクセス段違いに速いですから(光回線でも海を越えて往復するのは時間かかるわけなので)
チュートリアルを始める前に右上のリージョン設定が「東京」になっているかは確認しておくと良いかと思います。

いちおう、リージョンによってはまだ提供されていないサービスがあったりしますが、東京はわりと手厚く、
たいていのサービスが提供されていますので迷うことはないかと。

なお、リージョン設定を見ずに東京以外のリージョンにあれこれ建てちゃった私みたいな人は、
ちゃんとインスタンスの削除(停止)やらサービスの解放やらしておくのを忘れずに。

インスタンスを2台1ヶ月間動かし続けると無料枠超えちゃいますので。

3-b. セキュリティグループの設定

f:id:nekonenene:20160817051944p:plain

チュートリアルでは何も設定していませんが、
SSHは自分の家のIPアドレス、HTTPは誰でもアクセス可、という設定をしておくといいです。

Amazonの用意してる下のチュートリアル動画でもSSHは0.0.0.0(誰でもアクセス可)の設定ですけど、
どうせほとんどの時間は自宅からのアクセスなので、必要なときにIPアドレスは足せばいいかなーという気持ち。

で、で! 忘れちゃいけないのが HTTPポートの開放!(人によってはHTTPSもね!)
これしておかないとせっかくWebアプリ上げてもブラウザからアクセスできませんからね!

チュートリアルに書いてないのでお気をつけて。

4. AWSコマンドラインツールのインストール

チュートリアル終わらせて思うのが、EC2インスタンスの再起動とかいちいちWebブラウザからやらないといけないの? ってこと。
Amazonさん、偉いのでちゃんとそういうモノグサさんのためにコマンドラインツール用意してくれてました。

AWS CLI のインストールと設定

ここに書かれてるとおりに pip からインストールしたんですが、
ふつうに homebrew にありました。なので、

brew install awscli

だけで大丈夫です。これで更新の時も楽。

インストール終了時のメッセージにも出ますが、zshに補完追加するには

source /usr/local/share/zsh/site-functions/_aws

してあげてください。aws コマンドは、補完が無いとコマンドが長すぎて死ねますので大事。

5. AWSコマンドラインツールの初期設定

aws configure

コマンドを打つと、
AWS Access Key ID [None]: 』だなんて見知らぬことを聞かれます。

これは Amazon IAM ( https://console.aws.amazon.com/iam/ ) で設定します。
(紛らわしいけど Amazon AMI のほうではないです)

5-a. Amazon IAM での設定

「グループ」>「新しいグループの作成」と進んで、
グループ名はてきとうに「admin」とかにして、
その次のページで権限の種類ありすぎて頭痛くなりそうですが「AdministratorAccess」(管理者アクセス)だけ選択。

f:id:nekonenene:20160817054558p:plain

で、これで管理者グループを作ったので次は「ユーザー」>「新規ユーザーの作成」でユーザー作成。

f:id:nekonenene:20160817055041p:plain

f:id:nekonenene:20160817055130p:plain

で、このユーザーのセキュリティ認証情報のアクセスキーIDとシークレットアクセスキーが、
AWSコマンドラインツールの初期設定に必要になりますので、しっかりメモるなり右下のボタンからCSVをダウンロードしてください。

そして、このユーザーを先ほど作ったadminグループに追加してあげれば作業OKです。

f:id:nekonenene:20160817055528p:plain

5-b. ターミナルに戻り初期設定ふたたび

AWS Access Key ID」と「AWS Secret Access Key」については先ほどのものを入れるとして、そのあとに
「Default region name [None]: 」と聞かれます。

ここ ( http://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html#ec2_region ) にも書いてあるのですが、
「東京」のリージョンコードは「ap-northeast-1」ですのでそれを入力。

続いて「Default output format [None]: 」と聞かれますので、
これは「json」「text」「table」のうち好きなものを入力。
個人的には「table」が見やすかったです。

これらの設定は、~/.aws/credentials および ~/.aws/config に格納されていますので、
あとで設定を変えたくなった場合はここのファイルをいじることでも変更できます。

設定がちゃんと完了できれば、

aws ec2 describe-instances

このコマンドで作成しているインスタンスの一覧が見られますし、
そこに表示される InstanceId を利用して

aws ec2 reboot-instances --instance-ids (インスタンスのID)

のようなコマンドでインスタンスの再起動ができたりと、いろいろはかどります。


初日の感想としてはこのくらいで。
難しそうなイメージでしたが、説明してくれているサイトが多いおかげもあり、思っていたよりはすんなり最初の一歩を踏み出すことが出来ました。

次は自動ビルドにチャレンジです。
GitHub なら CircleCI 使えばいいんですけど、個人開発だと bitbucket のプライベートリポジトリをフックにできると嬉しいので、まずはその調査からですね。