gpt4 book ai didi

amazon-web-services - 在 CloudFormation 中使用条件和参数

转载 作者:行者123 更新时间:2023-12-03 20:29:56 25 4
gpt4 key购买 nike

我正在尝试根据可选参数创建一个条件。该选项是是否从我的 userData 脚本运行一些额外的安装以进行 EC2 部署。

参数和条件如下所示:

Parameters: 
EnvType:
Description: Option to install New Relic Infrastructure.
Default: apm
Type: String
AllowedValues:
- apm
- +infra

然后是我的带有条件启动脚本的 EC2 资源

Resources:
Ec2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: t2.micro
ImageId: ami-9c9443e3 #Amazon Linux AMI in Tokyo
KeyName: tokyocloudformation
IamInstanceProfile: 'S3EC2'
SecurityGroupIds:
- !Ref myNewSecurityGroup
UserData:
Condition: apmOnly
Fn::Base64:
|
#!/bin/bash
installstuff
Condition: addInfrastructureAgent
Fn::Base64:
|
#!/bin/bash
installstuff
installsomeotherstuff

我收到的错误消息是:模板验证错误:模板格式错误:未解析的依赖项 [EnvTyp]。无法引用模板的条件 block 中的资源

我相信错误所说的内容,但它似乎与 AWS 给出的示例不符。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html 。此 AWS 示例显然在 Conditions block 中使用了 !Ref。

  EnvType: 
Description: Environment type.
Default: test
Type: String
AllowedValues:
- prod
- test
ConstraintDescription: must specify prod or test.
Conditions:
CreateProdResources: !Equals [ !Ref EnvType, prod ]

有人可以提供一些关于如何实现此条件或为什么此实现抛出此错误消息的反馈吗?

最佳答案

根据docs , 条件应该在您想要有条件创建的资源的顶层使用。

不支持在 Instance UserData 部分中放置 Condition

要在您的情况下使用条件,您需要根据参数有条件地创建单独的资源。

Resources:
Ec2InstanceAPMOnly:
Type: AWS::EC2::Instance
Condition: apmOnly
Properties:
InstanceType: t2.micro
ImageId: ami-9c9443e3 #Amazon Linux AMI in Tokyo
KeyName: tokyocloudformation
IamInstanceProfile: 'S3EC2'
SecurityGroupIds:
- !Ref myNewSecurityGroup
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
installstuff

Ec2InstanceWithInfrastructureAgent:
Type: AWS::EC2::Instance
Condition: addInfrastructureAgent
Properties:
InstanceType: t2.micro
ImageId: ami-9c9443e3 #Amazon Linux AMI in Tokyo
KeyName: tokyocloudformation
IamInstanceProfile: 'S3EC2'
SecurityGroupIds:
- !Ref myNewSecurityGroup
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
installstuff
installsomeotherstuff

关于amazon-web-services - 在 CloudFormation 中使用条件和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51566585/

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