프로덕션에서 AWS CloudFormation UPDATE_ROLLBACK_FAILED 수정

최근에 서버리스 애플리케이션을 배포하려고 시도하는 동안 파이프라인이 실패하여 클라우드 형성 스택이 "UPDATE_ROLLBACK_FAILED"상태가 되었습니다. 이것은 파이프라인의 오류 때문입니다. 제 경우에는 기본 계층인 "arn:aws:lambda:us-east-1:770693421928:layer:klayers-python38-pandas:35"를 사용하려고 했습니다. 이 문서를 작성하는 시점에는 존재하지 않습니다. .

일반적으로 AWS SAM Cli 또는 클라우드 형성에 익숙하다면 이 상태가 "UPDATE_COMPLETE"로 변경될 때까지 새 업데이트를 배포할 수 없다는 것을 알게 될 것입니다.

이제 이 상황에 직면한 두 가지 옵션이 있습니다(적어도 제가 알고 있는 것은).
  • 업데이트 롤백 프로세스를 완료하려고 시도합니다.
  • 스택을 삭제하고 다른 스택을 생성합니다.

  • 두 번째 옵션은 프로덕션에서 이 작업을 수행하고 싶지 않을 수 있다는 사실이 기본적으로 응용 프로그램을 종료하는 것 외에는 거의 완벽하고 간단합니다.

    그러나 첫 번째 옵션이 훨씬 더 권장됩니다. 이제 업데이트 롤백을 어떻게 완료합니까?

    AWS CLI 사용



    aws cloudformation continue-update-rollback 명령을 사용하여 업데이트 롤백을 완료할 수 있습니다.

    aws cloudformation continue-update-rollback \
    --stack-name STACK_NAME \
    --resources-to-skip LIST_OF_RESOURCES
    


    여기서 STACK_NAME은 스택의 이름이고 LIST_OF_RESOURCES는 건너뛸 리소스의 논리적 ID 목록입니다. LIST_OF_RESOURCES의 경우 UPDATE_FAILED 상태인 리소스만 지정해야 합니다.

    견본

    aws cloudformation continue-update-rollback \
    --stack-name eazido-app-stack \
    --resources-to-skip CustomerApi PaymentApi 
    


    AWS 콘솔 사용


  • AWS 콘솔의 클라우드 형성 영역을 방문하십시오 - https://console.aws.amazon.com/cloudformation/
  • 롤백이 필요한 스택을 선택합니다.
  • "스택 작업"에서 "업데이트 롤백 계속"을 선택합니다.
    참고 이 업데이트 롤백이 여전히 실패하거나 일부 리소스를 건너뛰려면 "업데이트 롤백 계속"대화 상자에서 "고급 문제 해결"을 선택하고 건너뛸 리소스를 선택하십시오.

  • 이 작업이 완료되면 이제 스택에 "** UPDATE_ROLLBACK_COMPLETE**"상태가 표시됩니다. 업데이트를 다시 배포하려고 하면 제대로 작동합니다.

    그러나 오류로 인해 업데이트가 어떻게 실패했는지 기억하고 배포하기 전에 이를 식별하고 수정해야 합니다. 내 경우에는 버전이 존재하지 않는 레이어를 사용하고 있었습니다. 스택 템플릿을 업데이트하여 레이어를 업데이트해야 했습니다(이에 대해서는 잠시 후 설명하겠습니다). 실패한 스택의 이벤트 탭에서 상태 이유 열을 확인하여 스택이 실패한 이유를 알 수 있습니다.

    CloudFormation 템플릿 업데이트


  • 해당 템플릿을 업데이트할 스택을 선택하고 "템플릿"탭에서 "디자이너에서 보기""를 선택합니다.



  • "디자이너에서 보기"페이지가 로드되면 이와 유사한 페이지가 표시됩니다.


    AWS CLI의 (get-template)[ https://docs.aws.amazon.com/cli/latest/reference/cloudformation/get-template.html ] 명령을 사용하여 특정 스택에 대한 템플릿을 가져올 수 있습니다.

    aws cloudformation get-template --stack-name STACK_NAME
    


  • 템플릿을 json 또는 Yaml 파일로 편집할 수 있습니다. 변경을 마치면 페이지 왼쪽 상단 모서리에 있는 파일 아이콘을 클릭하고 "저장"을 클릭합니다. 노트북이나 s3 버킷에 저장할 수 있습니다. 완료되면 페이지를 종료할 수 있습니다.

  • 변경 세트 생성 및 실행


  • 템플릿을 업데이트할 스택을 선택합니다.
  • "스택 작업"에서 "현재 스택에 대한 변경 세트 만들기"를 선택합니다. 다음과 같은 페이지가 표시되어야 합니다.
  • "현재 템플릿 바꾸기"를 클릭하고 편집한 템플릿을 저장한 위치에 따라 템플릿 소스(로컬 또는 s3)를 선택합니다.
  • 변경 세트를 검토하고 실행합니다. 이렇게 하면 AWS 클라우드 형성 스택 업데이트가 시작되고 이벤트 탭에서 진행 상황을 볼 수 있습니다.

  • AWS CLI의 (update-stack)[ https://docs.aws.amazon.com/cli/latest/reference/cloudformation/update-stack.html ] 명령을 사용하여 특정 스택을 업데이트할 수 있습니다.

    aws cloudformation update-stack --stack-name STACK_NAME --template-url https://s3.amazonaws.com/sample/updated_template.template
    


    참고: AWS CLI 오류가 발생하는 경우 - AWS cli troubleshooting guide.을 살펴보는 것이 좋습니다.

    좋은 웹페이지 즐겨찾기