AWSのCDKでちょこちょこ使う細かいパターンのメモ

概要

AWSのCDKでちょこちょこ使う細かいパターンのメモ

IAMロールをインラインで用意するケース

ecr-accessという名前で、アクション'ecr:'、リソース''、許可の組み合わせで作成する例

import iam = require('@aws-cdk/aws-iam');

const myRole = new iam.Role(this, "MyRole", {
  assumedBy: new iam.ServicePrincipal('codebuild.amazonaws.com'),
  inlinePolicies: {
    'ecr-access': new iam.PolicyDocument({
      statements: [
        new iam.PolicyStatement({
          effect: iam.Effect.ALLOW,
          actions: [
            'ecr:*'
          ],
          resources: [
            '*'
          ]
        }),
      ],
    }),
  }
});

バケットへのアクセス用ロール(自アカウント利用版)

import cdk = require('@aws-cdk/core');
import s3 = require('@aws-cdk/aws-s3');
import iam = require('@aws-cdk/aws-iam');

const bucket = new s3.Bucket(this, 'MyBucket', {
  bucketName: 'bucket name here',
});

const myRole = new iam.Role(this, "MyRole", {
  assumedBy: new iam.AccountPrincipal(cdk.Stack.of(this).account),
  inlinePolicies: {
    's3-access': new iam.PolicyDocument({
      statements: [
        new iam.PolicyStatement({
          effect: iam.Effect.ALLOW,
          actions: [ 's3:GetObject*', 's3:GetBucket*', 's3:List*', 's3:DeleteObject*', 's3:PutObject*', 's3:Abort*' ],
          resources: [ bucket.bucketArn, bucket.bucketArn+'/*' ],
        }),
      ],
    }),
  }
});

既存のロールをセットするケース

下記のケースでは「AWSLambdaBasicExecutionRole」をセットしている

const lambdaRole = new iam.Role(this, 'MyRole', {
  assumedBy: new iam.ServicePrincipal('lambda.amazonaws.com'),
  inlinePolicies: {
    // インライン分はここに
  },
  managedPolicies: [
    iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole'),
  ],
});