{
"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/