AWS Data Pipeline 신규 고객은 더 이상 이용할 수 없습니다. 의 기존 고객 AWS Data Pipeline 정상적으로 서비스를 계속 사용할 수 있습니다. 자세히 알아보기
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
공통 문제 해결
이 주제에서는 AWS Data Pipeline 문제의 다양한 증상과 이를 해결할 때 권장되는 절차를 알려줍니다.
목차
- 보류 상태에서 멈춘 파이프라인
- 실행기 대기 상태에서 멈춘 파이프라인 구성요소
- WAITING_ON_DEPENDENCIES 상태에서 멈춘 파이프라인 구성요소
- 예약한 시간에 실행이 시작되지 않음
- 잘못된 순서로 실행되는 파이프라인 구성요소
- EMR 클러스터 실패와 오류: 요청에 포함된 보안 토큰이 잘못되었음
- 리소스에 대한 액세스 권한 부족
- 상태 코드: 400 오류 코드: PipelineNotFoundException
- 파이프라인 생성으로 보안 토큰 오류 발생
- 콘솔에서 파이프라인 세부 정보를 볼 수 없음
- 원격 실행기 오류 상태 코드: 404, AWS Service: Amazon S3
- 액세스 거부 - 기능을 실행할 권한이 없음 datapipeline
- 이전 버전의 Amazon EMR AMI가 대용량 CSV 파일의 거짓 데이터를 생성할 수도 있음
- AWS Data Pipeline 제한 상향
보류 상태에서 멈춘 파이프라인
PENDING 상태에 멈춰있는 것처럼 보이는 파이프라인은 파이프라인이 아직 활성화되지 않았거나 파이프라인 정의의 오류로 인해 활성화에 실패했음을 나타냅니다. AWS Data Pipeline CLI를 사용하여 파이프라인을 제출할 때 또는 AWS Data Pipeline 콘솔을 사용하여 파이프라인 저장 또는 활성화를 시도했을 때 오류가 수신되지 않았는지 확인합니다. 그리고 파이프라인에 유효한 정의가 있는지 확인합니다.
CLI를 사용하여 화면에서 파이프라인 정의를 보려면
aws datapipeline --get-pipeline-definition --pipeline-id
df-EXAMPLE_PIPELINE_ID
파이프라인 정의가 완료되었는지 확인하고, 닫는 괄호를 확인하고, 필요한 쉼표를 확인하고, 누락된 참조가 있는지 확인하고, 기타 구문 오류를 확인합니다. JSON 파일의 구문을 눈으로 확인할 수 있는 텍스트 편집기를 사용하는 것이 가장 좋습니다.
실행기 대기 상태에서 멈춘 파이프라인 구성요소
파이프라인이 SCHEDULED 상태이고 하나 이상의 작업이 WAITING_FOR_RUNNER 상태에 멈춰있는 것으로 보일 경우에는 해당 작업의 runsOn 또는 workerGroup 필드 설정한 값이 유효한지 확인합니다. 두 값이 모두 비었거나 없는 경우에는 작업과 작업을 실행할 작업자 사이가 연결되지 않았기 때문에 작업을 시작할 수 없습니다. 이 상황은 작업은 정의했지만 이 작업을 실행할 컴퓨터는 정의하지 않은 경우입니다. 가능하다면 파이프라인 구성요소에 할당된 workerGroup 값이 Task Runner로 구성한 workerGroup 값과 이름과 대소문자가 정확히 동일한지 확인합니다.
참고
workerGroup이 있을 때 runsOn 값을 제공하면 workerGroup이 무시됩니다.
이 문제의 또 다른 잠재적 원인은 Task Runner에게 제공한 엔드포인트 및 액세스 키가 AWS Data Pipeline콘솔 또는 AWS Data PipelineCLI 도구가 설치된 컴퓨터와 같지 않은 경우입니다. 눈에 보이는 오류가 없는 새 파이프라인을 생성했어도 보안 인증의 차이 때문에 Task Runner가 잘못된 위치를 폴링하거나, 위치는 맞지만 파이프라인 정의로 지정된 작업을 찾아 실행할 권한이 부족한 위치로 폴링합니다.
WAITING_ON_DEPENDENCIES 상태에서 멈춘 파이프라인 구성요소
파이프라인이 SCHEDULED
상태이고 하나 이상의 작업이 WAITING_ON_DEPENDENCIES
상태에 멈춰있는 것으로 보일 경우에는 파이프라인의 초기 사전 조건이 충족되었는지 확인합니다. 논리 체인에서 첫 번째 객체의 사전 조건이 충족되지 않으면 이 첫 번째 객체에 좌우되는 객체는 WAITING_ON_DEPENDENCIES
상태 밖으로 이동할 수 없습니다.
예를 들어, 다음 파이프라인 정의 발췌 부분을 생각해보겠습니다. 이 경우에 InputData
객체의 사전 조건 'Ready'는 InputData 객체가 완료되기 전에 데이터가 존재해야 한다는 것을 지정합니다. 데이터가 존재하지 않을 경우 InputData 객체는 WAITING_ON_DEPENDENCIES
상태를 유지하며 경로 필드로 지정한 데이터가 제공될 때까지 기다립니다. InputData에 의존하는 객체도 WAITING_ON_DEPENDENCIES
상태를 유지하며 InputData 객체가 FINISHED
상태가 될 때까지 기다립니다.
{ "id": "InputData", "type": "S3DataNode", "filePath": "s3://elasticmapreduce/samples/wordcount/wordSplitter.py", "schedule":{"ref":"MySchedule"}, "precondition": "Ready" }, { "id": "Ready", "type": "Exists" ...
그리고 객체가 데이터에 액세스할 수 있는 권한이 있는지도 확인합니다. 앞 예제에서 자격 증명 필드의 정보에 경로 필드에 지정된 데이터에 액세스할 수 있는 권한이 없다면 데이터가 존재해도 경로 필드로 지정된 데이터에 액세스하지 못하기 때문에 InputData 객체가 WAITING_ON_DEPENDENCIES
상태에 멈추게 됩니다.
Amazon S3와 통신하는 리소스에 이와 연결된 공용 IP 주소가 없을 수도 있습니다. 예를 들어, 퍼블릭 서브넷의 Ec2Resource
는 이와 연결된 퍼블릭 IP 주소가 있어야 합니다.
끝으로, 특정 상황에서는 연결된 활동의 예정 시작 시간보다 훨씬 더 먼저 리소스 인스턴스가 WAITING_ON_DEPENDENCIES
상태에 도달할 수 있는데, 이 경우 리소스 또는 활동이 실패하는 것처럼 보일 수 있습니다.
예약한 시간에 실행이 시작되지 않음
일정 간격이 시작할 때 작업이 시작할지(Cron 스타일 일정 유형) 또는 일정 간격이 끝날 때 작업이 시작할지(시계열 일정 유형)를 결정하는 정확한 일정 유형을 선택했는지 확인합니다.
그리고 일정 객체에서 날짜를 정확하게 지정했는지 그리고 startDateTime 및 endDateTime 값이 다음 예제처럼 UTC 형식인지 확인합니다.
{ "id": "MySchedule", "startDateTime": "2012-11-12T19:30:00", "endDateTime":"2012-11-12T20:30:00", "period": "1 Hour", "type": "Schedule" },
잘못된 순서로 실행되는 파이프라인 구성요소
파이프라인 구성요소의 시작 및 종료 시간이 잘못된 순서로 실행되거나 예상과 다른 시퀀스로 실행된다고 느껴질 수 있습니다. 시작 시각에 사전 조건이 충족되면 파이프라인 구성요소가 동시에 실행될 수 있다는 것을 알아야 합니다. 다시 말해, 파이프라인 구성요소는 기본적으로 순서대로 실행되지 않습니다. 특정 실행 순서가 필요할 경우에는 사전 조건과 dependsOn
필드로 실행 순서를 제어해야 합니다.
정확한 파이프라인 구성요소의 참조로 채워진 dependsOn
필드를 사용해야 하며 구성요소 사이에 필요한 모든 포인터가 있어야만 원하는 순서를 구현할 수 있습니다.
EMR 클러스터 실패와 오류: 요청에 포함된 보안 토큰이 잘못되었음
IAM 역할, 정책 및 신뢰 관계가 AWS Data Pipeline의 IAM 역할의 설명과 같은지 확인합니다.
리소스에 대한 액세스 권한 부족
IAM 역할에 설정하는 권한에 따라 이 AWS Data Pipeline이(가) EMR 클러스터 및 EC2 인스턴스에 액세스하여 파이프라인을 실행할 수 있을지가 결정됩니다. 그리고 IAM은 더 나아가 사용자를 대신하여 리소스를 생성할 수 있는 신뢰 관계 개념을 제공합니다. 예를 들어, EC2 인스턴스를 사용하여 데이터 이동 명령을 실행하는 파이프라인을 생성하면 AWS Data Pipeline이 이 EC2 인스턴스를 제공할 수 있습니다. 마주치는 문제, 특히 사용자는 수동으로 액세스할 수 있지만 AWS Data Pipeline은(는) 액세스할 수 없는 리소스와 관련된 문제가 발생할 경우에는 사용자의 IAM 역할, 정책 및 신뢰 관계가 AWS Data Pipeline의 IAM 역할의 설명과 같은지 확인합니다.
상태 코드: 400 오류 코드: PipelineNotFoundException
이 오류는 사용자의 IAM 기본 역할에 AWS Data Pipeline이(가) 제대로 작동하는 데 필요한 권한이 없을 수 있다는 것을 의미합니다. 자세한 내용은 AWS Data Pipeline의 IAM 역할 단원을 참조하십시오.
파이프라인 생성으로 보안 토큰 오류 발생
파이프라인 생성을 시도할 때 다음 오류가 수신됩니다.
'pipeline_name'의 파이프라인을 생성하지 못했습니다. 오류: UnrecognizedClientException - 요청에 포함된 보안 토큰이 잘못되었습니다.
콘솔에서 파이프라인 세부 정보를 볼 수 없음
AWS Data Pipeline 콘솔 파이프라인 필터는 파이프라인 제출 시점과 상관없이 파이프라인의 예약된 시작일에 적용됩니다. 과거에 발생하는 예약된 시작일을 사용하여 새 파이프라인을 제출할 수 있는데, 이 경우 기본 날짜 필터가 표시되지 않을 수 있습니다. 파이프라인 세부 정보를 보려면 날짜 필터를 변경하여 예약된 파이프라인 시작일이 날짜 범위 필터 안에 포함시켜야 합니다.
원격 실행기 오류 상태 코드: 404, AWS Service: Amazon S3
이 오류는 Task Runner가 Amazon S3에 있는 사용자 파일에 액세스하지 못했음을 의미합니다. 다음을 확인합니다.
-
자격 증명을 정확하게 설정했는지
-
액세스하려는 Amazon S3 버킷이 존재합니다.
-
Amazon S3 버킷에 액세스할 수 있는 권한이 있습니다.
액세스 거부 - 기능을 실행할 권한이 없음 datapipeline
Task Runner 로그에 다음과 같이 유사한 오류가 있을 수 있습니다.
-
ERROR 상태 코드: 403
-
AWS 서비스: DataPipeline
-
AWS 오류 코드: AccessDenied
-
AWS 오류 메시지: 사용자: arn:aws:sts::XXXXXXXXXXXX:federated-user/i-XXXXXXXX는 datapipeline:PollForTask를 실행할 권한이 없습니다.
참고
이 오류 메시지에서는 PollForTask가 다른 AWS Data Pipeline 권한의 이름으로 바뀔 것입니다.
이 오류 메시지는 사용자가 지정한 IAM 역할에 AWS Data Pipeline과(와) 상호 작용하는 데 필요한 추가 권한이 있어야 한다는 것을 의미합니다. 사용자의 IAM 역할 정책에 다음 라인이 포함되는지 확인합니다. 여기서 PollForTask는 사용자가 추가해야 할 권한 이름으로 바뀝니다(모든 권한을 부여하려면 * 사용). 새 IAM 역할을 생성하고 정책을 적용하는 방법에 대한 자세한 내용은 IAM 사용 가이드의 IAM 정책 관리를 참조하세요.
{ "Action": [ "datapipeline:PollForTask" ], "Effect": "Allow", "Resource": ["*"] }
이전 버전의 Amazon EMR AMI가 대용량 CSV 파일의 거짓 데이터를 생성할 수도 있음
3.9 이전(3.8 이하) Amazon EMR AMI에서는 AWS Data Pipeline이(가) 사용자 지정 InputFormat을 사용하여 MapReduce 작업에서 사용할 CSV 파일을 읽고 씁니다. 이것은 서비스 Amazon S3에서 테이블을 스테이징할 때 사용됩니다. 이 InputFormat에서 대용량 CSV 파일의 기록을 읽을 때 정확하게 복사되지 않는 테이블이 생성될 수 있다는 문제가 발견되었습니다. 이 문제는 이후의 Amazon EMR 릴리스에서 해결되었습니다. Amazon EMR AMI 3.9 또는 Amazon EMR 릴리스 4.0.0 이상을 사용하시기 바랍니다.
AWS Data Pipeline 제한 상향
특정 AWS Data Pipeline 시스템 한계가 초과되는 경우가 있습니다. 예를 들어, 기본 파이프라인 한계는 각각 50개의 객체가 있는 파이프라인 20개입니다. 이 한계보다 많은 파이프라인이 필요하다고 생각될 경우에는 여러 파이프라인을 병합하여 파이프라인 수는 줄이고 각 객체는 늘려보십시오. AWS Data Pipeline 한도에 대한 자세한 내용은 AWS Data Pipeline 한도 단원을 참조하십시오. 단, 파이프라인 병합 기술을 사용하여 한계 부근에서 작업할 수 없는 경우에는 이 데이터 파이프라인 제한 증가