无法从类路径上的/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) 

您收到此exception是因为您的AWS开发工具包无法加载您的凭据。 您应该做的是转到首选项然后转到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()

根据文档! 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开发工具包和CLI识别),或AWS_ACCESS_KEY和AWS_SECRET_KEY(仅由Java SDK识别)
  2. Java系统属性 – aws.accessKeyId和aws.secretKey
  3. 凭据配置文件位于所有AWS开发工具包和AWS CLI共享的默认位置(〜/ .aws / credentials)
  4. 通过Amazon EC2元数据服务提供的实例配置文件凭据
 AWSCredentialsProvider credentialsProvider = new ProfileCredentialsProvider(); new AmazonEC2Client(credentialsProvider) 

.aws /凭证

 [default] aws_access_key_id = aws_secret_access_key = 

试试这个文件格式:

 [default] aws_access_key_id= aws_secret_access_key= 

我使用ProfileCredentialsProvider()将此文件保存为〜/ .aws / credentials。

如果您使用〜/ .aws / credentials中的凭证文件并使用默认配置文件,如下所示:

 [default] aws_access_key_id= aws_secret_access_key= 

您不需要使用BasicAWSCredentialAWSCredentialsProvider 。 只需使用默认构造函数初始化客户端对象,SDK就可以从默认配置文件中获取凭据。 示例如下:

 AmazonEC2Client ec2Client = new AmazonEC2Client(); 

此外,有时您需要使用ClientConfiguration初始化客户端以提供代理设置等。示例如下。

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

由于不推荐使用AmazonDynamoDBClient(凭据),因此我使用此方法。

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

在Linux服务器中,使用ses默认实现将期望.aws/credential文件中的文件。 您可以将以下内容放在以下位置的凭证文件中,它将起作用。 /home/local//.aws/credential

 [default] aws_access_key_id= aws_secret_access_key=