기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon EMR 단계의 런타임 역할
런타임 역할은 Amazon EMR 클러스터에 작업 또는 쿼리를 제출할 때 지정할 수 있는 AWS Identity and Access Management (IAM) 역할입니다. Amazon EMR 클러스터에 제출하는 작업 또는 쿼리는 런타임 역할을 사용하여 Amazon S3의 객체와 같은 AWS 리소스에 액세스합니다. Amazon EMR for Spark 및 Hive 작업을 사용하여 런타임 역할을 지정할 수 있습니다.
에서 Amazon EMR 클러스터에 연결할 때 Amazon SageMaker AI 와 클러스터에 Amazon EMR Studio Workspace를 연결할 때 런타임 역할을 지정할 수도 있습니다EMR. 자세한 내용은 SageMaker AI Studio 및에서 Amazon EMR 클러스터에 연결을 참조하세요런타임 역할로 EMR Studio Workspace 실행.
이전에는 Amazon EMR 클러스터가 클러스터를 시작하는 데 사용한 인스턴스 프로파일에 연결된 IAM 정책에 따라 권한을 가진 Amazon EMR 작업 또는 쿼리를 실행했습니다. 즉, 정책에는 Amazon EMR 클러스터에서 실행된 모든 작업 및 쿼리에 대한 모든 권한의 조합이 포함되어야 했습니다. 런타임 역할을 사용하면 클러스터의 Amazon EMR 인스턴스 프로파일을 공유하는 대신 각 작업 또는 쿼리에 대한 액세스 제어를 개별적으로 관리할 수 있습니다.
런타임 역할이 있는 Amazon EMR 클러스터에서는 데이터 레이크에 대한 Spark, Hive 및 Presto 작업 및 쿼리에 AWS Lake Formation 기반 액세스 제어를 적용할 수도 있습니다. 와 통합하는 방법에 대한 자세한 내용은 단원을 AWS Lake Formation참조하십시오Amazon을 EMR와 통합 AWS Lake Formation.
참고
Amazon EMR 단계에 대한 런타임 역할을 지정할 때 제출하는 작업 또는 쿼리는 런타임 역할에 연결된 정책이 허용하는 AWS 리소스에만 액세스할 수 있습니다. 이러한 작업 및 쿼리는 클러스터의 EC2 인스턴스에서 인스턴스 메타데이터 서비스에 액세스하거나 클러스터의 EC2 인스턴스 프로파일을 사용하여 리소스에 액세스할 수 없습니다 AWS .
런타임 역할로 Amazon EMR 클러스터를 시작하기 위한 사전 조건
1단계: Amazon에서 보안 구성 설정 EMR
다음 JSON 구조를 사용하여 AWS Command Line Interface (AWS CLI)에서 보안 구성을 생성하고를 EnableApplicationScopedIAMRole
로 설정합니다true
. 보안 구성에 대한 자세한 내용은 보안 구성을 사용하여 Amazon EMR 클러스터 보안 설정 단원을 참조하세요.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true } } }
인터넷을 통해 전송되는 데이터가 일반 텍스트 형식이 아니라 암호화되도록 보안 구성에서 전송 중 암호화 옵션을 항상 활성화하는 것이 좋습니다. SageMaker 런타임 스튜디오 또는 스튜디오에서 런타임 역할을 사용하여 Amazon EMR 클러스터에 연결하지 않으려면 이러한 옵션을 건너뛸 수 있습니다EMR. 데이터 암호화를 구성하려면 데이터 암호화 구성을 참조하세요.
또는 AWS Management Console
2단계: Amazon EMR 클러스터의 EC2 인스턴스 프로파일 설정
Amazon EMR 클러스터는 Amazon EC2 인스턴스 프로파일 역할을 사용하여 런타임 역할을 수임합니다. Amazon EMR 단계에서 런타임 역할을 사용하려면 인스턴스 프로파일 IAM 역할로 사용하려는 역할에 다음 정책을 추가합니다. IAM 역할에 정책을 추가하거나 기존 인라인 또는 관리형 정책을 편집하려면 IAM 자격 증명 권한 추가 및 제거를 참조하세요.
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowRuntimeRoleUsage", "Effect":"Allow", "Action":[ "sts:AssumeRole", "sts:TagSession" ], "Resource":[
<runtime-role-ARN>
] } ] }
3단계: 신뢰 정책 설정
런타임 IAM 역할로 사용하려는 각 역할에 대해를 인스턴스 프로파일 역할EMR_EC2_DefaultRole
로 바꾸면서 다음 신뢰 정책을 설정합니다. IAM 역할의 신뢰 정책을 수정하려면 역할 신뢰 정책 수정을 참조하세요.
{ "Sid":"AllowAssumeRole", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":"sts:AssumeRole" }
역할 기반 액세스 제어를 사용하여 Amazon EMR 클러스터 시작
구성을 설정한 후의 보안 구성을 사용하여 Amazon EMR 클러스터를 시작할 수 있습니다1단계: Amazon에서 보안 구성 설정 EMR. Amazon EMR 단계에서 런타임 역할을 사용하려면 릴리스 레이블 emr-6.7.0
이상을 사용하고 Hive, Spark 또는 둘 다를 클러스터 애플리케이션으로 선택합니다. SageMaker AI Studio에서 연결하려면 릴리스 emr-6.9.0
이상을 사용하고 Livy, Spark, Hive 또는 Presto를 클러스터 애플리케이션으로 선택합니다. 클러스터를 시작하는 방법에 대한 지침은 Amazon EMR 클러스터의 보안 구성 지정 섹션을 참조하세요.
Amazon EMR 단계를 사용하여 Spark 작업 제출
다음은 Apache Spark에 포함된 HdfsTest 예제를 실행하는 방법의 예입니다. 이 API 호출은 제공된 Amazon EMR 런타임 역할이에 액세스할 수 있는 경우에만 성공합니다S3_LOCATION
.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
S3_LOCATION=<s3-path>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Spark Example", "ActionOnFailure": "CONTINUE","HadoopJarStep": { "Jar":"command-runner.jar","Args" : ["spark-example","HdfsTest", "$S3_LOCATION"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
참고
Amazon EMR 클러스터에 대한 SSH 액세스를 끄고 Amazon이 클러스터에 대한 액세스만 허용하는 EMR AddJobFlowSteps
API 것이 좋습니다.
Amazon EMR 단계를 사용하여 Hive 작업 제출
다음 예제에서는 Amazon EMR 단계와 함께 Apache Hive를 사용하여 QUERY_FILE.hql
파일을 실행할 작업을 제출합니다. 이 쿼리는 제공된 런타임 역할이 쿼리 파일의 Amazon S3 경로에 액세스할 수 있는 경우에만 성공합니다.
RUNTIME_ROLE_ARN=
<runtime-role-arn>
REGION=<aws-region>
CLUSTER_ID=<cluster-id>
aws emr add-steps --cluster-id $CLUSTER_ID \ --steps '[{ "Name": "Run hive query using command-runner.jar - simple select","ActionOnFailure":"CONTINUE","HadoopJarStep": { "Jar": "command-runner.jar","Args" :["hive - f","s3://DOC_EXAMPLE_BUCKET
/QUERY_FILE.hql"] } }]' \ --execution-role-arn $RUNTIME_ROLE_ARN \ --region $REGION
SageMaker AI Studio 노트북에서 런타임 역할을 사용하여 Amazon EMR 클러스터에 연결
SageMaker AI Studio의 Amazon EMR 클러스터에서 실행하는 쿼리에 Amazon EMR 런타임 역할을 적용할 수 있습니다. 이를 수행하려면 다음 단계를 수행합니다.
-
Amazon SageMaker AI Studio 시작의 지침에 따라 SageMaker AI Studio를 생성합니다.
-
SageMaker AI Studio UI에서 지원되는 커널로 노트북을 시작합니다. 예를 들어 PySpark 커널로 SparkMagic 이미지를 시작합니다.
-
SageMaker AI Studio에서 Amazon EMR 클러스터를 선택한 다음 연결을 선택합니다.
-
런타임 역할을 선택하고 연결을 선택합니다.
그러면 선택한 Amazon EMR 런타임 역할로 Amazon EMR 클러스터에 연결하는 매직 명령이 있는 SageMaker AI 노트북 셀이 생성됩니다. 노트북 셀에서 런타임 역할 및 Lake Formation 기반 액세스 제어를 사용하여 쿼리를 입력하고 실행할 수 있습니다. 자세한 예는 Amazon SageMaker AI StudioEMR의 AWS Lake Formation 및 Amazon을 사용하여 세분화된 데이터 액세스 제어 적용을
Amazon EMR 런타임 역할에 대한 액세스 제어
elasticmapreduce:ExecutionRoleArn
조건 키를 사용하여 런타임 역할에 대한 액세스를 제어할 수 있습니다. 다음 정책은 IAM 보안 주체가 라는 IAM 역할 Caller
또는 문자열 로 시작하는 모든 IAM 역할을 런타임 역할CallerTeamRole
로 사용하도록 허용합니다.
중요
다음 예제와 APIs같이 호출자에게 AddJobFlowSteps
또는 GetClusterSessionCredentials
를 호출할 수 있는 액세스 권한을 부여할 때 elasticmapreduce:ExecutionRoleArn
컨텍스트 키를 기반으로 조건을 생성해야 합니다.
{ "Sid":"AddStepsWithSpecificExecRoleArn", "Effect":"Allow", "Action":[ "elasticmapreduce:AddJobFlowSteps" ], "Resource":"*", "Condition":{ "StringEquals":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/Caller" ] }, "StringLike":{ "elasticmapreduce:ExecutionRoleArn":[ "arn:aws:iam::<AWS_ACCOUNT_ID>
:role/CallerTeamRole*" ] } } }
런타임 역할과 Amazon EMR 클러스터 간의 신뢰 설정
Amazon은 런타임 역할 인증이 활성화된 각 보안 구성에 ExternalId
대해 고유 식별자를 EMR 생성합니다. 이 인증을 통해 모든 사용자는 자신에게 속한 클러스터에서 사용할 런타임 역할 세트를 소유할 수 있습니다. 예를 들어 엔터프라이즈의 모든 부서가 외부 ID를 사용하여 자체 런타임 역할 세트에 대한 신뢰 정책을 업데이트할 수 있습니다.
다음 예제와 API같이 Amazon EMR DescribeSecurityConfiguration
에서 외부 ID를 찾을 수 있습니다.
aws emr describe-security-configuration --name 'iamconfig-with-lf'{"Name": "iamconfig-with-lf", "SecurityConfiguration": "{\"AuthorizationConfiguration\":{\"IAMConfiguration\":{\"EnableApplicationScopedIAMRole\ ":true,\"ApplicationScopedIAMRoleConfiguration\":{\"PropagateSourceIdentity\":true,\"Exter nalId\":\"FXH5TSACFDWUCDSR3YQE2O7ETPUSM4OBCGLYWODSCUZDNZ4Y\"}},\"Lake FormationConfiguration\":{\"AuthorizedSessionTagValue\":\"Amazon EMR\"}}}", "CreationDateTime": "2022-06-03T12:52:35.308000-07:00" }
외부 ID를 사용하는 방법에 대한 자세한 내용은 AWS 리소스에 대한 액세스 권한을 타사에 부여할 때 외부 ID를 사용하는 방법을 참조하세요.
감사
최종 사용자가 IAM 역할로 수행하는 작업을 모니터링하고 제어하려면 소스 자격 증명 기능을 켜면 됩니다. 소스 ID에 대해 자세히 알아보려면 위임된 역할로 수행한 작업 모니터링 및 제어를 참조하세요.
소스 ID를 추적하려면 다음과 같이 보안 구성에서 ApplicationScopedIAMRoleConfiguration/PropagateSourceIdentity
를 true
로 설정합니다.
{ "AuthorizationConfiguration":{ "IAMConfiguration":{ "EnableApplicationScopedIAMRole":true, "ApplicationScopedIAMRoleConfiguration":{ "PropagateSourceIdentity":true } } } }
PropagateSourceIdentity
를 로 설정하면 true
Amazon은 호출 자격 증명의 소스 자격 증명을 런타임 역할로 생성한 작업 또는 쿼리 세션에 EMR 적용합니다. 호출 자격 증명에 소스 자격 증명이 없는 경우 Amazon은 소스 자격 증명을 설정하지 EMR 않습니다.
이 속성을 사용하려면 다음과 같이 인스턴스 프로파일에 sts:SetSourceIdentity
권한을 제공합니다.
{ // PropagateSourceIdentity statement "Sid":"PropagateSourceIdentity", "Effect":"Allow", "Action":"sts:SetSourceIdentity", "Resource":[
<runtime-role-ARN>
], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
또한 런타임 역할의 신뢰 정책에 AllowSetSourceIdentity
문을 추가해야 합니다.
{ // AllowSetSourceIdentity statement "Sid":"AllowSetSourceIdentity", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
<AWS_ACCOUNT_ID>
:role/EMR_EC2_DefaultRole" }, "Action":[ "sts:SetSourceIdentity", "sts:AssumeRole" ], "Condition":{ "StringEquals":{ "sts:SourceIdentity":<source-identity>
} } }
추가 고려 사항
참고
Amazon EMR 릴리스 에서는 SageMaker AI Studio에서 Amazon EMR 클러스터에 연결할 때 간헐적인 장애가 발생할 emr-6.9.0
수 있습니다. 이 문제를 해결하기 위해 클러스터를 시작할 때 부트스트랩 작업으로 패치를 설치할 수 있습니다. 패치 세부 정보는 Amazon EMR 릴리스 6.9.0 알려진 문제를 참조하세요.
또한 Amazon에 대한 런타임 역할을 구성할 때 다음 사항을 고려하세요EMR.
-
Amazon은 모든 상용에서 런타임 역할을 EMR 지원합니다 AWS 리전.
-
Amazon EMR 단계는 릴리스
emr-6.7.0
이상을 사용할 때 런타임 역할이 있는 Apache Spark 및 Apache Hive 작업을 지원합니다. -
SageMaker AI Studio는 릴리스
emr-6.9.0
이상을 사용할 때 런타임 역할이 있는 Spark, Hive 및 Presto 쿼리를 지원합니다. -
SageMaker AI의 다음 노트북 커널은 런타임 역할을 지원합니다.
-
DataScience – Python 3 커널
-
DataScience 2.0 – Python 3 커널
-
DataScience 3.0 – Python 3 커널
-
SparkAnalytics 1.0 SparkMagic 및 PySpark 커널
-
SparkAnalytics 2.0 SparkMagic 및 PySpark 커널
-
SparkMagic – PySpark 커널
-
-
Amazon은 클러스터 생성 시
RunJobFlow
에만를 사용하는 단계를 EMR 지원합니다. 런타임 역할은 지원하지 API 않습니다. -
AmazonEMR은 가용성이 높도록 구성한 클러스터에서 런타임 역할을 지원하지 않습니다.
Amazon EMR 릴리스 7.5.0 이상부터 런타임 역할은 Spark Live UI, Spark 기록 서버, 및와 같은 Spark YARN NodeManager및 YARN 사용자 인터페이스(UIs) 보기를 지원합니다YARN ResourceManager. 이러한 로 이동하면 사용자 이름과 암호 프롬프트UIs가 표시됩니다. 사용자 이름과 암호는를 사용하여 생성할 수 있습니다EMR GetClusterSessionCredentials API. 의 사용 세부 정보에 대한 자세한 내용은 섹션을 API참조하세요GetClusterSessionCredentials.
사용 방법의 예는 다음과 EMR GetClusterSessionCredentials API 같습니다.
aws emr get-cluster-session-credentials --cluster-id
<cluster_ID>
--execution-role-arn<IAM_role_arn>
-
command-runner.jar
JAR 파일을 사용하여 명령을 실행할 때 Bash 명령 인수를 이스케이프해야 합니다.aws emr add-steps --cluster-id
<cluster-id>
--steps '[{"Name":"sample-step","ActionOnFailure":"CONTINUE","Jar":"command-runner.jar","Properties":"","Args":["bash","-c","\"aws s3 ls\""],"Type":"CUSTOM_JAR"}]' --execution-role-arn<IAM_ROLE_ARN>
-
런타임 역할은 HDFS 및와 같은 클러스터 내 리소스에 대한 액세스 제어를 지원하지 않습니다HMS.