기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
IAM 역할 설정
사전 조건
시작하기 전에 다음을 갖추었는지 확인하세요.
IAM 관리 액세스 권한이 있는 AWS 계정
AWS CLI 설치 및 구성됨. 자세한 내용은 AWS CLI 설치를 참조하세요.
업그레이드된 아티팩트를 스테이징하기 위한 Amazon S3 버킷
후속 명령에 사용할 다음 변수를 설정합니다(버my-staging-bucket킷 이름으로 대체).
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) STAGING_BUCKET=my-staging-bucket
1단계 - IAM 역할 생성
SMUS MCP 서버는 IAM 역할을 사용하여 AWS 서비스 수준에서 작업을 승인합니다. 별도의 MCP별 권한은 필요하지 않습니다.
IAM 역할을 생성하려면(AWS CLI)
-
신뢰 정책 문서 생성:
cat > mcp-trust-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAccountToAssumeRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::${ACCOUNT_ID}:root" }, "Action": "sts:AssumeRole" } ] } EOF -
역할을 생성합니다.
aws iam create-role \ --role-name SparkUpgradeMCPRole \ --assume-role-policy-document file://mcp-trust-policy.json
2단계: 배포 모드에 대한 권한 연결
EMR 배포 플랫폼과 일치하는 권한 정책을 연결합니다.
옵션 A: EC2의 EMR
-
정책 문서를 생성합니다(
<STAGING_BUCKET>Amazon S3 버킷 이름으로 대체).cat > emr-ec2-upgrade-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:DescribeStep", "elasticmapreduce:ListSteps", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeJobFlows", "elasticmapreduce:AddJobFlowSteps", "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL" ], "Resource": "*" }, { "Effect": "Allow", "Action": ["s3:GetBucket*", "s3:GetObject*", "s3:List*", "s3:Put*"], "Resource": [ "arn:aws:s3:::${STAGING_BUCKET}", "arn:aws:s3:::${STAGING_BUCKET}/*" ] } ] } EOF -
정책을 연결합니다.
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMREC2UpgradeAccess \ --policy-document file://emr-ec2-upgrade-policy.json
또는 AmazonElasticMapReduceFullAccess 관리형 정책과 스테이징 버킷에 대한 Amazon S3 정책을 연결합니다.
KMS 권한 - 스테이징 버킷
스테이징 버킷이 CMK로 암호화된 경우 다음 정책을 추가합니다. 서비스는 데이터를 업로드할 때 버킷에 구성된 CMK를 자동으로 사용합니다(KMS 키 ID<KEY_ID>로 대체).
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSStagingBucketEncrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:GenerateDataKey\", \"kms:Encrypt\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"
옵션 B: EMR Serverless
-
정책 문서를 생성합니다(
<STAGING_BUCKET>Amazon S3 버킷 이름으로 대체).cat > emr-serverless-upgrade-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "emr-serverless:StartJobRun", "emr-serverless:GetJobRun", "emr-serverless:GetApplication", "emr-serverless:ListApplications", "emr-serverless:GetDashboardForJobRun" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "emr-serverless.amazonaws.com" } } }, { "Effect": "Allow", "Action": ["logs:GetLogEvents", "logs:DescribeLogStreams"], "Resource": "arn:aws:logs:*:*:log-group:*" }, { "Effect": "Allow", "Action": ["s3:GetBucket*", "s3:GetObject*", "s3:List*", "s3:Put*"], "Resource": [ "arn:aws:s3:::${STAGING_BUCKET}", "arn:aws:s3:::${STAGING_BUCKET}/*" ] } ] } EOF -
정책을 연결합니다.
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMRServerlessUpgradeAccess \ --policy-document file://emr-serverless-upgrade-policy.json
KMS 권한 - 스테이징 버킷
스테이징 버킷이 CMK로 암호화된 경우 다음 정책을 추가합니다. 서비스는 데이터를 업로드할 때 버킷에 구성된 CMK를 자동으로 사용합니다(KMS 키 ID<KEY_ID>로 대체).
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSStagingBucketEncrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:GenerateDataKey\", \"kms:Encrypt\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"
KMS 권한 - CloudWatch Logs
CloudWatch Logs가 CMK로 암호화된 경우 서비스가 EMR Serverless 애플리케이션 로그를 읽을 수 있도록 다음 정책을 추가합니다(KMS 키 ID<KEY_ID>로 대체).
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name KMSCloudWatchLogsDecrypt \ --policy-document "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Effect\": \"Allow\", \"Action\": [\"kms:Decrypt\", \"kms:DescribeKey\"], \"Resource\": \"arn:aws:kms:${REGION}:${ACCOUNT_ID}:key/<KEY_ID>\" }] }"
3단계: MCP 클라이언트 구성
생성한 역할 ARN을 사용하도록 MCP 클라이언트(예: Claude Desktop 또는 Amazon Q Developer)를 구성합니다.
echo "arn:aws:iam::${ACCOUNT_ID}:role/SparkUpgradeMCPRole"
자격 AWS 증명을 구성하는 방법은 MCP 클라이언트의 설명서를 참조하세요(일반적으로이 역할을 수임하는 AWS 프로필을 통해).
MCP 서버 요청에 사용되는 조건 키
SMUS MCP 서버를 통해 이루어진 모든 요청에 두 개의 조건 키가 자동으로 추가됩니다.
aws:ViaAWSMCPService- AWS 관리형 MCP 서버를 통해 이루어진 모든 요청에true대해를 로 설정합니다.aws:CalledViaAWSMCP- MCP 서버 서비스 보안 주체(예:sagemaker-unified-studio-mcp.amazonaws.com)로 설정합니다.
이러한 조건 키를 사용하여 요청이 AWS 관리형 MCP 서버에서 시작될 때 리소스에 대한 액세스를 제어할 수 있습니다.
예: SMUS MCP 서버를 통해 액세스하는 경우에만 EMR 작업을 허용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEMRReadViaSMUSMCP", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:ListClusters", "elasticmapreduce:ListSteps", "emr-serverless:GetJobRun", "emr-serverless:GetApplication" ], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } } ] }
예: AWS 관리형 MCP 서버를 통한 모든 작업 거부:
{ "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }
예: 특정 AWS 관리형 MCP 서버를 통해 특정 작업 거부:
{ "Effect": "Deny", "Action": ["glue:GetJobRun", "glue:StartJobRun"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } }
조건 키에 대한 자세한 내용은 IAM 사용 설명서의 AWS 전역 조건 컨텍스트 키를 참조하세요.