【发布时间】:2022-01-27 15:41:07
【问题描述】:
我有一个 cloudformation 模板来创建一个 ec2 实例。该模板还会启动一个 httpd 以及一些提供的内容。
我正在使用 Parameter 部分来允许指定或选择一个键 - 请参阅下面的 sn-p:
Parameters:
paramKeyPair:
Description: KeyPairName
Type: AWS::EC2::KeyPair::KeyName
我通过 AWS CLI 调用 ec2-instance,如下所示:
aws cloudformation create-stack --stack-name stack-ec2instance --template-body file://demo-ec2instance --parameters ParameterKey=paramKeyPair,ParameterValue=peterKeyPair
所以可以创建实例,并且可以将密钥对作为参数传递 - 但是 - 坦率地说,我实际上并不关心实例是否可以访问。它只是一个可以向上或向下旋转的 Web 服务器。 SSH 访问很好,但没什么大不了的。
事实上,如果我从 cloudformation 模板中删除了 keypair 参数 - 并在 AWS CLI 调用中删除了关联的引用 - Cloudformation 将很高兴在没有密钥对的情况下启动实例。太好了!
我真正想要的是让 cloudformation 处理密钥对是否存在。 我认为最好的方法是更新代码,以便参数具有默认值“无”(例如),然后可以从 AWS CLI 运行 ec2-instance,如果 keypair 参数不是指定,则 AWS 将知道根本不用担心密钥对。
问题在于,通过将 Type 指定为 AWS::EC2::KeyPair::KeyName,AWS CLI 需要一个实际值。
我没有想法 - 如果其他人已经解决了这个问题 - 我将非常感激。 谢谢 彼得。
【问题讨论】:
标签: amazon-web-services templates parameter-passing amazon-cloudformation