确定AWS CDK版本,因为AWS CDK v1和v2有不同的方法来为Lambda函数创建S3触发器。
确认在CDK stack中正确设置了Lambda函数和S3 bucket。
使用以下代码示例为Lambda函数创建S3触发器:
AWS CDK v1:
const lambda = new lambda.Function(this, 'MyLambdaFunction', {
code: lambda.Code.fromAsset('lambda'),
handler: 'index.handler',
runtime: lambda.Runtime.NODEJS_12_X,
});
const bucket = new s3.Bucket(this, 'MyBucket', {
bucketName: 'my-bucket-name',
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
bucket.addEventNotification(
s3.EventType.OBJECT_CREATED_PUT,
new s3n.LambdaDestination(lambda)
);
AWS CDK v2:
const lambda = new lambda.Function(this, 'MyLambdaFunction', {
code: lambda.Code.fromAsset('lambda'),
handler: 'index.handler',
runtime: lambda.Runtime.NODEJS_12_X,
});
const bucket = new s3.Bucket(this, 'MyBucket', {
bucketName: 'my-bucket-name',
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
bucket.onObjectCreated('MyBucketTrigger', {
target: new targets.LambdaFunction(lambda),
});
这些代码示例将在CDK stack中为Lambda函数添加对S3对象的触发器。如果仍然无法工作,请检查AWS policy是否正确配置,并确认已经将您的代码推送到AWS Lambda中。