いまさらきけないわけがないHello AWS

Amazon Web Serviceを使っていますか? 恥ずかしながら自分は先週初めて使いました。この週末に私用のアカウントも初めて作りました。

今日の日記は、作成したインスタンスにログインするまでの個人的な軌跡です(ねむいのでFAQにします)。

アカウント作成

Q. 住所を入力した後、エラーが出て先へ進めません。

The address you provided appears to be invalid. Please check to see if your country appears in the drop down under a different name (e.g. "United States" instead of "U.S.A."), and that the rest of your address information is correct ...

「ZIP or Postal Code」を7桁で入力していませんか? 3桁にしましょう。この話題については、2007年頃からずっといわれているようです。

Q. 郵便番号や電話番号のハイフンを省略してしまいました。

大丈夫だ、問題ない。(タブン)

世間の(二次情報である)チュートリアルには、郵便番号や電話番号のハイフンを省略するなとよく書かれていますが、省略しても認証の電話はかかってくるので、おそらく問題ありません。

新規インスタンス作成(Management Console)

Q. Tagって何ですか? また、入力の初期値がイミフです。KEY=「Name」、VALUE=空欄って何?

タグとは、インスタンスを管理しやすくするためのラベルです。インスタンス一覧でフィルタとして使うこともできます。KEY-VALUE形式での入力を求められます。KEY、つまり、タグの種類も自由に決めることができます。

実務で多数のインスタンスを扱う際には、タグの付け方を組織で決めて運用するのがよいでしょう(想像ですけど)。なお、セキュリティグループなど他の属性に関連する情報をタグで扱うと、管理のための情報がDRYでなくなり、混乱すると思われます(想像ですけど)。

Q. Security Groupって何ですか?

セキュリティグループとは、外部からインスタンスへの接続に対するファイアウォールの設定です。プロトコルIPアドレスとポート番号を指定できます。

インスタンス作成時には、既存のセキュリティグループを選択することも、新規に定義することもできます。後者の場合、セキュリティグループの作成画面で、グループに(たとえばquick-startと)名前をつけても、確認画面では(たとえばsg-xxxxxxという)見知らぬidで表示されます。不安になりますが、大丈夫だ、問題ない。

インスタンス操作(EC2 API Tool)

Q. ec2-run-instancesコマンドで、Basic 64-bit Amazon Linux AMIを開始できません。
$ ec2-run-instances ami-8e1fece7
Client.InvalidParameterValue: The requested instance type's architecture (i386) does not match the architecture in the manifest for ami-8e1fece7 (x86_64)

オプションでインスタンスタイプを指定しなければなりません。ami-8e1fece7(つまりBasic 64-bit Amazon Linux AMI)は、64bitのイメージファイルです。そのため、64bitに対応したインスタンスタイプを指定して、開始コマンドを実行する必要があります。

上のドキュメントによると、microインスタンスが、32bitと64bitの両方に対応しています。これを選べば上記のエラーは回避できます。

# ec2-run-instancesで開始されるデフォルトのインスタンスタイプが32bitオンリーのモノってことですか。このあたりがよく分かりません。

$ ec2-run-instances ami-8e1fece7 -t t1.micro

しかし、上のコマンドは、次の理由によって実用的ではありません。

  • Key Pairを指定して開始しないと、作成したインスタンスにログインできない。
  • 何も指定しないと、defaultセキュリティグループに配属されてしまう。

セキュリティグループの設定内容は適用後に変更できますが、インスタンスを配属するセキュリティグループを後から変更することはできません。defaultセキュリティグループの設定内容を変更する気がなければ、インスタンス作成時にdefault以外のグループを明示的に割り当てておく必要があります。

$ ec2-run-instances ami-8e1fece7 -t <インスタンスタイプ> -g <セキュリティグループ名> -k <キーペア名>

インスタンスへのログイン

Q. Amazon Linux AMIにrootでログインできません。
Please login as the ec2-user user rather than root user.

上のようにいわれたら、いわれるがままにec2-userでログインして使います。ログイン後、suコマンドによって(パスワードなしで)rootになれるので、パスワードを設定しておくとよいでしょう。

$ sudo su -
# passwd

マネジメントコンソールでインスタンスを指定し、[Instance Actions]ドロップダウンリストから[Connection]を選ぶと、選択したインスタンスにログインするためのコマンドサンプルが表示されます。そのサンプルでは、rootでログインすることになっていますが、Amazon Linux AMIから作成したインスタンスは、ec2-userでログインする必要があります。

一方、他のAMI、たとえばopenSUSE-11.3-v1.0.1.x86_64のAMIから作ったインスタンスには、rootでログイン可能です。