amazon-web-services - 如何使用无服务器框架在AWS Lambda函数上添加S3触发事件?

标签 amazon-web-services amazon-s3 aws-lambda serverless-framework

我想在已经存在的存储桶上的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/

相关文章:

amazon-web-services - 如何使用 aws Lambda 将多个相关文件作为一个组上传到 s3

amazon-web-services - 页面刷新时的Amazon AWS S3 404错误

python - 在 AWS lambda 上将 ImageMagick 作为 python 子进程运行

node.js - AWS Lambda 因 NodeJS 依赖项而失败

amazon-web-services - 跨账户实时复制DynamoDB表数据

amazon-web-services - 在 aws cloudformation 模板中的 If 条件内使用 importValue

r - 如何在模块化 Shiny 应用程序中连接 AWS S3 凭证

java - AWS s3响应 header

python - 使用初始数据填充 Amazon DynamoDB 表 python CDK

amazon-s3 - Amazon Athena 相同的查询有时会因 HIVE_CURSOR_ERROR 而失败