我想在已经存在的存储桶上的Lambda函数上添加触发事件,为此,我正在使用以下配置:
events:
- s3:
bucket: serverlesstest
event: s3:ObjectCreated:*
rules:
- prefix: uploads/
- suffix: .pdf
S3上已经存在bucket
serverlesstest
的位置。此配置引发错误:
An error occurred while provisioning your stack: S3BucketServerlesstest - serverlesstest already exists.
如何使用Serverless Framework解决此错误?
最佳答案
由于CloudFormation的行为,目前在核心框架中无法实现。也许。
但是您可以使用此插件。
https://github.com/matt-filion/serverless-external-s3-event
通过npm install serverless-plugin-existing-s3
安装serverless-plugin-existing-s3之后。
并将插件添加到serverless.yml
plugins:
serverless-plugin-existing-s3
授予您的访问权限以访问存储桶。
provider:
name: aws
runtime: nodejs4.3
iamRoleStatements:
...
- Effect: "Allow"
Action:
- "s3:PutBucketNotification"
Resource:
Fn::Join:
- ""
- - "arn:aws:s3:::BUCKET_NAME or *"
并使用
existingS3
事件,而不仅仅是s3
。functions:
someFunction:
handler: index.handler
events:
- existingS3:
bucket: BUCKET_NAME
events:
- s3:ObjectCreated:*
rules:
- prefix: images/
- suffix: .jpg
在
sls deploy
命令之后,您可以使用
sls s3deploy
命令附加事件。功能提案
它将在将来的某一天添加。
https://github.com/serverless/serverless/issues/4241
关于amazon-web-services - 如何使用无服务器框架在AWS Lambda函数上添加S3触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44818114/