📒

AWS CDKのApplicationLoadBalancedFargateServiceのタスクにgrantしたい!

2024/02/09に公開

はじめに

AWS CDKにはL3コンストラクタとしてECSやALBなどをもろもろを構築できるaws-cdk-lib.aws_ecs_patterns moduleがあります。

https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ecs_patterns-readme.html

作成されるタスクロールにS3バケット等へのアクセス権限を付けたい場合にgrantで権限を付与したい場合がよくあるのですが、毎回なんだっけ?となるのでメモ

やり方

ここではApplicationLoadBalancedFargateServiceで行いますが、他のecs-patternでも流用できると思います。

const vpc = new ec2.Vpc(this, 'Vpc');
const cluster = new ecs.Cluster(this, 'Cluster', { vpc });

const pattern = new ecs_patterns.ApplicationLoadBalancedFargateService(this, "FargateService", {
  cluster,
  taskImageOptions: {
    image: ecs.ContainerImage.fromRegistry("amazon/amazon-ecs-sample"),
  },
});

const bucket = new s3.Bucket(this, 'Bucket');

// 権限の付与
bucket.grantReadWrite(pattern.service.taskDefinition.taskRole);

これでpattern.serviceでできないのか~って毎回勘違いが発生してたのが防げる。

Discussion