web-dev-qa-db-ja.com

クラスパスの/AwsCredentials.propertiesファイルからAWS認証情報をロードできません

このコードを使用してクラスパスを設定する

AWSCredentialsProvider credentialsProvider = new ClasspathPropertiesFileCredentialsProvider();
ec2 = new AmazonEC2Client(credentialsProvider);

以下はAwsCredentials.propertiesファイルの形式です

# Fill in your AWS Access Key ID and Secret Access Key
# http://aws.Amazon.com/security-credentials
accessKey = keyHere
secretKey = secretKeyHere

以下は私が得ている例外です

Exception in thread "main" com.amazonaws.AmazonClientException: Unable to load AWS credentials from the /AwsCredentials.properties file on the classpath

    at com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider.getCredentials(ClasspathPropertiesFileCredentialsProvider.Java:81)
    at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.Java:8359)
18
Crew HaXor

AWS SDKが認証情報をロードできないため、この例外が発生しています。行うべきことは、[設定]に移動してから[AWS]に移動し、シークレットキーとアクセスキーを追加することです。プロジェクトが両方のキーを取得できるようにします。

5
farhangdon

別のアプローチを使用して接続を作成しました。

BasicAWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY);
AmazonDynamoDBClient client = new AmazonDynamoDBClient(credentials).withRegion(Regions.US_EAST_1);
DynamoDB dynamoDB = new DynamoDB(client);

アクセスキーとシークレットキーは、 Identity and Access Management コンソールで作成できます。私はそれが役立つことを願っています...

22
gbonesso

DefaultAwsCredentialsProviderChain()を使用できます

ドキュメントによると! http://docs.aws.Amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html

次の順序で認証情報を検索するAWS認証情報プロバイダーチェーン:

  1. 環境変数-AWS_ACCESS_KEY_IDおよびAWS_SECRET_ACCESS_KEY(.NETを除くすべてのAWS SDKおよびCLIで認識されるため推奨)、またはAWS_ACCESS_KEYおよびAWS_SECRET_KEY(Java SDKでのみ認識)
  2. Javaシステムプロパティ-aws.accessKeyIdおよびaws.secretKey
  3. すべてのAWS SDKとAWS CLIで共有されるデフォルトの場所(〜/ .aws/credentials)の認証情報プロファイルファイル
  4. Amazon EC2メタデータサービスを通じて配信されるインスタンスプロファイル認証情報
12
Raj Hassani
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();
new AmazonEC2Client(credentialsProvider)

.aws/credentials

[default]
aws_access_key_id =
aws_secret_access_key = 
8
Anders B

ファイル形式にこれを試してください:

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>

このファイルをProfileCredentialsProvider()で〜/ .aws/credentialsとして保存しました。

3
Simon

AmazonDynamoDBClient(credentials)は推奨されないため、これを使用します。

init {
        val cp= AWSStaticCredentialsProvider(BasicAWSCredentials(ACCESS_KEY, SECRET_KEY))
        val client = AmazonDynamoDBClientBuilder.standard().withCredentials(cp).withRegion(Regions.US_EAST_1).build()
        dynamoDB = DynamoDB(client)
    }
1
Sai Kiran

〜/ .aws/credentialsの資格情報ファイルを使用し、次のようにデフォルトのプロファイルを使用する場合:

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>

BasicAWSCredentialまたはAWSCredentialsProviderを使用する必要はありません。 SDKは、デフォルトコンストラクターでクライアントオブジェクトを初期化するだけで、デフォルトプロファイルから資格情報を取得できます。以下の例:

AmazonEC2Client ec2Client = new AmazonEC2Client();

さらに、プロキシ設定などを提供するために、ClientConfigurationでクライアントを初期化する必要がある場合があります。以下の例。

ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setProxyHost("proxyhost");
clientConfiguration.setProxyPort(proxyport);
AmazonEC2Client ec2Client = new AmazonEC2Client(clientConfiguration);
1
SheoSinha

Linuxサーバーでは、sesのデフォルト実装を使用すると、.aws/credentialファイル。以下の場所にある資格情報ファイルに次のコンテンツを入れることができます。 /home/local/<your service account>/.aws/credential

[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>
0
Nilesh

Apache/Tomcatを使用して環境変数を使用したい場合、Tomcat/bin/setenv.sh(catalina_optsが設定されている-セットアップでcatalina.shである可能性があります)でそれらを見つけることが唯一の方法であることがわかりました

export AWS_ACCESS_KEY_ID = *********;

export AWS_SECRET_ACCESS_KEY = **************;

Ubuntuを使用している場合は、ubuntu $ printenvとしてログインしてからルート$ printenvとしてログインしてください。環境変数は必ずしも同じではありません。

環境変数のみを使用する場合は、com.amazonaws.auth.EnvironmentVariableCredentialsProviderを使用できます。

の代わりに:

com.amazonaws.auth.DefaultAWSCredentialsProviderChain

(デフォルトでは、4つの可能な場所すべてをチェックします)

とにかく、何時間も私の環境変数が見つからなかった理由を解明しようと試みた後...これは私のために働いた。

0
user2677034