AWS CodePipeline이 두 번 실행될 때 이를 수정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2021년 2월 15일

AWS CodePipeline이 두 번 실행됩니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

AWS CodePipeline이 두 번 이상 실행되는 두 가지 일반적인 이유는 다음과 같습니다.

  • PollForSourceChanges 파라미터가 true로 설정되어 폴링으로 트리거된 파이프라인이 두 번째로 시작됩니다.
  • 파이프라인과 동일한 대상을 가진 중복 CloudWatch 이벤트 규칙이 있으며, 이로 인해 파이프라인이 두 번 실행될 수 있습니다.

이 문제를 해결하려면 먼저 파이프라인 기록을 살펴보고 파이프라인이 두 번 실행되는 원인을 확인합니다.

동일한 CloudWatch Events 규칙으로 트리거된 파이프라인이 두 개 이상 실행되는 경우 중복 규칙을 삭제하거나 비활성화합니다.

폴링으로 트리거된 파이프라인이 실행되는 경우 PollForSourceChanges 파라미터의 기본 동작 이해 섹션을 참조하세요. 그리고 시나리오에 따라 다음 섹션 중 하나의 단계를 완료합니다.

  • AWS CloudFormation을 사용하여 파이프라인을 생성한 경우 AWS CloudFormation 템플릿 업데이트 섹션의 단계를 완료합니다.
  • AWS 명령줄 인터페이스(AWS CLI)를 사용하여 파이프라인을 생성한 경우 JSON 파일로 파이프라인 업데이트 섹션의 단계를 완료합니다.
  • AWS SDK를 사용하여 파이프라인을 생성한 경우 사용자 언어 구성 구문에 따라 파이프라인 업데이트 섹션의 단계를 완료합니다.

중요: 파이프라인을 생성한 것과 동일한 방법으로 파이프라인을 업데이트합니다. 파이프라인의 대역 외 변경을 피하고 시나리오에만 적용되는 섹션의 단계를 완료해야 합니다. 예를 들어 AWS CloudFormation을 사용하여 파이프라인을 생성한 경우 AWS CloudFormation 템플릿 업데이트 섹션의 단계만 따릅니다.

해결 방법

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인하세요.

파이프라인을 두 번 실행하는 원인 확인

1.    CodePipeline 콘솔을 엽니다.

2.    [이름(Name)]에서 파이프라인 이름을 선택합니다.

3.    [기록 보기(View history)]를 선택합니다.

4.    [트리거(Trigger)] 열에서 중복된 CloudWatch 이벤트 규칙 트리거 또는 폴링으로 트리거된 파이프라인 실행이 있는지 확인합니다.

5.    동일한 CloudWatch 이벤트 규칙으로 트리거된 실행이 두 개 이상 있는 경우 중복 규칙을 삭제하거나 비활성화합니다.

-또는-

폴링으로 트리거된 파이프라인 실행이 있는 경우 다음 문제 해결 단계를 수행합니다.

PollForSourceChanges 파라미터의 기본 동작 이해

다음을 고려합니다.

  • PollForSourceChanges 파라미터의 기본 동작은 파이프라인을 생성하는 데 사용된 메서드에 의해 결정됩니다.
  • 대부분의 경우 PollForSourceChange의 값은 기본적으로 true로 설정되며 비활성화해야 합니다.
  • CodePipeline 콘솔을 사용하여 파이프라인을 생성하면 소스 감지 메서드가 자동으로 Amazon CloudWatch Events로 설정됩니다(소스의 변경을 감지하는 권장 방법).
  • AWS CloudFormation, AWS CLI 또는 AWS SDK를 사용하여 파이프라인을 생성하고 변경 감지 메서드를 지정하지 않으면 PollForSourceChanges를 기본적으로 true로 설정합니다(생성 방법에 따라 다름).
  • CodePipeline 콘솔 외의 메서드만 사용하여 파이프라인을 생성한 다음, 콘솔을 사용하여 대역 외 파이프라인을 업데이트하는 경우 CodePipeline이 자동으로 CloudWatch Events 규칙을 추가로 하나 생성합니다.
  • AWS CloudFormation 템플릿에서 CloudWatch Events 규칙을 생성하거나 GitHub 버전 1 리포지토리에 대한 Webhook를 생성하고 PollForSourceChanges 파라미터를 설정하지 않으면 소스에서 변경 사항을 감지하는 두 가지 방법으로 끝납니다. 이로 인해 파이프라인이 두 번 실행됩니다.

AWS CloudFormation 템플릿 업데이트

AWS CloudFormation 템플릿 또는 파이프라인 구성 파일에서 PollForSourceChanges 파라미터를 false로 설정합니다.

참고: PollForSourceChanges 파라미터는 기본적으로 true로 설정됩니다.

GitHub 버전 1 Webhook에 대한 자세한 내용은 Webhook를 사용하여 파이프라인 시작을 참조하세요.

JSON 파일로 파이프라인 업데이트

1.    파이프라인 구조를 JSON 파일에 복사합니다.

$ aws codepipeline get-pipeline --name NAME_OF_YOUR_PIPELINE  > pipeline.json

2.    텍스트 편집기에서 pipeline.json 파일을 열고 PollForSourceChanges 파라미터를 소스 작업 구성 섹션에 추가합니다. 파라미터를 false로 설정합니다.

3.    파일에서 다음 메타데이터 필드를 제거합니다.
"metadata":{}
"created"
"pipelineARN"
"updated"
중요:
다음 update-pipeline 명령이 사용할 수 있도록 파이프라인 .json 파일에서 메타데이터 줄을 제거해야 합니다.

4.    pipeline.json 파일을 저장한 후 다음 update-pipeline 명령을 실행하여 파일에 변경 사항을 적용합니다.

$ aws codepipeline update-pipeline --cli-input-json file://pipeline.json

자세한 내용은 파이프라인 편집(AWS CLI)을 참조하세요.

사용자 언어의 구성 구문에 따라 파이프라인 업데이트

파이프라인 업데이트에 대한 지침은 사용자 언어의 SDK 설명서를 참조하세요.

예를 들어 Python을 사용하여 파이프라인을 배포한 경우 파이프라인의 구성 섹션에서 PollForSourceChangesfalse로 설정할 수 있습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?