java - Amazon Simple Email Service,凭证的范围应为正确的服务 : 'email'

标签 java android amazon-web-services amazon-ses

  • 第一步,我在 Cognito
  • 中创建了一个身份池。
  • 启用对未经身份验证的身份的访问
  • 添加了具有以下配置的未经身份验证的角色。

  •     {
         "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'
    

    关于java - Amazon Simple Email Service,凭证的范围应为正确的服务 : 'email' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68375556/

    相关文章:

    android - permission.ACCESS_MOCK_LOCATION 红线.. or Manifest merge failed with multiple errors

    android - flutter - android - http.get 在 Release模式下永远不会返回

    amazon-web-services - 如何在 AWS API Gateway 中配置 Keycloak

    amazon-web-services - 用于设置 S3 存储桶默认加密的 CloudFormation 模板

    java - GlassFish 安装 - Java 位置错误

    java - RuntimeException : org. hibernate.exception.SQLGrammarException:无法执行查询

    Android Studio 失败并显示 : "File was deleted, but previous version not found in cache"

    amazon-web-services - 指定的域名标识符无效

    java - 父抽象类中方法的切入点

    java - 如何使用 owlapi 从加载的本体中获取所有类?