はじめに
こんにちは。ビジネスアクセラレーション事業部の古川です。
この記事は、「AWSに興味はあるけどよく知らない」「資格を持っているけど実際に触ってみたことがない」という方向けに、「30分で学習できる」をテーマに毎週金曜日にお届けする連載シリーズの第2回です。
前回の第1回では「サーバーレスのウェブアプリケーションを構築する」に挑戦しました。自身が0から作成したアプリケーションが形になり、実際に動いた時はとても嬉しかったです。
今回挑戦するのは、AWS公式チュートリアルの「フルスタックのReactアプリケーションを構築する」です。 今回も初心者目線で、つまずきやすいポイントを共有しながら進めていきます。一緒に取り組んでいただけると嬉しいです!
※本ブログでは、全てmacOSを使用して進めています。ご了承ください。
概要
このチュートリアルでは、AWS Amplify を使用してシンプルなフルスタック Web アプリケーションを作成する方法を学びます。Amplify は、サーバーレスバックエンドを備えたシングルページ Web アプリケーションや静的サイトの構築、デプロイ、ホスティングのための Git ベースの CI/CD ワークフローを提供します。
(ハンズオンチュートリアルガイドより)
今回は「AWS Amplify」というサービスを使って、Webアプリの作成から公開までを一通り体験します! Amplifyは、面倒なサーバー設定や、コードを更新する際の手間を省いてくれるとても便利なツールです。
環境構築
このチュートリアルを開始するためには、以下の環境構築が必要となります。
- AWSアカウントの作成、環境設定。
- ローカル開発用にAWS プロファイルを設定する。
- Node.jsおよび npmのインストール
- GitHubのアカウント
順番に進めていきましょう。
1. AWSアカウントの作成
AWS環境を一度も使用したことがない方はこの手順が必要です。こちらを元に作成しましょう。社内の共有環境がある方は不要です。管理者の方に確認してみてください。
2. AWSプロファイルの設定
まずは自分のパソコンにAWSプロファイルがすでにあるかどうかを確認しておきましょう。
ターミナルを開いて、以下のコマンドを実行してみてください。
cat ~/.aws/config
この画像のように表示された方は、既に設定ができています。

AWSコンソールにログインし、IAMを開き、使っているIAMユーザーに「AmplifyBackendDeployFullAccess」のポリシーを追加するだけでOKです。
追加が完了したら、これより先の手順はスキップして4.Node.js、npmのインストールに進んでください。何も出てこなかった方は、この先の設定を進めます。
AWSプロファイルの設定は、2つの手順で進めることができます。公式ガイドには「2−1.Identity Center で設定」が記載されているため、基本的にはこちらで進め、うまくいかない場合は「2−2.IAMユーザーで設定」で設定を行います。両方を実行する必要はありません。
2−1.Identity Center で設定
1.AWS コンソールにサインインしてIAM アイデンティティ センター ページにアクセスします。左上の検索バーに「IAM」と入力して探すこともできます。

2.「有効にする IAM Identity Center IAM Identity Center のインスタンスを有効にすることで、ワークフォースユーザーの AWS マネージドアプリケーションおよび AWS アカウントへのアクセスを効率化します。」と書いてある箇所があるので、オレンジ色の「有効にする」を選択します。
3.続けて右下の「有効にする」を選択します。
この時、「AWS Organizationsで有効にする」「このAWSアカウントのみで有効にする」の選択肢が表示されます。「AWS Organizationsで有効にする」を選択します。
表示されず、選ぶことができない方は、「2−2. IAMユーザーで設定」まで飛ばしてください。
4.「AWS Organizationsで有効にする」を選ぶと、この画面に推移します。
画面左下にある「CloudShell」を開きます。

5.このターミナルに以下のコマンドを貼り付けます。
read -p "Enter email address: " user_email # hit enter
6.「Enter email address」と出てくるので、自身のメールアドレスを入力します。以下のコードをまとめて貼り付けて実行します。
response=$(aws sso-admin list-instances)
ssoId=$(echo $response | jq '.Instances[0].IdentityStoreId' -r)
ssoArn=$(echo $response | jq '.Instances[0].InstanceArn' -r)
email_json=$(jq -n \
--arg email "$user_email" \
'{"Type":"Work","Value":$email}')
response=$(aws identitystore create-user \
--identity-store-id $ssoId \
--user-name amplify-admin \
--display-name 'Amplify Admin' \
--name Formatted=string,FamilyName=Admin,GivenName=Amplify \
--emails "$email_json")
userId=$(echo $response | jq '.UserId' -r)
response=$(aws sso-admin create-permission-set \
--name amplify-policy \
--instance-arn=$ssoArn \
--session-duration PT12H)
permissionSetArn=$(echo $response | jq '.PermissionSet.PermissionSetArn' -r)
aws sso-admin attach-managed-policy-to-permission-set \
--instance-arn $ssoArn \
--permission-set-arn $permissionSetArn \
--managed-policy-arn arn:aws:iam::aws:policy/service-role/AmplifyBackendDeployFullAccess
accountId=$(aws sts get-caller-identity | jq '.Account' -r)
aws sso-admin create-account-assignment \
--instance-arn $ssoArn \
--target-id $accountId \
--target-type AWS_ACCOUNT \
--permission-set-arn $permissionSetArn \
--principal-type USER \
--principal-id $userId
7.最後に、以下のコマンドで正しく設定できたか確認しましょう。
printf "\n\nStart session url: https://$ssoId.awsapps.com/start\nRegion: $AWS_REGION\nUsername: amplify-admin\n\n"
このように出てくれば完了です。このURLは後ほど使うので、コピーして保存しておきましょう。

