たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

AWS(クラウド)で手軽にwebアプリを作る

概要

webアプリ(ブラウザで動くアプリ)を思いついた、作ろう。
ブラウザで全部の処理させるのって、すごい大変そう。
サーバーを借りて色々する…のかな、難しそう。
クラウド(AWS)で手軽にwebアプリが作れる!

具体的に

アマゾン ウェブサービス / AWSを使うとにより

  • サーバー環境の整備・維持
  • ユーザー認証

をほぼ手間なく実現可能。
これにより、サーバー特有の処理なく、クライアントサイドのノリでwebアプリが作成可能。

使用技術

技術調査

全体構想

user request -> AWS CloudFront -> AWS S3 (ログイン画面HTML) -> AWS Cognito Identity (ログイン画面内JS) -> AWS Cognito Sync & S3 (ユーザーアプリ画面) -> アプリ操作 -> AWS API Gateway -> AWS Lambda
API GatewayにはLambdaへのアクセス許可
API Gatewayの特定メソッドではCognitoによる認証とアクセス許可

Amazon API Gateway

API形式: RESTful, state-less

Amazon Lambda

Amazon Cognito

基本思想:
アプリのユーザーにデバイス/プラットフォームを跨いだ一意なID/識別子を付与する.
アプリに対して、一時的で限定的なAWSリソースへのアクセス権限/資格証明書/credentialを付与する.
Authentication Flow - Amazon Cognito

Cognitoは以下の3機能を持っている.

User Pools

AWSの機能でユーザーにID/passwordを交付できる。
User Poolと呼ばれるユーザーディレクトリを設定し、そこにUserを登録、認証できる。
[New] Amazon Cognito 向け User Pools | Amazon Web Services ブログ

Federated Identity Pools

連合アイデンティティのプール.
Federated Identity、つまり他社による認証を受けた情報の共有による認証、および認証ユーザーのプール.

AWS資源へのアクセス権限

IAMロールの指定によりAWSリソースへのアクセス権限が設定可能.