Step Functions 사용을 통한 Amazon EMR Serverless 호출 - AWS Step Functions

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Step Functions 사용을 통한 Amazon EMR Serverless 호출

Step Functions는 Amazon States Language (ASL) 에서 직접 특정 AWS 서비스를 제어할 수 있습니다. 자세한 내용은 다른 서비스와 함께 사용파라미터를 서비스 API에 전달 섹션을 참조하세요.

최적화된 EMR Serverless 통합과 EMR Serverless AWS SDK 통합 간의 차이점
  • 최적화 EMR Serverless 서비스 통합에는 기본 EMR Serverless API를 래핑하는 사용자 지정된 API 집합이 있습니다. 이러한 사용자 지정으로 인해 최적화된 EMR Serverless 통합은 EMR Serverless AWS SDK 서비스 통합과 크게 다릅니다. 또한 최적화된 EMR Serverless 통합은 작업 실행(.sync) 통합 패턴을 지원합니다.

  • 작업 토큰을 사용하여 콜백 대기 통합 패턴은 지원되지 않습니다.

EMR Serverless 서비스 통합 API

AWS Step Functions를 EMR Serverless와 통합하려면 다음과 같은 EMR Serverless 서비스 통합 API 6개를 사용하면 됩니다. 이러한 서비스 통합 API는 해당 EMR Serverless API와 유사하지만 전달되는 필드와 반환되는 응답에 약간의 차이가 있습니다.

다음 표에는 각 서비스 통합 API와 해당 EMR Serverless API 간의 차이점이 나와 있습니다.

EMR Serverless 서비스 통합 API 및 해당 EMR Serverless API
EMR Serverless 서비스 통합 API 해당 EMR Serverless API 차이

createApplication

애플리케이션을 생성합니다.

EMR Serverless는 서비스 연결 역할이라고 하는 고유한 유형의 IAM 역할에 연결됩니다. createApplicationcreateApplication.sync 작업을 수행하려면 서비스 연결 역할인 AWS ServiceRoleForAmazonEMRServerless을 생성하도록 구성된 필수 권한이 있어야 합니다. IAM 권한 정책에 추가할 수 있는 문을 포함하여 이에 대한 자세한 내용은 EMR Serverless에 서비스 연결 역할 사용을 참조하세요.

CreateApplication None

createApplication.sync

애플리케이션을 생성합니다.

CreateApplication

EMR Serverless API와 EMR Serverless 서비스 통합 API의 요청과 응답 간에는 차이가 없습니다. 하지만 createApplication.sync는 애플리케이션이 CREATED 상태에 도달할 때까지 기다립니다.

startApplication

지정된 애플리케이션을 시작하고 구성된 경우 애플리케이션의 초기 용량을 초기화합니다.

StartApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

startApplication.sync

지정된 애플리케이션을 시작하고 구성된 경우 초기 용량을 초기화합니다.

StartApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

또한 startApplication.sync는 애플리케이션이 STARTED 상태에 도달할 때까지 기다립니다.

stopApplication

지정된 애플리케이션을 중지하고 구성된 경우 초기 용량을 해제합니다. 애플리케이션을 중지하기 전에 예약되고 실행 중인 모든 작업을 완료하거나 취소해야 합니다.

StopApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

stopApplication.sync

지정된 애플리케이션을 중지하고 구성된 경우 초기 용량을 해제합니다. 애플리케이션을 중지하기 전에 예약되고 실행 중인 모든 작업을 완료하거나 취소해야 합니다.

StopApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

또한 stopApplication.sync는 애플리케이션이 STOPPED 상태에 도달할 때까지 기다립니다.

deleteApplication

애플리케이션을 삭제합니다. 애플리케이션을 삭제하려면 애플리케이션이 STOPPED 또는 CREATED 상태여야 합니다.

DeleteApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

deleteApplication.sync

애플리케이션을 삭제합니다. 애플리케이션을 삭제하려면 애플리케이션이 STOPPED 또는 CREATED 상태여야 합니다.

DeleteApplication

EMR Serverless API 응답에는 어떠한 데이터도 포함되지 않지만 EMR Serverless 서비스 통합 API 응답에는 다음 데이터가 포함됩니다.