8.次にパスワードをリセットします。IAM Identity Centerのコンソールに戻り、「ユーザー」→「amplify-admin」→「パスワードのリセット」→「パスワードのリセット手順を記載したメールをユーザーに送信」の順に進みます。
9.登録したメールアドレス宛にメールが届くので、好きなパスワードを設定してください。ログイン時のユーザー名は「amplify-admin」です。
10.AWS CLIをインストールします。インストール済みか確認するために、ターミナルで下記を実行します。
aws --version
バージョン情報(aws-cli/2.15.0 Python/3.11.6 Darwin/23.0.0)などが表示された場合、既にインストールされています。「command not found」と表示された場合は、こちらの記事を参考にインストールしてください。
11.ターミナルで以下を実行します
aws configure sso
すると、質問が1行ずつ表示されます。画像を参考に入力します。左側が表示される文字、右側の赤文字が入力例です。
この情報を入力すると、ブラウザが自動的に開きます。
先ほど作成したユーザー名とパスワードでサインイン後、MFAを設定するように求められます。
12.スマホにアプリを入れ、MFAを設定します。認証アプリはGoogle Authenticator、Microsoft Authenticator、Authy など、好きなものを使用してください。
以上で完了です。
2−2.IAMユーザーで設定
2−1の手順、Identity CenterのSSO方式を使うには、条件があります。IAM Identity Centerを「組織インスタンス」として有効化できるのは、AWS Organizationsの「管理アカウント」だけという制約です。
つまり、会社の検証環境や、組織に参加していない個人アカウントで作業している場合、この条件を満たせないことがあります。
その場合は、代わりにIAMユーザーを作成して設定します。私はこちらの手順で行いました。
- IAMユーザーを作成する
AWSコンソールで「IAM」と検索して開き、左メニューの「ユーザー」から「ユーザーを作成」を選択します。ユーザー名は好きな名前をつけて進めます。 -
権限を付与する
「許可を追加」の画面で「ポリシーを直接アタッチ」を選びます。検索欄に 「AmplifyBackendDeployFullAccess 」と入力してチェックを入れます。

3.「次へ」を選択して作成完了です。
4.「IAM」>「IAMユーザー」から先ほど作成した名前のIAMユーザーを選択します。
5.「セキュリティ認証情報」タブを開き、「アクセスキーを作成」をクリックします。
6.用途には「CLI」を選択します。
7.アクセスキーID」と「シークレットアクセスキー」が表示されます。一度しか見られません。必ず「CSVファイルでダウンロード」を選択して保存してください。

8.AWS CLIをインストールします。インストール済みか確認するために、ターミナルで下記を実行します。
aws --version
バージョン情報(aws-cli/2.15.0 Python/3.11.6 Darwin/23.0.0)などが表示された場合、既にインストールされています。「command not found」と表示された場合は、こちらの記事を参考にインストールしてください。
9.ローカルでプロファイルを設定します、ターミナルに下記を入力してください。
aws configure
10.AWSアクセスキー、シークレットアクセスキー、リージョンの順の入力を求められるので、先ほどの値をコピーして入力します。リージョンは、ap-northeast-1 (東京)を入力します。その後の項目は何も入力せずEnterを押します。

これで完了です。~/.aws/credentialsにアクセスキーが、~/.aws/configにリージョン情報が、それぞれ保存されます。
11.下記コマンドを入力して、正しく設定されているか確認します。先ほど作ったIAMユーザーの情報が表示されれば成功です。
aws sts get-caller-identity
4.Node.js 、npm のインストール
Amplifyのコマンドを動かすには、Node.jsとnpmが必要です。npmはNode.jsに付属しているので、Node.jsをインストールすればnpmも一緒に入ります。
まずは、すでにインストールされていないか確認しておきましょう。ターミナルで以下の2つを実行します。
node -v
npm -v
v20.11.0 や 10.2.4 のようにバージョンが表示されれば、すでにインストール済みです。「command not found」と表示された場合は、インストールが必要です。
こちらからインストールできます。完了したら、もう一度以下の2つを実行して正しくインストールされているか確かめます。
node -v
npm -v
5.GitHubのアカウント
この後のチュートリアル本編では、作成したコードをGitリポジトリにアップロードし、Amplifyと連携させてデプロイしていきます。標準的な手順ではGitHubを使用します。
まずは、GitHubのアカウントを持っているか確認しましょう。心当たりがあればログインページで試すか、パスワードリセットページにメールアドレスを入力し、再設定メールが届くかで確認できます。届かなければ未登録のため、GitHub公式サイトから作成しましょう。
GitHubを初めて使う場合は、SSHキーの生成とアカウントへの登録が必要になります。手順はGitHub公式の「SSHを使用してGitHubに接続する」を参照してください。
CodeCommitで代用する
社内のセキュリティなどが理由でGitのアカウントを作ることができない場合は、CodeCommitでも代用できます。
CodeCommitはAWSが提供するGitリポジトリのサービスで、ソースコードをAWS内で完結して管理できるのが特徴です。
公式の手順はGitHub使用ですが、私はCodeCommitで代用して進めていきます。
まとめ
お疲れ様でした。以上で環境構築は終了です。次回からはアプリケーションの構築に入っていきます。
次回の更新は 9/11 (金)を予定しています。お楽しみに。