web-dev-qa-db-ja.com

AWSCDKを使用したラムダのカスタムロールの指定

かなり新しいことはわかっていますが、AWSCDKで作成されたラムダのロールを指定する方法の例はどの言語でも見当たりません。

私はこれをやろうとしていました

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

const path      = require('path');

class MyStack extends cdk.Stack {
    constructor (parent, id, props) {
            super(parent, id, props);

            //
            // Create a lambda...
            const fn = new lambda.Function(this, 'MyFunction-cdktest', {
                runtime: lambda.Runtime.NodeJS810,
                handler: 'index.handler',
                code: lambda.Code.directory( path.join( __dirname, 'lambda')),
                role: iam.RoleName('lambda_basic_execution')
            });

    }
}

class MyApp extends cdk.App {
        constructor (argv) {
                super(argv);

                new MyStack(this, 'hello-cdk');
        }
}

console.log(new MyApp(process.argv).run());

関数の既存のIAMロールを指定しようとしましたが、それは正しい構文ではないようです。また、このラムダに固有のカスタムロールをオンザフライで生成することもできます(または好むかもしれません)が、その方法の例も見当たりませんでした。

誰かがこれを達成する方法について何か洞察を持っていますか?

6
Ivan Kluzak

ビルの答えは機能しますが、別の方法があります。

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

lambda.addToRolePolicy(new iam.PolicyStatement({
  effect: iam.Effect.ALLOW,
  actions: [ 'lambda:InvokeFunction' ],
  resources: [ '*' ]
}));
1
Tanvir