As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Configuração da função do IAM
Pré-requisitos
Antes de começar, verifique se você tem:
Uma AWS conta com acesso administrativo do IAM
AWS CLI instalada e configurada. Para obter mais informações, consulte Instalando a AWS CLI.
Um bucket Amazon Amazon S3 para armazenar artefatos atualizados
Defina as seguintes variáveis para uso em comandos subsequentes (my-staging-bucketsubstitua pelo nome do seu bucket):
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) STAGING_BUCKET=my-staging-bucket
Etapa 1: Criar o perfil do IAM
O servidor SMUS MCP usa sua função do IAM para autorizar operações no nível do AWS serviço. Nenhuma MCP-specific permissão separada é necessária.
Para criar a função do IAM (AWS CLI)
-
Crie um documento de política de confiança:
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 -
Crie a função:
aws iam create-role \ --role-name SparkUpgradeMCPRole \ --assume-role-policy-document file://mcp-trust-policy.json
Etapa 2: anexar permissões para seu modo de implantação
Anexe a política de permissões que corresponde à sua plataforma de implantação do EMR.
Opção A: EMR no EC2
-
Crie o documento de política (
<STAGING_BUCKET>substitua-o pelo nome do bucket do 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 -
Anexe a política:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMREC2UpgradeAccess \ --policy-document file://emr-ec2-upgrade-policy.json
Como alternativa, anexe a política AmazonElasticMapReduceFullAccessgerenciada mais uma política do Amazon S3 para seu bucket de armazenamento.
Permissões do KMS - Staging Bucket
Se o bucket de teste estiver criptografado com uma CMK, adicione a política a seguir. O serviço usará automaticamente a CMK configurada no bucket ao fazer o upload dos dados (<KEY_ID>substitua pelo ID da sua chave KMS):
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>\" }] }"
Opção B: EMR Serverless
-
Crie o documento de política (
<STAGING_BUCKET>substitua-o pelo nome do bucket do 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 -
Anexe a política:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMRServerlessUpgradeAccess \ --policy-document file://emr-serverless-upgrade-policy.json
Permissões do KMS - Staging Bucket
Se o bucket de teste estiver criptografado com uma CMK, adicione a política a seguir. O serviço usará automaticamente a CMK configurada no bucket ao fazer o upload dos dados (<KEY_ID>substitua pelo ID da sua chave KMS):
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>\" }] }"
Permissões do KMS - Registros CloudWatch
Se os CloudWatch registros forem criptografados com uma CMK, adicione a política a seguir para que o serviço possa ler os registros do aplicativo EMR Serverless (<KEY_ID>substitua pelo ID da sua chave KMS):
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>\" }] }"
Etapa 3: Configurar seu cliente MCP
Configure seu cliente MCP (por exemplo, Claude Desktop ou Amazon Q Developer) para usar o ARN de função que você criou:
echo "arn:aws:iam::${ACCOUNT_ID}:role/SparkUpgradeMCPRole"
Consulte a documentação do seu cliente MCP para saber como configurar AWS as credenciais (normalmente por meio de um AWS perfil que assume essa função).
Chaves de condição para solicitações do servidor MCP
Duas chaves de condição são adicionadas automaticamente a todas as solicitações feitas por meio do servidor SMUS MCP:
aws:ViaAWSMCPService— Defina comotruepara qualquer solicitação feita por meio de um servidor MCP AWS gerenciado.aws:CalledViaAWSMCP— Defina como principal de serviço do servidor MCP (por exemplo,sagemaker-unified-studio-mcp.amazonaws.com).
Você pode usar essas chaves de condição para controlar o acesso aos seus recursos quando as solicitações são originadas de um servidor MCP AWS gerenciado.
Exemplo: Permitir operações de EMR somente quando acessadas por meio do servidor SMUS MCP:
{ "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" } } } ] }
Exemplo: negue todas as operações por meio de qualquer servidor MCP AWS gerenciado:
{ "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }
Exemplo: negue operações específicas por meio de um servidor MCP AWS gerenciado específico:
{ "Effect": "Deny", "Action": ["glue:GetJobRun", "glue:StartJobRun"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } }
Para obter mais informações sobre chaves de condição, consulte chaves de contexto de condição AWS global no Guia do usuário do IAM.