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

既存のAWSリソースに接続する

Amplifyクライアントライブラリは、Amplifyバックエンドワークフローなしで独立して使用できます。CDK、Terraform、CloudFormation、またはAWSコンソールでAWSリソースをプロビジョニングした場合、Amplifyライブラリをそれらのリソースに直接接続できます。

これは、Amplifyのクライアントライブラリを認証、データ、ストレージなどに採用しながら、インフラストラクチャを完全に制御できることを意味します。

このアプローチを使用する場合

  • CDKTerraform、または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",
"identity_pool_id": "us-east-1:11111111-2222-3333-4444-555555555555"
}
}

次に、Dart設定を生成してAmplifyを設定します:

npx ampx generate outputs --outputs-format dart --outputs-out-dir lib
import 'amplify_outputs.dart';
await Amplify.addPlugin(AmplifyAuthCognito());
await Amplify.configure(amplifyConfig);

オプション2: AmplifyOutputsでのプログラマティック設定

ファイルなしでコードで設定を構築します:

import 'package:amplify_core/amplify_core.dart';
import 'package:amplify_auth_cognito/amplify_auth_cognito.dart';
final config = AmplifyOutputs(
auth: AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_abc123',
userPoolClientId: 'abcdef123456',
),
);
await Amplify.addPlugin(AmplifyAuthCognito());
await Amplify.configure(config);

このアプローチは次の場合に理想的です:

  • ユニットテスト — ファイルをバンドルせずにAmplifyを設定
  • 環境の切り替え — dev/staging/prodに異なる設定を構築
  • 動的設定 — ランタイムでリモートソースから設定を取得

Auth(Amazon Cognito)を設定する

既存のCognito User PoolおよびIdentity Poolに接続します。

final config = AmplifyOutputs(
auth: AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_abc123',
userPoolClientId: 'abcdef123456',
identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555',
passwordPolicy: PasswordPolicy(
minLength: 8,
requireNumbers: true,
requireLowercase: true,
requireUppercase: true,
requireSymbols: false,
),
oauth: OAuthOutputs(
identityProviders: [IdentityProvider.google, IdentityProvider.apple],
domain: 'myapp.auth.us-east-1.amazoncognito.com',
scopes: ['openid', 'email', 'profile'],
redirectSignInUri: ['myapp://callback'],
redirectSignOutUri: ['myapp://signout'],
responseType: 'code',
),
standardRequiredAttributes: [CognitoStandardAttribute.email],
usernameAttributes: [UsernameAttribute.email],
userVerificationTypes: [VerificationType.email],
unauthenticatedIdentitiesEnabled: true,
mfaConfiguration: MfaEnforcement.optional,
mfaMethods: [MfaMethod.sms, MfaMethod.totp],
),
);
await Amplify.addPlugin(AmplifyAuthCognito());
await Amplify.configure(config);

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モード:NONEOPTIONAL、またはREQUIRED
mfaMethodsいいえMFAタイプ:SMSTOTP

Data(AWS AppSync)を設定する

既存のAppSync GraphQL APIに接続します。

final config = AmplifyOutputs(
data: DataOutputs(
awsRegion: 'us-east-1',
url: 'https://abc123.appsync-api.us-east-1.amazonaws.com/graphql',
apiKey: 'da2-abcdefghijklmno',
defaultAuthorizationType: AuthorizationType.apiKey,
authorizationTypes: [AuthorizationType.apiKey, AuthorizationType.userPools],
),
);
await Amplify.addPlugin(AmplifyAPI());
await Amplify.configure(config);

Data必須フィールド

フィールド必須説明
awsRegionはいAWSリージョン
urlはいAppSync GraphQLエンドポイントURL
defaultAuthorizationTypeはいデフォルト認可モード:API_KEYAMAZON_COGNITO_USER_POOLSAWS_IAM、またはOPENID_CONNECT
authorizationTypesはいサポートされているすべての認可モード
apiKeyいいえAPI_KEY認証を使用する場合は必須

Storage(Amazon S3)を設定する

