Proporcione credenciales temporales al AWS SDK for Java - AWS SDK for Java 1.x

Anunciamos la próxima versión end-of-support para AWS SDK for Java (v1). Se recomienda que migre a AWS SDK for Java versión 2. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

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.

Proporcione credenciales temporales al AWS SDK for Java

Para realizar solicitudes Amazon Web Services, debe proporcionar credenciales AWS temporales para AWS SDK for Java que las utilice cuando llame a los servicios. Puede hacerlo de las siguientes maneras:

  • Utilice la cadena predeterminada de proveedores de credenciales (recomendado).

  • Utilice un proveedor de credenciales específico o una cadena de proveedores (o cree el suyo propio).

  • Proporcione usted mismo las credenciales temporales en código.

Uso de la cadena predeterminada de proveedores de credenciales

Al inicializar un nuevo cliente de servicio sin proporcionar ningún argumento, AWS SDK for Java intenta encontrar credenciales temporales utilizando la cadena de proveedores de credenciales predeterminada implementada por la clase AWSCredentialsProviderChainDefault. La cadena predeterminada de proveedores de credenciales busca las credenciales en este orden:

  1. Variables de entorno: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY y AWS_SESSION_TOKEN. AWS SDK for Java Usa la EnvironmentVariableCredentialsProviderclase para cargar estas credenciales.

  2. Propiedades del sistema Java: aws.accessKeyId, aws.secretKey y aws.sessionToken. AWS SDK for Java Usa el SystemPropertiesCredentialsProviderpara cargar estas credenciales.

  3. Credenciales de Web Identity Token del entorno o contenedor.

  4. El archivo de perfiles de credenciales predeterminado, que normalmente se encuentra en ~/.aws/credentials (la ubicación puede variar según la plataforma) y lo comparten muchos de AWS los SDK y el. AWS CLI AWS SDK for Java Utiliza el ProfileCredentialsProviderpara cargar estas credenciales.

    Puede crear un archivo de credenciales mediante el aws configure comando proporcionado por el AWS CLI, o puede crearlo editando el archivo con un editor de texto. Para obtener información sobre el formato del archivo de credenciales, consulte Formato del archivo de credenciales de AWS.

  5. Credenciales del contenedor de Amazon ECS: cargadas desde Amazon ECS si se ha establecido la variable de entorno AWS_CONTAINER_CREDENTIALS_RELATIVE_URI. AWS SDK for Java Utiliza el ContainerCredentialsProviderpara cargar estas credenciales. Puede especificar la dirección IP para este valor.

  6. Credenciales de perfil de instancia: se utilizan en las instancias de EC2 y se entregan a través del servicio de Amazon EC2 metadatos. AWS SDK for Java Utiliza las InstanceProfileCredentialsProviderpara cargar estas credenciales. Puede especificar la dirección IP para este valor.

    nota

    Las credenciales del perfil de instancia se utilizan únicamente si no se ha establecido AWS_CONTAINER_CREDENTIALS_RELATIVE_URI. Consulte EC2 ContainerCredentialsProviderWrapper para obtener más información.

Utilizar credenciales temporales

Para poder utilizar credenciales AWS temporales, deben estar configuradas en al menos una de las ubicaciones anteriores. Para obtener información sobre la configuración de las credenciales, consulte los siguientes temas:

Configurar un perfil de credenciales alternativo

AWS SDK for Java Utiliza el perfil predeterminado de forma predeterminada, pero hay formas de personalizar el perfil que proviene del archivo de credenciales.

Puede usar la variable AWS de entorno Profile para cambiar el perfil cargado por el SDK.

Por ejemplo, en Linux; macOS o Unix ejecutaría el comando siguiente para cambiar el perfil a myProfile.

export AWS_PROFILE="myProfile"

En Windows, usaría el siguiente comando.

set AWS_PROFILE="myProfile"

La configuración de la variable de AWS_PROFILE entorno afecta a la carga de credenciales de todos los AWS SDK y herramientas compatibles oficialmente (incluidos el AWS CLI y el AWS Tools for Windows PowerShell). Para cambiar únicamente el perfil de una aplicación Java, puede utilizar la propiedad del sistema aws.profile en su lugar.

nota

La variable de entorno prevalece sobre la propiedad del sistema.

