🐕
CDK で ECSで EC2(ASG) リソース使用時の単体テストで発生したエラーとその解決方法
CDK を使って ECS リソースのユニットテストを行う際に遭遇したエラーとその解決方法について記載します。
まず、エラーの内容ですが、テスト実行時に以下のエラーメッセージが出力されました。
The provided launch template does not expose its user data
このエラーは、ECS の AsgAutoScalingGroup の起動テンプレート( LaunchTemplate )に UserData が指定されていなかったことが原因でした。
以下に、エラーが再現するコード例です。
const asgLaunchTemplate = new ec2.LaunchTemplate(this, 'ASG-LaunchTemplate', {
instanceType: new ec2.InstanceType('t3.medium'),
machineImage: ecs.EcsOptimizedImage.amazonLinux2(),
});
このコードは UserData が指定されていないためエラーが発生します。修正するには UserData の値を指定する必要があります。
const asgLaunchTemplate = new ec2.LaunchTemplate(this, 'ASG-LaunchTemplate', {
instanceType: new ec2.InstanceType('t3.medium'),
machineImage: ecs.EcsOptimizedImage.amazonLinux2(),
userData: ec2.UserData.forLinux(), // 追加
});
これにより、エラーは解決しました。
AWS CDK の公式ドキュメント内でも AsgCapacityProvider 引数に LaunchTemplate を使用する場合には、LaunchTemplate に userData を指定する必要があると記載されていました。
To use LaunchTemplate with AsgCapacityProvider, make sure to specify the userData in the LaunchTemplate:
参考
Discussion