AWS CodeDeploy 배포 시간이 초과되어 다음 오류가 반환됩니다. "The deployment timed out while waiting for a status callback. CodeDeploy expects a status callback within one hour after a deployment hook is invoked."
간략한 설명
이 문제는 CodeDeploy를 사용하여 검증 테스트와 함께 Amazon Elastic Container Service(Amazon ECS) 서비스를 배포할 때 발생할 수 있습니다.
수명 주기 이벤트 후크가 호출된 후 60분 이내에 테스트에서 성공 또는 실패 응답을 반환하지 않으면 CodeDeploy는 다음 오류를 반환합니다.
"The deployment timed out while waiting for a status callback. CodeDeploy expects a status callback within one hour after a deployment hook is invoked."
참고: 수명 주기 후크 AWS Lambda 함수의 상태 콜백에 대한 기본 제한 시간은 60분입니다.
오류를 해결하려면 수명 주기 후크 Lambda 함수에 필요한 메서드가 있고 AWS Identity and Access Management(IAM) 권한을 가지고 있는지 확인하십시오.
해결 방법
CloudWatch 로그를 검토하여 오류의 원인 확인
지침은 Amazon CloudWatch Logs에서 로그 데이터를 검색하려면 어떻게 해야 합니까?를 참조하십시오.
수명 주기 후크 Lambda 함수에 필요한 IAM 권한이 있는지 확인
수명 주기 후크 Lambda 함수에 다음 권한이 포함된 실행 역할이 있는지 확인합니다. PutLifecycleEventHookExecutionStatus.
참고: PutLifecycleEventHookExecutionStatus 권한은 AWS 관리형 CodeDeployFullAccess IAM 정책에 기본적으로 포함되지 않습니다.
PutLifecycleEventHookExecutionStatus 권한 문의 다음 예를 참조하십시오.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "codedeploy:PutLifecycleEventHookExecutionStatus",
"Resource": "*"
}
]
}
수명 주기 후크 Lambda 함수에 CodeDeploy로 상태 응답을 반환하는 데 필요한 메서드가 있는지 확인
수명 주기 후크 Lambda 함수에 putLifecycleEventHookExecutionStatus 메서드가 포함되어 있는지 확인합니다.
자세한 내용은 CodeDeploy 사용 설명서의 3단계: 수명 주기 후크 Lambda 함수 생성을 참조하십시오.
수명 주기 후크 Lambda 함수에 대한 putLifecycleEventHookExecutionStatus 메서드의 다음 예를 참조하십시오.
codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) {
if (err) {
// Validation failed.
console.log('AfterAllowTestTraffic validation tests failed');
console.log(err, err.stack);
callback("CodeDeploy Status update failed");
} else {
// Validation succeeded.
console.log("AfterAllowTestTraffic validation tests succeeded");callback(null, "AfterAllowTestTraffic validation tests succeeded");
}