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

Xcodeプロジェクトに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を設定します:

try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.configure(with: .amplifyOutputs)

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

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

import Amplify
import AWSCognitoAuthPlugin
let config = AmplifyOutputsData(
auth: .init(
awsRegion: "us-east-1",
userPoolId: "us-east-1_abc123",
userPoolClientId: "abcdef123456"
)
)
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.configure(config)

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

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

Auth(Amazon Cognito)を設定する

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

let config = AmplifyOutputsData(
auth: .init(
awsRegion: "us-east-1",
userPoolId: "us-east-1_abc123",
userPoolClientId: "abcdef123456",
identityPoolId: "us-east-1:11111111-2222-3333-4444-555555555555",
passwordPolicy: .init(
minLength: 8,
requireNumbers: true,
requireLowercase: true,
requireUppercase: true,
requireSymbols: false
),
oauth: .init(
identityProviders: ["GOOGLE", "SIGN_IN_WITH_APPLE"],
domain: "myapp.auth.us-east-1.amazoncognito.com",
scopes: ["openid", "email", "profile"],
redirectSignInUri: ["myapp://callback"],
redirectSignOutUri: ["myapp://signout"],
responseType: "code"
),
standardRequiredAttributes: [.email],
usernameAttributes: [.email],
userVerificationTypes: [.email],
unauthenticatedIdentitiesEnabled: true,
mfaConfiguration: "OPTIONAL",
mfaMethods: ["SMS", "TOTP"]
)
)
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try 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に接続します。

let config = AmplifyOutputsData(
data: .init(
awsRegion: "us-east-1",
url: "https://abc123.appsync-api.us-east-1.amazonaws.com/graphql",
apiKey: "da2-abcdefghijklmno",
defaultAuthorizationType: .apiKey,
authorizationTypes: [.apiKey, .amazonCognitoUserPools]
)
)
try Amplify.add(plugin: AWSAPIPlugin())
try 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バケットに接続します。

let config = AmplifyOutputsData(
auth: .init(
awsRegion: "us-east-1",
userPoolId: "us-east-1_abc123",
userPoolClientId: "abcdef123456",
identityPoolId: "us-east-1:11111111-2222-3333-4444-555555555555"
),
storage: .init(
awsRegion: "us-east-1",
bucketName: "my-app-bucket"
)
)
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSS3StoragePlugin())
try Amplify.configure(config)

複数のバケット

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

let config = AmplifyOutputsData(
analytics: .init(
amazonPinpoint: .init(
awsRegion: "us-east-1",
appId: "abc123def456"
)
)
)
try Amplify.add(plugin: AWSPinpointAnalyticsPlugin())
try Amplify.configure(config)

Geo(Amazon Location Service)を設定する

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

let config = AmplifyOutputsData(
geo: .init(
awsRegion: "us-east-1",
maps: .init(
items: ["myMap": .init(style: "VectorEsriStreets")],
default: "myMap"
),
searchIndices: .init(
items: ["myPlaceIndex"],
default: "myPlaceIndex"
),
geofenceCollections: .init(
items: ["myGeofenceCollection"],
default: "myGeofenceCollection"
)
)
)
try Amplify.add(plugin: AWSLocationGeoPlugin())
try Amplify.configure(config)

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

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

let config = AmplifyOutputsData(
notifications: .init(
awsRegion: "us-east-1",
amazonPinpointAppId: "abc123def456",
channels: [.apns, .fcm, .inAppMessaging]
)
)
try Amplify.add(plugin: AWSPinpointPushNotificationsPlugin())
try Amplify.configure(config)

マルチカテゴリ設定

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

let config = AmplifyOutputsData(
auth: .init(
awsRegion: "us-east-1",
userPoolId: "us-east-1_abc123",
userPoolClientId: "abcdef123456",
identityPoolId: "us-east-1:11111111-2222-3333-4444-555555555555"
),
data: .init(
awsRegion: "us-east-1",
url: "https://abc123.appsync-api.us-east-1.amazonaws.com/graphql",
defaultAuthorizationType: .amazonCognitoUserPools,
authorizationTypes: [.amazonCognitoUserPools, .awsIAM]
),
storage: .init(
awsRegion: "us-east-1",
bucketName: "my-app-bucket"
)
)
try Amplify.add(plugin: AWSCognitoAuthPlugin())
try Amplify.add(plugin: AWSAPIPlugin())
try Amplify.add(plugin: AWSS3StoragePlugin())
try Amplify.configure(config)

解決済み設定の検査

amplify_outputs.jsonから解決された設定を検査できます:

let outputs = try AmplifyOutputs.amplifyOutputs.resolveConfiguration()
if let auth = outputs.auth {
print("User Pool ID: \(auth.userPoolId)")
print("Region: \(auth.awsRegion)")
print("Identity Pool: \(auth.identityPoolId ?? "none")")
}
if let storage = outputs.storage {
print("Bucket: \(storage.bucketName)")
print("Additional buckets: \(storage.buckets?.count ?? 0)")
}
if let data = outputs.data {
print("GraphQL endpoint: \(data.url)")
print("Default auth: \(data.defaultAuthorizationType)")
}

環境固有の設定

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

let region: String
let userPoolId: String
let clientId: String
switch environment {
case .dev:
region = "us-east-1"
userPoolId = "us-east-1_dev123"
clientId = "devClient123"
case .staging:
region = "us-west-2"
userPoolId = "us-west-2_staging456"
clientId = "stagingClient456"
case .prod:
region = "us-east-1"
userPoolId = "us-east-1_prod789"
clientId = "prodClient789"
}
let config = AmplifyOutputsData(
auth: .init(
awsRegion: region,
userPoolId: userPoolId,
userPoolClientId: clientId
)
)
try Amplify.configure(config)

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

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