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-support
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:
-
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. -
Propiedades del sistema Java:
aws.accessKeyId
,aws.secretKey
(pero noaws.secretAccessKey
) yaws.sessionToken
. AWS SDK for Java Utiliza el SystemPropertiesCredentialsProviderpara cargar estas credenciales. -
Credenciales de Web Identity Token del entorno o contenedor.
-
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. -
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. -
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:
-
Para especificar credenciales en el entorno o en el archivo de perfiles de credenciales predeterminado, consulte Configurar credenciales temporales.
-
Para establecer propiedades del sistema Java, consulte el tutorial System Properties
en el sitio web oficial Java Tutorials. -
Para configurar y usar las credenciales del perfil de instancia con sus EC2 instancias, consulte Uso de IAM roles para conceder acceso a AWS los recursos en Amazon EC2.
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
-
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.
-
Crea una AWSStaticCredentialsProvidercon el
AWSCredentials
objeto. -
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();