サンドボックス機能
サンドボックス環境には、シークレット管理、複数サンドボックスのデプロイ、設定生成、クライアントコード生成など、Amplifyアプリの追加機能が含まれています。
サンドボックスでシークレットを保護する
Amplify Gen 2は、APIキーやデータベース認証情報などの機密データを管理するための安全なシークレットストレージを提供します。シークレットは環境変数に似ていますが、暗号化されたAWS Systems Manager パラメータストアのキーと値のペアです。シークレットは/amplifyプレフィックスの下のAWSパラメータストアに保存されます。
シークレットを設定する
次のコマンドを使用して、サンドボックス環境にシークレットを追加できます:
npx ampx sandbox secret set foo? Enter secret value: ###Done!
npx ampx sandbox secret set bar? Enter secret value: ###Done!これらのコマンドの実行後、サンドボックスにはfooとbarという2つのシークレットが存在します。
シークレットを一覧表示する
次のコマンドを使用して、サンドボックス環境で利用可能なすべてのシークレット名を一覧表示できます:
npx ampx sandbox secret list - foo - barシークレットを取得する
シークレットの値を表示するには、次のコマンドを実行します。
npx ampx sandbox secret get fooname: fooversion: 1value: abc123lastUpdated: Mon Nov 13 2023 22:19:12 GMT-0800 (Pacific Standard Time)シークレットを削除する
サンドボックスからシークレットを削除するには、ターミナルで次のコマンドを実行します:
npx ampx sandbox secret remove fooすべてのシークレットを削除する
サンドボックスからすべてのシークレットを削除するには、ターミナルで次のコマンドを実行します:
npx ampx sandbox secret remove --allシークレットを参照する
シークレットを設定した後、バックエンド定義でsecret()関数を使用してシークレットを参照できます。次の例は、アプリでソーシャルサインインと認証を設定する方法を示しています。環境に応じて、Amplifyは自動的に正しいシークレット値を読み込みます。
import { defineAuth, secret } from '@aws-amplify/backend';
export const auth = defineAuth({ loginWith: { email: true, externalProviders: { facebook: { clientId: secret('foo'), clientSecret: secret('bar') } } }});secret()関数はシークレットの値を取得しません。バックエンド定義にシークレット値への参照を配置します。シークレット値はバックエンドのデプロイ時にのみ解決されます。
secret()関数は、バックエンド定義内の特定の場所でのみ使用できます。たとえば、認証プロバイダーの設定と関数シークレットです。
複数のAWSプロファイルを操作する
ローカルに複数のAWSプロファイルが設定されている場合があります。ampx sandbox secretコマンドを実行するには、--profileフラグを使用して特定のプロファイルにデプロイします。たとえば、ローカルに2つのAWSプロファイル(defaultとwork)が設定されている場合、workプロファイルのサンドボックスにシークレットを追加するには、ターミナルで次のコマンドを実行します:
npx ampx sandbox secret set foo --profile work複数の名前付きサンドボックスを操作する
異なる機能またはテスト環境を異なるサンドボックスで利用できるようにしたい場合、複数のサンドボックスを作成できます。デフォルトでは、サンドボックスはローカルマシンのユーザー名に基づいて名付けられます。この名前をオーバーライドするには、--identifierオプションを使用します:
npx ampx sandbox --identifier feature1sandboxこれにより、feature1sandboxという名前のサンドボックスが起動します。
デプロイが完了したら、サンドボックスを終了し、ターミナルで次のコマンドを実行します:
npx ampx sandbox --identifier feature2sandboxデプロイが成功したら、feature1sandboxとfeature2sandboxという2つのサンドボックスが作成されます。これらを切り替えることができますが、一度に実行できるのは1つだけです。
名前付きサンドボックスでのシークレット管理
複数のサンドボックスを操作する場合、シークレットは各サンドボックスに設定する必要があります。すべてのsandbox secretコマンドは--identifier引数を受け入れて、名前付きサンドボックスのシークレットを管理します。たとえば、feature1sandboxにシークレットを追加するには:
npx ampx sandbox --identifier feature1sandbox secret set baz関数ログをストリーミングする
Amplifyは、関数ログをターミナルまたはファイルに直接ストリーミングする機能を提供します。関数ログストリーミングの詳細を確認してください。
クライアント設定を生成する
クライアント設定(amplify_outputs.jsonファイル)には、環境固有のAWSリソースとやり取りするための設定文字列が含まれています。Amplifyクライアントライブラリがライブラリ APIを使用してバックエンドリソースに接続するには、クライアント設定が必要です。デフォルトでは、クラウドサンドボックスはプロジェクトのルート(例:@/amplify_outputs.json)にクライアント設定ファイルを生成します。ファイルを別のパス(モノレポやAndroidアプリなど)に配置したい場合は、ターミナルで次のコマンドを実行します:
npx ampx sandbox --outputs-format json-mobileサンドボックス環境が実行されている場合、アプリケーション用の設定ファイルも生成します。ただし、Xcodeはそれらを認識できません。ファイルを認識するには、生成されたファイルをプロジェクトにドラッグアンドドロップする必要があります。
デプロイメント環境
または、ブランチ環境の設定を生成してテストしたい場合は、ターミナルで次のコマンドを実行できます:
WebとReact Nativeの場合、デフォルトの形式と出力ディレクトリで設定を生成します。
npx ampx generate outputs --app-id <app-id> --branch mainnpx ampx generate outputs --app-id <app-id> --format json-mobileサンドボックス環境が実行されている場合、フロントエンドアプリケーション用のバックエンド出力ファイルが生成されます。ただし、Xcodeはそれらを認識できません。ファイルを認識するには、生成されたファイルをプロジェクトにドラッグアンドドロップする必要があります。
クライアントコード生成を生成する
コード生成は、GraphQL APIのデータモデルを表すSwift(iOS)、Java(Android)、JavaScriptの本質的なコードを生成します。また、GraphQLステートメント(クエリ、ミューテーション、サブスクリプション)を生成できるため、手動でコーディングする必要がなくなります。
サンドボックスがデプロイを完了したら、ターミナルで次のコマンドを実行してニーズに固有のクライアントコードを生成できます:
npx ampx generate graphql-client-code--format [choices: "modelgen", "graphql-codegen", "introspection"]サンドボックスを削除する
クラウドサンドボックス環境は複数の方法で削除できます:
- Ctrl+Cでサンドボックスを終了し、リソースを削除することを選択します。
npx ampx sandbox deleteまたはnpx ampx sandbox delete --nameを実行します。- Amplifyコンソールにアクセスして、サンドボックスを削除します。