既存のS3バケットに接続します。

final config = AmplifyOutputs(
auth: AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_abc123',
userPoolClientId: 'abcdef123456',
identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555',
),
storage: StorageOutputs(
awsRegion: 'us-east-1',
bucketName: 'my-app-bucket',
),
);
await Amplify.addPlugin(AmplifyAuthCognito());
await Amplify.addPlugin(AmplifyStorageS3());
await Amplify.configure(config);

複数のバケット

final config = AmplifyOutputs(
storage: StorageOutputs(
awsRegion: 'us-east-1',
bucketName: 'primary-bucket',
buckets: [
BucketOutputs(name: 'media', bucketName: 'my-media-bucket', awsRegion: 'us-east-1'),
BucketOutputs(name: 'logs', bucketName: 'my-logs-bucket', awsRegion: 'us-west-2'),
],
),
);

ストレージは認可用にAuth(Cognito Identity Pool)を必要とします。常にStorageと一緒にAuthを設定してください。

Storage必須フィールド

フィールド必須説明
awsRegionはいAWSリージョン
bucketNameはいデフォルトのS3バケット名
bucketsいいえマルチバケットセットアップ用の追加の名前付きバケット

Analytics(Amazon Pinpoint)を設定する

既存のPinpointアプリケーションに接続します。

final config = AmplifyOutputs(
analytics: AnalyticsOutputs(
amazonPinpoint: AmazonPinpointOutputs(
awsRegion: 'us-east-1',
appId: 'abc123def456',
),
),
);
await Amplify.addPlugin(AmplifyAnalyticsPinpoint());
await Amplify.configure(config);

Geo(Amazon Location Service)を設定する

既存のLocation Serviceリソースに接続します。

Notifications(プッシュ)を設定する

プッシュ通知用に既存のPinpointアプリケーションに接続します。

amplify_outputs.json
{
"version": "1",
"notifications": {
"aws_region": "us-east-1",
"amazon_pinpoint_app_id": "abc123def456",
"channels": ["APNS", "FCM", "IN_APP_MESSAGING"]
}
}

マルチカテゴリ設定

複数のサービスを一緒に設定できます。この例では、Auth、Data、およびStorageを単一の設定でセットアップしています。

final config = AmplifyOutputs(
auth: AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_abc123',
userPoolClientId: 'abcdef123456',
identityPoolId: 'us-east-1:11111111-2222-3333-4444-555555555555',
),
data: DataOutputs(
awsRegion: 'us-east-1',
url: 'https://abc123.appsync-api.us-east-1.amazonaws.com/graphql',
defaultAuthorizationType: AuthorizationType.userPools,
authorizationTypes: [AuthorizationType.userPools, AuthorizationType.iam],
),
storage: StorageOutputs(
awsRegion: 'us-east-1',
bucketName: 'my-app-bucket',
),
);
await Amplify.addPlugin(AmplifyAuthCognito());
await Amplify.addPlugin(AmplifyAPI());
await Amplify.addPlugin(AmplifyStorageS3());
await Amplify.configure(config);

環境固有の設定

別のファイルなしでdev、staging、productionを切り替えます:

final environment = const String.fromEnvironment('ENV', defaultValue: 'dev');
final AuthOutputs authConfig;
switch (environment) {
case 'prod':
authConfig = AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_prod789',
userPoolClientId: 'prodClient789',
);
case 'staging':
authConfig = AuthOutputs(
awsRegion: 'us-west-2',
userPoolId: 'us-west-2_staging456',
userPoolClientId: 'stagingClient456',
);
default:
authConfig = AuthOutputs(
awsRegion: 'us-east-1',
userPoolId: 'us-east-1_dev123',
userPoolClientId: 'devClient123',
);
}
final config = AmplifyOutputs(auth: authConfig);
await Amplify.configure(config);

amplify_outputs.jsonスキーマリファレンス

サポートされているすべての設定フィールドの完全なスキーマについては、amplify_outputs.jsonリファレンスを参照してください。