我使用以下 java 代码发送用户电子邮件,如果我使用 Regions.US_EAST_1 和相关的身份池 ID,它会按预期工作。
AmazonSimpleEmailServiceAsyncClient client = new AmazonSimpleEmailServiceAsyncClient(new CognitoCachingCredentialsProvider(context, identityPoolId, Regions.AP_SOUTH_1));
client.setRegion(Region.getRegion(Regions.AP_SOUTH_1));
client.sendRawEmailAsync(new SendRawEmailRequest(rawMessage), new AsyncHandler<SendRawEmailRequest, SendRawEmailResult>()
{
@Override
public void onError(Exception exception)
{
exception.printStackTrace();
}
@Override
public void onSuccess(SendRawEmailRequest request, SendRawEmailResult sendEmailResult)
{
}
});
但是在我将区域更改为AP_SOUTH_1后,我也更改了身份池 id,代码停止工作,电子邮件不会发送,我开始看到日志说
com.amazonaws.AmazonServiceException:请求中包含的安全令牌无效。(服务:AmazonSimpleEmailService;状态代码:403;错误代码:InvalidClientTokenId;请求 ID:1168c9c2-a940-4bef-be36-8568787bc130)
为什么 US_EAST_1 有效但 AP_SOUTH_1 无效?如何让区域 AP_SOUTH_1 工作?如何识别并解决此问题?
重要提示:我已在两个地区验证了发件人电子邮件地址。我已授予角色 ses:sendRawEmail 权限。