タスク定義名を英語ではFamily
を呼ぶ。
※ クラスターではサービス
やスケジュールタスク
の他に1回限りのタスク
も作成できる
aws cliを使ってイメージをPush
。
aws cli
で実行。
基本的にリポジトリを作成したときにAWSに表示されるコマンドを実行すれば良い。
パブリックIPの自動割当がENABELED
でないとECRからのpull
でエラーが発生。
https://forums.aws.amazon.com/thread.jspa?threadID=339634&tstart=0
ただしDISABELE
で成功する場合もあるようなので要調査。
以下が参考になるか。
ResourceInitializationError: unable to pull secrets or registry auth: pull command failed: : signal: killed
エラーはクラスター
>タスク
>Stopped
でSTOPPED
したタスクを調べればわかる。
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/stopped-task-errors.html
ログは大きくロググループ
とログストリーム
に分かれていて、ロググループ
が大分類を表してログストリームを包含する。
タスク定義の ContainerDefinitions
で指定する。CloudFormation
のロググループ
指定は以下のとおり。
LogConfiguration:
LogDriver: awslogs
Options:
awslogs-group: "/ecs/example"
awslogs-region: ap-northeast-1
awslogs-stream-prefix: ecs # これはログストリームのプレフィックス
実行中のタスクもログストリームにログが出力される。
つまりサービスは実行中の場合でもログストリームにログが出力される。
ロググループ
の中に作成される。
{{awslogs-stream-prefix}}/コンテナ名/コンテナランタイム ID
コンテナランタイムID
はタスク(ID)
と同じハッシュ値。
つまりタスクが複数のコンテナを使用している場合のコンテナランタイムID
はすべて同じ。
CloudWotch
に自動出力している場合、ロググループ
を削除するとタスク実行時にエラーになるスケジュールされたタスク
を作成するとCloudWatch
> ルール
にルールが作成される以下リソースはWebマネジメントコンソール
やCloudFormation
などによって作成済みと仮定する。
aws ecs run-task \
--cluster hello-world-cluster \
--launch-type FARGATE \
--network-configuration awsvpcConfiguration="{subnets=subnet-0d51b747069fed1b7,securityGroups=sg-0a74d8f5b2b592cc2,assignPublicIp=ENABLED}" \
--propagate-tags TASK_DEFINITION \
--task-definition hello-world-task-definition
containerOverrides
のcommand
で、コンテナイメージのCMD
を上書きする。
ENTRYPOINT
を上書きできるかは要調査。
aws ecs run-task \
--cluster hello-world-cluster \
--launch-type FARGATE \
--network-configuration awsvpcConfiguration="{subnets=subnet-0d51b747069fed1b7,securityGroups=sg-0a74d8f5b2b592cc2,assignPublicIp=ENABLED}" \
--propagate-tags TASK_DEFINITION \
--task-definition hello-world-task-definition \
--overrides '{"containerOverrides":[{"name":"HelloWorld","command":["echo", "Welcome"]}]}'
Dockerfile
ROM alpine
CMD ["echo", "Hello World!"] # これを↑の"command":["echo", "Welcome"]で上書き
タスク定義でコンテナを指定するさいのCommand
入力エリアはヘルスチェックのために使用されるものでイメージコンテナのCMDを上書きするわけではない。