在AWS CDK中为Lambda添加一个S3触发器,可以按照以下步骤进行操作:
安装AWS CDK:
npm install -g aws-cdk
创建一个新的AWS CDK项目:
mkdir my-cdk-project
cd my-cdk-project
cdk init --language typescript
安装必要的CDK依赖:
npm install @aws-cdk/aws-lambda @aws-cdk/aws-s3 @aws-cdk/aws-lambda-event-sources
在lib/my-cdk-project-stack.ts
文件中,添加Lambda和S3模块的引入:
import * as cdk from '@aws-cdk/core';
import * as lambda from '@aws-cdk/aws-lambda';
import * as s3 from '@aws-cdk/aws-s3';
import * as lambdaEventSources from '@aws-cdk/aws-lambda-event-sources';
在MyCdkProjectStack
类中,添加Lambda和S3资源的创建代码:
const bucket = new s3.Bucket(this, 'MyBucket');
const lambdaFunction = new lambda.Function(this, 'MyLambda', {
runtime: lambda.Runtime.NODEJS_12_X,
handler: 'index.handler',
code: lambda.Code.fromAsset('lambda'),
});
lambdaFunction.addEventSource(new lambdaEventSources.S3EventSource(bucket, {
events: [s3.EventType.OBJECT_CREATED]
}));
创建一个简单的Lambda函数,例如,在项目根目录下,创建一个lambda
文件夹,并在其中创建一个index.js
文件,内容如下:
exports.handler = async (event) => {
console.log('Lambda function triggered!', event);
};
构建和部署CDK堆栈:
cdk deploy
这样,CDK将会创建一个Lambda函数和一个S3存储桶,并将S3存储桶的OBJECT_CREATED
事件连接到Lambda函数上。当S3存储桶中有新对象创建时,Lambda函数将被触发,并输出相应的日志信息。