0

另一位工程师在 prod 堆栈中的 AMIFInder 自定义资源中引入了一个部署日期参数,这意味着我们无法在不尝试重新创建 EC2 实例的情况下更新开发堆栈。

是否可以完全基于DeployDate参数引入条件,以便我仍然可以为两个堆栈使用一个模板?

FindAmiResource:
    Type: 'Custom::FindAmiFunction'
    Properties:
      ServiceToken:
        Fn::ImportValue:
          !Sub 
          - cfn:find-ami:${AWSAccount}:arn
          - {AWSAccount: !FindInMap [AccountIDMap, Accounts, !Ref "AWS::AccountId"]}
      AmiName: 'Corp_w2016_Std-*'
      AmiOwner: '9999999999999'
      DeployDate: !Ref AMIDeployDate
4

1 回答 1

0

假设您有一些要关闭的信息(例如已知的 AccountId 或堆栈中的参数),您可以创建一个将堆栈定义为 dev 的条件。然后您可以使用 'Fn::If' 函数,如下所示:

FindAmiResource:
    Type: 'Custom::FindAmiFunction'
    Properties:
      ServiceToken:
        Fn::ImportValue:
          !Sub 
          - cfn:find-ami:${AWSAccount}:arn
          - {AWSAccount: !FindInMap [AccountIDMap, Accounts, !Ref "AWS::AccountId"]}
      AmiName: 'Corp_w2016_Std-*'
      AmiOwner: '9999999999999'
      DeployDate: 
        Fn::If:
          - DevCondition
          - !Ref AWS::NoValue
          - !Ref AMIDeployDate
于 2020-02-13T16:47:19.630 回答