に一時的な認証情報を提供する AWS SDK for Java - AWS SDK for Java 1.x

AWS SDK for Java 1.x は 2024 年 7 月 31 日にメンテナンスモードに移行し、2025 年 12 月 31 end-of-support日に終了します。新機能、可用性の向上、セキュリティ更新プログラムを引き続き受け取るAWS SDK for Java 2.xには、 に移行することをお勧めします。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

に一時的な認証情報を提供する AWS SDK for Java

にリクエストを行うには Amazon Web Services、 が サービスを呼び出すときに AWS SDK for Java 使用する AWS 一時的な認証情報を指定する必要があります。これは以下の方法で対応できます。

  • デフォルトの認証情報プロバイダーチェーンを使用する (推奨)

  • 特定の認証情報プロバイダーまたはプロバイダーチェーンを使用する (または独自のものを作成する)。

  • 一時的な認証情報はご自分でコードに入力してください。

デフォルトの認証情報プロバイダチェーンの使用

引数を指定せずに新しいサービスクライアントを初期化すると、 は DefaultAWSCredentialsProviderChain クラスによって実装されたデフォルトの認証情報プロバイダーチェーンを使用して一時的な認証情報を検索 AWS SDK for Java しようとします。デフォルトの認証情報プロバイダーチェーンは、次の順序で認証情報を検索します。

  1. 環境変数 -AWS_ACCESS_KEY_IDAWS_SECRET_KEY、または AWS_SECRET_ACCESS_KEY、および AWS_SESSION_TOKEN。 AWS SDK for Java は EnvironmentVariableCredentialsProvider クラスを使用してこれらの認証情報をロードします。

  2. Java システムプロパティ -aws.accessKeyIdaws.secretKey (ただし、 ではありませんaws.secretAccessKey)、および aws.sessionToken。は、 AWS SDK for Java を使用してこれらの認証情報SystemPropertiesCredentialsProviderをロードします。

  3. 環境またはコンテナからのウェブアイデンティティトークンの認証情報

  4. デフォルトの認証情報プロファイルファイル - 通常、 に配置され ~/.aws/credentials (場所はプラットフォームによって異なります)、多くの AWS SDKsと によって共有されます AWS CLI。は、 AWS SDK for Java を使用してこれらの認証情報ProfileCredentialsProviderをロードします。

    認証情報ファイルは、 が提供する aws configure コマンドを使用して作成することも AWS CLI、テキストエディタでファイルを編集して作成することもできます。認証情報ファイル形式に関する情報については、「AWS Credentials File Format」を参照してください。

  5. Amazon ECSコンテナ認証情報 - 環境変数AWS_CONTAINER_CREDENTIALS_RELATIVE_URIが設定されている場合、Amazon からロードECSされます。 AWS SDK for Java は を使用してこれらの認証情報ContainerCredentialsProviderをロードします。この値の IP アドレスを指定できます。

  6. インスタンスプロファイル認証情報 - EC2インスタンスで使用され、 Amazon EC2 メタデータサービスを介して配信されます。 AWS SDK for Java は を使用してこれらの認証情報InstanceProfileCredentialsProviderをロードします。この値の IP アドレスを指定できます。

    注記

    インスタンスプロファイル認証情報は、AWS_CONTAINER_CREDENTIALS_RELATIVE_URI が設定されていない場合にのみ使用されます。詳細については、EC2ContainerCredentialsProviderWrapper「」を参照してください。

一時的な認証情報の設定

AWS 一時的な認証情報を使用するには、上記の場所の少なくとも 1 つに設定する必要があります。認証情報の設定の詳細については、以下のトピックを参照してください。

別の認証情報プロファイルの設定

はデフォルトでデフォルトのプロファイル AWS SDK for Java を使用しますが、認証情報ファイルから取得されるプロファイルをカスタマイズする方法があります。

Profile AWS 環境変数を使用して、 によってロードされたプロファイルを変更できますSDK。

例えば、Linux、macOS または Unix では、次のコマンドを実行してプロファイルを に変更しますmyProfile

export AWS_PROFILE="myProfile"

Windows の場合は次のコマンドを使用します。

set AWS_PROFILE="myProfile"

