[CloudFormon] 중첩된 스택 구조에서 하위 스택 이름을 가져오는 방법

프로비저닝


상위 템플릿
- 하위 템플릿 1(ChildStack1)
- 하위 템플릿 2(ChildStack2)

하고 싶은 일


하위 템플릿 2의 매개 변수에서 하위 템플릿 1의 창고 이름을 사용하려면

설치 방법


1. 하위 템플릿 1의 Outputs 섹션에서 Ref 내장 함수로 출력한 내용을 부모 템플릿에서 하위 템플릿 2로 전달
설치 예: 함수 및 위조 매개 변수를 Ref로 포함하여 하위 템플릿 1의 스택 이름을 출력할 수 있습니다.
Outputs:
  ChildStack1Name:
    Value: !Ref AWS::StackName
2. 부모 템플릿에서 속성으로 하위 템플릿 2로 전송할 때 내장 함수 사용하기
설치 예: 여러 내장 함수를 사용하여 하위 템플릿 1의 스택 이름을 가져올 수 있습니다.
ChildStack1Name: 
  Fn::Select:
    - 1
    - Fn::Split:
      - /
      - !Ref ChildStack1
저는 기본적으로 1의 방법으로 이루어지고 싶어요.
단, 파라미터가 자신이 관리하지 않은 하위 템플릿의 창고 이름을 필요로 한다면
2의 방법도 실현할 수 있다

2 상세 정보


부모 템플릿에서 하위 템플릿의 창고 이름을 가져오려면
먼저 떠오르는 건 자택에 대한 태도!실패 혹은 실패!GetAtt 사용 방법
그러나AWS:CloudFormation:Stack에서는 하나도 안 좋아요!Ref만 대응
스택 ID로 내보내기
참조: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/aws-properties-stack.html
따라서 다음 내장 함수를 사용하여 창고 이름을 가져옵니다.
・Ref
・Fn::Select
・Fn::Split

각 삽입 함수에 대한 간단한 설명


・Ref
- 지정된 매개변수 또는 리소스의 값을 반환합니다.
・Fn::Select
- 목록 객체에서 색인을 사용하여 해당 객체를 반환합니다.
・Fn::Split
- 객체를 선택할 수 있도록 문자열을 목록 형식으로 분할합니다.
참조: https://docs.aws.amazon.com/ja_jp/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference.html

실장 설명


ChildStack1Name: 
  Fn::Select:
    - 1
    - Fn::Split:
      - /
      - !Ref ChildStack1
상기 코드의 처리를 순서대로 하나하나 본다(아래에서 본다)
1.!Ref를 사용하여 하위 템플릿 1의 스택 ID 가져오기
2. Fn: Split, 1을 사용합니다.에서 가져온 스택 ID를 목록으로 분할합니다.
이때 첫 번째 매개 변수를 사용하여 구분자를 지정합니다. (이번에는 "/")
두 번째 매개변수로 구분된 문자열 지정하기
※ 스택 ID의 형식은 다음과 같습니다.
an:aws:cloudformation:::stack//<랜덤 문자열>
3. Fn: Select, 2를 사용합니다.에서 분할된 문자열 목록에서 스택 이름을 선택하고 스택 이름을 가져옵니다.
이때 첫 번째 매개 변수가 색인을 지정합니다. (이번에는 "1")
두 번째 매개변수에서 선택할 객체 목록을 지정합니다.

좋은 웹페이지 즐겨찾기