ECSのすべてのチュートリアルでは、クラスターを作成する必要があり、その後、自動スケーリンググループがインスタンスを生成します。どういうわけか、これらのすべてのチュートリアルでは、インスタンスがクラスターに魔法のように表示されますが、自動スケーリンググループとクラスターを接続するものについてのヒントは誰も提供しません。
私の自動スケーリンググループは予想どおりインスタンスを生成しますが、Docker定義を保持しているecsクラスターには表示されません。
私が見当たらない接続はどこですか?
まあ、私はわかった。 ecs-agentとその構成ファイル/etc/ecs/ecs.configに関するすべて(このファイルは、EC2インスタンスを作成するときに、自動スケーリング構成からであってもUserdataフィールドを介して作成されます。)構成オプションについては、以下を参照してください。 http://docs.aws.Amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html
ただし、Amazon S3に保存されたecs.configをコピーすることもできます。次のようにします(次の行はUserdata
フィールドに移動します)。
#!/bin/bash
yum install -y aws-cli
aws configure set default.s3.signature_version s3v4
aws configure set default.s3.addressing_style path
aws configure set default.region eu-central-1
aws s3 cp s3://<bucketname>/ecs.config /etc/ecs/ecs.config
注:Signature_version v4は、eu-central-1などの一部の地域に固有です。このofcは、インスタンスのIAMロール(私の場合はecsInstanceRole)に正しいAmazonS3ReadOnlyAccessがある場合にのみ機能します
そのためのAWS GUIコンソールの方法は次のとおりです。 https://console.aws.Amazon.com/ecs/home#/firstRun でクラスターウィザードを使用します。クラスターの自動スケーリンググループ、その前にロードバランサーを作成し、すべてを適切に接続します。
私はしばらくこれに苦労していました。 ECSクラスターに関連付けられた自動スケーリンググループのインスタンスを取得するための鍵は、ユーザーデータにあります。手順3の「詳細の設定」に進んだときに起動設定を作成している場合は、[詳細設定]タブをクリックして、ユーザーデータに対して次のような単純なbashスクリプトを入力します。
#!/usr/bin/env bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
エージェント設定に使用できるすべてのパラメーターは、ここにあります http://docs.aws.Amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html
自動スケーリンググループは、クラスターに厳密には関連付けられていません。ただし、自動スケーリンググループは、起動された各インスタンスが特定のクラスターに自身を登録するように構成できます。
インスタンスをクラスターに登録するのは、インスタンスで実行されている ECSエージェント の責任です。 Amazon ECS-optimized AMI を使用している場合、インスタンスの起動時にECSエージェントが起動し、 configured cluster に登録されます。ただし、 インストール手順 に従って、他のLinux AMIでECSエージェントを使用することもできます。