CloudFormation을 사용해 Lambda 기반 사용자 지정 리소스를 구현할 때의 모범 사례는 무엇입니까?

3분 분량
0

AWS CloudFormation을 사용해 AWS Lambda 기반 사용자 지정 리소스를 구현할 때의 모범 사례를 참고하고 싶습니다.

해결 방법

AWS CloudFormation을 사용해 AWS Lambda 기반 사용자 지정 리소스를 구현할 때의 모범 사례를 고려합니다.

사용자 지정 리소스를 빌드하여 실패를 정상적으로 보고, 기록 및 처리

예외로 인해 함수 코드가 응답을 보내지 않고 종료될 수 있습니다. CloudFormation은 작업이 성공인지 실패인지 확인하기 위해 HTTPS 응답이 필요합니다. 또한 보고되지 않은 예외가 발생하면 CloudFormation은 스택 롤백 작업을 시작하기 전에 작업 제한 시간까지 대기 상태가 됩니다. 롤백 중 예외가 다시 발생하면 CloudFormation은 롤백 실패로 종료되기 전에 제한 시간까지 다시 대기합니다. 이 시간 동안 스택을 사용할 수 없습니다.

제한 시간 문제를 방지하려면 Lambda 함수에 대해 생성한 코드에 다음을 포함하십시오.

  • 예외를 처리하는 로직
  • 문제 해결 시나리오에 대해 실패를 기록하는 기능
  • 작업이 실패한 것을 확인하는 HTTPS 응답으로 CloudFormation에 응답하는 기능
  • 완료되지 않은 실행을 캡처하고 처리할 수 있는 DLQ(Dead Letter Queue)
  • CloudFormation에 응답을 보내는 cfn-response 모듈

합리적인 제한 시간 기간을 설정하고, 이 기간을 초과하려고 할 경우 보고

작업이 정의된 제한 시간 내에 실행되지 않는 경우 함수가 예외를 발생시키면 CloudFormation에 응답이 전송되지 않습니다.

이 문제를 방지하려면 다음 사항을 고려하십시오.

  • Lambda 함수에 대한 제한 시간 값을 가변적인 처리 시간과 네트워크 상태에 따라 처리하기에 충분히 높게 설정합니다.
  • 함수의 타이머를 함수가 제한 시간을 초과하려고 할 때 오류를 발생시켜 CloudFormation에 응답하도록 설정합니다. 타이머는 사용자 지정 리소스의 지연을 방지하는 데 도움이 됩니다.

Create, Update, Delete 관련 이벤트 구축

스택 작업에 따라 CloudFormation는 함수에 Create, Update 또는 Delete 이벤트를 보냅니다. 각 이벤트는 다르게 처리되기 때문에 세 가지 이벤트 유형 중 하나라도 수신된 경우 의도하지 않은 동작이 없는지 확인합니다.

자세한 내용은 사용자 지정 리소스 요청 유형을 참조하십시오.

CloudFormation이 리소스를 식별 및 교체하는 방법 이해

업데이트로 인해 물리적 리소스의 대체가 시작되면 CloudFormation은 Lambda 함수가 반환한 PhysicalResourceId를 이전 PhysicalResourceId와 비교합니다. ID가 다르면, CloudFormation은 리소스가 새 물리적 리소스로 대체된다고 가정합니다.

그러나 잠재적인 롤백을 허용하기 위해 이전 리소스는 묵시적으로 제거되지 않습니다. 스택 업데이트가 성공적으로 완료될 때 Delete 이벤트 요청이 식별자로서 이전 물리적 ID와 함께 전송됩니다. 스택 업데이트가 실패하고 롤백이 발생하면 새 물리적 ID가 Delete 이벤트를 통해 전송됩니다.

PhysicalResourceId를 사용하여 리소스를 고유하게 식별하여 Delete 이벤트가 수신되면 올바른 리소스만 교체 중에 삭제되도록 합니다.

멱등성을 사용하여 함수 설계

멱등 함수는 동일한 입력으로 여러 번 반복할 수 있으며, 결과는 한 번만 수행한 경우와 같습니다. 멱등성은 재시도, 업데이트 및 롤백이 복제 리소스가 생성되지 않고 오류가 발생하지 않도록 합니다.

예를 들어, CloudFormation은 함수를 호출하여 리소스를 생성했지만, 리소스가 생성되었다는 응답을 수신하지 않았습니다. CloudFormation에서 함수를 다시 호출하고 두 번째 리소스를 생성할 수 있습니다. 그러면 첫 번째 리소스는 고립될 수도 있습니다.

롤백을 올바르게 처리하기 위해 핸들러 구현

스택 작업이 실패할 경우 CloudFormation은 롤백을 시도하고 모든 리소스를 이전 상태로 복원합니다. 그 결과 업데이트로 인해 리소스 교체가 발생했는지 여부에 따라 다른 동작이 발생합니다.

롤백이 성공적으로 완료되도록 하려면 다음 사항을 고려합니다.

  • Delete 이벤트가 수신될 때까지 이전 리소스를 암시적으로 제거하지 마십시오.
  • GitHub 웹 사이트에서 Accutom 또는 사용자 지정 리소스 헬퍼를 사용하여 CloudFormation에서 사용자 지정 리소스를 사용할 때의 모범 사례를 따르십시오.

관련 정보

사용자 지정 리소스

AWS 공식
AWS 공식업데이트됨 일 년 전
댓글 없음

관련 콘텐츠