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