Especificación de un determinado proveedor de credenciales en AWS SDK for Java 2.x - AWS SDK for Java 2.x

Especificación de un determinado proveedor de credenciales en AWS SDK for Java 2.x

Si bien la cadena de proveedores de credenciales predeterminados es práctica en muchos escenarios, especificar los proveedores de credenciales de forma explícita le permite tener un mayor control sobre el comportamiento, el rendimiento y la seguridad de la autenticación.

Entre los motivos para especificar un proveedor de credenciales se incluyen los siguientes:

  • La cadena de proveedores predeterminados comprueba varias fuentes de forma secuencial, lo que puede aumentar la latencia:

    // The default provider chain checks might check multiple sources until it finds // sufficient configuration. S3Client s3Client = S3Client.builder().build(); // You can specify exactly where to look. S3Client optimizedClient = S3Client.builder() .credentialsProvider(InstanceProfileCredentialsProvider.create()) .build();
  • Debe utilizar ubicaciones no estándar para acceder a la configuración de credenciales:

    // Use configuration from a custom file location. S3Client s3Client = S3Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileFile(ProfileFile.builder() .content(Paths.get("/custom/path/to/configuration/file")) .type(ProfileFile.Type.CONFIGURATION) // Expects all non-default profiles to be prefixed with "profile". .build()) .profileName("custom") .build()) .build();
  • Utilice credenciales diferentes para diferentes clientes de servicio. Por ejemplo, si la aplicación necesita acceder a varias cuentas de AWS o usar permisos diferentes para distintos servicios:

    // S3 client using one set of credentials. S3Client s3Client = S3Client.builder() .credentialsProvider(ProfileCredentialsProvider.create("s3-readonly")) .build(); // DynamoDB client using different credentials. DynamoDbClient dynamoDbClient = DynamoDbClient.builder() .credentialsProvider(ProfileCredentialsProvider.create("dynamodb-admin")) .build();
  • Controle el comportamiento de actualización de credenciales:

    // Create a provider with custom refresh behavior. StsAssumeRoleCredentialsProvider customRefreshProvider = StsAssumeRoleCredentialsProvider.builder() .refreshRequest(AssumeRoleRequest.builder() .roleArn("arn:aws:iam::123456789012:role/my-role") .roleSessionName("custom-session") .build()) .stsClient(StsClient.create()) .asyncCredentialUpdateEnabled(true) // Use a background thread to prefetch credentials. .build(); S3Client s3Client = S3Client.builder() .credentialsProvider(customRefreshProvider) .build();