ECS Fargateを使用してスケジュールされたタスクをセットアップしようとしていますが、実行されていない理由がわかりません。 RunTask
を使用してタスクが正常に動作することを確認できますが、スケジュールでそれをトリガーしようとすると、説明のない「FailedInvocations」が大量に表示されます。
しかし、ルールがトリガーされていることは知っているので、これは良い兆候です。以下のスクリーンショットを参照してください。
ただし、トリガーされるたびに「FailedInvocation」が発生します。スケジューリングルールは次のとおりです。
そして、ecs:runTask
だけでecsEventRole
のデフォルトの許可:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecs:RunTask"
],
"Resource": [
"*"
]
}
]
}
私の考えでは、このecsEventsRole
には十分な権限がありません。 ecsTaskExecutionRole
が持っているものを与えようとするべきですか?
ありがとう
編集:これはus-east-1
リージョンでサポートされるようになりました。コメントを参照してください。
通常のECSスケジュールタスクが実行されていない同様の問題が発生しました。
最終的に、CloudWatch EventsがIAMロールをECSタスクに渡すことを許可する追加ポリシーをecsEventsRole
に追加することで解決しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:ListInstanceProfiles",
"iam:ListRoles",
"iam:PassRole"
],
"Resource": "*"
}
]
}
考えられる回避策は次のとおりです。cloudwatchルールのターゲットとしてラムダ関数を使用し、ラムダ関数コードでタスクを作成します。
ラムダ関数のサンプルコードを次に示します。 https://lobster1234.github.io/2017/12/03/run-tasks-with-aws-fargate-and-lambda/
リンクにはラムダ関数を使用して新しいbotoバージョンをパックする方法が記載されていますが、AWSはすでにラムダbotoバージョンを1.4.8に更新しているため、これはもう必要ありません
私はテストしましたが、動作します。
1年以上が経過しましたが、AWSには呼び出しログを表示する適切な方法がまだありません。
すでにご存知のように、RunTask
によってタスクを手動で呼び出すことができます。スケジュールされたタスクも手動で呼び出すことができます。
唯一の違いは、スケジュールされたタスクがCloudWatchルールによってトリガーされることです。
CloudTrail Event history
の呼び出しログを簡単に確認し、そこに移動して、イベント名RunTask
でイベントをフィルターし、確認する時間範囲を選択し、イベントを見つけてView Event
をクリックします。 'エラーコードと応答が表示されます。
Aws cliを使用して、代わりに_aws events put-rule
_に続いて_aws events put-targets --rule <value> --targets <value>
_を実行しようとしましたか?私は同様の問題を抱えていましたが、aws cli(の最新バージョン)を使用してうまくいきました。
サンプルを次に示します。
aws events put-rule --name "DailyLambdaFunction" --schedule-expression "cron(0 9 * * ? *)"
次のコマンドがすべて1行で続きます。
_aws events put-targets --rule cli-RS-rule --targets '{"Arn":"arn:aws:ecs:1234/cluster/clustername","EcsParameters":{"LaunchType": "FARGATE","NetworkConfiguration": {"awsvpcConfiguration": {"AssignPublicIp": "ENABLED", "SecurityGroups": [ "sg-id1233" ], "Subnets": [ "subnet-1234" ] }},"TaskCount": 1,"TaskDefinitionArn": "arn:aws:ecs:1234:task-definition/taskdef"},"Id": "sampleID111","RoleArn": "arn:aws:iam:1234:role/eventrole"}'
_