CloudFormation에서 조건문에 CommaDelimitedList형 변수를 사용할 때(yaml)

1794 단어 AWSCloudFormationtech

날과 씨

  • 클라우드Formation에서create-stack을 실행할 때 변수ENV를 매개 변수로 가져오고 환경마다 변수EC2SGID<ENV>를 사용합니다
  • 값이 여러 & 같은 템플릿 환경에서 관리되지 않기 때문에 CommaDelimitedList형
  • 을 사용했습니다.
  • 조건 지점에서 CommaDelimitedList형 변수를 사용할 때 어떻게 배열해야 할지 몰라
  • 조건문에서 CommaDelimitedList형 변수를 어떻게 사용합니까?
  • 실패 예


    Parameters:
      ENV:
        Type: String
        AllowedValues:
          - dev
          - stg
          - prd
      EC2SGIDDev:
        Type: CommaDelimitedList
        Default: sg-hoge, sg-fuga
      EC2SGIDStg:
        Type: CommaDelimitedList
        Default: sg-foo, sg-bar
      EC2SGIDPrd:
        Type: CommaDelimitedList
        Default: sg-piyo, sg-baz
    Resources:
    	HogeLaunchTemplate:
    	    Type: AWS::EC2::LaunchTemplate
    	    Properties:
    	      LaunchTemplateData:
    		# 省略
    		# この書き方だとエラーになる
    		SecurityGroupIds: !If [IsDev, !Ref EC2SGIDDev, !If IsStg, !Ref EC2SGIDStg, !Ref EC2SGIDPrd]
    

    결실

  • 스토리지를 하위 상태에 쓸 수 있음
  • 전제 조건

  • Template는 yaml 형식
  • 을 사용합니다.

    컨텐트


    AWSTemplateFormatVersion: '2010-09-09'
    Description: hoge
    Parameters:
      ENV:
        Type: String
        AllowedValues:
          - dev
          - stg
          - prd
      EC2SGIDDev:
        Type: CommaDelimitedList
        Default: sg-hoge, sg-fuga
      EC2SGIDStg:
        Type: CommaDelimitedList
        Default: sg-foo, sg-bar
      EC2SGIDPrd:
        Type: CommaDelimitedList
        Default: sg-piyo, sg-baz
    Conditions:
      IsDev: !Equals [!Ref ENV, dev]
      IsStg: !Equals [!Ref ENV, stg]
      IsPrd: !Equals [!Ref ENV, prd]
    Resources:
    	HogeLaunchTemplate:
    	    Type: AWS::EC2::LaunchTemplate
    	    Properties:
    	      LaunchTemplateData:
    		# 省略
    		# 入れ子で構文エラーを回避
    		SecurityGroupIds: !If [IsDev, !Ref EC2SGIDDev, !If [IsStg, !Ref EC2SGIDStg, !Ref EC2SGIDPrd]]
    

    좋은 웹페이지 즐겨찾기