

O AWS SDK para Java 1.x chegou end-of-support em 31 de dezembro de 2025. Recomendamos que você migre para o [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para continuar recebendo novos recursos, melhorias de disponibilidade e atualizações de segurança.

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
<a name="examples-s3-bucket-policies"></a>

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
<a name="set-s3-bucket-policy"></a>

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](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/SetBucketPolicyRequest.html) 
+ 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 da** 

```
    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
<a name="use-s3-bucket-policy-class"></a>

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](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/policy/Policy.html)

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 da** 

```
        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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java) no GitHub.

## Obter uma política de bucket
<a name="get-s3-bucket-policy"></a>

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 da** 

```
  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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/GetBucketPolicy.java) no GitHub.

## Excluir uma política de bucket
<a name="delete-s3-bucket-policy"></a>

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 da** 

```
  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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucketPolicy.java) no GitHub.

## Mais informações
<a name="more-info"></a>
+  [Visão geral da linguagem de políticas de acesso](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) no Guia do usuário do Amazon Simple Storage Service
+  [Exemplos de políticas de bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) no Guia do usuário do Amazon Simple Storage Service