微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Amazon Simple Email Service, Credential 的范围应该是正确的服务:'email'

如何解决Amazon Simple Email Service, Credential 的范围应该是正确的服务:'email'

  1. 第一步,我在 Cognito 中创建了一个身份池
  2. 允许访问未经身份验证的身份
  3. 使用以下配置添加了未经身份验证的角色。
    {
     "Version": "2012-10-17","Statement": [
     {
      "Effect": "Allow","Action": [
        "cognito-sync:*","ses:SendEmail"
      ],"Resource": [
        "*"
       ]
      }
     ]
    }

然后在 Android Studio 中我为亚马逊添加了以下 SDK。

implementation 'com.amazonaws:aws-android-sdk-core:2.26.0'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.20.1'
implementation 'com.amazonaws:aws-android-sdk-ses:2.20.1'

在我像这样使用 cognito 初始化 Amazon SES 之后:

     val credentials = CognitoCachingCredentialsProvider(
            context,// CONTEXT
            "us-east-1:your_identify_pool",// IDENTITY POOL ID
            Regions.US_EAST_1 // REGION
        )
        
        val ses = AmazonSimpleEmailServiceClient(credentials)
        ses?.setRegion(Region.getRegion(Regions.US_EAST_1))
        ses?.endpoint = "email.us-east-1.amazonaws.com"

接下来使用 SES 客户端发送电子邮件

 val request = SendEmailRequest(email.from,destination,message)
 ses.sendEmail(request)

当我运行这个时,我得到以下异常

com.amazonaws.AmazonServiceException: Credential should be scoped to 
correct service: 'email'. (Service: AmazonSimpleEmailService; Status 
Code: 403; Error Code: SignatureDoesNotMatch; Request ID: 5bd493a7-0184- 
49e6-bc03-5b95386d5b20)

解决方法

我没有使用 cognito,而是使用凭据,但仍然无法正常工作,结果是 sdk 有问题,尝试使用不同的 sdk 版本并找到了正确的组合。

implementation 'com.amazonaws:aws-android-sdk-core:2.26.0'
implementation 'com.amazonaws:aws-android-sdk-cognito:2.20.1'
implementation 'com.amazonaws:aws-android-sdk-ses:2.24.0'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。