Comment écrire des données dans un compartiment Amazon S3 que vous ne possédez pas avec Amazon EMR - Amazon EMR

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Comment écrire des données dans un compartiment Amazon S3 que vous ne possédez pas avec Amazon EMR

Lorsque vous écrivez un fichier dans un compartiment Amazon Simple Storage Service (Amazon S3), vous êtes par défaut la seule personne capable de lire ce fichier. Nous supposons que vous allez écrire les fichiers dans vos propres compartiments. Ce paramètre par défaut protège la confidentialité de vos fichiers.

Toutefois, si vous utilisez un cluster et que vous souhaitez que la sortie soit écrite dans le compartiment Amazon S3 d'un autre AWS utilisateur, et que vous souhaitez que cet autre AWS utilisateur puisse lire cette sortie, vous devez faire deux choses :

  • Demandez à l'autre AWS utilisateur de vous accorder des autorisations d'écriture pour son compartiment Amazon S3. Le cluster que vous lancez fonctionne avec vos AWS informations d'identification, de sorte que tous les clusters que vous lancez pourront également écrire dans le compartiment de cet autre AWS utilisateur.

  • Définissez des autorisations de lecture pour l'autre AWS utilisateur sur les fichiers que vous ou le cluster écrivez dans le compartiment Amazon S3. Le moyen le plus simple de définir ces autorisations de lecture consiste à utiliser des listes de contrôle d'accès prédéfinies (ACLs), un ensemble de politiques d'accès prédéfinies définies par Amazon S3.

Pour plus d'informations sur la manière dont AWS l'autre utilisateur peut vous accorder l'autorisation d'écrire des fichiers dans le compartiment Amazon S3 de l'autre utilisateur, consultez la section Modification des autorisations du compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Pour que votre cluster utilise le scan ACLs lorsqu'il écrit des fichiers sur Amazon S3, définissez l'option de configuration du fs.s3.canned.acl cluster sur le scan ACL à utiliser. Le tableau suivant répertorie les fichiers prédéfinis actuellementACLs.

En conserve ACL Description
AuthenticatedRead Spécifie que le propriétaire reçoit l'autorisation Permission.FullControl et que le bénéficiaire du groupe reçoit l'autorisation GroupGrantee.AuthenticatedUsers Permission.Read.
BucketOwnerFullControl Spécifie que le propriétaire du compartiment reçoit l'autorisation Permission.FullControl. Le propriétaire du compartiment n'est pas nécessairement le propriétaire de l'objet.
BucketOwnerRead Spécifie que le propriétaire du compartiment reçoit l'autorisation Permission.Read. Le propriétaire du compartiment n'est pas nécessairement le propriétaire de l'objet.
LogDeliveryWrite Spécifie que le propriétaire reçoit l'autorisation Permission.FullControl et que le bénéficiaire du groupe GroupGrantee.LogDelivery reçoit l'autorisation Permission.Write, afin que les journaux d'accès puissent être transmis.
Private Spécifie que le propriétaire reçoit l'autorisation Permission.FullControl.
PublicRead Spécifie que le propriétaire reçoit l'autorisation Permission.FullControl et que le bénéficiaire du groupe reçoit l'autorisation GroupGrantee.AllUsers Permission.Read.
PublicReadWrite Spécifie que le propriétaire reçoit l'autorisation Permission.FullControl et que le bénéficiaire du groupe GroupGrantee.AllUsers reçoit les autorisations Permission.Read et Permission.Write.

Il existe différentes façons de définir les options de configuration du cluster, en fonction du type de cluster que vous exécutez. Les procédures suivantes montrent comment définir les options pour les cas les plus courants.

Pour écrire des fichiers à l'aide de scanned ACLs in Hive
  • À partir de l'invite de commande Hive, définissez l'option de fs.s3.canned.acl configuration sur l'option prédéfinie que ACL vous souhaitez définir pour le cluster sur les fichiers qu'il écrit sur Amazon S3. Pour accéder à l'invite de commande HiveSSH, connectez-vous au nœud principal en utilisant et tapez Hive sur l'invite de commande Hadoop. Pour de plus amples informations, veuillez consulter Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.

    L'exemple suivant définit l'option de configuration fs.s3.canned.acl sur BucketOwnerFullControl, ce qui accorde au propriétaire du compartiment Amazon S3 un contrôle complet sur le fichier. Notez que la commande définie est sensible à la casse et ne contient pas de guillemet ni d'espace.

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

    Les deux dernières lignes de l'exemple créent une table qui est stockée dans Amazon S3 et écrivent des données dans la table.

Pour écrire des fichiers à l'aide de canned ACLs in Pig
  • À partir de l'invite de commande Pig, définissez l'option de fs.s3.canned.acl configuration sur l'option prédéfinie que ACL vous souhaitez définir pour le cluster sur les fichiers qu'il écrit sur Amazon S3. Pour accéder à l'invite de commande PigSSH, connectez-vous au nœud principal en utilisant et tapez Pig sur l'invite de commande Hadoop. Pour de plus amples informations, veuillez consulter Connectez-vous au nœud principal du EMR cluster Amazon à l'aide de SSH.

    L'exemple suivant définit l'option de fs.s3.canned.acl configuration sur BucketOwnerFullControl, ce qui donne au propriétaire du compartiment Amazon S3 le contrôle total du fichier. Notez que la commande set inclut un espace avant le ACL nom prédéfini et ne contient aucun guillemet.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
Pour écrire des fichiers à l'aide ACLs d'un fichier personnalisé JAR
  • Définissez l'option de configuration fs.s3.canned.acl à l'aide de Hadoop avec l'indicateur -D. Cela est illustré dans l'exemple suivant.

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