

La AWS SDK para Java 1.x se alcanzó end-of-support el 31 de diciembre de 2025. Le recomendamos que migre a [AWS SDK for Java 2.x](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html) para seguir recibiendo nuevas características, mejoras de disponibilidad y actualizaciones de seguridad.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Administración del acceso a los buckets de Amazon S3 mediante políticas de buckets
<a name="examples-s3-bucket-policies"></a>

Puede definir, obtener o eliminar una *política de bucket* para administrar el acceso a los buckets de Amazon S3.

## Definir una política de bucket
<a name="set-s3-bucket-policy"></a>

Puede definir la política de bucket para un determinado bucket de S3:
+ Llamando al `setBucketPolicy` de AmazonS3 client y proporcionándole un [SetBucketPolicyRequest](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/services/s3/model/SetBucketPolicyRequest.html) 
+ Estableciendo la política directamente mediante la sobrecarga `setBucketPolicy`, que toma un nombre de bucket y el texto de la política (en formato JSON)

 **Importaciones** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.policy.Policy;
import com.amazonaws.auth.policy.Principal;
```

 **Código de** 

```
    s3.setBucketPolicy(bucket_name, policy_text);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
    System.exit(1);
}
```

### Usar la clase Class para generar o validar una política
<a name="use-s3-bucket-policy-class"></a>

Cuando proporciona una política de bucket a `setBucketPolicy`, puede hacer lo siguiente:
+ Especificar la política directamente como una cadena de texto con formato JSON
+ Crear la política con la clase [Policy](https://docs.aws.amazon.com/sdk-for-java/v1/reference/com/amazonaws/auth/policy/Policy.html)

Si utiliza la clase `Policy`, no tendrá que preocuparse de formatear correctamente la cadena de texto. Para obtener el texto de la política JSON de la clase `Policy`, utilice su método `toJson`.

 **Importaciones** 

```
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 de** 

```
        new Statement(Statement.Effect.Allow)
                .withPrincipals(Principal.AllUsers)
                .withActions(S3Actions.GetObject)
                .withResources(new Resource(
                        "{region-arn}s3:::" + bucket_name + "/*")));
return bucket_policy.toJson();
```

La clase `Policy` proporciona también un método `fromJson` que intenta crear una política mediante una cadena JSON que se haya pasado. El método valida la cadena para garantizar que el texto se pueda transformar en una estructura de política válida y dará un error `IllegalArgumentException` si el texto de la política no es vá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());
}
```

Puede utilizar esta técnica para validar previamente una política leída de un archivo o por otros medios.

Consulte el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/SetBucketPolicy.java) en GitHub.

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

Para recuperar la política de un bucket de Amazon S3, llame al método `getBucketPolicy` del AmazonS3 client pasando el nombre del bucket del que se va a obtener la política.

 **Importaciones** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
```

 **Código de** 

```
  try {
      BucketPolicy bucket_policy = s3.getBucketPolicy(bucket_name);
      policy_text = bucket_policy.getPolicyText();
  } catch (AmazonServiceException e) {
      System.err.println(e.getErrorMessage());
      System.exit(1);
  }
```

Si el bucket especificado no existe, si no tiene acceso a él o si no tiene una política de bucket, se produce la excepción `AmazonServiceException`.

Consulte el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/GetBucketPolicy.java) en GitHub.

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

Para eliminar una política de bucket, llame al `deleteBucketPolicy` de AmazonS3 client proporcionando el nombre del bucket.

 **Importaciones** 

```
import com.amazonaws.AmazonServiceException;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
```

 **Código de** 

```
  try {
      s3.deleteBucketPolicy(bucket_name);
  } catch (AmazonServiceException e) {
      System.err.println(e.getErrorMessage());
      System.exit(1);
  }
```

Este método se ejecuta correctamente aunque el bucket aún no tenga una política. Si especifica el nombre de un bucket que no existe o si no tiene acceso al bucket, se produce la excepción `AmazonServiceException`.

Consulte el [ejemplo completo](https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/java/example_code/s3/src/main/java/aws/example/s3/DeleteBucketPolicy.java) en GitHub.

## Más información
<a name="more-info"></a>
+  [Información general del lenguaje de la política de acceso](https://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html) en la Guía del usuario de Amazon Simple Storage Service
+  [Ejemplos de política de bucket](https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html) en la Guía del usuario de Amazon Simple Storage Service