{ "ApplicationId": "string" }

또한 stopApplication.sync는 애플리케이션이 TERMINATED 상태에 도달할 때까지 기다립니다.

startJobRun

작업 실행을 시작합니다.

StartJobRun None

startJobRun.sync

작업 실행을 시작합니다.

StartJobRun

EMR Serverless API와 EMR Serverless 서비스 통합 API의 요청과 응답 간에는 차이가 없습니다. startJobRun그러나.sync는 애플리케이션이 상태에 도달할 때까지 기다립니다. SUCCESS

cancelJobRun

작업 실행을 취소합니다.

CancelJobRun None

cancelJobRun.sync

작업 실행을 취소합니다.

CancelJobRun

EMR Serverless API와 EMR Serverless 서비스 통합 API의 요청과 응답 간에는 차이가 없습니다. cancelJobRun그러나.sync는 애플리케이션이 상태에 도달할 때까지 기다립니다. CANCELLED

EMR 서버리스 통합 사용 사례

최적화된 EMR Serverless 서비스 통합의 경우 단일 애플리케이션을 만든 다음 해당 애플리케이션을 사용하여 여러 작업을 실행하는 것이 좋습니다. 예를 들어 단일 상태 머신에 동일한 애플리케이션을 사용하는 여러 startJobRun요청을 포함할 수 있습니다. 다음 작업 상태 예제에서는 Step Functions를 사용하여 EMR Serverless API를 통합하는 사용 사례를 보여줍니다. 다른 EMR Serverless 사용 사례는 Amazon EMR Serverless란 무엇입니까? 참조하세요.

작은 정보

여러 작업을 실행하기 위해 통합되는 상태 머신의 예를 사용자 AWS 계정컴퓨터에 배포하려면 을 참조하십시오EMR Serverless 작업 실행. EMR Serverless

다른 AWS 서비스와 Step Functions 함께 사용할 때 IAM 권한을 구성하는 방법에 대한 자세한 내용은 을 참조하십시오통합 서비스용 IAM 정책.

다음 사용 사례에 표시된 예제에서 기울임꼴 텍스트를 리소스별 정보로 바꿉니다. 예를 들어 EMR Serverless 애플리케이션의 ID (예:) yourApplicationId로 바꾸십시오00yv7iv71inak893.

애플리케이션 생성

다음 Task 상태 예제는 createApplication.sync 서비스 통합 API를 사용하여 애플리케이션을 만듭니다.

"Create_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:createApplication.sync", "Parameters": { "Name": "MyApplication", "ReleaseLabel": "emr-6.9.0", "Type": "SPARK" }, "End": true }

애플리케이션 시작

다음 Task 상태 예제는 startApplication.sync 서비스 통합 API를 사용하여 애플리케이션을 시작합니다.

"Start_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

애플리케이션 중지

다음 Task 상태 예제는 stopApplication.sync 서비스 통합 API를 사용하여 애플리케이션을 중지합니다.

"Stop_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

애플리케이션을 삭제합니다

다음 Task 상태 예제는 deleteApplication.sync 서비스 통합 API를 사용하여 애플리케이션을 삭제합니다.

"Delete_Application": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync", "Parameters": { "ApplicationId": "yourApplicationId" }, "End": true }

애플리케이션에서 작업 시작

다음 작업 상태 startJobRun예제는.sync 서비스 통합 API를 사용하여 애플리케이션에서 작업을 시작합니다.

"Start_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync", "Parameters": { "ApplicationId": "yourApplicationId", "ExecutionRoleArn": "arn:aws:iam::123456789012:role/myEMRServerless-execution-role", "JobDriver": { "SparkSubmit": { "EntryPoint": "s3://<mybucket>/sample.py", "EntryPointArguments": ["1"], "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1" } } }, "End": true }

애플리케이션에서 작업 취소

다음 작업 상태 cancelJobRun예제는.sync 서비스 통합 API를 사용하는 애플리케이션에서 작업을 취소합니다.

"Cancel_Job": { "Type": "Task", "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync", "Parameters": { "ApplicationId.$": "$.ApplicationId", "JobRunId.$": "$.JobRunId" }, "End": true }