Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-support
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:
-
Umgebungsvariablen -
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
, und.AWS_SESSION_TOKEN
Der AWS SDK for Java verwendet die EnvironmentVariableCredentialsProviderKlasse, um diese Anmeldeinformationen zu laden. -
Java-Systemeigenschaften -
aws.accessKeyId
aws.secretKey
, undaws.sessionToken
. Der AWS SDK for Java verwendet die SystemPropertiesCredentialsProvider, um diese Anmeldeinformationen zu laden. -
Web-Identitätstoken-Anmeldeinformationen aus der Umgebung oder dem Container.
-
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. -
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. -
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:
-
Informationen zum Angeben von Anmeldeinformationen in der Umgebung oder in der Standarddatei mit den Anmeldeinformationen finden Sie unterVerwenden temporäre Anmeldeinformationen.
-
Informationen über das Festlegen von Java-Systemeigenschaften finden Sie in der System Properties
-Anleitung auf der offiziellen Java Tutorials-Website. -
Informationen zum Einrichten und Verwenden von Anmeldeinformationen für das Instanzprofil mit Ihren EC2 Instanzen finden Sie unter Verwenden von IAM Rollen, um Zugriff auf AWS Ressourcen zu gewähren auf Amazon EC2.
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
-
Credentials
Dateiformat
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.
-
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.
-
Erstellen Sie eine AWSStaticCredentialsProvidermit dem
AWSCredentials
Objekt. -
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();