Amazon Elastic Container Service
開発者ガイド (API バージョン 2014-11-13)

Amazon ECS でのセットアップ

すでにアマゾン ウェブ サービス (AWS) にサインアップしていて、Amazon Elastic Compute Cloud (Amazon EC2) を使用している場合は、すぐに Amazon ECS を使用し始めることができます。2 つのサービスのセットアッププロセスは似ています。以下のガイドでは、Amazon ECS 初回実行ウィザードまたは Amazon ECS コマンドラインインターフェイス (CLI) を使用して、最初のクラスターを起動する準備をします。

注記

Amazon ECS では Amazon EC2 の多くのコンポーネントを使用するため、これらの手順の多くで Amazon EC2 コンソールを使用します。

Amazon ECS のセットアップを行うには、以下のタスクを完了します。これらのいずれかの手順をすでに完了している場合、それらをスキップして、カスタム AWS CLI のインストールに進むことができます。

AWS にサインアップする

AWS にサインアップすると、Amazon EC2 および Amazon ECS を含むすべてのサービスに対して AWS アカウントが自動的にサインアップされます。料金が発生するのは、実際に使用したサービスの分のみです。

既に AWS アカウントをお持ちの場合は、次のタスクに進んでください。AWS アカウントをお持ちでない場合は、次に説明する手順にしたがってアカウントを作成してください。

AWS アカウントを作成するには

  1. https://portal.aws.amazon.com/billing/signup を開きます。

  2. オンラインの手順に従います。

    サインアップ手順の一環として、通話呼び出しを受け取り、電話のキーパッドを用いて確認コードを入力することが求められます。

次のタスクで AWS アカウント番号が必要となるので、メモしておいてください。

IAM ユーザーを作成する

AWS のサービス (Amazon EC2、Amazon ECS など) では、サービスにアクセスする際に認証情報を提供する必要があります。このため、サービスのリソースにアクセスする権限があるかどうかがサービスによって判定されます。コンソールを使用するにはパスワードが必要です。AWS アカウントのアクセスキーを作成して、コマンドラインインターフェイスまたは API にアクセスすることができます。ただし、AWS アカウントの認証情報を使って AWS にアクセスすることはお勧めしません。代わりに AWS Identity and Access Management (IAM) を使用することをお勧めします。IAM ユーザーを作成して、管理権限を使ってこのユーザーを IAM グループに追加するか、管理権限を付与します。これで、特殊な URL と IAM ユーザーの認証情報を使って、AWS にアクセスできます。

AWS にサインアップしたけれど、自身の IAM ユーザーをまだ作成していない場合は、IAM コンソールを使用して作成できます。

