Amazon ECS クラスターに外部インスタンスを登録する
Amazon ECS クラスターに登録する外部インスタンスごとに、SSM Agent、Amazon ECS コンテナエージェント、および Docker がインストールされている必要があります。外部インスタンスを Amazon ECS クラスターに登録するには、最初に AWS Systems Manager マネージドインスタンスを登録する必要があります。インストールスクリプトは、Amazon ECS コンソールで数回クリックするだけで作成できます。インストールスクリプトには、Systems Manager のアクティベーションキーと、必要なエージェントと Docker をインストールするためのコマンドが含まれています。インストールと登録の手順を完了するには、オンプレミスのサーバーまたは VM でインストールスクリプトを実行する必要があります。
注記
Linux の外部インスタンスをクラスターに登録する前に、/etc/ecs/ecs.config
ファイルを作成し、必要なコンテナエージェント設定パラメータを追加します。外部インスタンスをクラスターに登録した後は、これを行うことはできません。詳細については、「Amazon ECS コンテナエージェントの設定」を参照してください。
- AWS Management Console
-
コンソール (https://console.aws.amazon.com/ecs/v2
) を開きます。 -
ナビゲーションバーから、使用するリージョンを選択します。
-
ナビゲーションペインで [Clusters] (クラスター) を選択します。
-
リポジトリの [クラスター] ページで、外部インスタンスを登録するクラスターを選択します。
-
[Cluster :
name
] (クラスター: 名前) のページで、[Infrastructure] (インフラストラクチャ) タブを選択します。 -
[Register external instances] (外部インスタンスの登録) ページで、次のステップを完了します。
-
[Activation key duration (in days)] (アクティベーションキーの期間 (日数)) を使用する場合、アクティベーションキーがアクティブなままになる日数を入力します。入力した日数が経過すると、外部インスタンスの登録時にキーが機能しなくなります。
-
インスタンス数を使用する場合 アクティベーションキーを使用してクラスターに登録する外部インスタンスの数を入力します。
-
インスタンスロールを使用する場合、外部インスタンスに関連付ける IAM ロールを選択します。ロールがまだ作成されていない場合は、新規ロールの作成を選択すると、Amazon ECS がユーザーに代わってロールを作成します。外部インスタンスに必要な IAM 許可の詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。
-
登録コマンドをコピーします。このコマンドは、クラスターに登録する各外部インスタンスで実行する必要があります。
重要
スクリプトの bash 部分は root として実行する必要があります。コマンドが root として実行されない場合、エラーが返されます。
-
[閉じる] を選択します。
-
- AWS CLI for Linux operating systems
-
-
Systems Manager のアクティベーションペアを作成します。これは、Systems Manager が管理するインスタンスのアクティベーションに使用されます。出力には、
ActivationId
およびActivationCode
が含まれます。これらは、後のステップで使用します。作成した ECS Anywhere IAM ロールを指定していることを確認します。詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。aws ssm create-activation --iam-role
ecsAnywhereRole
| tee ssm-activation.json -
オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。
curl --proto "https" -o "/tmp/ecs-anywhere-install.sh" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh"
-
(オプション) オンプレミスサーバーまたは仮想マシン (VM) で、次の手順を使用して、スクリプト署名ファイルを使用してインストールスクリプトを確認します。
-
GnuPG をダウンロードし、インストールします。GNUpg の詳細については、「GnuPG ウェブサイト
」を参照してください。Linux システムの場合は、お使いの Linux ディストリビューションでパッケージマネージャーを使用して gpg
をインストールします。 -
Amazon ECS PGP パブリックキーを取得します。
gpg --keyserver hkp://keys.gnupg.net:80 --recv BCE9D9A42D51784F
-
インストールスクリプトの署名をダウンロードします。署名は、ASCII でデタッチ済みの PGP 署名で、拡張子が
.asc
のファイルに保存されています。curl --proto "https" -o "/tmp/ecs-anywhere-install.sh.asc" "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install-latest.sh.asc"
-
キーを使用してインストールスクリプトファイルを確認します。
gpg --verify /tmp/ecs-anywhere-install.sh.asc /tmp/ecs-anywhere-install.sh
予想される出力は次のようになります。
gpg: Signature made Tue 25 May 2021 07:16:29 PM UTC gpg: using RSA key 50DECCC4710E61AF gpg: Good signature from "Amazon ECS <ecs-security@amazon.com>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: F34C 3DDA E729 26B0 79BE AEC6 BCE9 D9A4 2D51 784F Subkey fingerprint: D64B B6F9 0CF3 77E9 B5FB 346F 50DE CCC4 710E 61AF
-
-
オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトを実行します。クラスター名、リージョン、Systems Manager のアクティベーション ID とアクティベーションコードを、最初のステップで指定します。
sudo bash /tmp/ecs-anywhere-install.sh \ --region
$REGION
\ --cluster$CLUSTER_NAME
\ --activation-id$ACTIVATION_ID
\ --activation-code$ACTIVATION_CODE
オンプレミスサーバーまたは仮想マシン (VM) で、GPU ワークロード用の NVIDIA ドライバーがインストールされている場合は、インストールスクリプトに
--enable-gpu
フラグを設定する必要があります。このフラグを指定すると、インストールスクリプトは NVIDIA ドライバが実行中であることを確認してから、Amazon ECS タスクを実行するために必要な構成変数を追加します。GPU ワークロードの実行と、タスク定義での GPU 要件の指定の詳細については、「Amazon ECS タスク定義での GPU の指定」を参照してください。sudo bash /tmp/ecs-anywhere-install.sh \ --region
$REGION
\ --cluster$CLUSTER_NAME
\ --activation-id$ACTIVATION_ID
\ --activation-code$ACTIVATION_CODE
\ --enable-gpu
既存の外部インスタンスを別のクラスターに登録するには、次のステップを実行します。
既存の外部インスタンスを別のクラスターに登録するには
-
Amazon ECS コンテナエージェントを停止します。
sudo systemctl stop ecs.service
-
/etc/ecs/ecs.config
ファイルとECS_CLUSTER
行を編集して、クラスター名が外部インスタンスを登録するクラスターの名前と一致していることを確認します。 -
既存の Amazon ECS エージェントデータを削除します。
sudo rm /var/lib/ecs/data/agent.db
-
Amazon ECS コンテナエージェントを開始する
sudo systemctl start ecs.service
-
- AWS CLI for Windows operating systems
-
-
Systems Manager のアクティベーションペアを作成します。これは、Systems Manager が管理するインスタンスのアクティベーションに使用されます。出力には、
ActivationId
およびActivationCode
が含まれます。これらは、後のステップで使用します。作成した ECS Anywhere IAM ロールを指定していることを確認します。詳細については、「Amazon ECS Anywhere IAM ロール」を参照してください。aws ssm create-activation --iam-role
ecsAnywhereRole
| tee ssm-activation.json -
オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトをダウンロードします。
Invoke-RestMethod -URI "https://amazon-ecs-agent.s3.amazonaws.com/ecs-anywhere-install.ps1" -OutFile “ecs-anywhere-install.ps1”
-
(オプション) Powershell スクリプトは Amazon によって署名されているため、Windows は同じ場所で証明書の検証を自動的に実行します。手動で検証を実行する必要はありません。
証明書を手動で検証するには、ファイルを右クリックしてプロパティに移動し、[Digital Signatures] (デジタル署名) タブを使用して詳細を取得します。
このオプションは、ホストが証明書ストアに証明書がある場合にのみ使用できます。
検証の結果、次のような情報が返されます。
# Verification (PowerShell) Get-AuthenticodeSignature -FilePath .\ecs-anywhere-install.ps1 SignerCertificate Status Path ----------------- ------ ---- EXAMPLECERTIFICATE Valid ecs-anywhere-install.ps1 ... Subject : CN="Amazon Web Services, Inc.",... ----
-
オンプレミスのサーバーまたは仮想マシン (VM) で、インストールスクリプトを実行します。クラスター名、リージョン、Systems Manager のアクティベーション ID とアクティベーションコードを、最初のステップで指定します。
.\ecs-anywhere-install.ps1 -Region
$Region
-Cluster$Cluster
-ActivationID$ActivationID
-ActivationCode$ActivationCode
-
Amazon ECS コンテナエージェントが実行されていることを確認します。
Get-Service AmazonECS
Status Name DisplayName ------ ---- ----------- Running AmazonECS Amazon ECS
既存の外部インスタンスを別のクラスターに登録するには、次のステップを実行します。
既存の外部インスタンスを別のクラスターに登録するには
-
Amazon ECS コンテナエージェントを停止します。
Stop-Service AmazonECS
-
クラスター名が外部インスタンスを登録するクラスターの名前と一致するように
ECS_CLUSTER
パラメータを変更します。[Environment]::SetEnvironmentVariable("ECS_CLUSTER", $ECSCluster, [System.EnvironmentVariableTarget]::Machine)
-
既存の Amazon ECS エージェントデータを削除します。
Remove-Item -Recurse -Force $env:ProgramData\Amazon\ECS\data\*
-
Amazon ECS コンテナエージェントを開始する
Start-Service AmazonECS
-
AWS CLIを使用して、外部インスタンスの登録プロセスを完了するためにインストールスクリプトを実行する前に、Systems Manager のアクティベーションを作成できます