我编写了一个单页web应用程序,访问者可以在其中创建表示为JSON文档并存储在localStorage中的内容。我现在想让这些访问者能够通过外部身份提供商(谷歌、推特、脸书等)登录,这样他们就可以在我的应用程序中上传和共享他们的内容。
在AWS上构建这个项目的最佳方式是什么?我是云服务的新手。
我想我会想要一个S3 bucket来存储JSON文档,也许还有一个DynamoDB来存储额外的用户配置文件信息(比如昵称或电子邮件地址),但身份验证/授权/配置文件方面(Cognito、IAM、OpenID、OAuth,也许还有Lambda脚本来将所有内容联系在一起)完全让我无法使用。(坦率地说,尽管我读了三天书,但我甚至不确定我是否理解每本书的区别/目的。)
任何给我指明正确方向的建议都会对我有很大帮助。
Cognito Identity为您的用户提供AWS凭据,该凭据具有您定义的对AWS资源的权限。在您的应用程序中,您的用户可以使用Facebook、谷歌、推特、任何OIDC提供商或您自己的开发者身份验证登录,并获得AWS凭据。
看起来您想要使用自己的开发人员提供程序。您对此的实现取决于您的用例。但是,您可以使用开发人员身份验证功能将您的开发人员提供商与Cognito一起使用:http://docs.aws.amazon.com/cognito/latest/developerguide/developer-authenticated-identities.html
每个用户将获得一个Cognito身份ID。
如果您的JSON对象只供其所有者使用,则可以使用Cognito Sync,这样无论用户登录应用程序时使用的设备是什么,都可以检索这些对象。
如果您的JSON对象需要在用户之间共享,您将需要开发另一个解决方案,如您所提到的,可能使用S3。
有关创建权限的帮助,请参阅此处:http://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html