Geben Sie temporäre Anmeldeinformationen für AWS SDK for Java - AWS SDK for Java 1.x

Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-supportam 31. Dezember 2025 verfügbar sein. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

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.

Geben Sie temporäre Anmeldeinformationen für AWS SDK for Java

Um Anfragen an zu stellen Amazon Web Services, müssen Sie AWS temporäre Anmeldeinformationen angeben, AWS SDK for Java die beim Aufrufen der Dienste verwendet werden können. Dafür können Sie eine der folgenden Möglichkeiten auswählen:

  • Verwenden Sie die standardmäßige Anbieterkette von Anmeldeinformationen (empfohlen).

  • Nutzen Sie einen bestimmten Anbieter bzw. eine Anbieterkette von Anmeldeinformationen (oder erstellen Sie Ihren eigenen).

  • Geben Sie die temporären Anmeldeinformationen selbst im Code ein.

Verwenden der standardmäßigen Anbieterkette von Anmeldeinformationen

Wenn Sie einen neuen Dienstclient ohne Angabe von Argumenten initialisieren, AWS SDK for Java versucht der Client, temporäre Anmeldeinformationen mithilfe der von der efaultAWSCredentialsProviderChainD-Klasse implementierten Standardanbieterkette für Anmeldeinformationen zu finden. Die standardmäßige Anbieterkette von Anmeldeinformationen sucht in dieser Reihenfolge nach Anmeldeinformationen:

  1. Umgebungsvariablen - AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY, und. AWS_SESSION_TOKEN Der AWS SDK for Java verwendet die EnvironmentVariableCredentialsProviderKlasse, um diese Anmeldeinformationen zu laden.

  2. Java-Systemeigenschaften - aws.accessKeyIdaws.secretKey, undaws.sessionToken. Der AWS SDK for Java verwendet die SystemPropertiesCredentialsProvider, um diese Anmeldeinformationen zu laden.

  3. Web-Identitätstoken-Anmeldeinformationen aus der Umgebung oder dem Container.

  4. Die Standarddatei mit Profilen für Anmeldeinformationen. Sie befindet sich normalerweise unter ~/.aws/credentials (der Speicherort kann je nach Plattform variieren) und wird von vielen Benutzern gemeinsam genutzt AWS SDKs und von den AWS CLI. Die AWS SDK for Java verwendet die ProfileCredentialsProvider, um diese Anmeldeinformationen zu laden.

    Sie können eine Datei mit den Anmeldeinformationen erstellen, indem Sie den von der bereitgestellten aws configure Befehl verwenden AWS CLI, oder Sie können sie erstellen, indem Sie die Datei mit einem Texteditor bearbeiten. Informationen zum Dateiformat für Anmeldeinformationen finden Sie unter Dateiformat AWS für Anmeldeinformationen.

  5. ECSAmazon-Container-Anmeldeinformationen — werden vom Amazon geladenECS, wenn die Umgebungsvariable gesetzt AWS_CONTAINER_CREDENTIALS_RELATIVE_URI ist. Der AWS SDK for Java verwendet die ContainerCredentialsProvider, um diese Anmeldeinformationen zu laden. Sie können die IP-Adresse für diesen Wert angeben.

  6. Anmeldeinformationen für das Instanzprofil — werden für EC2 Instanzen verwendet und über den Amazon EC2 Metadatendienst bereitgestellt. Der AWS SDK for Java verwendet die InstanceProfileCredentialsProvider, um diese Anmeldeinformationen zu laden. Sie können die IP-Adresse für diesen Wert angeben.

    Anmerkung

    Instance-Profil-Anmeldeinformationen werden nur verwendet, wenn AWS_CONTAINER_CREDENTIALS_RELATIVE_URI nicht gesetzt ist. EC2ContainerCredentialsProviderWrapperWeitere Informationen finden Sie unter.

Legen Sie temporäre Anmeldeinformationen fest

Um AWS temporäre Anmeldeinformationen verwenden zu können, müssen sie an mindestens einem der oben genannten Speicherorte eingerichtet sein. Weitere Informationen über das Festlegen von Anmeldeinformationen finden Sie in den folgenden Themen:

Richten Sie ein alternatives Anmeldeinformationsprofil ein

Das AWS SDK for Java verwendet standardmäßig das Standardprofil, es gibt jedoch Möglichkeiten, anzupassen, welches Profil aus der Anmeldeinformationsdatei stammt.

Sie können die Umgebungsvariable AWS Profile verwenden, um das von der geladene Profil zu ändernSDK.

Unter Linux, macOS oder Unix würden Sie beispielsweise den folgenden Befehl ausführen, um das Profil zu ändern myProfile.

export AWS_PROFILE="myProfile"

Verwenden Sie unter Windows folgende Variante:

set AWS_PROFILE="myProfile"

Das Setzen der AWS_PROFILE Umgebungsvariablen wirkt sich auf das Laden der Anmeldeinformationen für alle offiziell unterstützten AWS SDKs Tools aus (einschließlich der AWS CLI und der AWS Tools for Windows PowerShell). Um nur das Profil für eine Java-Anwendung zu ändern, können Sie aws.profile stattdessen die Systemeigenschaft verwenden.