AWS_PROFILE 環境変数を設定すると、正式にサポートされている AWS SDKsすべての および Tools ( AWS CLI および を含む AWS Tools for Windows PowerShell) の認証情報のロードに影響します。Java アプリケーションのプロファイルだけを変更する場合は、代わりにシステムプロパティ aws.profile を使用できます。

注記

環境変数はシステムプロパティより優先されます。

別の認証情報ファイルの場所を設定する

は、デフォルトの認証情報ファイルの場所から AWS 一時的な認証情報を自動的に AWS SDK for Java ロードします。ただし、認証情報ファイルへのフルパスを使用して AWS_CREDENTIAL_PROFILES_FILE 環境変数を設定することで、場所を指定することもできます。

この機能を使用して、 が認証情報ファイル AWS SDK for Java を検索する場所を一時的に変更できます (例えば、この変数をコマンドラインで設定するなど)。または、ユーザー環境やシステム環境で環境変数を設定して、ユーザーやシステム全体に対して変数を変更できます。

認証情報ファイルのデフォルトの場所を上書きするには

  • AWS_CREDENTIAL_PROFILES_FILE 環境変数を AWS 認証情報ファイルの場所に設定します。

    • Linux、macOS、または Unix では、次を使用します。

      export AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file
    • Windows では、次を使用します。

      set AWS_CREDENTIAL_PROFILES_FILE=path/to/credentials_file

Credentials ファイル形式

このガイドの基本設定の指示に従うと、認証情報ファイルは次の基本形式になります。

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

プロファイル名では角括弧 (例: [default]) に続いて、キーと値のペアとして、そのプロファイルの設定可能なフィールドを指定します。credentials ファイルで複数のプロファイルを持つことができ、それらは aws configure --profile PROFILE_NAME を使用して設定するプロファイルを選択することで追加または編集できます。

metadata_service_timeoutmetadata_service_num_attempts などの追加のフィールドを指定できます。これらは では設定できませんCLI。ファイルを使用する場合は、手動で編集する必要があります。設定ファイルとその使用可能なフィールドの詳細については、 AWS Command Line Interface ユーザーガイドの「 の設定 AWS Command Line Interface」を参照してください。

認証情報の読み込み

一時的な認証情報を設定すると、 はデフォルトの認証情報プロバイダーチェーンを使用してそれらをSDKロードします。

これを行うには、次のように、ビルダーに認証情報を明示的に提供せずに AWS のサービス クライアントをインスタンス化します。

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

認証情報プロバイダーまたはプロバイダーチェーンの指定

クライアントビルダーを使用して、デフォルトの認証情報プロバイダーチェーンとは異なる認証情報プロバイダーを指定できます。

インターフェイスを入力AWSCredentialsProviderとして取るクライアントビルダーに認証情報プロバイダーまたはプロバイダーチェーンのインスタンスを提供します。以下の例は、環境認証情報を具体的に使用する方法を示しています。

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

AWS SDK for Javaが提供する認証情報プロバイダーとプロバイダーチェーンの完全なリストについては、「 のすべての既知の実装クラス」を参照してくださいAWSCredentialsProvider

注記

この手法を使用して、AWSCredentialsProviderインターフェイスを実装する独自の認証情報プロバイダーを使用するか、AWSCredentialsProviderChainクラスをサブクラス化することで、作成した認証情報プロバイダーまたはプロバイダーチェーンを指定できます。

一時的な認証情報を明示的に指定する

デフォルトの認証情報チェーンまたは特定あるいはカスタムのプロバイダーやプロバイダーチェーンがコードに対して機能しない場合は、明示的に指定する認証情報を設定できます。を使用して一時的な認証情報を取得した場合は AWS STS、この方法を使用して AWS アクセス用の認証情報を指定します。

  1. BasicSessionCredentials クラスをインスタンス化し、 が接続SDKに使用するアクセスキー、 AWS シークレットキー、および AWS セッショントークンを提供します AWS 。

  2. AWSCredentials オブジェクトAWSStaticCredentialsProviderを使用して を作成します。

  3. AWSStaticCredentialsProvider を使用してクライアントビルダーを設定し、クライアントをビルドします。

次に例を示します。

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

詳細情報