1
0

AWS ECS で任意のコマンドを実行する

Last updated at Posted at 2023-10-31

これまで Heroku で運用してきたシステムを AWS に置き換える必要が発生し、 heroku run と同等の操作が行えないと致命的だったので調査した結果になります。

前提条件

  • AWS CLI のインストール
  • ECSにタスクが定義されている

実行方法

aws ecs run-task を使えば既存のタスク設定の実行コマンドを上書きして任意のコマンドを実行できます。
例えば、以下はRailsのコンテナを使用したタスク定義で rake db:migrate を実行する例になります。

aws ecs run-task \
--cluster $CLUSTER \
--task-definition $TASK_ARN \
--launch-type FARGATE \
--network-configuration "awsvpcConfiguration={subnets=[$SUBNET_ID], securityGroups=[$SG_ID], assignPublicIp=ENABLED}" \
--overrides '{"containerOverrides": [{"name": "web", "command": ["bundle", "exec", "rake", "db:migrate"]}]}'

上記の以下の部分を実行する環境に応じて書き換えてください。
また containerOverrides.namecontainerOverrides.command を設定内容、実行したいコマンドで書き換えてください。

キーワード
$CLUSTER クラスター名
$TASK_ARN タスク定義のARN (リビジョンを含めないように)
$SUBNET_ID サブネットのID
$SG_ID セキュリティグループのID

その他の aws ecs run-task の仕様、パラメーターについては 公式ドキュメント を参照してください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0