gpt4 book ai didi

amazon-web-services - AWS 参数必须具有值错误(值存在)

转载 作者:行者123 更新时间:2023-12-03 07:15:01 27 4
gpt4 key购买 nike

我的 CloudFormation 脚本中有以下参数:

CloudFormationURL:
Type: String
Description: S3 URL for nested CloudFormation templates
Default: ""

此参数涵盖我的部署配置的嵌套文件夹中的 CloudFormation 脚本。

我将它与这样的资源一起使用:

  CloudWatchDashboardStack:
Type: "AWS::CloudFormation::Stack"
Properties:
TemplateURL: !Sub "${CloudFormationURL}/cloudwatch-dashboard.cfn.yaml"
Parameters:
AppName: !Ref AppName
DeployPhase: !Ref DeployPhase
DeveloperPrefix: !Ref DeveloperPrefix
Environment: !Ref Environment

效果很好,并且已经工作了几个月。

我需要添加另一个资源,所以我添加了这个:

BatchDNSResources:
Type: "AWS::CloudFormation::Stack"
Properties:
Parameters:
AppName: !Ref AppName
Environment: !Ref Environment
DeveloperPrefix: !Ref DeveloperPrefix
DeployPhase: !Ref DeployPhase
AppVersion: !Ref AppVersion
SharedBucketName: !Ref SharedBucketName
S3Version: !Ref S3Version
HostedZone: !Ref HostedZone
VPCStackName: !FindInMap
- EnvironmentMap
- !Ref Environment
- VpcStackName
Company: !Ref Company
CostCenter: !Ref CostCenter
Team: !Ref Team
TemplateURL: !Sub "${CloudFormationURL}/batch-dns.cfn.yaml"

CloudFormation 抛出此错误然后失败:

Parameters: [CloudFormationURL] must have values

检查堆栈的变更集,我可以看到 CloudFormationURL 的以下值:

s3://application-shared-dev/application-name/qa/cf/nested/KShyDj205UK8mz6W_XUA5TnEF8nqPWHS

检查应用程序预部署日志,我可以看到:

upload: deploy/cloudformation/templates/nested/batch-dns.cfn.yaml to s3://application-shared-dev/application-name/qa/cf/nested/KShyDj205UK8mz6W_XUA5TnEF8nqPWHS/batch-dns.cfn.yaml

我可以在 S3 存储桶中看到该文件。

如果我删除 BatchDNSResource,堆栈就会成功完成。

我到底错过了什么?

最佳答案

有时,最小的事情也会让你受益匪浅。

我已将主 CloudFormation 脚本(包括此脚本)中的参数复制到嵌套脚本中:

CloudFormationURL:
Type: String
Description: S3 URL for nested CloudFormation templates
Default: ""

如果你仔细观察,你会发现我在调用资源时没有将参数传递到嵌套脚本中:

BatchDNSResources:
Type: "AWS::CloudFormation::Stack"
Properties:
Parameters:
AppName: !Ref AppName
Environment: !Ref Environment
DeveloperPrefix: !Ref DeveloperPrefix
DeployPhase: !Ref DeployPhase
AppVersion: !Ref AppVersion
SharedBucketName: !Ref SharedBucketName
S3Version: !Ref S3Version
HostedZone: !Ref HostedZone
VPCStackName: !FindInMap
- EnvironmentMap
- !Ref Environment
- VpcStackName
Company: !Ref Company
CostCenter: !Ref CostCenter
Team: !Ref Team
TemplateURL: !Sub "${CloudFormationURL}/batch-dns.cfn.yaml"

因为 CloudFormation 控制台说问题出在 BatchDNSResources 上,所以我一直在查看主脚本以查找问题,但缺少其他脚本中的引用。有两种方法可以解决这个问题:

  • CloudFormationURL 保留为嵌套脚本中的参数(如果您出于某种原因需要它)并传递主脚本中的值。
  • 从嵌套脚本中删除参数(如果不需要)

有时,只需多加观察一下并休息一下就能帮助您发现问题。我想把这个问题/答案留在这里,因为当我在这里和其他地方搜索错误时,没有人提到(可能是出于尴尬)这个错误只是忽略了这样的事情。我希望这个答案能够提示其他人在遇到此类错误时检查所有内容。

关于amazon-web-services - AWS 参数必须具有值错误(值存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73991022/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com