タダです.
ECS 関連アップデートでデプロイ状況を確認できる API のサポートが発表されました.普段デプロイの際はコンソールで確認を行っていたのでその手間が一定解消されそうだと思い,どんな確認が取れるのかを手元で CLI を試してみます.
今回アップデート概要
今回発表された API はlistServiceDeployments
, describeServiceRevisions
, describeServiceDeployment
になります.また,ECS サービスのデプロイ履歴が90 日間保持されてコンソールとAWS CLI で確認が可能になりました.この記事では追加された API の挙動を CLI で確認した内容をまとめていきます.なお,CLI のバージョンは以下のとおりです.
$ aws --version aws-cli/2.19.4 Python/3.12.7 Darwin/23.5.0 source/arm64
listServiceDeployments
listServiceDeployments
では ECS サービスのデプロイごとの状況を確認できるようになっています.list-service-deployments
を実行すると以下の例では2回のデプロイを試したのでその状況が表示されました.
$ aws ecs list-service-deployments --cluster example --service blog-demo { "serviceDeployments": [ { "serviceDeploymentArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-deployment/example/blog-demo/xOuzLGQkLj4Fgx4pScx-F", "serviceArn": "arn:aws:ecs:ap-northeast-1:111222333444:service/example/blog-demo", "clusterArn": "arn:aws:ecs:ap-northeast-1:111222333444:cluster/example", "startedAt": "2024-11-10T14:38:15.960000+09:00", "createdAt": "2024-11-10T14:38:14.578000+09:00", "targetServiceRevisionArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/0842152099039089140", "status": "IN_PROGRESS" }, { "serviceDeploymentArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-deployment/example/blog-demo/TpNdMFMET_zrLGeqX15se", "serviceArn": "arn:aws:ecs:ap-northeast-1:111222333444:service/example/blog-demo", "clusterArn": "arn:aws:ecs:ap-northeast-1:111222333444:cluster/example", "startedAt": "2024-11-10T14:06:20.206000+09:00", "createdAt": "2024-11-10T14:06:18.128000+09:00", "finishedAt": "2024-11-10T14:26:15.246000+09:00", "targetServiceRevisionArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/1308369492597490708", "status": "ROLLBACK_FAILED", "statusReason": "No rollback candidate was found to run the rollback." } ] }
コンソールで確認すると,デプロイごとに識別子が振られて後述する API で確認できる,デプロイの関連情報を得られるようになっているようです.
describeServiceDeployments
describeServiceDeployments
では ECS タスク数やサーキット ブレーカーのステータスなどデプロイごとの詳細情報を取得できます.listServiceDeployments
は全体を見て,describeServiceDeployments
では個別のデプロイ詳細を確認するための用途のようですね.
$ aws ecs describe-service-deployments --service-deployment-arns arn:aws:ecs:ap-northeast-1:111222333444:service-deployment/example/blog-demo/xOuzLGQkLj4Fgx4pScx-F { "serviceDeployments": [ { "serviceDeploymentArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-deployment/example/blog-demo/xOuzLGQkLj4Fgx4pScx-F", "serviceArn": "arn:aws:ecs:ap-northeast-1:111222333444:service/example/blog-demo", "clusterArn": "arn:aws:ecs:ap-northeast-1:111222333444:cluster/example", "createdAt": "2024-11-10T14:38:14.578000+09:00", "startedAt": "2024-11-10T14:38:15.960000+09:00", "updatedAt": "2024-11-10T14:38:16.502000+09:00", "sourceServiceRevisions": [ { "arn": "arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/1308369492597490708", "requestedTaskCount": 0, "runningTaskCount": 0, "pendingTaskCount": 0 } ], "targetServiceRevision": { "arn": "arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/0842152099039089140", "requestedTaskCount": 0, "runningTaskCount": 0, "pendingTaskCount": 0 }, "status": "IN_PROGRESS", "deploymentConfiguration": { "deploymentCircuitBreaker": { "enable": true, "rollback": true }, "maximumPercent": 200, "minimumHealthyPercent": 100 }, "deploymentCircuitBreaker": { "status": "MONITORING", "failureCount": 0, "threshold": 0 }, "alarms": { "status": "DISABLED" } } ], "failures": [] }
describeServiceRevisions
describeServiceRevisions
ではどういった ECS タスクをデプロイしようとしているのか(タスク定義のバージョン,ネットワーク情報,コンテナ名等)を取得できます.従来は個々のタスク定義を見に行っていたのがこの API で確認できるようになりました.
aws ecs describe-service-revisions --service-revision-arns arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/0842152099039089140 { "serviceRevisions": [ { "serviceRevisionArn": "arn:aws:ecs:ap-northeast-1:111222333444:service-revision/example/blog-demo/0842152099039089140", "serviceArn": "arn:aws:ecs:ap-northeast-1:111222333444:service/example/blog-demo", "clusterArn": "arn:aws:ecs:ap-northeast-1:111222333444:cluster/example", "taskDefinition": "arn:aws:ecs:ap-northeast-1:111222333444:task-definition/blog-demo:2", "launchType": "FARGATE", "platformVersion": "1.4.0", "platformFamily": "Linux", "loadBalancers": [], "serviceRegistries": [], "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-xxx", "subnet-xxx" ], "securityGroups": [ "sg-xxx" ], "assignPublicIp": "DISABLED" } }, "containerImages": [ { "containerName": "demo", "image": "111222333444.dkr.ecr.ap-northeast-1.amazonaws.com/ecr-public/amazonlinux/amazonlinux:2023" } ], "guardDutyEnabled": false, "createdAt": "2024-11-10T14:38:06.544000+09:00" } ], "failures": [] }
まとめ
ECS サービスデプロイに関連する新しい API サポートを受けて AWS CLI で関連コマンドを試してどういった内容を取得できるのかを確認しました.