我正在使用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());
}
}
答案 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)并且它起作用。
感谢大家的投入。