Closed2

AWS CDK の Rule で FargateのECSタスクをターゲットにしたらエラーになった問題の解決

N04hN04h

以下のようなコードを書いたときに、

const cluster = Cluster.fromClusterArn(this, 'FromClusterArn', 'XArn');
const taskDefinition = TaskDefinition.fromTaskDefinitionArn(this, 'FromTaskDefinitionArn', 'XxArn');
const target = new EcsTask({
  cluster,
  taskDefinition,
  containerOverrides: [{ containerName: 'container', command: ['xxx'] }],
});

new Rule(this, 'Rule', {
  ruleName: 'XxxxRule',
  schedule: Schedule.cron({ hour: '15', minute: '0' }),
  targets: [target],
});

以下のようなエラーになった

This operation requires the taskRole in ImportedTaskDefinition to be defined. Add the 'taskRole' in ImportedTaskDefinitionProps to instantiate ImportedTaskDefinition

N04hN04h

以下で該当するテストのエラーがある
https://github.com/aws/aws-cdk/blob/6616026d3879f0271b7813ed00f0899c666da1e3/packages/aws-cdk-lib/aws-events-targets/test/ecs/event-rule-target.test.ts#L220

その下を見ると、正しいコーディング方法がある
https://github.com/aws/aws-cdk/blob/6616026d3879f0271b7813ed00f0899c666da1e3/packages/aws-cdk-lib/aws-events-targets/test/ecs/event-rule-target.test.ts#L224

FargateTaskDefinition.fromFargateTaskDefinitionAttributesを使うようにすればよさそう

このスクラップは2023/09/27にクローズされました