Skip to content

Shopifyカスタムアプリ用 サーバーレスフレームワークを使った、フルスタックアプリの基礎

Notifications You must be signed in to change notification settings

ryujimorimoto/my-fullstack-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Serverless Fullstack Application Express React DynamoDB AWS Lambda AWS HTTP API

AWS Lambda、AWS HTTP API、Express.js、React、DynamoDB 上に構築された完全なサーバーレスのフルスタックアプリケーション。

Quick Start

GitHub からクローンを作成。 フォルダはアプリ名にする。

gh repo clone ryujimorimoto/my-fullstack-app アプリ名
cd アプリ名

※ 各フォルダにある serverless.yml にある app をアプリ名に、org をアカウント名に変更してください。

app: アプリ名(半角英字の小文字、ハイフン(-)のみ利用可能)
org: ryuji
  • api ディレクトリがバックエンド
  • site ディレクトリがフロントエンド
  • dynamoDB データベースの設定
  • permissions バックエンド(api ディレクトリ)からのアクセス権限を管理

フロント側(site)の設定

ユーザー認証は、フロント側で cognito を使って対応する。 cognito は、amplify を使って導入する。 ./site ディレクトリで amplify を実行する。

※(最終的には、全て serverless framework へ統一したい)

cd site
amplify configure
amplify init
amplify add auth

ホスティングは serverless framework 経由で行いますが、 amplify でホスティングの設定をしないとデプロイできないので、 ホスティング設定をマニュアルに設定します。 後でサーバーレスフレームワークでホスティングさせます。

amplify add hosting
  ❯ Hosting with Amplify Console (Managed hosting with custom domains, Continuous deployment)
  Amazon CloudFront and S3

  Continuous deployment (Git-based deployments)
  ❯ Manual deployment
  Learn more

参考サイト:サーバレスで Shopify アプリの構築方法を解説!AWS Amplify, Serverless Framework

site ディレクトリはデプロイ時にビルドする設定になっているので、 まず、package.json の中身をインストールします。

yarn install && yarn build

フロント側(site)の環境変数を設定します。 site ディレクトリに.env ファイルを作成し、下記を設定します。

REACT_APP_SHOPIFY_API_KEY=ShopifyのアプリAPIキー
REACT_APP_SHOPIFY_SECRET_KEY=Shopifyのアプリシークレットキー
REACT_APP_SCOPES=read_content
REACT_APP_PUBLIC_API_URL=
REACT_APP_APPLICATION_URL=

Shopify のアプリ API キーとシークレットキーは、 Shopify パートナーダッシュボードの管理画面から取得できます。 また、必要に応じて、REACT_APP_SCOPES にスコープを設定してください。 アクセススコープ一覧

最後に amplify を publish します。

amplify publish

バックエンド側(api)の設定

ルートディレクトリに戻り(cd ..)、バックエンド側の設定を行います。

cd api
yarn install
touch .env

環境変数の設定(.env)は次のようにします。

SHOPIFY_API_KEY=ShopifyのアプリAPIキー
SHOPIFY_API_SECRET=Shopifyのアプリシークレットキー

フロント側で設定したアプリの API キーをバックエンド側でも設定します。

デプロイ

デプロイし、AWS Lambda、AWS ApiGateway、AWS CloudFront、DynamoDB などを作成します。 最初に permissions ディレクトリをデプロイし、api, site, dynamoDB ディレクトリをデプロイしてください。 (api の c 設定に permissions の設定が必要なので、先に permissions をデプロイしています)

cd permissions
sls deploy
cd ../api
sls deploy
cd ../site
sls deploy
cd ../dynamoDB
sls deploy

最後に、フロントエンド(site)とバックエンド(api)をつなげるために、 作成された URL を環境変数に設定します。

  • site/.env ファイルの REACT_APP_APPLICATION_URL に site の distributionUrl を設定。 REACT_APP_PUBLIC_API_URL に api の apiGatewayUrl を設定。

site: url: に表記されている、CloudFront の URL にアクセスし、動作確認を行う。

  • https://xxxxxxxxxxxx.cloudfront.net へアクセス
  • 会員登録、verification code メールの受信を確認する
  • code を入力して会員登録を完了させる
  • 適当なストアの URL を入力し、ログインできるか確認する

問題なくログインできれば環境構築の完了!

ーーーーーーーーーーーーー

IAM 権限設定

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "lambda:*",
                "dynamodb:*",
                "apigateway:*",
                "cloudformation:*",
                "s3:*",
                "cloudfront:*",
                "amplify:*",
                "cognito-idp:*",
                "cognito-identity:*",
                "iam:UpdateAssumeRolePolicy",
                "iam:GetRole",
                "iam:ListAttachedRolePolicies",
                "iam:DeleteRole",
                "iam:CreateRole",
                "iam:ListRolePolicies",
                "iam:PassRole",
                "iam:*RolePolicy"
            ],
            "Resource": "*"
        }
    ]
}

About

Shopifyカスタムアプリ用 サーバーレスフレームワークを使った、フルスタックアプリの基礎

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published