无法使用区域。AP_SOUTH_1 在 Android 上使用 AWS SES 发送原始电子邮件
Failed to use Regions.AP_SOUTH_1 sending raw email with AWS SES on Android
我使用以下 java 代码发送用户电子邮件,如果我使用区域 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)
{
}
});
但是我把region改成AP_SOUTH_1后,我也改了identity pool id,代码就失效了,发不了邮件,而且我开始看到日志说
com.amazonaws.AmazonServiceException: The security token included in
the request is invalid. (Service: AmazonSimpleEmailService; Status
Code: 403; Error Code: InvalidClientTokenId; Request ID:
1168c9c2-a940-4bef-be36-8568787bc130)
为什么 US_EAST_1 有效而 AP_SOUTH_1 无效?如何让区域 AP_SOUTH_1 工作?我如何识别并解决此问题?
重要说明:
我已经验证了两个地区的发件人电子邮件地址。
我已授予角色 ses:sendRawEmail 权限。
我想post我2天的调查发现对别人有帮助:
测试
- 适用于 Android 的 AWS SDK:
使用最新的adkimplementation 'com.amazonaws:aws-android-sdk-ses:2.16.12'
,生产环境只能使用us-east-1, us-west-2, eu-west-1 3个region成功发送邮件,可惜ap-south -1 不在列表中,即使 SES 控制台页面显示您可以使用更多区域,如果您通过代码执行此操作,您将始终得到 AmazonServiceException 说 The security token included in the request is invalid.
- 适用于 Java 的 AWS SDK:
使用最新的 adk implementation 'com.amazonaws:aws-java-sdk-ses:1.11.789'
,用户可以使用区域 ap-source-1 发送原始电子邮件。
我使用以下 java 代码发送用户电子邮件,如果我使用区域 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)
{
}
});
但是我把region改成AP_SOUTH_1后,我也改了identity pool id,代码就失效了,发不了邮件,而且我开始看到日志说
com.amazonaws.AmazonServiceException: The security token included in the request is invalid. (Service: AmazonSimpleEmailService; Status Code: 403; Error Code: InvalidClientTokenId; Request ID: 1168c9c2-a940-4bef-be36-8568787bc130)
为什么 US_EAST_1 有效而 AP_SOUTH_1 无效?如何让区域 AP_SOUTH_1 工作?我如何识别并解决此问题?
重要说明: 我已经验证了两个地区的发件人电子邮件地址。 我已授予角色 ses:sendRawEmail 权限。
我想post我2天的调查发现对别人有帮助:
测试
- 适用于 Android 的 AWS SDK:
使用最新的adkimplementation 'com.amazonaws:aws-android-sdk-ses:2.16.12'
,生产环境只能使用us-east-1, us-west-2, eu-west-1 3个region成功发送邮件,可惜ap-south -1 不在列表中,即使 SES 控制台页面显示您可以使用更多区域,如果您通过代码执行此操作,您将始终得到 AmazonServiceException 说 The security token included in the request is invalid.
- 适用于 Java 的 AWS SDK:
使用最新的 adk implementation 'com.amazonaws:aws-java-sdk-ses:1.11.789'
,用户可以使用区域 ap-source-1 发送原始电子邮件。