解决:SdkClientException: Unable to load AWS credentials from any provider in the chain

12 篇文章 0 订阅

在调用亚马逊发送短信接口的时候,发生了这个错误:
报错信息如下:

Exception in thread "main" com.amazonaws.services.sns.model.AmazonSNSException: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details. (Service: AmazonSNS; Status Code: 403; Error Code: SignatureDoesNotMatch; Request ID: 4d64be74-9b3d-51fd-805f-ede5acd4c416)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1639)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1304)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
    at com.amazonaws.services.sns.AmazonSNSClient.doInvoke(AmazonSNSClient.java:2270)
    at com.amazonaws.services.sns.AmazonSNSClient.invoke(AmazonSNSClient.java:2246)
    at com.amazonaws.services.sns.AmazonSNSClient.executePublish(AmazonSNSClient.java:1698)
    at com.amazonaws.services.sns.AmazonSNSClient.publish(AmazonSNSClient.java:1675)

有三种情况会导致如下错误:

1.项目中没有引入亚马逊的 accessKey 与 secretKey
2.引入了错误的 accessKey 与 secretKey
3.引入的 accessKey 与 secretKey 没有所想使用的权限

以我的代码为例:

发短信的核心代码为:

AmazonSNSClientBuilder.standard().withRegion(“us-east-1”).build().publish(xxx,xxx,xxx);

此时就是没有引入任何的 Key 而直接进行发送,所以是失败的:

解决方案:加一个.withCredentials(new ClasspathPropertiesFileCredentialsProvider()
代码如下:

AmazonSNSClientBuilder.standard().withCredentials(new ClasspathPropertiesFileCredentialsProvider()).withRegion("us-east-1").build().publish(xxx,xxx,xxx);

那么又报错了:

 Unable to load AWS credentials from the /AwsCredentials.properties file on the classpath

此时是因为在resources文件夹中没有 AwsCredentials.properties 的文件。
创建该文件,在里面键入内容:

accessKey=你的iam帐号
secretKey=你的iam密码

再次运行如果还报

Unable to load AWS credentials from any provider in the chain

那么可以查看下自己的帐号是否有权限发送短信(其他权限也是一样)。

通知领导或者自己去添加这部分的权限。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值