かなり新しいことはわかっていますが、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ロールを指定しようとしましたが、それは正しい構文ではないようです。また、このラムダに固有のカスタムロールをオンザフライで生成することもできます(または好むかもしれません)が、その方法の例も見当たりませんでした。
誰かがこれを達成する方法について何か洞察を持っていますか?
ビルの答えは機能しますが、別の方法があります。
import iam = require("@aws-cdk/aws-iam");
lambda.addToRolePolicy(new iam.PolicyStatement({
effect: iam.Effect.ALLOW,
actions: [ 'lambda:InvokeFunction' ],
resources: [ '*' ]
}));