Aws lambda 部署时ENV的自定义变量始终出错,无服务器框架

Aws lambda 部署时ENV的自定义变量始终出错,无服务器框架,aws-lambda,serverless-framework,aws-serverless,Aws Lambda,Serverless Framework,Aws Serverless,我试图在我的项目中使用S3服务 我保存自定义变量并在我的提供程序属性中使用: service: snapnext custom: imagesBucketName: snapnext-images provider: name: aws runtime: nodejs6.10 iamRoleStatements: # IAM permissions granted to all functions - Effect: Allow Action:

我试图在我的项目中使用S3服务

我保存自定义变量并在我的提供程序属性中使用:

service: snapnext

custom:
  imagesBucketName: snapnext-images

provider:
  name: aws
  runtime: nodejs6.10
  iamRoleStatements: # IAM permissions granted to all functions
    - Effect: Allow
      Action:
        - S3:GetObject
      Resource:
        - Fn::Join:
            - ''
            - - 'arn:aws:s3:::'
              - '${self:custom.imagesBucketName}/*'
  environment:
    IMAGES_BUCKET_NAME: ${self:custom.imagesBucketName}

functions:
  downloadImage: # Define a new Function
    handler: functions/downloadImage.handler
    events:
      - http:
          path: images
          method: post

resources:
  Resources:
    ImagesBucket:
      Type: AWS::S3::Bucket
      Properties:
        BucketName: ${self:custom.imagesBucketName}
        AccessControl: PublicRead

plugins:
  - serverless-offline
当我尝试部署时,总是会收到这样的错误消息

知道为什么会这样吗?
以及如何更好地在无服务器框架中进行调试,特别是对于
.yml
文件?

您已将无服务器配置为创建一个名为
snapnext images
的bucket,但当它尝试这样做时,它无法这样做,因为。。。它已经存在了

如果bucket名称可用(bucket名称与所有人共享),则:

  • 在第一次部署之前确保bucket不存在,以便无服务器可以完成其工作;或
  • 不要定义要创建的bucket,而要使用现有的bucket;或
  • 如果要创建新bucket并保留现有bucket,请选择其他名称

这与自定义变量无关。

在部署堆栈时,您正在尝试创建s3资源。您将只得到已存在的bucket名称的错误。bucket名称在区域和帐户之间应该是唯一的。 在云计算中创建s3存储桶资源时,您需要小心

  • 在部署之前,请确保它不存在 很多时候,如果存储桶中有对象/文件,那么删除堆栈不会删除使用堆栈创建的S3存储桶。您需要编写一个在删除bucket事件时触发的自定义lambda,以便在删除bucket之前删除所有内容

在尝试部署无服务器应用程序之前,您是否创建了
snapnext映像
存储桶?例如,通过web控制台或以类似方式?嗨,Alex,thx For u响应。我已经尝试删除s3服务和云形成中的bucket。之后,我将在终端中运行命令serverless remove。当我再次尝试部署时,会出现相同的错误message@EndySantoso这个桶肯定存在。如果这个bucket是你的,请确保它已被删除,如果它不是你的,则必须选择另一个名称——bucket跨区域和帐户。