自分用の管理者ユーザーを作成し、そのユーザーを管理者グループに追加するには (コンソール)

  1. AWS アカウント E メールアドレスとパスワードを使用して https://console.aws.amazon.com/iam/AWS アカウントのルートユーザー として IAM コンソールにサインインします。

    注記

    以下のAdministratorIAMユーザーの使用に関するベストプラクティスに従い、ルートユーザー認証情報を安全な場所に保管しておくことを強くお勧めします。ルートユーザーとしてサインインして、少数のアカウントおよびサービス管理タスクのみを実行します。

  2. ナビゲーションペインで [Users]、[Add user] の順に選択します。

  3. [ユーザー名] に「Administrator」と入力します。

  4. [AWS マネジメントコンソール access (アクセス)] の横にあるチェックボックスをオンにします。[Custom password (カスタムパスワード)] を選択し、その後テキストボックスに新しいパスワードを入力します。

  5. (オプション) AWS では、デフォルトで、新しいユーザーに対して初回のサインイン時に新しいパスワードを作成することが必要です。必要に応じて [User must create a new password at next sign-in (ユーザーは次回のサインイン時に新しいパスワードを作成する必要がある)] のチェックボックスをオフにして、新しいユーザーがサインインしてからパスワードをリセットできるようにできます。

  6. [Next: Permissions (次へ: アクセス許可)] を選択します。

  7. [Set permissions (アクセス許可の設定)] で、[Add user to group (ユーザーをグループに追加)] を選択します。

  8. [Create group] を選択します。

  9. [グループの作成] ダイアログボックスで、[グループ名] に「Administrators」と入力します。

  10. [Filter policies (フィルタポリシー)] を選択し、その後 [AWS managed -job function (AWS 管理ジョブの機能] を選択してテーブルのコンテンツをフィルタリングします。

  11. ポリシーリストで、[AdministratorAccess] のチェックボックスをオンにします。次に、[Create group] を選択します。

    注記

    AdministratorAccess アクセス許可を使用して、AWS Billing and Cost Management コンソールを使用する前に、IAM ユーザーおよびロールの請求へのアクセスをアクティブ化する必要があります。これを行うには、請求コンソールへのアクセスの委任に関するチュートリアルのステップ 1 の手順に従ってください。

  12. グループのリストに戻り、新しいグループのチェックボックスをオンにします。必要に応じて [Refresh] を選択し、リスト内のグループを表示します。

  13. [次へ: タグ] を選択します。

  14. (オプション) タグをキー - 値のペアとしてアタッチして、メタデータをユーザーに追加します。IAM でのタグの使用の詳細については、『IAM ユーザーガイド』の「IAM エンティティのタグ付け」を参照してください。

  15. [Next: Review] を選択して、新しいユーザーに追加するグループメンバーシップのリストを表示します。続行する準備ができたら、[Create user] を選択します。

この同じプロセスを繰り返して新しいグループとユーザーを作成し、AWS アカウントのリソースへのアクセス権をユーザーに付与できます。ポリシーを使用して特定の AWS リソースに対するユーザーのアクセス許可を制限する方法については、「アクセス管理」と「ポリシーの例」を参照してください。

新規の IAM ユーザーとしてサインインするには、AWS コンソールからサインアウトし、次の URL を使用します。このとき、your_aws_account_id はハイフンを除いた AWS アカウント番号です (たとえば AWS アカウント番号が 1234-5678-9012 であれば、AWS アカウント ID は 123456789012 となります)。

https://your_aws_account_id.signin.aws.amazon.com/console/

作成した IAM ユーザー名とパスワードを入力します。サインインすると、ナビゲーションバーに「your_user_name @ your_aws_account_id」が表示されます。

サインページの URL に AWS アカウント ID を含めない場合は、アカウントのエイリアスを作成します。IAM ダッシュボードから [アカウントの別名を作成] を選択し、エイリアス (会社名など) を入力します。アカウントエイリアスを作成した後、サインインするには、次の URL を使用します。

https://your_account_alias.signin.aws.amazon.com/console/

アカウントの IAM ユーザーのサインインリンクを確認するには、IAM コンソールを開き、ダッシュボードの [IAM ユーザーサインインリンク] の下を確認します。

IAM の詳細については、「AWS Identity and Access Management ユーザーガイド」を参照してください。

IAM ロールを作成します。

Amazon ECS コンテナエージェントがユーザーに代わって Amazon ECS API アクションを呼び出すためには、そのエージェントがユーザーに属していることをそのサービスが認識するための IAM ポリシーおよびロールが必要です。

EC2 起動タイプを使用するタスクの場合は、コンテナインスタンスを登録するアカウントをエージェントが認識できるようにする IAM ロールを作成できます。このロールを使用する、Amazon が提供する Amazon ECS 最適化 AMI を使用してコンテナインスタンスを起動すると、エージェントはコンテナインスタンスをユーザーの default クラスターに自動的に登録します。このロールは「Amazon ECS コンテナインスタンス IAM ロール」と呼ばれます。詳細については、「Amazon ECS コンテナインスタンス IAM ロール」を参照してください。

また、Amazon ECS コンテナエージェントは Amazon EC2 および Elastic Load Balancing API を呼び出すため、コンテナインスタンスをロードバランサーに対して登録および登録解除できます。Amazon ECS サービスにロードバランサーをアタッチするには、それらのサービスの開始前に、使用する IAM ロールを作成する必要があります。この要件は、ロードバランサーで使用する予定のいずれの Amazon ECS サービスにも適用されます。このロールは「Amazon ECS サービススケジューラ IAM ロール」と呼ばれます。詳細については、「Amazon ECS サービススケジューラ IAM ロール」を参照してください。

Fargate 起動タイプを使用するタスクの場合は、エージェントが Amazon ECR からコンテナイメージをプルしたり、awslogs ログドライバー (この起動タイプで現在サポートされている唯一のロギングオプション) を使用したりできるようにする IAM ロールを作成できます。このロールは「Amazon ECS タスク実行 IAM ロール」と呼ばれます。詳細については、「Amazon ECS タスク実行 IAM ロール」を参照してください。

注記

これらの IAM ロールは Amazon ECS コンソールの初回実行時に自動的に作成されるため、コンソールを使用する予定の場合は次のセクションに進むことができます。コンソールを使用せずに代わりに AWS CLI を使用する予定の場合は、これらの IAM ロールを手動で作成する必要があります。

キーペアの作成

Amazon ECS では、EC2 起動タイプを使用する場合にのみキーペアが必要です。

AWS では公開キー暗号化を使用して、お客様のインスタンスのログイン情報の安全性を保護します。 Amazon ECS コンテナインスタンスなどの Linux インスタンスでは、SSH アクセスにパスワードを使いません。キーペアを使用してインスタンスに安全にログインします。コンテナインスタンスを起動するときにキーペアの名前を指定し、プライベートキーを指定して、SSH でログインします。

キーペアをまだ作成していない場合は、Amazon EC2 コンソールを使用して作成できます。複数のリージョンでインスタンスを起動する予定がある場合は、各リージョンでキーペアを作成する必要があります。リージョンの詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の「リージョンとアベイラビリティーゾーン」を参照してください。

キーペアを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションバーで、キーペアを生成するリージョンを選択します。お客様は場所に関係なく、使用できるリージョンをどれでも選択できます。ただし、キーペアはリージョン固有です。たとえば、米国東部 (オハイオ) リージョン リージョンでコンテナインスタンスを起動する予定の場合は、そのインスタンス用のキーペアを 米国東部 (オハイオ) リージョン リージョンで作成する必要があります。

    
						リージョンの選択
  3. ナビゲーションペインの [NETWORK & SECURITY] で、[Key Pairs] を選択します。

    ヒント

    ナビゲーションペインはコンソールの左側にあります。ペインが表示されない場合、最小化されている可能性があります。矢印を選択してペインを展開します。必要に応じて、下へスクロールして [Key Pairs] リンクを表示します。

    
						キーペアのページを開く
  4. [Create Key Pair] を選択します。

  5. [Create Key Pair] ダイアログボックスの [Key pair name] フィールドに新しいキーペアの名前を入力し、[Create] を選択します。覚えやすい名前 (IAM ユーザー名など) を使用し、その後に -key-pair を続け、さらにリージョン名を続けます。たとえば、me-key-pair-useast2 とします。

  6. ブラウザによって秘密キーファイルが自動的にダウンロードされます。ベースファイル名はキーペアの名前として指定した名前となり、ファイル名の拡張子は .pem となります。プライベートキーファイルを安全な場所に保存します。

    重要

    これは、プライベートキーを保存する唯一のチャンスです。インスタンスの起動時にキーペアの名前を指定し、そのインスタンスへの接続時に毎回、対応するプライベートキーを指定する必要があります。

  7. macOS または Linux コンピュータの SSH クライアントを使用して Linux インスタンスに接続する場合は、自分以外のユーザーが読み取ることができないように、次のコマンドを使用してプライベートキーファイルのアクセス許可を設定します。

    chmod 400 your_user_name-key-pair-region_name.pem

詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「Amazon EC2 のキーペア」を参照してください。

キーペアを使用してインスタンスに接続するには

macOS または Linux を実行しているコンピュータから Linux インスタンスに接続するには、-i オプションとプライベートキーのパスを指定して、SSH クライアントに .pem ファイルを指定します。Windows を実行しているコンピュータから Linux インスタンスに接続する場合は、MindTerm または PuTTY のどちらかを使用できます。PuTTY を使用する予定がある場合は、それをインストールしてから、次の手順に従って .pem ファイルを .ppk ファイルに変換します。

(オプション)PuTTY を使用して Windows から Linux インスタンスに接続するには

  1. http://www.chiark.greenend.org.uk/~sgtatham/putty/ から PuTTY をダウンロードしてインストールします。必ずスイート全体をインストールします。

  2. PuTTYgen を開始します (例: [開始] メニューで [All Programs (すべてのプログラム)] > [PuTTY] > [PuTTYgen] を選択)。

  3. [Type of key to generate] で、[ RSA] を選択します。

    
						PuTTYgen の SSH-2 RSA キー
  4. [ロード] を選択します。デフォルトでは、PuTTYgen には拡張子 .ppk を持つファイルだけが表示されます。.pem ファイルの場所を特定するには、すべてのタイプのファイルを表示するオプションを選択します。

    
						すべてのファイルタイプを選択します
  5. 前の手順で作成したプライベートキーファイルを選択してから、[Open] を選択します。[OK] を選択して、確認ダイアログボックスを閉じます。

  6. [Save private key (プライベートキーの保存)] を選択します。PuTTYgen に、パスフレーズなしでキーを保存することに関する警告が表示されます。[Yes] を選択します。

  7. キーペアに使用した名前と同じ名前をキーに指定します。PuTTY は自動的にファイル拡張子 .ppk を加えます。

Virtual Private Cloud の作成

Amazon Virtual Private Cloud (Amazon VPC) を使用すると、定義した仮想ネットワーク内で AWS リソースを起動できます。コンテナインスタンスは、VPC で起動することを強くお勧めします。

注記

Amazon ECS コンソールの初回実行時にクラスター用の VPC が作成されるため、Amazon ECS コンソールを使用する予定の場合は次のセクションに進むことができます。

デフォルトの VPC がある場合は、このセクションもスキップして、次のタスク「セキュリティグループの作成」に移動できます。デフォルトの VPC があるかどうかを判断するには、Linux インスタンス用 Amazon EC2 ユーザーガイド の「Amazon EC2 コンソールでサポートされるプラットフォーム」を参照してください。また、次の手順を使用して、アカウントにデフォルト以外の VPC を作成することもできます。

重要

アカウントがリージョン内で Amazon EC2 Classic をサポートしている場合、そのリージョンにはデフォルトの VPC はありません。

デフォルト以外の VPC を作成するには

  1. https://console.aws.amazon.com/vpc/にある Amazon VPC コンソールを開きます。

  2. ナビゲーションバーで、VPC のリージョンを選択します。VPC はリージョンに固有であるため、キーペアを作成したリージョンと同じリージョンを選択してください。

  3. VPC ダッシュボードで、[Launch VPC Wizard (VPC ウィザードの起動)] を選択します。

  4. [Step 1: Select a VPC Configuration] ページで、[VPC with a Single Public Subnet] が選択されていることを確認したら、[Select] を選択します。

  5. [Step 2: VPC with a Single Public Subnet] ページで、[VPC name] フィールドに、わかりやすい VPC 名を入力します。他のデフォルトの設定はそのままにしておき、[Create VPC] を選択します。確認ページで、[OK] を選択します。

Amazon VPC の詳細については、Amazon VPC ユーザーガイドの「Amazon VPC とは」を参照してください。

セキュリティグループの作成

セキュリティグループは、関連付けられたコンテナインスタンスのファイアウォールとして動作し、インバウンドトラフィックとアウトバウンドトラフィックの両方をコンテナインスタンスレベルで制御します。SSH を使用して IP アドレスからコンテナインスタンスに接続するためのルールをセキュリティグループに追加できます。さらに、任意の場所からのインバウンドおよびアウトバウンドの HTTP アクセスおよび HTTPS アクセスを可能にするルールを追加できます。タスクで使用するポートを開くためのルールを追加します。コンテナインスタンスには、Amazon ECS サービスエンドポイントと通信するために外部ネットワークアクセスが必要です。

注記

Amazon ECS コンソールの初回実行時、使用するタスク定義に基づいてインスタンスとロードバランサーのセキュリティグループが作成されるため、Amazon ECS コンソールを使用する場合は、次のセクションに進むことができます。

複数のリージョンでコンテナインスタンスを起動する予定がある場合は、各リージョンでセキュリティグループを作成する必要があります。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイドの「リージョンとアベイラビリティーゾーン」を参照してください。

ヒント

ローカルコンピュータのパブリック IP アドレスが必要になります。このアドレスはサービスを使って取得できます。たとえば、次のサービスが提供されています。http://checkip.amazonaws.com/ または https://checkip.amazonaws.com/。IP アドレスを提供する別のサービスを検索するには、検索フレーズ「what is my IP address」を使用します。 インターネットサービスプロバイダー (ISP) 経由で、またはファイアウォールの内側から静的 IP アドレスなしで接続する場合は、クライアントコンピュータで使用されている IP アドレスの範囲を見つける必要があります。

最小限の権限でセキュリティグループを作成するには

  1. https://console.aws.amazon.com/ec2/) にある Amazon EC2 コンソールを開きます。

  2. ナビゲーションバーで、セキュリティグループのリージョンを選択します。セキュリティグループはリージョンに固有であるため、キーペアを作成したリージョンと同じリージョンを選択する必要があります。

  3. ナビゲーションペインで [セキュリティグループ] を選択して、[セキュリティグループの作成] を選択します。

  4. 新しいセキュリティグループの名前と説明を入力します。覚えやすい名前 (ecs-instances-default-cluster など) を選択します。

  5. [VPC] リストで、デフォルト VPC が選択されていることを確認します。デフォルト VPC はアスタリスク (*) でマークされています。

    注記

    アカウントが Amazon EC2 Classic をサポートしている場合は、前のタスクで作成した VPC を選択します。

  6. Amazon ECS コンテナインスタンスでは、インバウンドポートが開いている必要はありません。ただし、コンテナインスタンスにログインして Docker コマンドでタスクを確認できるように、SSH ルールを追加できます。また、ウェブサーバーを実行するタスクをコンテナインスタンスでホストする場合は、HTTP と HTTPS のルールを追加できます。コンテナインスタンスには、Amazon ECS サービスエンドポイントとの通信に外部ネットワークアクセスが必要です。これらのオプションのセキュリティグループルールを追加するには、以下のステップを実行します。

    [Inbound] タブで、次のルールを作成し (新しいルールごとに [Add Rule] を選択)、最後に [Create] を選択します。

    • [Type] リストから [HTTP] を選択し、[Source] が [Anywhere] (0.0.0.0/0) に設定されていることを確認します。

    • [Type] リストから [HTTPS] を選択し、[Source] が [Anywhere] (0.0.0.0/0) に設定されていることを確認します。

    • [Type] リストから [SSH] を選択します。[Source] フィールドで、[Custom IP] が選択されていることを確認し、コンピュータまたはネットワークのパブリック IP アドレスを CIDR 表記で指定します。CIDR 表記で個々の IP アドレスを指定するには、ルーティングプレフィックスを追加します。/32たとえば、IP アドレスが 203.0.113.25 の場合は、203.0.113.25/32 を指定します。会社が特定の範囲からアドレスを割り当てている場合、範囲全体(203.0.113.0/24など)を指定します。

      重要

      セキュリティ上の理由で、すべての IP アドレス(0.0.0.0/0)からインスタンスへの SSH アクセスを許可することはお勧めしません。ただし、それがテスト目的で短期間の場合は例外です。

AWS CLI をインストールする

AWS マネジメントコンソール を使用すると、Amazon ECS でのすべてのオペレーションを手動で管理できます。ただし、ローカルのデスクトップまたは開発者の環境に AWS CLI をインストールすると、Amazon ECS で共通の管理タスクを自動化できるスクリプトを作成できるようになります。

Amazon ECS で AWS CLI を使用するには、最新バージョンの AWS CLI をインストールします。AWS CLI のインストールまたは最新バージョンへのアップグレードについては、AWS Command Line Interface ユーザーガイドの「AWS コマンドラインインターフェイスのインストール」を参照してください。