Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

クロスアカウントデプロイメント

このガイドでは、AWS Amplify Gen 2を使用して構築されたアプリケーション用のトランクベース、マルチリージョンデプロイメントパイプラインを作成する方法について説明します。このガイドではAmazon CodeCatalystとAWS Amplify Hostingを使用しますが、任意のCI/CDプロバイダーを選択できます。

注記: このカスタムパイプラインは、us-west-2またはeu-west-1リージョンのいずれかにデプロイできます。Amazon CodeCatalystは現在、これらの2つのAWSリージョンでのみ利用可能です。

ステップ1: Amazon CodeCatalystスペースをセットアップする

Amazon CodeCatalystのガイドを参照して、スペースをセットアップするための詳細なステップバイステップの説明をご覧ください。

ステップ2: フルスタックAmplify Gen 2アプリをデプロイする

  • Next.jsスターターテンプレートを使用して、GitHubアカウントにリポジトリを作成します。
  • AWSマネジメントコンソールにサインインします。
  • Amplifyコンソールに移動し、新しいアプリを作成を選択します。
  • next-pages-templateリポジトリを選択し、次へを選択します。
  • Gitリポジトリを作成ページの詳細を確認し、保存してデプロイを選択します。
  • 完了です。フルスタックGen 2アプリのデプロイに成功しました。Amplifyコンソールでアプリのデプロイステータスを確認できます。

AWS Amplify Gen 2コンソールでの完了されたデプロイメントのスクリーンショット

ステップ3: ビルド仕様を更新する

npx ampx generate outputs --branch $AWS_BRANCH --app-id $AWS_APP_IDコマンドをビルド仕様に追加し、npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_IDコマンドをコメントアウトします。ampx pipeline-deployはバックエンド更新をデプロイするためのスクリプトを実行し、ampx generate outputsは指定された環境の最新のamplify_outputs.jsonを取得します。

AWS Amplify Gen 2コンソールの「ビルドイメージ設定」セクションのスクリーンショット。アプリのビルド仕様に関する詳細が表示されています

ステップ4: ブランチの自動ビルドを無効にする

Amplifyを設定して、コードコミットのたびに自動ビルドを無効にできます。Amplifyコンソールでアプリに移動します。アプリ設定ブランチ設定を選択します。ブランチセクションからブランチを選択し、アクションドロップダウンメニューから自動ビルドを無効にするを選択します。

ステップ5: 受信Webhookを作成する

受信Webhookをセットアップして、Gitリポジトリへのコードコミットなしでビルドをトリガーできます。Amplify Consoleを使用して、受信Webhookを作成します。

アプリに移動し、ホスティング > ビルド設定Webhookを作成を選択します。Webhookの名前を指定し、受信Webhookリクエストでビルドするためのターゲットブランチを選択します。

Amplifyコンソールの「ビルド設定」ページのスクリーンショット。受信Webhooks機能が表示されています

次に、Webhookを選択し、アプリのビルドをトリガーするために使用されるcurlコマンドをコピーします。

Amplifyコンソールの「受信Webhooks」ページのスクリーンショット。新しく作成されたWebhookが表示されています

ステップ6: 新しいAmazon CodeCatalystプロジェクトを作成する

Amazon CodeCatalystのガイドを参照して、新しいプロジェクトを作成するための詳細なステップバイステップの説明をご覧ください。

注記: プロジェクトを作成するときに、ステップ2でアプリをデプロイするために使用したnext-pages-template GitHubリポジトリを選択してください。

CodeCatalystコンソールのスクリーンショット。ソースリポジトリセクションが表示されています

ステップ7: 別のターゲットAWSアカウントにリソースをセットアップする

クロスアカウントデプロイメントを実現するには、このガイドで前に説明したステップ1~6を別のAWSアカウント(例えば、productionアカウント)で実装する必要があります。

ステップ8: ターゲットAWSアカウントをCodeCatalystスペースに追加する

ステップ1で作成したCodeCatalystスペースに移動し、設定を選択してからAWSアカウントを選択します。ターゲットAWSアカウントID(ステップ7)を追加し、AWSアカウントを関連付けるを選択します。

CodeCatalystコンソールのスクリーンショット。「AWSアカウントを関連付ける」セクションの詳細が表示されています

