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

La AWS SDK for Java versión 1.x entró en modo de mantenimiento el 31 de julio de 2024 y estará disponible el 31 de end-of-supportdiciembre de 2025. Le recomendamos que migre al para AWS SDK for Java 2.xseguir recibiendo nuevas funciones, 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.

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 D. efaultAWSCredentials ProviderChain La cadena predeterminada de proveedores de credenciales busca las credenciales en este orden:

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

  2. Propiedades del sistema Java:aws.accessKeyId, aws.secretKey (pero noaws.secretAccessKey) yaws.sessionToken. AWS SDK for Java Utiliza 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 ellos AWS SDKs y entre ellos. 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 ECS contenedor de Amazon: se cargan desde Amazon ECS si la variable de entorno AWS_CONTAINER_CREDENTIALS_RELATIVE_URI está configurada. AWS SDK for Java Utiliza las ContainerCredentialsProviderpara cargar estas credenciales. Puede especificar la dirección IP para este valor.

  6. Credenciales de perfil de instancia: se utilizan en EC2 las instancias 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 EC2ContainerCredentialsProviderWrapperpara obtener más información.

Utilizar credenciales temporales

Para poder usar 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 utilizar la variable AWS de entorno Profile para cambiar el perfil cargado por elSDK.

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

export AWS_PROFILE="myProfile"

En Windows, usaría el siguiente comando.

set AWS_PROFILE="myProfile"

Si se establece la variable de AWS_PROFILE entorno, se cargan las credenciales de todas las herramientas compatibles AWS SDKs oficialmente (incluidas las AWS CLI y las 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. No se pueden configurar con elCLI; debe editar el archivo a mano si quiere 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

Tras configurar las credenciales temporales, las SDK carga mediante la cadena de proveedores de credenciales predeterminada.

Para ello, se crea una instancia de un Servicio de AWS cliente sin proporcionar las credenciales de forma explícita al generador, como se indica a continuación.

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