So schreiben Sie Daten in einen Amazon S3-Bucket, für den Sie keine Rechte haben - 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.

So schreiben Sie Daten in einen Amazon S3-Bucket, für den Sie keine Rechte haben

Wenn Sie eine Datei in einen Amazon Simple Storage Service (Amazon S3)-Bucket schreiben, können standardmäßig nur Sie die Datei lesen. Es wird davon ausgegangen, dass Sie Dateien in Ihre Buckets schreiben. Diese Standardeinstellung dient dem Schutz Ihrer Dateien.

Wenn Sie jedoch einen Cluster ausführen und möchten, dass die Ausgabe in den Amazon S3 S3-Bucket eines anderen AWS Benutzers schreibt und Sie möchten, dass dieser andere AWS Benutzer diese Ausgabe lesen kann, müssen Sie zwei Dinge tun:

  • Bitten Sie den anderen AWS Benutzer, Ihnen Schreibberechtigungen für seinen Amazon S3 S3-Bucket zu gewähren. Der Cluster, den Sie starten, wird unter Ihren AWS Anmeldeinformationen ausgeführt, sodass alle Cluster, die Sie starten, auch in den Bucket dieses anderen AWS Benutzers schreiben können.

  • Legen Sie Leseberechtigungen für den anderen AWS Benutzer für die Dateien fest, die Sie oder der Cluster in den Amazon S3 S3-Bucket schreiben. Diese Leseberechtigungen können Sie am einfachsten festlegen, indem Sie vordefinierte Zugriffssteuerungslisten (Access Control Lists, ACLs), also Sätze von vordefinierten Zugriffsrichtlinien verwenden, die von Amazon S3 festgelegt werden.

Informationen darüber, wie der andere AWS Benutzer Ihnen Berechtigungen zum Schreiben von Dateien in den Amazon S3 S3-Bucket des anderen Benutzers gewähren kann, finden Sie unter Bearbeiten von Bucket-Berechtigungen im Amazon Simple Storage Service-Benutzerhandbuch.

Damit Ihr Cluster beim Schreiben von Dateien in Amazon S3 feste ACLs verwenden kann, setzen Sie die fs.s3.canned.acl-Cluster-Konfigurationsoption auf die zu verwendende feste ACL. In der folgenden Tabelle sind die derzeit festgelegten vordefinierten ACLs aufgeführt.

Vordefinierte ACL Beschreibung
AuthenticatedRead Gibt an, dass dem Eigentümer Permission.FullControl und dem Berechtigungsempfänger der Gruppe GroupGrantee.AuthenticatedUsers der Zugriff Permission.Read gewährt wird.
BucketOwnerFullControl Gibt an, dass dem Bucket-Eigentümer Permission.FullControl gewährt wird. Der Bucket-Eigentümer muss nicht unbedingt derselbe wie der Objekteigentümer sein.
BucketOwnerRead Gibt an, dass dem Bucket-Eigentümer Permission.Read gewährt wird. Der Bucket-Eigentümer muss nicht unbedingt derselbe wie der Objekteigentümer sein.
LogDeliveryWrite Gibt an, dass dem Eigentümer Permission.FullControl und dem Berechtigungsempfänger der Gruppe GroupGrantee.LogDelivery der Zugriff Permission.Write gewährt wird, damit Zugriffsprotokolle bereitgestellt werden können.
Private Gibt an, dass dem Eigentümer Permission.FullControl gewährt wird.
PublicRead Gibt an, dass dem Eigentümer Permission.FullControl und dem Berechtigungsempfänger der Gruppe GroupGrantee.AllUsers der Zugriff Permission.Read gewährt wird.
PublicReadWrite Gibt an, dass dem Eigentümer Permission.FullControl und dem Berechtigungsempfänger der Gruppe GroupGrantee.AllUsers die Zugriffsberechtigungen Permission.Read und Permission.Write gewährt wird.

Die Cluster-Konfigurationsoptionen können auf vielfältige Weise festgelegt werden, je nach Typ des ausgeführten Clusters. Die folgenden Verfahren zeigen die Festlegung der Option für allgemeine Anwendungsfälle.

So schreiben Sie Dateien mithilfe vorgefertigter ACLs in Hive
  • Legen Sie in der Hive-Eingabeaufforderung die Konfigurationsoption fs.s3.canned.acl auf die vordefinierte ACL fest, die der Cluster für zu Amazon S3 geschriebene Dateien festlegen soll. Stellen Sie für den Zugriff auf die Hive-Eingabeaufforderung eine Verbindung mit dem Master-Knoten über SSH her und geben Sie an der Hadoop-Eingabeaufforderung "Hive" ein. Weitere Informationen finden Sie unter Mit dem Primärknoten über SSH verbinden.

    Im folgenden Beispiel wird die Konfigurationsoption fs.s3.canned.acl auf BucketOwnerFullControl festgelegt. Dadurch erhält der Eigentümer des Amazon-S3-Buckets vollständige Kontrolle über die Datei. Beachten Sie: Der Festlegungsbefehl erfordert die Beachtung der Groß- und Kleinschreibung und enthält keine Anführungszeichen oder Leerzeichen.

    hive> set fs.s3.canned.acl=BucketOwnerFullControl; create table acl (n int) location 's3://acltestbucket/acl/'; insert overwrite table acl select count(*) from acl;

    Die beiden letzten Zeilen des Beispiels erstellen eine Tabelle, die in Amazon S3 gespeichert wird, und schreiben Daten in die Tabelle.

So schreiben Sie Dateien mithilfe vorgefertigter ACLs in Pig
  • Legen Sie in der Pig-Eingabeaufforderung die Konfigurationsoption fs.s3.canned.acl auf die vordefinierte ACL fest, die der Cluster für zu Amazon S3 geschriebene Dateien festlegen soll. Stellen Sie für den Zugriff auf die Pig-Eingabeaufforderung eine Verbindung mit dem Master-Knoten über SSH her und geben Sie an der Hadoop-Eingabeaufforderung "Pig" ein. Weitere Informationen finden Sie unter Mit dem Primärknoten über SSH verbinden.

    Im folgenden Beispiel wird die fs.s3.canned.acl Konfigurationsoption auf gesetzt BucketOwnerFullControl, wodurch der Besitzer des Amazon S3 S3-Buckets die vollständige Kontrolle über die Datei hat. Beachten Sie: Der Festlegungsbefehl enthält ein Leerzeichen vor dem Namen der vordefinierten ACL und keine Anführungszeichen.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
So schreiben Sie Dateien mithilfe vorgefertigter ACLs in eine Custom JAR
  • Legen Sie mit Hadoop die Konfigurationsoption fs.s3.canned.acl mit -D-Flag fest. Das wird im Beispiel unten veranschaulicht.

    hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://mybucket/input s3://mybucket/output