我使用CLI命令创建了Lambda函数。
aws lambda create-function
--function-name "functionName"
--runtime "java8"
--role "roleARN"
--handler "com.company.package.S3FileCreator::createFile"
--zip-file "fileb://./filePath.zip"现在我想要创建触发器这个函数--如果我把任何对象放在我的s3桶上,我可以从Amazon创建触发器,但是可以从创建触发器吗?
发布于 2019-08-29 16:13:51
通过以下步骤解决了问题:
在变量上分配函数名/s3桶名/rold ARN
FUNCTION_NAME=lambda-function-name
S3_BUCKE=s3_bucket_name
ROLE=AWS_role_ARN创建Lambda函数并获得ARN
LAMBDA_ARN=$(aws lambda create-function --function-name "$FUNCTION_NAME" --runtime "java8" --role "$ROLE" --handler "com.monsanto.aws.S3NotificationAgent::handleRequest" --zip-file "fileb://./target/file_name.zip" | grep FunctionArn | cut -d'"' -f4)获取当前AWS帐号
AWS_ACCOUNT_NUMBER=$(aws sts get-caller-identity --output text --query 'Account') 生成唯一语句id
STATEMENT_ID="$(date +%s%3N)-stm-name" 允许S3桶调用该lambda函数
aws lambda add-permission --function-name "$FUNCTION_NAME"
--principal "s3.amazonaws.com" --statement-id "$STATEMENT_ID" --action "lambda:InvokeFunction" --source-arn "arn:aws:s3:::$S3_BUCKET"
--source-account "$AWS_ACCOUNT_NUMBER"为put-桶通知(之间没有空格)准备JSON参数
NOTIFICATION_CONFIGURATIONS='{"LambdaFunctionConfigurations":[{"Id":"'"$FUNCTION_NAME"'-event","LambdaFunctionArn":"'"$LAMBDA_ARN"'","Events":["s3:ObjectCreated:*"],"Filter":{"Key":{"FilterRules":[{"Name":"suffix","Value":"log"},{"Name":"prefix","Value":"logtest"}]}}}]}'添加s3事件以调用Lambda函数
aws s3api put-bucket-notification-configuration --bucket "$S3_BUCKET"
--notification-configuration "$NOTIFICATION_CONFIGURATIONS"发布于 2019-07-12 20:36:37
我想您会想了解一下此页中关于在S3中使用Lambda的内容。
为了让您的lambda触发器每当文件上传到特定的S3桶时,您将需要在该S3桶上创建一个桶通知。此桶通知应该在S3:ObjectCreated:Put上激活,因为您说希望它在放置对象时随时激活。
下面是用CLI设置桶通知的一个例子,下面是一些更接近您想要尝试的内容。我还没测试过这个。
your-bucket-notification-config.json
{
"LambdaFunctionConfigurations": [
{
"Id": "your-chosen-id",
"LambdaFunctionArn": "arn:aws:lambda:YOUR_REGION:ACCOUNT_ID:functionName",
"Events": [
"s3:ObjectCreated:Put"
]
}
]
}然后你会跑:
aws s3api put-bucket-notification-configuration --bucket your-bucket --notification-configuration file://your-bucket-notification-config.jsonhttps://stackoverflow.com/questions/57013540
复制相似问题