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

Page updated Apr 24, 2026

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

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

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

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

  • CDKTerraform、またはCloudFormationでAWSリソースがすでにプロビジョニングされている
  • Amplifyバックエンドワークフロー(ampx)を採用せずにAmplifyクライアントライブラリを使用したい
  • プラットフォームチームによって管理されている共有インフラストラクチャに接続する必要がある
  • テストまたは環境の切り替え用にプログラマティック制御が必要

その仕組み

独自のリソースでAmplifyクライアントライブラリを設定する方法は2つあります。

オプション1: 手動のamplify_outputs.json

app/src/main/res/raw/ディレクトリに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"
}
}

次に、いつものようにAmplifyを設定します:

Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.configure(applicationContext)

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

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

import com.amplifyframework.core.Amplify
import com.amplifyframework.core.configuration.AmplifyOutputsData
import com.amplifyframework.auth.cognito.AWSCognitoAuthPlugin
val config = AmplifyOutputsData(
auth = Auth(
awsRegion = "us-east-1",
userPoolId = "us-east-1_abc123",
userPoolClientId = "abcdef123456"
)
)
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.configure(config, applicationContext)

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

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

Auth(Amazon Cognito)を設定する

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

val config = AmplifyOutputsData(
auth = Auth(
awsRegion = "us-east-1",
userPoolId = "us-east-1_abc123",
userPoolClientId = "abcdef123456",
identityPoolId = "us-east-1:11111111-2222-3333-4444-555555555555",
passwordPolicy = Auth.PasswordPolicy(
minLength = 8,
requireNumbers = true,
requireLowercase = true,
requireUppercase = true,
requireSymbols = false
),
oauth = Auth.Oauth(
identityProviders = listOf(
IdentityProviders.GOOGLE,
IdentityProviders.SIGN_IN_WITH_APPLE
),
domain = "myapp.auth.us-east-1.amazoncognito.com",
scopes = listOf("openid", "email", "profile"),
redirectSignInUri = listOf("myapp://callback"),
redirectSignOutUri = listOf("myapp://signout"),
responseType = ResponseType.Code
),
standardRequiredAttributes = listOf(
AmazonCognitoStandardAttributes.EMAIL
),
usernameAttributes = listOf(
UsernameAttributes.EMAIL
),
userVerificationTypes = listOf(
VerificationMechanism.EMAIL
),
unauthenticatedIdentitiesEnabled = true,
mfaConfiguration = MfaConfiguration.OPTIONAL,
mfaMethods = listOf(
MfaMethods.SMS,
MfaMethods.TOTP
)
)
)
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.configure(config, applicationContext)

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に接続します。

val config = AmplifyOutputsData(
data = Data(
awsRegion = "us-east-1",
url = "https://abc123.appsync-api.us-east-1.amazonaws.com/graphql",
apiKey = "da2-abcdefghijklmno",
defaultAuthorizationType = AwsAppsyncAuthorizationType.API_KEY,
authorizationTypes = listOf(
AwsAppsyncAuthorizationType.API_KEY,
AwsAppsyncAuthorizationType.AMAZON_COGNITO_USER_POOLS
)
)
)
Amplify.addPlugin(AWSApiPlugin())
Amplify.configure(config, applicationContext)

Data必須フィールド

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

Storage(Amazon S3)を設定する

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

val config = AmplifyOutputsData(
auth = Auth(
awsRegion = "us-east-1",
userPoolId = "us-east-1_abc123",
userPoolClientId = "abcdef123456",
identityPoolId = "us-east-1:11111111-2222-3333-4444-555555555555"
),
storage = Storage(
awsRegion = "us-east-1",
bucketName = "my-app-bucket"
)
)
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.addPlugin(AWSS3StoragePlugin())
Amplify.configure(config, applicationContext)

複数のバケット

val config = AmplifyOutputsData(
storage = Storage(
awsRegion = "us-east-1",
bucketName = "primary-bucket",
buckets = listOf(
Storage.Bucket(
name = "media",
bucketName = "my-media-bucket",
awsRegion = "us-east-1"
),
Storage.Bucket(
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アプリケーションに接続します。

val config = AmplifyOutputsData(
analytics = Analytics(
amazonPinpoint = Analytics.AmazonPinpoint(
awsRegion = "us-east-1",
appId = "abc123def456"
)
)
)
Amplify.addPlugin(AWSPinpointAnalyticsPlugin())
Amplify.configure(config, applicationContext)

Geo(Amazon Location Service)を設定する

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

val config = AmplifyOutputsData(
geo = Geo(
awsRegion = "us-east-1",
maps = Geo.Maps(
items = mapOf(
"myMap" to AmazonLocationServiceConfig(
style = "VectorEsriStreets"
)
),
default = "myMap"
),
searchIndices = Geo.SearchIndices(
items = listOf("myPlaceIndex"),
default = "myPlaceIndex"
),
geofenceCollections = Geo.GeofenceCollections(
items = listOf("myGeofenceCollection"),
default = "myGeofenceCollection"
)
)
)
Amplify.addPlugin(AWSLocationGeoPlugin())
Amplify.configure(config, applicationContext)

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

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

val config = AmplifyOutputsData(
notifications = Notifications(
awsRegion = "us-east-1",
amazonPinpointAppId = "abc123def456",
channels = listOf(
AmazonPinpointChannels.FCM,
AmazonPinpointChannels.IN_APP_MESSAGING
)
)
)
Amplify.addPlugin(AWSPinpointPushNotificationsPlugin())
Amplify.configure(config, applicationContext)

マルチカテゴリ設定

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

val config = AmplifyOutputsData(
auth = Auth(
awsRegion = "us-east-1",
userPoolId = "us-east-1_abc123",
userPoolClientId = "abcdef123456",
identityPoolId = "us-east-1:11111111-2222-3333-4444-555555555555"
),
data = Data(
awsRegion = "us-east-1",
url = "https://abc123.appsync-api.us-east-1.amazonaws.com/graphql",
defaultAuthorizationType = AwsAppsyncAuthorizationType.AMAZON_COGNITO_USER_POOLS,
authorizationTypes = listOf(
AwsAppsyncAuthorizationType.AMAZON_COGNITO_USER_POOLS,
AwsAppsyncAuthorizationType.AWS_IAM
)
),
storage = Storage(
awsRegion = "us-east-1",
bucketName = "my-app-bucket"
)
)
Amplify.addPlugin(AWSCognitoAuthPlugin())
Amplify.addPlugin(AWSApiPlugin())
Amplify.addPlugin(AWSS3StoragePlugin())
Amplify.configure(config, applicationContext)

環境固有の設定

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

val (region, userPoolId, clientId) = when (BuildConfig.BUILD_TYPE) {
"debug" -> Triple("us-east-1", "us-east-1_dev123", "devClient123")
"staging" -> Triple("us-west-2", "us-west-2_staging456", "stagingClient456")
else -> Triple("us-east-1", "us-east-1_prod789", "prodClient789")
}
val config = AmplifyOutputsData(
auth = Auth(
awsRegion = region,
userPoolId = userPoolId,
userPoolClientId = clientId
)
)
Amplify.configure(config, applicationContext)

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

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