への一時的な認証情報の提供 AWS SDK for Java - AWS SDK for Java 1.x

end-of-support の今後の AWS SDK for Java (v1) を発表しましたAWS SDK for Java v2 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

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

への一時的な認証情報の提供 AWS SDK for Java

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

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

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

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

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

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

  1. 環境変数 - AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN。 AWS SDK for Java は EnvironmentVariableCredentialsProvider クラスを使用してこれらの認証情報をロードします。

  2. Java のシステムプロパティ - aws.accessKeyIdaws.secretKeyaws.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 を使用しますが、認証情報ファイルから取得されるプロファイルをカスタマイズする方法があります。

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

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

export AWS_PROFILE="myProfile"

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

set AWS_PROFILE="myProfile"

AWS_PROFILE 環境変数を設定すると、公式にサポートされているすべての AWS SDKsとツール ( 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 クラスをインスタンス化し、 AWS SDK が接続に使用するアクセスキー、 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();

詳細情報