Anmerkung

Die Umgebungsvariable hat Vorrang vor der Systemeigenschaft.

Legen Sie einen alternativen Speicherort für die Anmeldeinformationsdatei fest

Das AWS SDK for Java lädt AWS temporäre Anmeldeinformationen automatisch aus dem Standardspeicherort der Anmeldeinformationsdatei. Sie können jedoch auch den Speicherort angeben, indem Sie die Umgebungsvariable AWS_CREDENTIAL_PROFILES_FILE auf den vollständigen Pfad zur Anmeldeinformationsdatei setzen.

Sie können diese Funktion verwenden, um vorübergehend den Speicherort zu ändern, an dem AWS SDK for Java nach Ihrer Anmeldeinformationsdatei gesucht wird (z. B. indem Sie diese Variable in der Befehlszeile festlegen). Alternativ können Sie die Umgebungsvariable in Ihrer Benutzer- oder Systemumgebung setzen, um sie für den Benutzer oder systemweit zu ändern.

So überschreiben Sie den Standardspeicherort der Anmeldeinformationsdatei

  • Setzen Sie die AWS_CREDENTIAL_PROFILES_FILE Umgebungsvariable auf den Speicherort Ihrer AWS Anmeldeinformationsdatei.

    • Verwenden Sie unter Linux, macOS oder Unix:

      export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
    • Verwenden Sie unter Windows:

      set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file

CredentialsDateiformat

Wenn Sie den Anweisungen in der Grundkonfiguration dieses Handbuchs folgen, sollte Ihre Anmeldeinformationsdatei das folgende grundlegende Format haben.

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

Der Profilname wird in eckigen Klammern angegeben (zum Beispiel [default]), gefolgt von den konfigurierbaren Feldern in diesem Profil als Schlüssel-Wert-Paare. Ihre credentials Datei kann mehrere Profile enthalten, die hinzugefügt oder bearbeitet werden können, indem Sie das aws configure --profile PROFILE_NAME zu konfigurierende Profil auswählen.

Sie können zusätzliche Felder angeben, z. metadata_service_timeout B. undmetadata_service_num_attempts. Diese können nicht mit dem konfiguriert werdenCLI. Sie müssen die Datei von Hand bearbeiten, wenn Sie sie verwenden möchten. Weitere Informationen zur Konfigurationsdatei und ihren verfügbaren Feldern finden Sie unter Konfiguration von AWS Command Line Interface im AWS Command Line Interface Benutzerhandbuch.

Anmeldeinformationen laden

Nachdem Sie temporäre Anmeldeinformationen festgelegt haben, werden sie mithilfe der standardmäßigen Anbieterkette für Anmeldeinformationen SDK geladen.

Dazu instanziieren Sie wie folgt einen AWS -Service Client, ohne dem Builder explizit Anmeldeinformationen zur Verfügung zu stellen.

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

Geben Sie einen Anbieter oder eine Anbieterkette für Anmeldeinformationen an

Sie können einen Anmeldeinformationsanbieter angeben, der sich von der standardmäßigen Anbieterkette von Anmeldeinformationen unterscheidet. Verwenden Sie dazu den Client-Generator.

Sie stellen einem Client Builder, der eine AWSCredentialsProviderSchnittstelle als Eingabe verwendet, eine Instanz eines Anbieters oder einer Anbieterkette für Anmeldeinformationen zur Verfügung. Das folgende Beispiel zeigt konkret, wie Sie Anmeldeinformationen der Umgebung nutzen.

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

Eine vollständige Liste der von AWS SDK for Java-bereitgestellten Anmeldeinformationsanbietern und Anbieterketten finden Sie unter Alle bekannten Implementierungsklassen in. AWSCredentialsProvider

Anmerkung

Sie können diese Technik verwenden, um Anmeldeinformationsanbieter oder Anbieterketten bereitzustellen, die Sie erstellen, indem Sie Ihren eigenen Anmeldeinformationsanbieter verwenden, der die AWSCredentialsProvider Schnittstelle implementiert, oder indem Sie der Klasse Unterklassen zuordnen. AWSCredentialsProviderChain

Geben Sie explizit temporäre Anmeldeinformationen an

Wenn die Standard-Anmeldeinformationen oder ein bestimmter oder benutzerdefinierter Anbieter oder eine Anbieterkette für Ihren Code nicht funktionieren, können Sie explizit angegebene Anmeldeinformationen festlegen. Wenn Sie temporäre Anmeldeinformationen mit abgerufen haben AWS STS, verwenden Sie diese Methode, um die Anmeldeinformationen für den AWS Zugriff anzugeben.

  1. Instanziieren Sie die BasicSessionCredentialsKlasse und stellen Sie ihr den AWS Zugriffsschlüssel, den AWS geheimen Schlüssel und das AWS Sitzungstoken zur Verfügung, die für die Verbindung verwendet SDK werden.

  2. Erstellen Sie eine AWSStaticCredentialsProvidermit dem AWSCredentials Objekt.

  3. Konfigurieren Sie den Client-Generator mit dem AWSStaticCredentialsProvider und erstellen Sie den Client.

Im Folgenden wird ein Beispiel gezeigt.

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

Weitere Infos