You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFormation报GetObject.NoSuchKey错误,需排查S3路径与参数读取问题

解决CloudFormation中S3 NoSuchKey错误及!Join用法问题

1. 修复!Join语法错误

你的!Join写法存在语法问题,正确格式应为!Join [ "<分隔符>", [ <元素1>, <元素2>... ] ],你写的delimiter是无效占位符,需替换为实际分隔符。另外要注意避免拼接出重复斜杠(比如默认值/直接拼接会得到//subscription-health-check.zip,这会导致S3键无效)。

推荐两种修正方式:

  • 用!Join处理:
S3Key: !Join [ "", [ !Ref SubscriptionApiVersonedPath, "subscription-health-check.zip" ] ]
  • 用!Sub更直观处理斜杠问题:
S3Key: !Sub "${SubscriptionApiVersonedPath}${SubscriptionApiVersonedPath:ends_with('/') ? '' : '/'}subscription-health-check.zip"

2. 验证实际生成的S3键值

要确认CloudFormation最终使用的S3 Key,可通过以下方法:

  • 添加输出项:在模板末尾新增Outputs部分,直接输出拼接后的结果:
Outputs:
  HealthCheckLambdaS3Key:
    Value: !Join [ "", [ !Ref SubscriptionApiVersonedPath, "subscription-health-check.zip" ] ]
    Description: Actual S3 Key used for Lambda function

部署完成后,在CloudFormation控制台的「输出」标签即可查看最终键值。

  • 查看变更集:部署前创建变更集,在预览结果里找到Lambda函数的S3Key属性,就能看到拼接后的具体值。
  • 部署后检查Lambda配置:进入Lambda控制台,查看函数的「代码」标签,里面会显示实际使用的S3桶和键。

3. 确认Parameter Store参数是否被正确读取

同样用Outputs验证参数值:

Outputs:
  SubscriptionApiVersonedPathValue:
    Value: !Ref SubscriptionApiVersonedPath
    Description: Value fetched from Parameter Store

部署后查看输出即可确认参数是否被正确加载。

额外排查点

  • 确认S3桶bwotn-deployment-pipeline中存在对应键的对象,注意S3键区分大小写。
  • 检查CloudFormation执行角色是否拥有访问该S3桶和SSM参数的权限。

内容的提问来源于stack exchange,提问作者Danny Ellis Jr.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 12:43:27