このコードを使用してクラスパスを設定する
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)
AWS SDKが認証情報をロードできないため、この例外が発生しています。行うべきことは、[設定]に移動してから[AWS]に移動し、シークレットキーとアクセスキーを追加することです。プロジェクトが両方のキーを取得できるようにします。
別のアプローチを使用して接続を作成しました。
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 コンソールで作成できます。私はそれが役立つことを願っています...
DefaultAwsCredentialsProviderChain()を使用できます
次の順序で認証情報を検索するAWS認証情報プロバイダーチェーン:
AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider();
new AmazonEC2Client(credentialsProvider)
.aws/credentials
[default]
aws_access_key_id =
aws_secret_access_key =
ファイル形式にこれを試してください:
[default]
aws_access_key_id=<your access key>
aws_secret_access_key=<your secret access key>
このファイルをProfileCredentialsProvider()で〜/ .aws/credentialsとして保存しました。
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)
}
〜/ .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);
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>
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つの可能な場所すべてをチェックします)
とにかく、何時間も私の環境変数が見つからなかった理由を解明しようと試みた後...これは私のために働いた。