AWS Java SDK凭据

时间:2016-06-09 16:17:50

标签: java amazon-web-services aws-sdk

我正在使用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());
    }
}

3 个答案:

答案 0 :(得分:3)

如果您使用DefaultAWSCredentialsProviderChain代替ClasspathPropertiesFileCredentialsProvider,它会自动检查AWS凭据的各种默认位置。 (Documentation

答案 1 :(得分:0)

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

答案 2 :(得分:0)

那是不是按照我计划的方式工作;无法将.aws路径作为类路径获取(尝试添加为外部类文件夹)。

在下面找到我项目中的实际类路径:

    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凭据丢弃到上面的一个dirs中的新AwsCredentials.properties文件中(我有一个;其余的是jar文件)。

将文件中的标记值更改为" accessKey"和" secretKey"从那里(aws_access_key,aws_secret_access_key)并且它起作用。

感谢大家的投入。