Configurar una ubicación del archivo de credenciales alternativa

AWS SDK for Java Carga las credenciales AWS temporales automáticamente desde la ubicación predeterminada del archivo de credenciales. Sin embargo, también puede especificar la ubicación estableciendo la variable de entorno AWS_CREDENTIAL_PROFILES_FILE con la ruta completa del archivo de credenciales.

Puede utilizar esta función para cambiar temporalmente la ubicación en la que AWS SDK for Java busca su archivo de credenciales (por ejemplo, configurando esta variable con la línea de comandos). También puede establecer la variable de entorno en el entorno del usuario o del sistema para cambiarlo para el usuario o para todo el sistema.

Para invalidar la ubicación predeterminada del archivo de credenciales

  • Defina la variable de AWS_CREDENTIAL_PROFILES_FILE entorno en la ubicación del archivo de AWS credenciales.

    • En Linux, macOS o Unix, utilice:

      export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
    • En Windows, use:

      set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file

Formato de archivo de Credentials

Siguiendo las instrucciones de la configuración básica de esta guía, el archivo de credenciales debe tener el siguiente formato básico.

[default] aws_access_key_id=<value from AWS access portal> aws_secret_access_key=<value from AWS access portal> aws_session_token=<value from AWS access portal> [profile2] aws_access_key_id=<value from AWS access portal> aws_secret_access_key=<value from AWS access portal> aws_session_token=<value from AWS access portal>

El nombre de perfil se especifica entre corchetes (por ejemplo, [default]), seguido de los campos configurables en ese perfil como pares de clave-valor. Puede tener varios perfiles en su archivo de credentials, que puede añadir o editar mediante aws configure --profile PROFILE_NAME para seleccionar el perfil que se va a configurar.

Puede especificar campos adicionales, como metadata_service_timeout y metadata_service_num_attempts. Estos no se pueden configurar con la CLI; debe editar el archivo manualmente si desea utilizarlos. Para obtener más información sobre el archivo de configuración y sus campos disponibles, consulte Configuración del archivo AWS Command Line Interface en la Guía del AWS Command Line Interface usuario.

Cargar credenciales

Después de definir las credenciales temporales, el SDK las carga mediante la cadena predeterminada de proveedores de credenciales.

Para ello, se crea una instancia de un Servicio de AWS cliente sin proporcionar las credenciales de forma explícita al generador, de la siguiente manera.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withRegion(Regions.US_WEST_2) .build();

Especificar un proveedor de credenciales o una cadena de proveedores

Puede especificar un proveedor de credenciales diferente de la cadena de proveedores de credenciales predeterminada mediante el creador del cliente.

Se proporciona una instancia de un proveedor de credenciales o una cadena de proveedores a un creador de clientes que toma una AWSCredentialsProviderinterfaz como entrada. El siguiente ejemplo muestra cómo utilizar credenciales de entorno específicamente.

AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new EnvironmentVariableCredentialsProvider()) .build();

Para ver la lista completa de proveedores AWS SDK for Java de credenciales y cadenas de proveedores suministrados, consulte Todas las clases de implementación conocidas en. AWSCredentialsProvider

nota

Puede utilizar esta técnica para suministrar proveedores de credenciales o cadenas de proveedores que cree utilizando su propio proveedor de credenciales que implemente la AWSCredentialsProvider interfaz o subclasificando la clase. AWSCredentialsProviderChain

Especificar explícitamente credenciales temporales

Si la cadena de credenciales predeterminada o un proveedor o cadena de proveedores específicos o personalizados no funcionan para su código, puede configurar credenciales que proporcione explícitamente. Si ha obtenido credenciales temporales utilizando este método AWS STS, utilice este método para especificar las credenciales de acceso. AWS

  1. Cree una instancia de la BasicSessionCredentialsclase y suministre la clave de AWS acceso, la clave AWS secreta y el token de AWS sesión que el SDK utilizará para la conexión.

  2. Crea una AWSStaticCredentialsProvidercon el AWSCredentials objeto.

  3. Configure el creador del cliente con AWSStaticCredentialsProvider y compile el cliente.

A continuación, se muestra un ejemplo.

BasicSessionCredentials awsCreds = new BasicSessionCredentials("access_key_id", "secret_key_id", "session_token"); AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) .build();

Más información