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

최종 업데이트 날짜: 2019년 6월 28일

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

​해결 방법

다음 모범 사례를 참고하십시오.

사용자 지정 리소스를 구축하여 장애를 원할하게 보고, 로그 및 처리

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

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

  • 예외를 처리하는 로직
  • 문제 해결 시나리오에 대해 실패를 기록하는 기능
  • 작업이 실패한 것을 확인하는 HTTPS 응답을 사용하여 AWS CloudFormation에 응답하는 기능
  • 완료되지 않은 실행을 캡처하고 처리하도록 허용하는 데드 레터 대기열

적절한 제한 시간 기간을 설정하고 제한 시간이 초과되려고 할 때 보고

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

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

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

Create 이벤트, Update 이벤트 및 Delete 이벤트에 대한 이해 및 빌드

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

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

AWS CloudFormation이 리소스를 식별하고 대체하는 방법 이해

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

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

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

멱등성을 염두에 두고 함수 설계

idempotent 함수는 입력 수만큼 반복되고 결과는 단 한 번만 실행된 것처럼 나타날 수 있습니다. 멱등성은 AWS CloudFormation으로 작업할 때 재시도, 업데이트 및 롤백이 복제 리소스가 생성되지 않고 오류가 발생하지 않아야 하기 때문에 중요합니다.

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

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

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

롤백을 원활하게 실행할 수 있도록 보장하기 위해 다음 사항을 고려하십시오.

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

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?