Servicerolle für EC2 Cluster-Instances (EC2Instance-Profil) - Amazon EMR

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.

Servicerolle für EC2 Cluster-Instances (EC2Instance-Profil)

Die Servicerolle für EC2 Cluster-Instances (auch EC2 Instance-Profil für Amazon genanntEMR) ist eine spezielle Art von Servicerolle, die jeder EC2 Instance in einem EMR Amazon-Cluster zugewiesen wird, wenn die Instance gestartet wird. Anwendungsprozesse, die auf der Hadoop-Ökosystem ausgeführt werden, übernehmen diese Rolle für Berechtigungen für die Interaktion mit anderen AWS -Services.

Weitere Informationen zu Servicerollen für EC2 Instances finden Sie im IAMBenutzerhandbuch unter Verwenden einer IAM Rolle zum Erteilen von Berechtigungen für Anwendungen, die auf EC2 Amazon-Instances ausgeführt werden.

Wichtig

Die Standard-Servicerolle für EC2 Cluster-Instances und die zugehörige verwaltete AWS Standardrichtlinie AmazonElasticMapReduceforEC2Role sind inzwischen veraltet, und es werden keine neuen AWS verwalteten Richtlinien bereitgestellt. Sie müssen ein Instance-Profil erstellen und angeben, um die veraltete Rolle und die Standardrichtlinie zu ersetzen.

Standardrolle und verwaltete Richtlinie

  • Der Standardrollenname ist EMR_EC2_DefaultRole.

  • Die EMR_EC2_DefaultRole standardmäßige verwaltete Richtlinie,AmazonElasticMapReduceforEC2Role, nähert sich dem Ende des Supports. Anstatt eine verwaltete Standardrichtlinie für das EC2 Instance-Profil zu verwenden, wenden Sie ressourcenbasierte Richtlinien auf S3-Buckets und andere Ressourcen an, die Amazon EMR benötigt, oder verwenden Sie Ihre eigene, vom Kunden verwaltete Richtlinie mit einer IAM Rolle als Instance-Profil. Weitere Informationen finden Sie unter Erstellen Sie eine Servicerolle für EC2 Cluster-Instances mit Berechtigungen mit den geringsten Rechten.

Im Folgenden werden die Inhalte von Version 3 von AmazonElasticMapReduceforEC2Role gezeigt.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Resource": "*", "Action": [ "cloudwatch:*", "dynamodb:*", "ec2:Describe*", "elasticmapreduce:Describe*", "elasticmapreduce:ListBootstrapActions", "elasticmapreduce:ListClusters", "elasticmapreduce:ListInstanceGroups", "elasticmapreduce:ListInstances", "elasticmapreduce:ListSteps", "kinesis:CreateStream", "kinesis:DeleteStream", "kinesis:DescribeStream", "kinesis:GetRecords", "kinesis:GetShardIterator", "kinesis:MergeShards", "kinesis:PutRecord", "kinesis:SplitShard", "rds:Describe*", "s3:*", "sdb:*", "sns:*", "sqs:*", "glue:CreateDatabase", "glue:UpdateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTable", "glue:GetTables", "glue:GetTableVersions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:CreateUserDefinedFunction", "glue:UpdateUserDefinedFunction", "glue:DeleteUserDefinedFunction", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ] } ] }

Ihre Servicerolle sollte die folgende Vertrauensrichtlinie verwenden.

