【问题标题】:DependsOn best practices in AWS Cloud Formation (example included)AWS Cloud Formation 中的 DependsOn 最佳实践(包括示例)
【发布时间】:2022-01-24 09:32:14
【问题描述】:

在 CloudFormation 中使用 Depends On 的最佳实践是什么?我相信根据我的阅读,不建议在 Azure 中这样做并尽量减少它的使用。

例如,我想在 ASG 策略和 ASG 组之间建立 DependsOn 关系。

在上图中,您可以看到 ASG Policy 有一个字段 AutoScalingGroupName。

因此,ASG 策略取决于 AutoScaling 组的创建。

这两者之间是否存在依赖关系?

【问题讨论】:

  • 你的实际模板是什么?
  • @Marcin 抱歉,不确定您的意思?
  • 您要部署到 AWS 的实际 cloudformation 模板?
  • 还没有开始写模板,只是先创建这个来映射关系
  • @Marcin 在我的模板中,我想包含一个自动缩放组并向该自动缩放组添加策略。因此,如果没有自动缩放组,自动缩放策略就无法发挥作用,所以我的想法是......我希望这两者之间存在 DependsOn 关系:S ?

标签: amazon-web-services amazon-cloudformation infrastructure-as-code


【解决方案1】:

一般来说,CloudFormation 模板中引用另一个资源的任何资源都会自动隐含 DependsOn。

例如:

  PrivateRouteTable1:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref VPC
      Tags:
        - Key: Name
          Value: !Sub ${EnvironmentName} Private Routes (AZ1)

  DefaultPrivateRoute1:
    Type: AWS::EC2::Route
    Properties:
      RouteTableId: !Ref PrivateRouteTable1
      DestinationCidrBlock: 0.0.0.0/0
      NatGatewayId: !Ref NatGateway1

DefaultPrivateRoute1 将隐含 DependsOn 与 PrivateRouteTable1 和 NatGateway1。

因此,您特别需要添加DependsOn 的唯一情况是没有直接关系,但需要创建顺序。这是一个例子:

  InternetGateway:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: !Ref EnvironmentName

  NatGateway1EIP:
    Type: AWS::EC2::EIP
    DependsOn: InternetGatewayAttachment
    Properties:
      Domain: vpc

在这种情况下,在弹性 IP 地址和 InternetGateway 之间定义了一个DependsOn。这很有帮助,因为弹性 IP 地址和 Internet 网关(链接到 VPC)之间没有直接关系。

我看到了 Amazon EC2 实例在其用户数据脚本中出现故障的情况,因为其他资源尚未“准备好”,因此该脚本无法访问 Internet。诊断此类情况可能很困难,因为它们可能是暂时的。因此,您可能需要在所需资源之间没有直接引用的情况下专门添加一些 DependsOn 引用。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 2014-04-25
  • 1970-01-01
  • 2015-02-05
  • 2014-03-23
  • 1970-01-01
  • 2010-12-26
相关资源
最近更新 更多