CloudFormation에서 스택의 특정 리소스를 변경하지 않고 변경 처리하는 방법 (슈퍼 간단하고 수수하게 실현)

3156 단어 CloudFormationAWS

배경



AWS CloudFormation에서 스택 업데이트(update-stack)를 수행할 때 각 리소스의 코드에 변경 사항이 없으면 해당 리소스는 변경되지 않습니다.
단, Lambda-backed 커스텀 리소스 (CloudFormation 템플릿 내에서 Lambda를 실행하고 반환 값을 다른 리소스의 매개 변수로 사용)와 같이 스택을 업데이트 할 때마다 매번 업데이트 (실행)하지 않으면 문제가 있습니다. .
그래서 매우 쉽게 특정 리소스를 매번 업데이트 처리하는 방법을 생각해 냈습니다.

실현 방법



실현 방법은 다음과 같습니다.
선택적으로 매개 변수를 정의하고 매개 변수를 설명에 포함하면됩니다.
만약 Description이 없는 경우는, 그 자원을 설명하는 임의 캐릭터 라인을 의미하는 대체 파라미터에 포함합니다. (처음 Description이 없는 리소스가 있는지는, 엄청나기 때문에 조사하고 있지 않습니다...)
매우 까다로운 방법이지만 특정 리소스에만 쉽게 업데이트 플래그를 지정할 수 있습니다.

Parameters 예제


Parameters: 
  ModifyStackDate: 
    Type: String
    Default: '201901010000'
    Description: Enter Date of Modify Stack.

변경할 리소스



다음과 같이 Description에 매개변수를 포함합니다.
!Ref로 파라미터를 지정하는 것만으로 간단하게 할 수 있습니다.
다른 문자열과 결합하려면 다음과 같이! Join을 사용하면됩니다.
HogeHoge:
  Type: "AWS::Lambda::リソースの種類"
  Properties:
    Description: !Join [ ":", [ 'リソースの説明', !Ref ModifyStackDate ] ]
    (以下略)

update-stack



다음과 같이 --parameters 를 포함해 ParameterKey 와 ParameterValue 로 파라미터명과 값의 조합을 지정하기만 하면 됩니다.
aws cloudformation update-stack --stack-name Hoge-Stack --template-body file://hoge.yaml --capabilities CAPABILITY_NAMED_IAM --parameters ParameterKey=ModifyStackDate,ParameterValue=201906030600

실행 결과



"Lambda-backed 사용자 지정 리소스로 Lambda의 Boto3 자동 업데이트"로 쓴, 매번 최신화하고 싶은 Lambda Layer로 시험해 보았습니다.
다음과 같이, 설명문에 매번 임의의 파라미터치를 부가하는 것으로, 변경 취급이 됩니다.


매우 쉽게 CloudFormation의 스택에 있는 특정 리소스만 변경 처리할 수 있었습니다.
매우 수수한 방법입니다만, Lambda-backed 커스텀 리소스로 매회 실행시키고 싶은 처리가 있는 경우에, 매우 간단하게 위력을 발휘합니다.

좋은 웹페이지 즐겨찾기