本文介紹了使用AWS SSO時,AWS Java SDK找不到配置文件的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
使用AWS SSO進行登錄時,我無法訪問AWS。
我從我的計算機使用以下方式登錄:
aws sso login --profile staging
配置文件配置如下:
[profile staging]
sso_start_url = https://som-nice-working-url
sso_region = us-east-1
sso_account_id = 1234
sso_role_name = the-role-name
region = eu-west-1
output = yaml
登錄后,我可以通過AWS CLI訪問AWS。
然后我設置變量:AWS_PROFILE=staging
但是在java上我得到了以下異常:
com.amazonaws.SdkClientException: Unable to load AWS credentials from any provider in the chain: [EnvironmentVariableCredentialsProvider: Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY)), SystemPropertiesCredentialsProvider: Unable to load AWS credentials from Java system properties (aws.accessKeyId and aws.secretKey), WebIdentityTokenCredentialsProvider: You must specify a value for roleArn and roleSessionName, com.amazonaws.auth.profile.ProfileCredentialsProvider@369a95a5: No AWS profile named 'staging', com.amazonaws.auth.EC2ContainerCredentialsProviderWrapper@6d6f6ca9: Failed to connect to service endpoint: ]
我已嘗試將ProfileCredentialsProvider與";Staging";一起使用,但結果相同。
CredentialsProvider
我應該使用什么?
我的代碼使用的是DefaultProviderChain:
AWSGlueClient.builder()
.withRegion("eu-west-1")
.build()
謝謝您。
推薦答案
對于JAVA應用程序,您需要SSO Dependency。
截至撰寫時,最新的IS版本2.16.76
// Gradle example
dependencies {
implementation(platform("software.amazon.awssdk:bom:2.16.70"))
implementation("software.amazon.awssdk:sso:2.16.76")
}
您還需要在~/.aws/configuration
或~/.aws/credentials
中設置default
配置文件
更多信息如下:
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup.html#setup-credentials
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/setup-additional.html#setup-additional-credentials
但是,您還應該能夠將AWS_PROFILE
環境變量設置為您的配置文件,并且它也應該在沒有SSO依賴的情況下神奇地工作。
在您的示例中,具體如下:
AWS_PROFILE=staging
這篇關于使用AWS SSO時,AWS Java SDK找不到配置文件的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,