staging環境がproduction環境でアクションを実行してリソースをデプロイするために想定されるIAMロールをターゲットAWSアカウントに作成する必要があります。ベストプラクティスとして、AmplifyBackendDeployFullAccessAWSマネージドポリシーをIAMロールにアタッチすることをお勧めします。このポリシーには、アカウントにGen 2リソースをデプロイするために必要なすべての権限が含まれています。CodeCatalystのドキュメントで、アカウント接続にIAMロールを追加する方法の詳細について学習できます。

ステップ9: Amazon CodeCatalystプロジェクトにワークフローを作成する

ワークフローは、継続的インテグレーションと継続的デリバリー(CI/CD)システムの一部として、コードをビルド、テスト、デプロイする方法を説明する自動化手順です。ワークフローの詳細については、Amazon CodeCatalyst User Guideを参照できます。

  • CodeCatalystプロジェクト内で、CI/CD機能に移動し、ワークフローを選択します。
  • ワークフローを作成を選択します。
  • ドロップダウンメニューからnext-pages-template GitHubリポジトリとブランチmainを選択します。
  • 次に、作成を選択します。

CodeCatalystコンソールのスクリーンショット。「ワークフローを作成」ダイアログボックスの詳細が表示されています

ワークフローを作成すると、CodeCatalystコンソールにyamlエディターが表示されます。

CodeCatalystコンソールのyamlエディターのスクリーンショット

コンソールのエクスペリエンスをビジュアルエディターに切り替えます。アクションボタンを選択して、ワークフローに追加できるワークフローアクションのリストを表示します。

CodeCatalystコンソールのスクリーンショット。「ワークフロー」セクションが表示され、+アクションがハイライトされています

ビルドアクションをワークフローに追加し、入力セクションの変数を追加ボタンを選択します。以下の環境変数を追加します:

  • AWS_APP_ID_STAGING: stagingアプリのamplifyアプリID
  • AWS_APP_ID_PRODUCTION: productionアプリのamplifyアプリID
  • AWS_BRANCH: gitブランチ名

CodeCatalystコンソールのスクリーンショット。「ワークフロー」セクションが表示され、ビルドの入力にフォーカスしています

別のビルドアクションをワークフローに追加し、入力セクションの依存先ボタンを選択します。ドロップダウンメニューから前のビルドアクションの名前を選択して、パイプラインをセットアップします。

CodeCatalystコンソールのスクリーンショット。「ワークフロー」セクションが表示され、ビジュアルワークフローと「入力」セクションにフォーカスしています

次に、設定セクションを選択し、各ビルドアクションに以下の情報を追加します:

  • 環境情報(オプション): staging、productionなど
  • AWSアカウント接続: アカウント接続
  • ロール: アカウント接続でセットアップしたロール

CodeCatalystコンソールのスクリーンショット。「ワークフロー」セクションが表示され、「設定」セクションにフォーカスしています

次に、各ビルドアクションに以下のシェルコマンドを追加する必要があります:

Terminal
// このCIの環境以外でpipeline-deployコマンドを実行するために必要な環境変数です
- Run: export CI=1
// 依存関係のクリーンインストールを実行します
- Run: npm ci
// Amplify Gen 2アプリのバックエンドをデプロイします
- Run: npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID
// 受信Webhooksを使用してフロントエンドビルドをトリガーします
- Run: if [ $AWS_BRANCH = "main" ]; then curl -X POST -d {} "`webhookUrl`&operation=startbuild" -H "Content-Type:application/json"; fi

検証を実行して、ワークフロー定義のyamlファイルが有効であることを確認できます。最後に、コミットを選択して変更を保存します。

注記: ワークフローはコミットとして保存され、このワークフローはコードプッシュトリガーが有効になっているため、ワークフローをコミットすると自動的に新しいワークフロー実行が開始されます。

次に、実行タブからワークフロー実行の結果を確認できます:

CodeCatalystコンソールのスクリーンショット。「ワークフロー」セクションが表示され、「実行」タブにフォーカスしています

完了です。Amplify Gen 2を使用して構築されたアプリ用のカスタムクロスアカウントパイプラインをセットアップして、フロントエンドとバックエンドをデプロイできるようになりました。要約すると、このカスタムパイプラインにより、CodeCatalystワークフローでampx pipeline-deployを使用してstaging環境でバックエンドを最初にデプロイでき、ampx generate outputsmainブランチのamplify_outputs.jsonファイルを生成します。Amplify Hostingはビルドの一部としてバックエンドリソースをデプロイせず、代わりにmainブランチからデプロイされたバックエンドリソースを使用します。staging环境が正常にデプロイされると、別のAWSアカウントでproduction環境をデプロイするために、同様のプロセスが実行されます。