问题描述
{
"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'