O AWS SDK for Java 1.x entrou no modo de manutenção em 31 de julho de 2024 e chegará end-of-support
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á.
Gerenciar acesso a buckets do Amazon S3 usando políticas de bucket
Você pode definir, obter ou excluir uma política de bucket para gerenciar o acesso aos buckets do Amazon S3.
Definir uma política de bucket
Você pode definir a política de bucket para um determinado bucket do S3 ao:
-
Chamar o
setBucketPolicy
de cliente do AmazonS3 e fornecer um SetBucketPolicyRequest -
Definir a política diretamente usando a sobrecarga
setBucketPolicy
que utiliza um nome de bucket e o texto da política (em formato JSON)
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.auth.policy.Policy; import com.amazonaws.auth.policy.Principal;
Código
s3.setBucketPolicy(bucket_name, policy_text); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Usar a classe Policy para gerar ou validar uma política
Ao fornecer uma política de bucket para setBucketPolicy
, você pode fazer o seguinte:
-
Especificar a política diretamente como uma string de texto formatado em JSON
-
Compilar a política usando a classe Policy
Usando a classe Policy
, não é necessário se preocupar com a formatação correta da string de texto. Para obter o texto da política JSON da classe Policy
, use o método toJson
.
Importações
import com.amazonaws.auth.policy.Resource; import com.amazonaws.auth.policy.Statement; import com.amazonaws.auth.policy.actions.S3Actions; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
Código
new Statement(Statement.Effect.Allow) .withPrincipals(Principal.AllUsers) .withActions(S3Actions.GetObject) .withResources(new Resource( "{region-arn}s3:::" + bucket_name + "/*"))); return bucket_policy.toJson();
A classe Policy
também oferece um método fromJson
que pode tentar compilar uma política usando uma string JSON passada. O método a valida para garantir que o texto possa ser transformado em uma estrutura de política válida e falhará com um IllegalArgumentException
se o texto da política for inválido.
Policy bucket_policy = null; try { bucket_policy = Policy.fromJson(file_text.toString()); } catch (IllegalArgumentException e) { System.out.format("Invalid policy text in file: \"%s\"", policy_file); System.out.println(e.getMessage()); }
Você pode usar essa técnica para pré-validar uma política lida de um arquivo ou outros meios.
Veja o exemplo completo
Obter uma política de bucket
Para recuperar a política de um bucket do Amazon S3, chame o método getBucketPolicy
de cliente do AmazonS3, passando o nome do bucket do qual obter a política.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder;
Código
try { BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name); policy_text = bucket_policy.getPolicyText(); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Se o bucket nomeado não existir, se você não tiver acesso a ele, ou se ele não tiver uma política de bucket, um AmazonServiceException
será lançado.
Veja o exemplo completo
Excluir uma política de bucket
Para excluir uma política de bucket, chame o deleteBucketPolicy
de cliente do AmazonS3, fornecendo o nome do bucket.
Importações
import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3;
Código
try { s3.deleteBucketPolicy(bucket_name); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); }
Esse método será bem-sucedido, mesmo se o bucket ainda não tiver uma política. Se você especificar um nome de bucket não existente ou se não tiver acesso ao bucket, um AmazonServiceException
será lançado.
Veja o exemplo completo
Mais informações
-
Visão geral da linguagem de políticas de acesso no Guia do usuário do Amazon Simple Storage Service
-
Exemplos de políticas de bucket no Guia do usuário do Amazon Simple Storage Service