既存のAWSリソースに接続する
Amplifyクライアントライブラリは、Amplifyバックエンドワークフローなしで独立して使用できます。CDK、Terraform、CloudFormation、またはAWSコンソールでAWSリソースをプロビジョニングした場合、Amplifyライブラリをそれらのリソースに直接接続できます。
これは、Amplifyのクライアントライブラリを認証、データ、ストレージなどに採用しながら、インフラストラクチャを完全に制御できることを意味します。
このアプローチを使用する場合
- CDK、Terraform、またはCloudFormationでAWSリソースがすでにプロビジョニングされている
- Amplifyバックエンドワークフロー(
ampx)を採用せずにAmplifyクライアントライブラリを使用したい - プラットフォームチームによって管理されている共有インフラストラクチャに接続する必要がある
- テストまたは環境の切り替え用にプログラマティック制御が必要
その仕組み
独自のリソースでAmplifyクライアントライブラリを設定する方法は2つあります。
オプション1: 手動のamplify_outputs.json
プロジェクトにamplify_outputs.jsonファイルを作成し、リソースの設定を指定します。サポートされているすべてのフィールドについては、完全なamplify_outputs.json仕様を参照してください。
{ "version": "1", "auth": { "aws_region": "us-east-1", "user_pool_id": "us-east-1_abc123", "user_pool_client_id": "abcdef123456" }, "storage": { "aws_region": "us-east-1", "bucket_name": "my-app-bucket" }}次に、アプリでAmplifyを設定します:
import { Amplify } from 'aws-amplify';import outputs from './amplify_outputs.json';
Amplify.configure(outputs);オプション2: ResourcesConfigオブジェクトで直接Amplify.configure()を実行
JSONファイルなしで設定を直接渡します:
import { Amplify } from 'aws-amplify';
Amplify.configure({ Auth: { Cognito: { userPoolId: 'us-east-1_abc123', userPoolClientId: 'abcdef123456', identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555', loginWith: { email: true } } }, Storage: { S3: { bucket: 'my-app-bucket', region: 'us-east-1' } }});Auth(Amazon Cognito)を設定する
既存のCognito User PoolおよびIdentity Poolに接続します。
Amplify.configure({ Auth: { Cognito: { userPoolId: 'us-east-1_abc123', userPoolClientId: 'abcdef123456', identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555', loginWith: { email: true }, signUpVerificationMethod: 'code', userAttributes: { email: { required: true } }, allowGuestAccess: true, passwordFormat: { minLength: 8, requireLowercase: true, requireUppercase: true, requireNumbers: true, requireSpecialCharacters: true } } }});Auth必須フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
awsRegion | はい | AWSリージョン(例:us-east-1) |
userPoolId | はい | Cognito User Pool ID |
userPoolClientId | はい | Cognitoアプリクライアント ID |
identityPoolId | いいえ | Cognito Identity Pool ID(ゲストアクセスとIAMベースの認証に必要) |
passwordPolicy | いいえ | パスワード要件(最小長、文字型) |
oauth | いいえ | OAuth/Hosted UI設定(ソーシャルサインイン) |
mfaConfiguration | いいえ | MFAモード:NONE、OPTIONAL、またはREQUIRED |
mfaMethods | いいえ | MFAタイプ:SMS、TOTP |
Data(AWS AppSync)を設定する
既存のAppSync GraphQL APIに接続します。
{ "version": "1", "data": { "aws_region": "us-east-1", "url": "https://abc123.appsync-api.us-east-1.amazonaws.com/graphql", "api_key": "da2-abcdefghijklmno", "default_authorization_type": "API_KEY", "authorization_types": ["API_KEY"] }}import { Amplify } from 'aws-amplify';import outputs from './amplify_outputs.json';
Amplify.configure(outputs);Data必須フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
awsRegion | はい | AWSリージョン |
url | はい | AppSync GraphQLエンドポイントURL |
defaultAuthorizationType | はい | デフォルト認可モード:API_KEY、AMAZON_COGNITO_USER_POOLS、AWS_IAM、またはOPENID_CONNECT |
authorizationTypes | はい | サポートされているすべての認可モード |
apiKey | いいえ | API_KEY認証を使用する場合は必須 |
Storage(Amazon S3)を設定する
既存のS3バケットに接続します。
Amplify.configure({ Auth: { Cognito: { userPoolId: 'us-east-1_abc123', userPoolClientId: 'abcdef123456', identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555' } }, Storage: { S3: { bucket: 'my-app-bucket', region: 'us-east-1' } }});Storage必須フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
awsRegion | はい | AWSリージョン |
bucketName | はい | デフォルトのS3バケット名 |
buckets | いいえ | マルチバケットセットアップ用の追加の名前付きバケット |
Analytics(Amazon Pinpoint)を設定する
既存のPinpointアプリケーションに接続します。
{ "version": "1", "analytics": { "amazon_pinpoint": { "aws_region": "us-east-1", "app_id": "abc123def456" } }}Geo(Amazon Location Service)を設定する
既存のLocation Serviceリソースに接続します。
{ "version": "1", "geo": { "aws_region": "us-east-1", "maps": { "items": { "myMap": { "style": "VectorEsriStreets" } }, "default": "myMap" }, "search_indices": { "items": ["myPlaceIndex"], "default": "myPlaceIndex" }, "geofence_collections": { "items": ["myGeofenceCollection"], "default": "myGeofenceCollection" } }}Notifications(プッシュ)を設定する
プッシュ通知用に既存のPinpointアプリケーションに接続します。
{ "version": "1", "notifications": { "aws_region": "us-east-1", "amazon_pinpoint_app_id": "abc123def456", "channels": ["APNS", "FCM", "IN_APP_MESSAGING"] }}マルチカテゴリ設定
複数のサービスを一緒に設定できます。この例では、Auth、Data、およびStorageを単一の設定でセットアップしています。
Amplify.configure({ Auth: { Cognito: { userPoolId: 'us-east-1_abc123', userPoolClientId: 'abcdef123456', identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555' } }, API: { GraphQL: { endpoint: 'https://abc123.appsync-api.us-east-1.amazonaws.com/graphql', defaultAuthMode: 'userPool' } }, Storage: { S3: { bucket: 'my-app-bucket', region: 'us-east-1' } }});環境固有の設定
環境ごとに個別のamplify_outputs.jsonファイルを保守できます:
import devOutputs from './amplify_outputs.dev.json';import prodOutputs from './amplify_outputs.prod.json';
const outputs = process.env.NODE_ENV === 'production' ? prodOutputs : devOutputs;Amplify.configure(outputs);amplify_outputs.jsonスキーマリファレンス
サポートされているすべての設定フィールドの完全なスキーマについては、amplify_outputs.jsonリファレンスを参照してください。