AWS Java SDK 凭据

AWS Java SDK credentials

我正在使用 AWS Java SDK 并尝试 运行 一些测试;得到:

无法从类路径上的 /AwsCredentials.properties 文件加载 AWS 凭证

根据 AWS 规范,凭证文件 @ ~/.aws/ 是正确的; 777 确保没有访问问题。

我没有使用任何 IDE 插件;根据 AWS 文档,拥有一个凭证文件 @ ~/.aws/ 就足够了。有人只安装了 SDK 就可以使用它吗?如果我将文件路径硬编码到 ClasspathPropertiesFileCredentialsProvider() 请求中,它会用路径而不是 AwsCredentials.properties 字符串吐出错误,该字符串在任何地方都不存在(是的,尝试在 ~/. aws/ 还有)。

非常感谢您的任何见解,下面的代码直接来自亚马逊:

import com.amazonaws.auth.ClasspathPropertiesFileCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.sns.AmazonSNSClient;
import com.amazonaws.services.sns.model.PublishRequest;
import com.amazonaws.services.sns.model.PublishResult;

public class SNS {

    public static void main(String[] args) {
        AmazonSNSClient snsClient = new AmazonSNSClient(new ClasspathPropertiesFileCredentialsProvider());
        snsClient.setRegion(Region.getRegion(Regions.US_EAST_1));

        String msg = "this is a test";
        PublishRequest publishRequest = new PublishRequest("my arn", msg);
        PublishResult publishResult = snsClient.publish(publishRequest);
        System.out.println("MessageId - " + publishResult.getMessageId());
    }
}

您是否已验证您的 $HOME 环境变量是为您所在的进程设置的 运行? AWS 开发工具包依赖 $HOME 来确定您的 .aws 文件夹的正确位置。

好吧,这并没有按照我的计划进行;无法将 .aws 路径作为 class 路径(尝试添加为外部 class 文件夹)。

运行 下面找到我项目中的实际 class 路径:

    public static void main (String args[]) {

        ClassLoader cl = ClassLoader.getSystemClassLoader();

        URL[] urls = ((URLClassLoader)cl).getURLs();

        for(URL url: urls){
            System.out.println(url.getFile());
        }

   }

然后将我的 AWS 凭据放入上面其中一个目录中的新 AwsCredentials.properties 文件中(我有一个;其余的是 jar 文件)。

将文件中的标签值从原来的(aws_access_key、aws_secret_access_key)更改为 "accessKey" 和 "secretKey",并且有效。

感谢大家的意见。

如果你使用DefaultAWSCredentialsProviderChain instead of ClasspathPropertiesFileCredentialsProvider, it will automatically check various default locations for AWS credentials. (Documentation)