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 que não é de sua propriedade com o Amazon EMR
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 quiser que esse outro AWS usuário possa ler essa saída, você deve fazer duas coisas:
-
Faça com que o outro AWS usuário conceda a você permissões de gravação para o bucket do Amazon S3. O cluster que você executa é executado sob suas AWS credenciais, portanto, qualquer cluster que você iniciar também poderá gravar no bucket desse outro AWS 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 (ACLs) pré-configuradas, um conjunto predefinido de políticas de acesso definidas pelo Amazon S3.
Para obter informações sobre como o outro AWS usuário pode conceder a você permissões para gravar arquivos no bucket do Amazon S3 do outro usuário, consulte Editando permissões do bucket no Guia do usuário do Amazon Simple Storage Service.
Para o seu cluster usar ACLs pré-configuradas ao gravar arquivos no Amazon S3, defina a opção de configuração de cluster fs.s3.canned.acl para a ACL pré-configurada usar. A tabela a seguir lista as ACLs pré-configuradas atualmente definidas.
| ACL pré-configurada | Description |
|---|---|
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 ACLs pré-configuradas no Hive
-
No prompt de comando do Hive, defina a opção de configuração
fs.s3.canned.aclcomo a ACL pré-configurada desejada na qual você deseja que o cluster defina os arquivos que ele grava no Amazon S3. Para acessar o prompt de comando do Hive, conecte-se ao nó principal usando o SSH e digite Hive no prompt de comando do Hadoop. Para obter mais informações, consulte Como se conectar ao nó primário do cluster do Amazon EMR usando SSH.O exemplo a seguir define a configuração de opção
fs.s3.canned.aclcomoBucketOwnerFullControl, 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://amzn-s3-demo-bucket/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 ACLs pré-configuradas no Pig
-
No prompt de comando do Pig, defina a opção de configuração
fs.s3.canned.aclcomo a ACL pré-configurada na qual você deseja que o cluster defina os arquivos que gravará no Amazon S3. Para acessar o prompt de comando do Pig, conecte-se ao nó principal usando o SSH e digite Pig no prompt de comando do Hadoop. Para obter mais informações, consulte Como se conectar ao nó primário do cluster do Amazon EMR usando SSH.O exemplo a seguir define a opção de
fs.s3.canned.aclconfiguração como BucketOwnerFullControl, o que dá ao proprietário do bucket do Amazon S3 controle total sobre o arquivo. Observe que o comando definido inclui um espaço antes do nome da ACL pré-configurada e não contém aspas.pig> set fs.s3.canned.acl BucketOwnerFullControl; store some data into 's3://amzn-s3-demo-bucket/pig/acl';
Para gravar arquivos usando ACLs pré-configuradas em um JAR personalizado
-
Defina a opção de configuração
fs.s3.canned.aclusando o Hadoop com o sinalizador -D. Isso é mostrado no exemplo a seguir.hadoop jar hadoop-examples.jar wordcount -Dfs.s3.canned.acl=BucketOwnerFullControl s3://amzn-s3-demo-bucket/input s3://amzn-s3-demo-bucket/output