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 geschrieben wird AWS Benutzer, und Sie möchten diesen anderen AWS Benutzer, um diese Ausgabe lesen zu können, müssen Sie zwei Dinge tun:

  • Nimm den anderen AWS Benutzer gewähren Ihnen Schreibberechtigungen für ihren Amazon S3 S3-Bucket. Der Cluster, den Sie starten, läuft unter Ihrem AWS Anmeldeinformationen, sodass alle Cluster, die Sie starten, auch in diesen anderen schreiben können AWS Bucket des Benutzers.

  • Lege Leseberechtigungen für den anderen fest AWS Benutzer der Dateien, die Sie oder der Cluster in den Amazon S3 S3-Bucket schreiben. Die einfachste Methode, diese Leseberechtigungen festzulegen, besteht darin, vorgefertigte Zugriffskontrolllisten (ACLs) zu verwenden. Dabei handelt es sich um eine Reihe von vordefinierten Zugriffsrichtlinien, die von Amazon S3 definiert wurden.

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

Damit Ihr Cluster ACLs beim Schreiben von Dateien in Amazon S3 die Option „Gespeichert“ verwendet, setzen Sie die fs.s3.canned.acl Cluster-Konfigurationsoption auf „Gespeichert“, ACL um sie zu verwenden. In der folgenden Tabelle sind die aktuell definierten gespeicherten Dateien aufgeführtACLs.

Gescannt 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 von canned ACLs in Hive
  • Stellen Sie in der Hive-Befehlszeile die fs.s3.canned.acl Konfigurationsoption auf „Gespeichert“ ein. ACL Sie möchten, dass der Cluster für Dateien festgelegt wird, die er in Amazon S3 schreibt. Um auf die Hive-Befehlszeile zuzugreifen, stellen Sie eine Verbindung zum Master-Knoten her und geben Sie SSH Hive an der Hadoop-Befehlszeile ein. Weitere Informationen finden Sie unter Connect zum Primärknoten her mit SSH.

    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 von Canned in Pig ACLs
  • Stellen Sie in der Pig-Befehlszeile die fs.s3.canned.acl Konfigurationsoption auf „Gespeichert“ ein. ACL Sie möchten, dass der Cluster für Dateien festgelegt wird, die er in Amazon S3 schreibt. Um auf die Pig-Befehlszeile zuzugreifenSSH, stellen Sie eine Verbindung zum Master-Knoten her und geben Sie Pig an der Hadoop-Befehlszeile ein. Weitere Informationen finden Sie unter Connect zum Primärknoten her mit SSH.

    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, dass der Befehl set ein Leerzeichen vor dem gespeicherten ACL Namen enthält und keine Anführungszeichen enthält.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
Um Dateien mit dem Befehl „Einscannen“ ACLs in einem benutzerdefinierten Format zu schreiben 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