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.
Legen Sie die folgenden Variablen für die Verwendung in nachfolgenden Befehlen fest:
ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) REGION=$(aws configure get region)
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, das es Ihrem Konto ermöglicht, diese Rolle zu übernehmen:
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 SparkTroubleshootingMCPRole \ --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 an, die zu Ihrer Spark-Bereitstellungsplattform passt. Je nachdem, welche Plattformen Sie verwenden, können Sie eine oder mehrere der folgenden Angaben anhängen.
Option A: EMR auf EC2
-
Erstellen Sie das Richtliniendokument:
cat > emr-ec2-policy.json << 'EOF' { "Version": "2012-10-17", "Statement": [ { "Sid": "EMREC2ReadAccess", "Effect": "Allow", "Action": [ "elasticmapreduce:DescribeCluster", "elasticmapreduce:DescribeStep", "elasticmapreduce:ListSteps", "elasticmapreduce:ListClusters", "elasticmapreduce:DescribeJobFlows" ], "Resource": ["*"] }, { "Sid": "EMRS3LogAccess", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": "*" }, { "Sid": "EMRPersistentApp", "Effect": "Allow", "Action": [ "elasticmapreduce:CreatePersistentAppUI", "elasticmapreduce:DescribePersistentAppUI", "elasticmapreduce:GetPersistentAppUIPresignedURL" ], "Resource": ["*"] } ] } EOF -
Erstellen Sie die Richtlinie und hängen Sie sie an:
aws iam put-role-policy \ --role-name SparkTroubleshootingMCPRole \ --policy-name EMREC2TroubleshootingAccess \ --policy-document file://emr-ec2-policy.json
Alternativ können Sie die AmazonElasticMapReduceFullAccess AWS verwaltete Richtlinie anhängen, falls Ihre Rolle sie bereits verwendet:
aws iam attach-role-policy \ --role-name SparkTroubleshootingMCPRole \ --policy-arn arn:aws:iam::aws:policy/AmazonElasticMapReduceFullAccess
Option B: AWS Glue
-
Erstellen Sie das Richtliniendokument:
cat > glue-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "GlueReadAccess", "Effect": "Allow", "Action": [ "glue:GetJob", "glue:GetJobRun", "glue:GetJobRuns", "glue:GetJobs", "glue:BatchGetJobs" ], "Resource": ["arn:aws:glue:*:${ACCOUNT_ID}:job/*"] }, { "Sid": "GlueCloudWatchLogsAccess", "Effect": "Allow", "Action": ["logs:GetLogEvents", "logs:FilterLogEvents"], "Resource": ["arn:aws:logs:*:${ACCOUNT_ID}:log-group:/aws/glue/*"] }, { "Sid": "GlueSparkWebUI", "Effect": "Allow", "Action": [ "glue:RequestLogParsing", "glue:GetLogParsingStatus", "glue:GetEnvironment", "glue:GetStage", "glue:GetStages", "glue:GetStageFiles", "glue:BatchGetStageFiles", "glue:GetStageAttempt", "glue:GetStageAttemptTaskList", "glue:GetStageAttemptTaskSummary", "glue:GetExecutors", "glue:GetExecutorsThreads", "glue:GetStorage", "glue:GetStorageUnit", "glue:GetQueries", "glue:GetQuery", "glue:GetDashboardUrl" ], "Resource": ["arn:aws:glue:*:${ACCOUNT_ID}:job/*"] }, { "Sid": "GluePassRoleAccess", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "glue.amazonaws.com" } } } ] } EOF -
Hängen Sie die Richtlinie an:
aws iam put-role-policy \ --role-name SparkTroubleshootingMCPRole \ --policy-name GlueTroubleshootingAccess \ --policy-document file://glue-policy.json
Option C: EMR Serverlos
-
Erstellen Sie das Richtliniendokument:
cat > emr-serverless-policy.json << EOF { "Version": "2012-10-17", "Statement": [ { "Sid": "EMRServerlessReadAccess", "Effect": "Allow", "Action": [ "emr-serverless:GetJobRun", "emr-serverless:GetApplication", "emr-serverless:ListApplications", "emr-serverless:ListJobRuns", "emr-serverless:ListJobRunAttempts", "emr-serverless:GetDashboardForJobRun", "emr-serverless:ListTagsForResource" ], "Resource": ["*"] }, { "Sid": "EMRServerlessCloudWatchLogsAccess", "Effect": "Allow", "Action": ["logs:GetLogEvents", "logs:FilterLogEvents"], "Resource": ["arn:aws:logs:*:${ACCOUNT_ID}:log-group:/aws/emr-serverless/*"] }, { "Sid": "EMRServerlessS3LogsAccess", "Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": "*" } ] } EOF -
Hängen Sie die Richtlinie an:
aws iam put-role-policy \ --role-name SparkTroubleshootingMCPRole \ --policy-name EMRServerlessTroubleshootingAccess \ --policy-document file://emr-serverless-policy.json
Optional: KMS-Berechtigungen für verschlüsselte CloudWatch Protokolle
Wenn Ihre CloudWatch Protokolle mit einem vom Kunden verwalteten KMS-Schlüssel verschlüsselt sind, fügen Sie Folgendes hinzu (<KEY_ID>ersetzen Sie es durch Ihre KMS-Schlüssel-ID):
aws iam put-role-policy \ --role-name SparkTroubleshootingMCPRole \ --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/SparkTroubleshootingMCPRole"
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: Glue-Lesevorgänge nur zulassen, wenn der Zugriff über den SMU-MCP-Server erfolgt:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowGlueReadViaSMUSMCP", "Effect": "Allow", "Action": ["glue:GetJob", "glue:GetJobRun", "glue:GetJobRuns"], "Resource": "*", "Condition": { "StringEquals": { "aws:CalledViaAWSMCP": "sagemaker-unified-studio-mcp.amazonaws.com" } } } ] }
Beispiel: Löschvorgänge verweigern, wenn über einen beliebigen AWS verwalteten MCP-Server darauf zugegriffen wird:
{ "Effect": "Deny", "Action": ["s3:DeleteObject", "s3:DeleteBucket"], "Resource": "*", "Condition": { "Bool": { "aws:ViaAWSMCPService": "true" } } }
Weitere Informationen zu Bedingungsschlüsseln finden Sie unter AWS Globale Bedingungskontextschlüssel im IAM-Benutzerhandbuch.