从浏览器向SQS发送消息



我正在构建一个以Django REST为后端的SPA。现在我使用的是标准的Django身份验证系统和User模型。

我希望运行在SPA上的JS能够将消息插入AWS SQS(即sendMessage)。

AWS在浏览器中有关于从JS调用sendMessage的文档。

他们还提供了关于如何对用户进行身份验证的文档。我现在的想法是使用亚马逊干邑。来自常见问题解答:

Q: 如果我注册并验证自己的用户,该怎么办?

Amazon Cognito可以与您现有的身份系统集成。具有一个简单的API调用,您可以为最终用户检索Cognito ID基于您自己的用户唯一标识符。一旦你检索Cognito提供的Cognito ID和OpenID令牌,您可以使用Cognito客户端SDK访问AWS资源并进行同步用户数据。

我正确吗,为了让它发挥作用,我需要:

  1. 为我的系统中的每个用户创建一个IAM用户。还是我只需要一个IAM角色
  2. 当用户登录我的网站(Django后台)时,我会让我的后台进行"一个简单的API调用[以]检索Cognito ID"
  3. 当用户加载SPA时发送该Cognito ID
  4. 使用浏览器中运行的JS中的Cognito ID将sendMessage调用到SQS队列

我是不是遗漏了什么?有没有办法删除Django用户后端,只删除用户IAM用户,这样我就可以避免保持两个用户列表的同步?我找到了这个项目,但它似乎没有得到维护。

更新:似乎有一种替代方法可以做到这一点,我根本不使用Cognito,而是公开一个可以对请求进行签名的端点,即"查询请求身份验证"。这个Heroku页面介绍了一些关于建立签名服务的内容。

这实际上是一种替代选择吗?如果是,这些方法的利弊是什么?

Amazon Cognito不需要注册IAM用户,只需要注册两个IAM角色。对你需要做的事情稍作修改:

  1. 创建一个AmazonCognito身份池,与您的开发人员提供商一起配置
  2. 更新与您的池关联的IAM角色,以允许访问您想要的服务(例如SQS)
  3. 从Django后端,调用GetOpenIdTokenForDeveloperIdentity获取该用户的OpenIdConnect令牌和身份Id,并将其返回到JS应用程序
  4. 在JS SDK中配置您的CognitoCredentials。在登录映射中,使用键cognitoidentity.amazonaws.com和从Django后端返回的值作为令牌
  5. 使用JS SDK从应用程序中调用SQS或任何其他您希望的服务

虽然使用预先签名的URL进行SQS可以工作,但将Cognito与JS SDK一起使用将允许您利用SDK支持的其他服务(DynamoDB、SNS、S3等)。

相关内容

  • 没有找到相关文章

最新更新