我正在使用AWS Cognito在我的应用中验证用户身份。在他们的文档中,AWS表示可以使用登录用户的凭据来授予对AWS资源的访问权。
我想使用SES允许用户在应用内提交联系我们表单。
我可以获取用户凭据。但是,当我将它们用于AmazonSimpleEmailServiceClient
并调用sendEmail()
时,我会收到以下异常:
com.amazonaws.AmazonServiceException:用户
arn:aws:sts::xxxxxx/CognitoIdentityCredentials' is not authorized to perform
ses:资源`arn上的SendEmail':aws:ses:xxxxxx'(服务:AmazonSimpleEmailService;状态代码:403;错误代码:AccessDenied;请求ID:xxxxxxxx-为xxxx-xxxx-XXXX-XXXXXXXXXXXX)
如何让Cognito用户池调用sendEmail()
,这样我就不需要在我的应用代码中存储任何机密了?
答案 0 :(得分:0)
要授予用户访问AWS资源的权限,除了Cognito Userpools之外,还需要设置Cognito Federated Identities。
在Cognito Federated Identities中,连接相关的Cognito Userpool并为经过身份验证的用户创建IAM角色策略,以包含AWS SES访问权限。