Amplifyでプレビュー機能を有効化してみた話
はじめに
Amplifyのプレビュー機能
、ブランチごとに環境を作って動作確認できるなんて・・
業務なんかでは、ステージング環境が少なくて、自分達で自由に扱えなかったなんてことがあったけど、これならいいね!こんな環境が欲しかった!というわけで、このプレビュー機能を堪能するべく、実際にやってみたお話です。
まずはプレビュー機能の設定
さっそくやってみましょう。
まずは、設定から。
Amplify
のページにあるアプリの設定 > プレビュー
から、プレビューを有効化
ボタンをクリックします。
Github アプリケーションをインストールしてプレビューを有効化
の画面が表示されるので、GitHun アプリケーションをインストール
ボタンをクリックします。
すると、Githubの画面に遷移するので、まだ未インストールの人はここで、アプリをインストールしてください。
develop
を選択して管理
ボタンをクリックします。
develop ブランチのプレビュー設定を管理
画面にて、プルリクエストのプレビュー
にチェックを入れ、プルリクエストのプレビュー - バックエンド環境
は、すべての ...
にしてみました。
最後に確認
ボタンをクリックします。
これで設定は完了です。
ちょうどいいからついでに、Authenticatorも。
Amplify環境を最初にこしらえてありまして、これから、認証機能を追加してみたいと思います。
まずはローカルにて認証機能を追加していきます。
amplify add auth
Using service: Cognito, provided by: awscloudformation
The current configured provider is Amazon Cognito.
Do you want to use the default authentication and security configuration? Def
ault configuration
Warning: you will not be able to edit these selections.
How do you want users to be able to sign in? Email or Phone Number
Do you want to configure advanced settings? No, I am done.
✅ Successfully added auth resource mylibrary8a675d6c locally
✅ Some next steps:
"amplify push" will build all your local backend resources and provision it in the cloud
"amplify publish" will build all your local backend and frontend resources (if you have hosting category added) and provision it in the cloud
⚠️ You have enabled SMS based auth workflow. Verify your SNS account mode in the SNS console: https://console.aws.amazon.com/sns/v3/home#/mobile/text-messaging
If your account is in "Sandbox" mode, you can only send SMS messages to verified recipient phone numbers.
状態を確認してみます。
Auth
が追加されたことが確認できました。
amplify status
Current Environment: dev
┌──────────┬───────────────────┬───────────┬───────────────────┐
│ Category │ Resource name │ Operation │ Provider plugin │
├──────────┼───────────────────┼───────────┼───────────────────┤
│ Auth │ mylibrary8a675d6c │ Create │ awscloudformation │
└──────────┴───────────────────┴───────────┴───────────────────┘
追加できたので、Amplify環境に取り込むためにamplify push
を実行します。
amplify push
⠧ Fetching updates to backend environment: dev from the cloud.⠋ Building resou
✔ Successfully pulled backend environment dev from the cloud.
Current Environment: dev
┌──────────┬───────────────────┬───────────┬───────────────────┐
│ Category │ Resource name │ Operation │ Provider plugin │
├──────────┼───────────────────┼───────────┼───────────────────┤
│ Auth │ mylibrary8a675d6c │ Create │ awscloudformation │
└──────────┴───────────────────┴───────────┴───────────────────┘
✔ Are you sure you want to continue? (Y/n) · yes
Deployment completed.
Deploying root stack mylibrary [ ====================---------------
amplify-mylibrary-dev-94433 AWS::CloudFormation::Stack UPDAT
authmylibrary8a675d6c AWS::CloudFormation::Stack CREAT
Deployed auth mylibrary8a675d6c [ ==================================
UserPool AWS::Cognito::UserPool CREAT
UserPoolClientRole AWS::IAM::Role CREAT
UserPoolClient AWS::Cognito::UserPoolClient CREAT
UserPoolClientWeb AWS::Cognito::UserPoolClient CREAT
IdentityPool AWS::Cognito::IdentityPool CREAT
IdentityPoolRoleMap AWS::Cognito::IdentityPoolRol… CREAT
Deployment state saved successfully.
Browserslist: caniuse-lite is outdated. Please run:
npx update-browserslist-db@latest
Why you should do it regularly: https://github.com/browserslist/update-db#readme
No AppSync API configured. Please add an API
✔ Synced UI components.
これで、認証機能が追加されました。
あとは、実装をしていくのみです。
App.tsxを下記のように修正します。
import React from 'react';
import './App.css';
import { Authenticator, Flex, WithAuthenticatorProps, withAuthenticator } from '@aws-amplify/ui-react'
export function App({ signOut, user }: WithAuthenticatorProps) {
return (
<Flex direction="column" justifyContent="center">
<Authenticator>
{({ signOut, user }) => (
<main>
<h1>Hello {user?.username}</h1>
<button onClick={signOut}>Sign out</button>
</main>
)}
</Authenticator>
</Flex>
);
}
export default withAuthenticator(App);
実装はこれで完了。
では、まずはローカルで動作確認をしてみましょう。
ログイン画面が立ち上がるようになったので、Create Account
タブから、EMail、電話番号、パスワードを入力してCreate Account
ボタンをクリックします。
EMailに送られてくるコードを入力する画面が表示されます。
しばらくすると、メールが受信され、記載されている確認コードを入力していきます。
ログインできました。
念のため、ログアウト、再ログインもしてみましょう。
右上のログアウト
ボタンをクリックします。
今度は先ほどアカウントを作成したので、Sign In
タブの方から、メールアドレスとパスワードを入力していきます。
ログインできて、メインの画面が表示されました!
いよいよプレビュー機能を確認!
ここまで修正した実装をコミットし、Githubにプルリクエストを作成します。
おりょ!?待てど暮らせど環境が構築されない・・
AWSのドキュメントをよーく読んでみると、、まさかのプライベートリポジトリ??
ここで作成していたリポジトリはパブリックにしていたので、プライベートに変更してみることにします。
プライベートに変更ってできるのか??
調べてみると、どうやらできそうです。
リポジトリの設定にChange repository visibility
という項目があったので、ここからpublic -> privateに変更していきます。
おおっ!もう一度プルリク作り直したら、動き始めたーー!
ちょっと時間はかかりましたが、この通り、環境ができたようです。
バックエンド環境だけ、新しくできるんだー。。なるほど。
プレビューからアクセスすると、ログイン画面が表示されました。
バックエンドが新たに構築されているので、ローカルで作ったアカウントもない状態になっているようですね。
改めてアカウントを作成し、確認コードを入力する作業を終えると、メイン画面へのアクセスまでできるようになりました。
動作確認が完了したので、プルリクエストをマージしてクローズします。
プルリクがクローズされたら環境もきれいになくなってくれるはず。
まずは、プレビューがなくなりました。
バックエンド環境もなくなりました!
フロントはマージ後に再デプロイが自動で始まりました!!
おお、すごいっ!
まとめ
というわけで、今回はここまでとなります。
教訓としては、Githubならプライベートリポジトリじゃないと、プレビュー機能が使えなかった
というところですかね。
Amplify、まだまだ全然使いこなせてないやい。。
また今後も、少しずつAmplify関連の備忘録をしたためていこうと思います。
Discussion