Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Anbieterkette für Standardanmeldedaten in der AWS SDK for Java 2.x
Die standardmäßige Anbieterkette für AWS Anmeldeinformationen in der sucht AWS SDK for Java 2.x automatisch an einer vordefinierten Reihenfolge von Speicherorten nach Anmeldeinformationen, sodass sich Anwendungen authentifizieren können, AWS-Services ohne dass die Quellen für Anmeldeinformationen explizit angegeben werden müssen.
Die standardmäßige Anbieterkette für Anmeldeinformationen wird von der DefaultCredentialsProvider
Um die standardmäßige Anbieterkette für Anmeldeinformationen zur Bereitstellung temporärer Anmeldeinformationen zu verwenden, erstellen Sie einen Service Client Builder, geben aber keinen Anbieter für Anmeldeinformationen an. Der folgende Codeausschnitt erstellt einenDynamoDbClient
, der die standardmäßige Anbieterkette für Anmeldeinformationen verwendet, um Konfigurationseinstellungen zu finden und abzurufen.
// Any external Region configuration is overridden. // The SDK uses the default credentials provider chain because no specific credentials provider is specified. Region region = Region.US_WEST_2; DynamoDbClient ddb = DynamoDbClient.builder() .region(region) .build();
Reihenfolge beim Abrufen der Anmeldeinformationseinstellungen
Die Anbieterkette für Standardanmeldedaten des SDK for Java 2.x sucht anhand einer vordefinierten Reihenfolge nach Konfigurationen in Ihrer Umgebung.
-
Java-Systemeigenschaften
-
Das SDK verwendet die SystemPropertyCredentialsProvider
Klasse, um temporäre Anmeldeinformationen aus den aws.accessKeyId
aws.sessionToken
Java-Systemeigenschaften zu laden.aws.secretAccessKey
Anmerkung
Informationen zum Einstellen von Java-Systemeigenschaften finden Sie im Tutorial Systemeigenschaften
auf der offiziellen Website der Java-Tutorials.
-
-
Umgebungsvariablen
-
Das SDK verwendet die EnvironmentVariableCredentialsProvider
Klasse, um temporäre Anmeldeinformationen aus den AWS_SESSION_TOKEN
UmgebungsvariablenAWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
, und zu laden.
-
-
Web-Identitätstoken und IAM-Rollen-ARN
-
Das SDK verwendet die WebIdentityTokenFileCredentialsProvider
Klasse, um Anmeldeinformationen zu laden, indem es mithilfe eines Web-Identitätstoken eine Rolle annimmt. -
Der Anbieter für Anmeldeinformationen sucht nach den folgenden Umgebungsvariablen oder JVM-Systemeigenschaften:
-
AWS_WEB_IDENTITY_TOKEN_FILE or
aws.webIdentityTokenFile
-
AWS_ROLE_ARN
oderaws.roleArn
-
AWS_ROLE_SESSION_NAME
oderaws.roleSessionName
(optional)
-
-
Nachdem das SDK die Werte erfasst hat, ruft es AWS Security Token Service (STS) auf und verwendet die temporären Anmeldeinformationen, die es zurückgibt, um Anfragen zu signieren.
-
Laufzeitumgebungen wie Amazon Elastic Kubernetes Service (EKS) stellen Web-Identitätstoken automatisch zur Verfügung AWS SDKs, sodass Anwendungen temporäre AWS Anmeldeinformationen abrufen können.
-
-
Die geteilten
credentials
Dateien und Dateienconfig
-
Das SDK verwendet die ProfileCredentialsProvider
, um IAM Identity Center Single Sign-On-Einstellungen oder temporäre Anmeldeinformationen aus dem [default]
Profil in den gemeinsam genutztencredentials
Dateien zu laden.config
Das AWS SDKs Referenzhandbuch zu Tools enthält detaillierte Informationen darüber, wie das SDK for Java mit dem IAM Identity Center Single Sign-On-Token zusammenarbeitet, um temporäre Anmeldeinformationen abzurufen, die das SDK zum Aufrufen verwendet. AWS-Services
Anmerkung
Die
config
Dateiencredentials
und werden von verschiedenen AWS SDKs Tools gemeinsam genutzt. Weitere Informationen finden Sie unter The. aws/credentials and .aws/configDateien im Referenzhandbuch AWS SDKs und im Tools-Referenzhandbuch. -
Da ein Profil in den geteilten
config
Dateiencredentials
und Dateien viele verschiedene Einstellungen enthalten kann, werden die Benutzer an eine Reihe anderer AnbieterProfileCredentialsProvider
delegiert, um unter dem[default]
Profil nach Einstellungen zu suchen:-
Grundlegende Anmeldeinformationen (Klasse
StaticCredentialsProvider
): Wenn das Profilaws_access_key_id
und enthältaws_secret_access_key
. -
Sitzungsanmeldedaten (Klasse
StaticSessionCredentialsProvider
): Wenn das Profilaws_access_key_id
aws_secret_access_key
, und enthältaws_session_token
. -
Prozessanmeldedaten (Klasse
ProcessCredentialsProvider
): Wenn das Profil enthältcredential_process
. -
SSO-Anmeldeinformationen (Klasse
SsoCredentialsProvider
): Wenn das Profil SSO-bezogene Eigenschaften wiesso_role_name
, enthält.sso_account_id
-
Anmeldeinformationen für Web-Identitätstoken (Klasse
WebIdentityTokenCredentialsProvider
): Wenn das Profil und enthältrole_arn
.web_identity_token_file
-
Rollenbasierte Anmeldeinformationen mit Quellprofil (Klasse
StsAssumeRoleCredentialsProvider
): Wenn das Profil und enthältrole_arn
.source_profile
-
Rollenbasierte Anmeldeinformationen mit Anmeldeinformationsquelle (Klasse
StsAssumeRoleWithSourceCredentialsProvider
): Wenn das Profil und enthält.role_arn
credential_source
-
Wann
credential_source = Environment
: Es verwendet eine Kette von undSystemPropertyCredentialsProvider
EnvironmentVariableCredentialsProvider
-
Wann
credential_source = Ec2InstanceMetadata
: Es benutztInstanceProfileCredentialsProvider
-
Wann
credential_source = EcsContainer
: Es verwendetContainerCredentialsProvider
-
-
-
-
Amazon ECS Anmeldeinformationen für Container
-
Das SDK verwendet die ContainerCredentialsProvider
Klasse, um temporäre Anmeldeinformationen mithilfe der folgenden Umgebungsvariablen zu laden: -
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
oderAWS_CONTAINER_CREDENTIALS_FULL_URI
-
AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE
oderAWS_CONTAINER_AUTHORIZATION_TOKEN
-
Der ECS-Container-Agent legt automatisch die
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
Umgebungsvariable fest, die auf den Endpunkt der ECS-Anmeldeinformationen verweist. Die anderen Umgebungsvariablen werden normalerweise in bestimmten Szenarien festgelegt, in denen der standardmäßige Endpunkt für ECS-Anmeldeinformationen nicht verwendet wird. -
-
Amazon EC2 Von der IAM-Rolle bereitgestellte Anmeldeinformationen der Instanz
-
Das SDK verwendet die InstanceProfileCredentialsProvider
Klasse, um temporäre Anmeldeinformationen aus dem Metadatendienst zu laden. Amazon EC2
-
-
Wenn das SDK die erforderlichen Konfigurationseinstellungen anhand der oben aufgeführten Schritte nicht finden kann, löst es eine Ausnahme mit einer Ausgabe ähnlich der folgenden aus:
software.amazon.awssdk.core.exception.SdkClientException: Unable to load credentials from any of the providers in the chain AwsCredentialsProviderChain(credentialsProviders=[SystemPropertyCredentialsProvider(), EnvironmentVariableCredentialsProvider(), WebIdentityTokenCredentialsProvider(), ProfileCredentialsProvider(), ContainerCredentialsProvider(), InstanceProfileCredentialsProvider()])
Verwenden Sie den DefaultCredentialsProvider
Code
Sie können die standardmäßige Anbieterkette für Anmeldeinformationen explizit in Ihrem Code verwenden. Dies entspricht funktionell der Tatsache, dass Sie überhaupt keinen Anbieter für Anmeldeinformationen angeben, da das SDK DefaultCredentialsProvider
standardmäßig verwendet. Wenn Sie ihn jedoch explizit verwenden, kann Ihr Code lesbarer und selbstdokumentierender werden. Es zeigt deutlich, dass Sie beabsichtigen, die standardmäßige Anmeldeinformationskette zu verwenden.
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; public class ExplicitDefaultCredentialsExample { public static void main(String[] args) { // Explicitly create the DefaultCredentialsProvider. DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider .builder().build(); // Use it with any service client. S3Client s3Client = S3Client.builder() .region(Region.US_WEST_2) .credentialsProvider(defaultCredentialsProvider) .build(); // Now you can use the client with the default credentials chain. s3Client.listBuckets(); } }
Wenn Sie den Standardanmeldeanmeldeanbieter erstellen, können Sie weitere Konfigurationen bereitstellen:
DefaultCredentialsProvider customizedProvider = DefaultCredentialsProvider.builder() .profileName("custom-profile") // Use a specific profile if the chain gets to the `ProfileCredentialsProvider` stage. .asyncCredentialUpdateEnabled(true) // Enable async credential updates. .build();
Dieser Ansatz gibt Ihnen mehr Kontrolle und bietet gleichzeitig den Komfort der standardmäßigen Anmeldeinformationskette.