{ "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Erstellen Sie eine Servicerolle für EC2 Cluster-Instances mit Berechtigungen mit den geringsten Rechten

Als bewährte Methode empfehlen wir dringend, eine Servicerolle für EC2 Cluster-Instances und eine Berechtigungsrichtlinie zu erstellen, die über die Mindestberechtigungen für andere AWS Dienste verfügt, die für Ihre Anwendung erforderlich sind.

Die standardmäßige verwaltete Richtlinie, AmazonElasticMapReduceforEC2Role, bietet Berechtigungen, mit denen Sie problemlos einen ersten Cluster starten können. AmazonElasticMapReduceforEC2Roleist jedoch auf dem Weg, veraltet zu werden, und Amazon EMR wird keine Ersatzrichtlinie für die AWS verwaltete Standardrichtlinie für die veraltete Rolle bereitstellen. Um einen ersten Cluster zu starten, müssen Sie eine vom Kunden verwaltete, ressourcenbasierte oder ID-basierte Richtlinie bereitstellen.

Die folgenden Richtlinienerklärungen enthalten Beispiele für die Berechtigungen, die für verschiedene Funktionen von Amazon erforderlich sindEMR. Wir empfehlen, diese Berechtigungen zu verwenden, um eine Berechtigungsrichtlinie zu erstellen, die den Zugriff auf nur diese Funktionen und Ressourcen beschränkt, die Ihr Cluster erfordert. Alle beispielhaften Richtlinienerklärungen verwenden us-west-2 Region und die fiktive AWS Konto-ID 123456789012. Ersetzen Sie diese je nach Bedarf für Ihren Cluster.

Weitere Informationen zum Erstellen und Angeben benutzerdefinierter Rollen finden Sie unter Passen Sie IAM Rollen mit Amazon an EMR.

Anmerkung

Wenn Sie eine benutzerdefinierte EMR Rolle für erstellenEC2, folgen Sie dem grundlegenden Arbeitsablauf, der automatisch ein Instanzprofil mit demselben Namen erstellt. Amazon EC2 ermöglicht es Ihnen, Instance-Profile und Rollen mit unterschiedlichen Namen zu erstellen, Amazon unterstützt diese Konfiguration jedoch EMR nicht und führt zu einem Fehler „Ungültiges Instance-Profil“, wenn Sie den Cluster erstellen.

Lesen und Schreiben von Daten in Amazon S3 mit EMRFS

Wenn eine Anwendung, die auf einem EMR Amazon-Cluster ausgeführt wird, Daten im s3://mydata Format referenziert, EMR verwendet Amazon das EC2 Instance-Profil, um die Anfrage zu stellen. Cluster lesen und schreiben in der Regel Daten auf diese Weise in Amazon S3, und Amazon EMR verwendet standardmäßig die mit der Service-Rolle verknüpften Berechtigungen für EC2 Cluster-Instances. Weitere Informationen finden Sie unter IAMRollen für EMRFS Anfragen an Amazon S3 konfigurieren.

Da IAM Rollen für EMRFS auf die Berechtigungen zurückgreifen, die mit der Service-Rolle für EC2 Cluster-Instances verknüpft sind, empfehlen wir als bewährte Methode, IAM Rollen für zu verwenden und die Amazon S3 S3-BerechtigungenEMRFS, die mit der EMRFS Servicerolle für EC2 Cluster-Instances verknüpft sind, zu beschränken.

Die folgende Beispielerklärung zeigt die Berechtigungen, die EMRFS erforderlich sind, um Anfragen an Amazon S3 zu stellen.

  • my-data-bucket-in-s3-for-emrfs-reads-and-writes spezifiziert den Bucket in Amazon S3, in den der Cluster Daten liest und schreibt, sowie alle Unterordner mit /*. Fügen Sie nur die Buckets und Ordner hinzu, die Ihre Anwendung benötigt.

  • Die Richtlinienerklärung, die dynamodb Aktionen zulässt, ist nur erforderlich, wenn die EMRFS konsistente Ansicht aktiviert ist. EmrFSMetadata gibt den Standardordner für die EMRFS konsistente Ansicht an.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:DeleteObject", "s3:GetBucketVersioning", "s3:GetObject", "s3:GetObjectTagging", "s3:GetObjectVersion", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions", "s3:ListMultipartUploadParts", "s3:PutBucketVersioning", "s3:PutObject", "s3:PutObjectTagging" ], "Resource": [ "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes", "arn:aws:s3:::my-data-bucket-in-s3-for-emrfs-reads-and-writes/*" ] }, { "Effect": "Allow", "Action": [ "dynamodb:CreateTable", "dynamodb:BatchGetItem", "dynamodb:BatchWriteItem", "dynamodb:PutItem", "dynamodb:DescribeTable", "dynamodb:DeleteItem", "dynamodb:GetItem", "dynamodb:Scan", "dynamodb:Query", "dynamodb:UpdateItem", "dynamodb:DeleteTable", "dynamodb:UpdateTable" ], "Resource": "arn:aws:dynamodb:us-west-2:123456789012:table/EmrFSMetadata" }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "dynamodb:ListTables", "s3:ListBucket" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sqs:GetQueueUrl", "sqs:ReceiveMessage", "sqs:DeleteQueue", "sqs:SendMessage", "sqs:CreateQueue" ], "Resource": "arn:aws:sqs:us-west-2:123456789012:EMRFS-Inconsistency-*" } ] }

Archivieren von Protokolldateien in Amazon S3

Die folgende Richtlinienerklärung ermöglicht es dem EMR Amazon-Cluster, Protokolldateien am angegebenen Amazon S3-Speicherort zu archivieren. Im folgenden Beispiel, als der Cluster erstellt wurde, s3://MyLoggingBucket/MyEMRClusterLogs wurde mithilfe des Speicherorts Protokollordner S3 in der Konsole, mithilfe der --log-uri Option von oder mithilfe des LogUri Parameters im RunJobFlow Befehl angegeben. AWS CLI Weitere Informationen finden Sie unter Archivieren von Protokolldateien in Amazon S3.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:PutObject", "Resource": "arn:aws:s3:::MyLoggingBucket/MyEMRClusterLogs/*" } ] }

Verwenden des AWS Glue-Datenkatalogs

Die folgende Richtlinienerklärung erlaubt Aktionen, die erforderlich sind, wenn Sie den AWS Glue-Datenkatalog als Metastore für Anwendungen verwenden. Weitere Informationen finden Sie unter Verwenden des AWS Glue-Datenkatalogs als Metastore für Spark SQL, Verwenden des AWS Glue-Datenkatalogs als Metastore für Hive und Verwenden von Presto mit dem AWS Glue-Datenkatalog im Amazon-Versionshandbuch. EMR

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateDatabase", "glue:UpdateDatabase", "glue:DeleteDatabase", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateTable", "glue:UpdateTable", "glue:DeleteTable", "glue:GetTable", "glue:GetTables", "glue:GetTableVersions", "glue:CreatePartition", "glue:BatchCreatePartition", "glue:UpdatePartition", "glue:DeletePartition", "glue:BatchDeletePartition", "glue:GetPartition", "glue:GetPartitions", "glue:BatchGetPartition", "glue:CreateUserDefinedFunction", "glue:UpdateUserDefinedFunction", "glue:DeleteUserDefinedFunction", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions" ], "Resource": "*", } ] }