2017-05-10 18 views
2

バケット操作を実行するためのs3Clientオブジェクトを作成するJavaコードがあります。私は、/root/.aws/フォルダの下に、以下のデータを持つcredentialsファイルを持っているJavaのaws設定ファイルで定義されているrole_arnを使用

[default] 
aws_access_key_id = <the key> 
aws_secret_access_key = <the key> 

は最近、バケットポリシーが更新されてしまったと、次の詳細は、同じディレクトリの下configファイルに追加された

[default] 
role_arn = arn:aws:iam::<id>:role/<role_name> 
source_profile = default 
output = text 
region = region-name 

私のアプリケーションは、configファイルからrole_arnを消費することができず、バケット操作を行うことができません。

AWSは設定ファイルを直接読み込むためのクラスを提供していますが、コード内にとregionの値をハードコードしたくありません。

私は資格情報がファイル内に存在しませんが、configファイルの内容については何も何読み取るためProfilesConfigFileを参照してください。

+0

アプリケーションにs3Clientを初期化する方法を貼り付けることはできますか? 'InstanceProfileCredentialsProvider'インスタンスをs3Clientコンストラクタに渡すと、s3バケットにアクセスするためにIAMロールが使用され、ロールにはs3に必要な権限が与えられます – Ravi

+0

' s3Client = AmazonS3ClientBuilder.defaultClient(); 'を使って試しましたが、設定ファイルではなく、設定ファイルから 'role_arn'を選ぶことができません。 – AnkitG

答えて

1

AWS CLIは、role_arn/regionを使用してプロファイルを委任するための設定ファイル(〜/ .aws/config)を使用します。したがって、--profile defaultのcli操作は正常に動作します。feature request configファイルで指定されている役割の前提がAWS SDKと互換性がありません。

それは単に〜/ .aws /資格情報から認証情報を取得するためのDefaultAWSCredentialsProviderChainを拡張S3CredentialProviderChainを使用して以下のようにあなたがs3Clientを初期化します。

アプリケーションを作成するための回避策は、アプリケーションにconfig(〜/ .aws/config)ファイルをロードして、指定されたrole_arnを使用して想定要求を行うことです。 example

関連する問題