Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Einrichtung der IAM-Rolle
Voraussetzungen
Stellen Sie vor Beginn sicher, dass Sie über Folgendes verfügen:
Ein AWS Konto mit IAM-Administratorzugriff
AWS CLI installiert und konfiguriert. Weitere Informationen finden Sie unter Installation der AWS CLI.
Ein Amazon Amazon S3 S3-Bucket zum Staging aktualisierter Artefakte
Legen Sie die folgenden Variablen für die Verwendung in nachfolgenden Befehlen fest (my-staging-bucketersetzen Sie sie durch Ihren Bucket-Namen):
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region) STAGING_BUCKET=my-staging-bucket
Schritt 1: Erstellen Sie die IAM-Rolle für das
Der SMU-MCP-Server verwendet Ihre IAM-Rolle, um Operationen auf Serviceebene zu autorisieren. AWS Es sind keine separaten MCP-specific Berechtigungen erforderlich.
So erstellen Sie die IAM-Rolle (AWS CLI)
-
Erstellen Sie ein Dokument mit einer Vertrauensrichtlinie:
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 -
Erstellen Sie die Rolle:
aws iam create-role \ --role-name SparkUpgradeMCPRole \ --assume-role-policy-document file://mcp-trust-policy.json
Schritt 2: Hängen Sie die Berechtigungen für Ihren Bereitstellungsmodus an
Fügen Sie die Berechtigungsrichtlinie bei, die zu Ihrer EMR-Bereitstellungsplattform passt.
Option A: EMR auf EC2
-
Erstellen Sie das Richtliniendokument (
<STAGING_BUCKET>ersetzen Sie es durch Ihren Amazon S3 S3-Bucket-Namen):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 -
Hängen Sie die Richtlinie an:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMREC2UpgradeAccess \ --policy-document file://emr-ec2-upgrade-policy.json
Sie können auch die AmazonElasticMapReduceFullAccessverwaltete Richtlinie sowie eine Amazon S3 S3-Richtlinie für Ihren Staging-Bucket anhängen.
KMS-Berechtigungen — Staging Bucket
Wenn der Staging-Bucket mit einem CMK verschlüsselt ist, fügen Sie die folgende Richtlinie hinzu. Der Dienst verwendet beim Hochladen von Daten automatisch das im Bucket konfigurierte CMK (<KEY_ID>ersetzen Sie es durch Ihre KMS-Schlüssel-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>\" }] }"
Option B: EMR Serverlos
-
Erstellen Sie das Richtliniendokument (
<STAGING_BUCKET>ersetzen Sie es durch Ihren Amazon S3 S3-Bucket-Namen):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 -
Hängen Sie die Richtlinie an:
aws iam put-role-policy \ --role-name SparkUpgradeMCPRole \ --policy-name EMRServerlessUpgradeAccess \ --policy-document file://emr-serverless-upgrade-policy.json
KMS-Berechtigungen — Staging Bucket
Wenn der Staging-Bucket mit einem CMK verschlüsselt ist, fügen Sie die folgende Richtlinie hinzu. Der Dienst verwendet beim Hochladen von Daten automatisch das im Bucket konfigurierte CMK (<KEY_ID>ersetzen Sie es durch Ihre KMS-Schlüssel-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-Berechtigungen — Protokolle CloudWatch
Wenn die CloudWatch Protokolle mit einem CMK verschlüsselt sind, fügen Sie die folgende Richtlinie hinzu, damit der Dienst die EMR Serverless-Anwendungsprotokolle lesen kann (<KEY_ID>ersetzen Sie sie durch Ihre KMS-Schlüssel-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>\" }] }"
Schritt 3: Konfigurieren Sie Ihren MCP-Client
Konfigurieren Sie Ihren MCP-Client (z. B. Claude Desktop oder Amazon Q Developer) so, dass er den von Ihnen erstellten Rollen-ARN verwendet:
echo "arn:aws:iam::${ACCOUNT_ID}:role/SparkUpgradeMCPRole"
Informationen zur Konfiguration von AWS Anmeldeinformationen finden Sie in der Dokumentation Ihres MCP-Clients (in der Regel über ein AWS Profil, das diese Rolle übernimmt).
Bedingungsschlüssel für MCP-Serveranfragen
Zwei Bedingungsschlüssel werden automatisch zu allen Anfragen hinzugefügt, die über den SMU-MCP-Server gestellt werden:
aws:ViaAWSMCPService— Wirdtruefür jede Anfrage, die über einen AWS verwalteten MCP-Server gestellt wird, auf gesetzt.aws:CalledViaAWSMCP— Auf den MCP-Serverdienstprinzipal eingestellt (z. B.sagemaker-unified-studio-mcp.amazonaws.com).
Sie können diese Bedingungsschlüssel verwenden, um den Zugriff auf Ihre Ressourcen zu steuern, wenn Anfragen von einem AWS verwalteten MCP-Server stammen.
Beispiel: EMR-Operationen nur zulassen, wenn der Zugriff über den SMU-MCP-Server erfolgt:
{ "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" } } } ] }
Beispiel: Alle Operationen über einen beliebigen AWS verwalteten MCP-Server verweigern:
{ "Effect": "Deny", "Action": "*", "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }
Beispiel: Verweigern Sie bestimmte Operationen über einen bestimmten AWS verwalteten MCP-Server:
{ "Effect": "Deny", "Action": ["glue:GetJobRun", "glue:StartJobRun"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } }
Weitere Informationen zu Bedingungsschlüsseln finden Sie unter AWS Globale Bedingungskontextschlüssel im IAM-Benutzerhandbuch.