【问题标题】:Serverless: Deplyment error S3 Bucket already exists in stack无服务器:部署错误 S3 存储桶已存在于堆栈中
【发布时间】:2020-03-23 23:03:14
【问题描述】:

我正在尝试部署一个在 serverless.yml 文件中具有 s3 存储桶创建 cloudformation 的无服务器项目,但问题是当我尝试部署时,它说 s3 存储桶已经存在并且部署失败。

我知道 s3 存储桶名称应该是全局唯一的,我很确定这是我正在使用的唯一名称,即使更改为其他名称,它仍然表示相同。

它说存在 s3 存储桶的 cloudformation 堆栈实际上是新创建的堆栈,不知道如何解决此问题。谁能帮我解决这个问题并告诉我如何解决部署问题和问题的原因:)。

提前致谢。

【问题讨论】:

  • 我遇到了同样的问题 - 在我的情况下,它似乎与引用 S3 存储桶的事件有关,就像我刚刚创建存储桶但没有发生错误的事件一样.
  • 可以分享一下模板吗?
  • 你能分享一下你的 serverless.yml 怎么样?

标签: amazon-web-services amazon-s3 amazon-cloudformation serverless-framework serverless


【解决方案1】:

如果您将 existing: true 添加到您的 serverless.yml 文件中的 S3 配置中,它将不会尝试创建 S3 存储桶,如下所示:-

funcName:
    handler: handler
    events:
        -   s3:
                bucket: 'my-bucket-name'
                events: s3:ObjectCreated:*
                existing: true
                rules:
                    -   suffix: .pdf
                    -   prefix: documents

【讨论】:

    【解决方案2】:

    我遇到的问题是,对于其中一个 lambda,我将上述存储桶作为 event source,因此当添加一些存储桶作为事件源时它实际上也创建了该存储桶 ,因此当它运行实际创建相关的 cloudformation 时,它表示存储桶已经存在。

    所以我只保留事件源并删除了该存储桶的实际声明来修复它。

    【讨论】:

      【解决方案3】:

      涉及 CloudFormation(或任何其他代码中的基础架构)的任何事情都很麻烦,并且错误消息可能会产生误导,这意味着有很多事情会导致此问题(请参阅 GitHub 上的问题,例如 this one)。

      但根据我的经验,这类问题的最常见原因是不是预先存在的存储桶,而是 AWS 凭证、权限或区域的问题,这些问题会提供误导性错误消息。要解决这些问题,或者至少排除它们:

      1. 确保您的serveless.yml 设置为您已在其中部署堆栈的区域。示例:
      custom:
        stage: dev
        region: us-east-2
      
      1. 覆盖来自~/.aws/credentials 的任何潜在凭据,方法是在您将用于部署的shell 中显式设置您的凭据。来自Serverless docs 的示例:
      export AWS_ACCESS_KEY_ID=<your access key here>
      export AWS_SECRET_ACCESS_KEY=<your access secret here.
      
      1. 确保这些 AWS 凭证具有 the roles and permissions they need

      但是,正如我所提到的,CloudFormation 很挑剔。可能还有其他问题需要解决,但请先尝试这些。您可能会尝试它们,但仍然会用头撞墙,但它更有可能是正确的墙。希望这会有所帮助。

      【讨论】:

      • 这个答案对我很有帮助。就我而言,我的个人资料区域设置为与我尝试部署的区域不同的区域。确实非常具有误导性的错误消息。
      猜你喜欢
      • 2020-06-22
      • 1970-01-01
      • 2020-12-16
      • 2018-09-29
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 1970-01-01
      相关资源
      最近更新 更多