Amazon Web Services

Amazon Web Services 上にマシンを作成します。

認証ファイルの設定

AWS 認証情報ファイル

amazonec2 ドライバを使う前に、認証情報の設定が必要です。

認証情報を設定する1つの方法は、Amazon AWS用の認証情報をファイル ~/.aws/credentials に置くことです。次のような書式です。

[default]
aws_access_key_id = AKID1234567890
aws_secret_access_key = MY-SECRET-KEY

このファイルの詳細な使い方は、こちらの ブログ投稿 をご覧ください。

これが最も簡単にマシンを作成できる方法です。

$ docker-machine create --driver amazonec2 aws01

コマンドラインのフラグ

他には、コマンドライン上で --amazonec2-access-key--amazonec2-secret-key フラグを使う方法があります。

$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C*******  aws01

環境変数

環境変数も使えます。

$ export AWS_ACCESS_KEY_ID=AKID1234567890
$ export AWS_SECRET_ACCESS_KEY=MY-SECRET-KEY
$ docker-machine create --driver amazonec2 aws01

オプション

  • --amazonec2-access-key : 必須 自分の Amazon Web Services API 用のアクセス・キー緒です。
  • --amazonec2-secret-key : 必須 自分の Amazon Web Services API 用のシークレット・アクセスキーです。
  • --amazonec2-session-token : 自分の Amazon Web Services API 用のセッション・トークンです。
  • --amazonec2-ami : インスタンスに使用する AMI ID です。
  • --amazonec2-region : インスタンスを起動するリージョンです。
  • --amazonec2-vpc-id : 必須** 起動したインスタンスを置く VPC ID です。
  • --amazonec2-zone : インスタンスを置く AWS ゾーンです(例: a, b, c, d, e のいずれか)。
  • --amazonec2-subnet-id : AWS VPC サブネット ID です。
  • --amazonec2-security-group : AWS VPC セキュリティ・グループ名です。
  • --amazonec2-tags : AWS タグをキーバリューのペアで指定します(カンマ区切りです。例: key1,value1,key2,value2)。
  • --amazonec2-instance-type: 実行するインスタンス・タイプです。
  • --amazonec2-device-name: 実行するデバイス名です。
  • --amazonec2-root-size : インスタンスのルート・ディスク容量(単位:GB)。
  • --amazonec2-volume-type: インスタンスにアタッチする Amazon EBS の種類を指定。
  • --amazonec2-iam-instance-profile : インスタンスのプロフィールに使われる AWS IAM ロール名。
  • --amazonec2-ssh-user : SSH ログイン・ユーザ名です。ここには AMI が使うデフォルトの SSH ユーザを一致する必要があります。
  • --amazonec2-request-spot-instance : スポット・インスタンスを使用。
  • --amazonec2-spot-price : スポット・インスタンスの bid 価格(単位:ドル)。 --amazonec2-request-spot-instance フラグが必要です。
  • --amazonec2-use-private-addressce : docker-machine の通信にプライベート IP アドレスを使います。ですがパブリックな IP アドレスも作成されます。
  • --amazonec2-private-address-only : プライベート・アドレスのみ使います。
  • --amazonec2-monitoring : CloudWatch モニタリングを有効化します。
  • --amazonec2-user-ebs-optimized-instance : EBS 最適化インスタンスを作成します。インスタンス・タイプが対応している必要があります。
  • --amazonec2-ssh-keypath : インスタンス用のプライベート・キーに使うファイルのパスを指定します。対応する公開鍵の拡張子は .pub になっている必要があります。

環境変数とデフォルト値は以下の通りです。

