Como gravar dados em um bucket do Amazon S3 do qual você não é proprietário - Amazon EMR

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como gravar dados em um bucket do Amazon S3 do qual você não é proprietário

Ao gravar um arquivo em um bucket do Amazon Simple Storage Service (Amazon S3), por padrão, você é o único usuário capaz de ler esse arquivo. A suposição é a de que você gravará arquivos em seus próprio buckets, e essa configuração padrão protege a privacidade desses arquivos.

No entanto, se você estiver executando um cluster e quiser que a saída seja gravada no bucket Amazon S3 de outro AWS usuário, e você quer aquele outro AWS usuário para poder ler essa saída, você deve fazer duas coisas:

  • Tenha o outro AWS o usuário concede a você permissões de gravação para seu bucket Amazon S3. O cluster que você executa é executado sob seu AWS credenciais, portanto, qualquer cluster que você iniciar também poderá gravar nesse outro AWS balde do usuário.

  • Defina permissões de leitura para o outro AWS usuário nos arquivos que você ou o cluster gravam no bucket do Amazon S3. A maneira mais fácil de definir essas permissões de leitura é usar listas de controle de acesso predefinidas (ACLs), um conjunto de políticas de acesso predefinidas definidas pelo Amazon S3.

Para obter informações sobre como o outro AWS O usuário pode conceder a você permissões para gravar arquivos no bucket do Amazon S3 do outro usuário, consulte Editar permissões do bucket no Guia do usuário do Amazon Simple Storage Service.

Para que seu cluster use o padrão ACLs ao gravar arquivos no Amazon S3, defina a opção de configuração fs.s3.canned.acl do cluster como o padrão a ACL ser usado. A tabela a seguir lista os enlatados ACLs atualmente definidos.

Enlatado ACL Descrição
AuthenticatedRead Especifica que o proprietário recebe Permission.FullControl e o favorecido do grupo GroupGrantee.AuthenticatedUsers recebe o acesso Permission.Read.
BucketOwnerFullControl Especifica que o proprietário do bucket recebe Permission.FullControl. O proprietário do bucket não é necessariamente o proprietário do objeto.
BucketOwnerRead Especifica que o proprietário do bucket recebe Permission.Read. O proprietário do bucket não é necessariamente o proprietário do objeto.
LogDeliveryWrite Especifica que o proprietário recebe Permission.FullControl e o favorecido do grupo GroupGrantee.LogDelivery recebe o acesso Permission.Write, permitindo que logs de acesso sejam fornecidos.
Private Especifica que o proprietário recebe Permission.FullControl.
PublicRead Especifica que o proprietário recebe Permission.FullControl e o favorecido do grupo GroupGrantee.AllUsers recebe o acesso Permission.Read.
PublicReadWrite Especifica que o proprietário recebe Permission.FullControl e o favorecido do grupo GroupGrantee.AllUsers recebe os acessos Permission.Read e Permission.Write.

Há muitas maneiras de definir opções de configuração do cluster, dependendo do tipo de cluster que você está executando. Os procedimentos a seguir mostram como definir a opção para casos comuns.

Para gravar arquivos usando o recurso enlatado ACLs no Hive
  • No prompt de comando do Hive, defina a opção de fs.s3.canned.acl configuração como a configuração padrão ACL que você deseja que o cluster defina nos arquivos que ele grava no Amazon S3. Para acessar o prompt de comando do HiveSSH, conecte-se ao nó principal usando e digite Hive no prompt de comando do Hadoop. Para obter mais informações, consulte Conecte-se ao nó primário usando SSH.

    O exemplo a seguir define a configuração de opção fs.s3.canned.acl como BucketOwnerFullControl, que dá ao proprietário do bucket do Amazon S3 controle total sobre o arquivo. Observe que o comando definido faz distinção entre maiúsculas e minúsculas e não contém aspas ou espaços.

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

    As duas últimas linhas do exemplo criam uma tabela que é armazenada no Amazon S3 e gravam dados nessa tabela.

Para gravar arquivos usando canned ACLs in Pig
  • No prompt de comando do Pig, defina a opção de fs.s3.canned.acl configuração como a configuração padrão ACL que você deseja que o cluster defina nos arquivos que ele grava no Amazon S3. Para acessar o prompt de comando do PigSSH, conecte-se ao nó principal usando e digite Pig no prompt de comando do Hadoop. Para obter mais informações, consulte Conecte-se ao nó primário usando SSH.

    O exemplo a seguir define a opção de fs.s3.canned.acl configuração como BucketOwnerFullControl, o que dá ao proprietário do bucket do Amazon S3 controle total sobre o arquivo. Observe que o comando set inclui um espaço antes do ACL nome padrão e não contém aspas.

    pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://acltestbucket/pig/acl';
Para gravar arquivos usando canned ACLs em um formato personalizado JAR
  • Defina a opção de configuração fs.s3.canned.acl usando o Hadoop com o sinalizador -D. Isso é mostrado no exemplo a seguir.

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