【问题标题】:Why use the AWS CloudFormation Template generator if the template it creates is invalid?如果创建的模板无效,为什么要使用 AWS CloudFormation 模板生成器?
【发布时间】:2019-07-01 15:09:38
【问题描述】:

我正在尝试自动化我的服务器设置过程,因此我最终研究了使用 CloudFormation。我启动了 CloudFormation 模板服务,以便它可以检查我当前的设置(在账户 A 中)并生成一个模板供我在新账户(账户 B)中使用。我正在从俄勒冈州构建模板并尝试在俄勒冈州运行它。完整模板在这里(真实IP、帐号和密码已被擦除):https://gist.github.com/cannikin/9801aa3451d538be1689

当我尝试基于该模板启动堆栈时,我收到 15 个 CREATE_FAILED 事件,然后整个事情回滚。查看一些消息我看到很多AWS::EC2::SecurityGroupEgress | egress3 | Encountered unsupported property CidrIP 如果我在模板中查找egress3

"egress3": {
  "Type": "AWS::EC2::SecurityGroupEgress",
  "Properties": {
    "GroupId": {
      "Ref": "sgweb"
    },
    "IpProtocol": "-1",
    "CidrIP": "0.0.0.0/0"
  }
}

这似乎是一个非常简单的规则:允许到任何 IP 的出站连接。我什至没有创建该规则,它只是新安全组的默认出站规则(入站规则是您希望限制特定 IP 地址的规则)。

这是怎么无效的,特别是当它是由他们自己的模板生成器创建的时候?我不应该包含出口规则吗?

我在其中多次看到我的帐户 A 帐号 (123456789),也许需要将其换成帐户 B 帐号?

【问题讨论】:

    标签: amazon-web-services amazon-cloudformation


    【解决方案1】:

    这是无效的,因为您有语法错误。 "CidrIP" 应该是 "CidrIp" 。例如https://gist.github.com/cannikin/9801aa3451d538be1689#file-cloudformation-template-L460

    我建议您首先使用aws cli 运行“测试”。例如:

    aws cloudformation validate-template --template-body file://foo.json

    【讨论】:

      【解决方案2】:

      即使验证测试成功,您的 cloudformation 模板也可能总是由于无法预料的原因而失败。 aws 资源有时具有紧密的依赖关系,只有在您部署它们时才会出现。验证模板操作仅检查模板语法,在某种程度上进行功能验证。但它并不总是对运行时资源具有完全的可见性。我们可以尝试的最好方法是确保根据 aws 文档处理模板依赖关系。

      【讨论】:

        猜你喜欢
        • 2020-09-18
        • 2017-10-30
        • 2019-08-20
        • 2020-07-12
        • 1970-01-01
        • 2017-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多