コマンドライン・オプション 環境変数 デフォルト値
--amazonec2-access-key AWS_ACCESS_KEY_ID
--amazonec2-secret-key AWS_SECRET_ACCESS_KEY
--amazonec2-session-token AWS_SESSION_TOKEN
--amazonec2-ami AWS_AMI ami-5f709f34
--amazonec2-region AWS_DEFAULT_REGION us-east-1
--amazonec2-vpc-id AWS_VPC_ID
--amazonec2-vpc-id AWS_VPC_ID
--amazonec2-zone AWS_ZONE a
--amazonec2-subnet-id AWS_SUBNET_ID
--amazonec2-security-group AWS_SECURITY_GROUP docker-machine
--amazonec2-instance-type AWS_INSTANCE_TYPE t2.micro
--amazonec2-device-name AWS_DEVICE_NAME /dev/sda
--amazonec2-root-size AWS_ROOT_SIZE 16
--amazonec2-volume-type AWS_VOLUME_TYPE gp2
--amazonec2-iam-instance-profile AWS_INSTANCE_PROFILE
--amazonec2-ssh-user AWS_SSH_USER ubuntu
--amazonec2-request-spot-instance
false
--amazonec2-spot-price
0.50
--amazonec2-user-private-address
false
--amazonec2-private-address-only
false
--amazonec2-monitoring
false
--amazonec2-use-ebs-optimized-instance
false
--amazonec2-ssh-keypath AWS_SSH_KEYPATH

デフォルト AMI

デフォルトでは、Amazon EC2 ドライバは Ubuntu 15.10 LTS の daily イメージを使います。

リージョン AMI ID
ap-northeast-1 ami-b36d4edd
ap-southeast-1 ami-1069af73
ap-southeast-2 ami-1d336a7e
cn-north-1 ami-79eb2214
eu-west-1 ami-8aa67cf9
eu-central-1 ami-ab0210c7
sa-east-1 ami-185de774
us-west-1 ami-26d5af4c
us-west-1 ami-9cbcd2fc
us-west-2 ami-16b1a077
us-gov-west-1 ami-b0bad893

セキュリティ・グループ

セキュリティ・グループが作成され、ホストに関連付けられるのでご注意ください。セキュリティ・グループは以下のインバウンド通信を許可します。

  • ssh (22/tcp)
  • docker (2376/tcp)
  • swarm (3376/tcp) ノードが Swarm マスタの場合のみです

これポート以外にポートを開くには、 --amazonec2-security-group フラグを使って自分でセキュリティ・グループを指定し、ポートが開かれたか確認します。特定のアプリケーションが必要とするポートを開きたい場合は、AWS コンソールで設定を調整ください。

VPC ID

コマンドを実行する前に、自分のデフォルト VPC を確認します。時々、デフォルトの VPC がなかったり、あるいはデフォルトの VPC を使いたくない場合があるでしょう。VPC を指定するには --amazonec2-vpc-id フラグを使います。

VPC ID を確認するには:

  1. AWS コンソールにログインします。
  2. Services -> VPC -> VPC -> 自分の VPC に移動します。
  3. VPC 列から使用する VPC ID を選びます。
  4. Services -> VPC -> Subnets に移動します。 Availability Zones 列を確認し、ゾーン a が存在しているのと、自分の VPC ID と一致していることを確認します。

例えば、 us-east-1-a にはアベイラビリティ・ゾーン a が存在しています。もし a ゾーンが表示されなければ、マシンを作成するために、新しいサブネットを作成するか別のゾーンを指定します。

マシン・インスタンスを作成するには、 --driver amazonec2 と3つの必須パラメータを指定します。

$ docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C********* --amazonec2-vpc-id vpc-****** aws01

この例では、 VPC ID が a アベイラビリティ・ゾーンに存在しているものと想定されます。 a ゾーン以外を指定するには、 --amazonec2-zone フラグを使います。例えば、 --amazonec2-zone cus-east1-c を表しています。

カスタム AMI と SSH ユーザ名

デフォルト AMI 用のデフォルト SSH ユーザ名は ubuntu です。

カスタム AMI が異なった SSH ユーザ名を使っている場合、この SSH ユーザ名の設定を変更する必要があります。

--amazonec2-ami で指定した AMI が必要とする SSH ユーザ名を --amazonec2-ssh-user で指定します。