1. はじめに
こんにちは!株式会社Definerの阪本です!
今回は、ECS Fargateコンテナ内でコマンド実行する方法についてご紹介したいと思います。
今回は、ECS Fargateコンテナ内でコマンド実行する方法についてご紹介したいと思います。
2. 目的・ユースケース
この記事では、ECS Fargateコンテナ内でコマンド実行したいときに、参考になる情報やプラクティスをまとめています。
3. ECS execとは
ECS execを使うことで、直接ECSコンテナ内でコマンドを実行することができます。
これまで、Fargateを使用している場合はコンテナ内でコマンド実行はできませんでした。
また、EC2を使用している場合は、EC2にログインしdocker execコマンドを実行するといった2ステップが必要でした。
ECS execによって、これが1ステップで済むようになり、さらに使い勝手が良くなりました。
ECS execでは、AWS Systems Managerの「Session Manager」の仕組みを使い、クライアントからコンテナにアクセスすることを実現しています。
そのため、EC2インスタンスへのログインや、SGによるSSHポートの許可などの必要もありません。
これまで、Fargateを使用している場合はコンテナ内でコマンド実行はできませんでした。
また、EC2を使用している場合は、EC2にログインしdocker execコマンドを実行するといった2ステップが必要でした。
ECS execによって、これが1ステップで済むようになり、さらに使い勝手が良くなりました。
ECS execでは、AWS Systems Managerの「Session Manager」の仕組みを使い、クライアントからコンテナにアクセスすることを実現しています。
そのため、EC2インスタンスへのログインや、SGによるSSHポートの許可などの必要もありません。
4. ECS execを試してみる
実際にFargateへのECS execを試してみます。
ECSは、「Amazon ECSでマイクロサービスを作成する」で作成したサービスやタスク定義を使用します。
前提条件として、SSM agentがECS execに対応していることと、AWS CLI v2の2.1.31 (2021/03/20リリース)以降の使用が必要です。
・コンテナをEC2インスタンスで実行する場合:
→ECS-optimized AMIの「2021年1月20日」以降にリリースされたバージョンであればOK
・コンテナをFargateで実行する場合:
→Fargateのプラットフォームバージョン「1.4.0」以降であればOK
それでは、以下で実際の手順を紹介していきます。
①ECSサービスの「enableExecuteCommand」を有効化
以下コマンドで有効化します。
②ECSタスクロールへのSSM権限追加
タスク定義で指定しているECSタスクロールに、SSMの以下権限を追加します。
③ECSサービスの更新
新しいタスクが起動されるよう、ECSサービスを更新します。
④ECS Execコマンドの実行
無事にFargateコンテナにログインできました!
「ls」や「pwd」コマンドで、コンテナの中を探索できます。
ECSタスクロールへ追加するIAM権限
ECSは、「Amazon ECSでマイクロサービスを作成する」で作成したサービスやタスク定義を使用します。
前提条件として、SSM agentがECS execに対応していることと、AWS CLI v2の2.1.31 (2021/03/20リリース)以降の使用が必要です。
・コンテナをEC2インスタンスで実行する場合:
→ECS-optimized AMIの「2021年1月20日」以降にリリースされたバージョンであればOK
・コンテナをFargateで実行する場合:
→Fargateのプラットフォームバージョン「1.4.0」以降であればOK
それでは、以下で実際の手順を紹介していきます。
①ECSサービスの「enableExecuteCommand」を有効化
以下コマンドで有効化します。
②ECSタスクロールへのSSM権限追加
タスク定義で指定しているECSタスクロールに、SSMの以下権限を追加します。
③ECSサービスの更新
新しいタスクが起動されるよう、ECSサービスを更新します。
④ECS Execコマンドの実行
無事にFargateコンテナにログインできました!
「ls」や「pwd」コマンドで、コンテナの中を探索できます。
ECSタスクロールへ追加するIAM権限
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssmmessages:CreateControlChannel",
"ssmmessages:CreateDataChannel",
"ssmmessages:OpenControlChannel",
"ssmmessages:OpenDataChannel"
],
"Resource": "*"
}
]
}
## ECS Execの有効化
aws ecs update-service \
--cluster default \
--service test-nginx \
--enable-execute-command
## ECS Execコマンド
aws ecs execute-command \
--cluster default \
--task ${ECSタスクID} \
--container test-nginx \
--interactive \
--command /bin/sh
5. 引用・参考記事
6. 独自ソリューション「PrismScaler」について
7. お問合せ
本記事では、入門編として有益な情報を無料公開しています。ご相談やお問い合わせは「株式会社Definer」へ。
8. Definerに関して。
・ Definer Incは、ITの上流から下流まで一気通貫のワンストップソリューションをご提供しております。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。
・ AIやクラウドのITインフラなど、先進的なIT技術のコンサルティングから要件定義 / 設計開発 / 実装、保守運用に至るまでの統合的な支援にコミットしています。
・ DevOpsとCI/CDコンサルティングにより「少ないエンジニアで事業が成長する仕組みづくり」「エンジニアが喜ぶ、採用しやすい環境づくり」「高速なアジャイル開発環境」を実現しています。
・ また、自社プロダクトとしてPrismScalerを展開しております。PrismScalerは、AWS、Azure、GCPなどのマルチクラウド / ITインフラの高品質かつ迅速な、「自動構築」「自動監視」「問題検知」「構成可視化」を実現します。