gok*_*ack 5 amazon-s3 amazon-web-services aws-cloudformation serverless-framework serverless
我正在尝试部署一个 serverless 项目,该项目在 serverless.yml 文件中具有 s3 存储桶创建 cloudformation,但问题是当我尝试部署时,它说 s3 存储桶已经存在并且部署失败。
我知道 s3 存储桶名称应该是全局唯一的,而且我非常确定它是我正在使用的唯一名称,即使更改为其他名称,它仍然表示相同。
它说存在 s3 存储桶的 cloudformation 堆栈实际上是新创建的堆栈,不确定如何解决此问题。谁能帮我解决这个问题并告诉我如何解决部署问题和问题的原因:)。
提前致谢。
gok*_*ack 14
我遇到的问题是,对于其中一个 lambda,我将上述存储桶作为event source,因此当将某个存储桶添加为事件源时,它实际上也会创建该存储桶,因此当它运行实际创建相关的 cloudformation 时,它会说该存储桶已经存在。
因此,我通过仅保留事件源并删除了该存储桶的实际声明来修复它。
Joe*_*ene 10
如果您添加existing: true到文件中的 S3 配置,serverless.yml它不会尝试创建如下所示的 S3 存储桶:-
funcName:
handler: handler
events:
- s3:
bucket: 'my-bucket-name'
events: s3:ObjectCreated:*
existing: true
rules:
- suffix: .pdf
- prefix: documents
Run Code Online (Sandbox Code Playgroud)
小智 5
任何涉及 CloudFormation(或任何其他代码中的基础设施)的事情都很麻烦,并且错误消息可能会产生误导,这意味着有很多事情都可能导致此问题(请参阅 GitHub 上的问题,例如这个)。
但根据我的经验,此类问题的最常见原因不是预先存在的存储桶,而是 AWS 凭证、权限或区域的问题,这些问题会提供误导性的错误消息。要解决这些问题,或者至少排除它们:
serveless.yml设置为已部署堆栈的区域。示例:custom:
stage: dev
region: us-east-2
Run Code Online (Sandbox Code Playgroud)
~/.aws/credentials通过在将用于部署的 shell 中显式设置您的凭据,覆盖任何潜在凭据。无服务器文档中的示例:custom:
stage: dev
region: us-east-2
Run Code Online (Sandbox Code Playgroud)
但是,正如我提到的,CloudFormation 很挑剔。可能还有其他问题需要解决,但请先尝试这些问题。你可能会尝试它们,但仍然会用头撞墙,但它更有可能是正确的墙。希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
4587 次 |
| 最近记录: |