当你在AWS CDK中创建Lambda函数时,有时你可能会遇到以下错误信息:"AWS CDK:Lambda版本未被授予资源策略"。这通常是因为Lambda版本的资源策略未正确配置。
以下是解决方法的示例代码:
import * as cdk from 'aws-cdk-lib';
import * as lambda from 'aws-cdk-lib/aws-lambda';
export class MyLambdaStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
const lambdaFunction = new lambda.Function(this, 'MyLambda', {
// Lambda function properties
// ...
});
const version = lambdaFunction.addVersion('1');
// Grant necessary permissions to the Lambda version
version.addPermission('GrantInvokeFunction', {
principal: new iam.ServicePrincipal('lambda.amazonaws.com'),
sourceAccount: process.env.CDK_DEFAULT_ACCOUNT,
sourceArn: `arn:aws:lambda:${this.region}:${this.account}:function:${lambdaFunction.functionName}`,
});
}
}
在上述代码中,我们创建了一个Lambda函数并添加了一个版本。然后,我们使用addPermission
方法为Lambda版本添加了一个资源策略。这个资源策略授予lambda.amazonaws.com
服务主体在相同AWS账户中调用Lambda版本的权限。
请确保将代码中的MyLambdaStack
替换为你的堆栈类名,以及正确配置Lambda函数的属性。
使用这种方式,你应该能够解决“AWS CDK:Lambda版本未被授予资源策略”错误,并为Lambda版本添加所需的资源策略。