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

Page updated Mar 26, 2026

アプリコードをAPIに接続する

このガイドでは、Amplify ライブラリを使用してアプリケーションコードをバックエンド API に接続します。開始する前に、以下が必要です:

  • クラウドサンドボックスと Amplify Data リソースが実行中(npx ampx sandbox
  • Amplify ライブラリがインストールされたフロントエンドアプリケーション
  • npm がインストール済み

Amplify ライブラリを設定する

バックエンド(npx ampx sandbox)を繰り返し実行すると、amplify_outputs.json ファイルが生成されます。このファイルには API のエンドポイント情報と認証設定が含まれています。以下のコードをアプリのエントリーポイントに追加して、Amplify クライアントライブラリを初期化および設定します:

認可モードを設定する

認可モードは、リクエストをバックエンドでどのように認可するかを決定します。デフォルトでは、Amplify Data は「userPool」認可を使用して、署名されたユーザー認証情報で API リクエストに署名します。データモデルに allow.publicApiKey() 認可ルールを使用している場合は、認可モードとして「apiKey」を使用する必要があります。認可ルールをカスタマイズを確認して、どのタイプのリクエストでどの認可モードを選択するかについて詳しく学んでください。デフォルト認可モードは、デプロイメント成功時に生成される amplify_outputs.json の一部として提供されます。

リクエストレベルで認可モードを設定する

各個別 API リクエストで認可モードを指定することもできます。これは、アプリケーションが通常は 1 つの認可モードを使用し、少数の例外がある場合に便利です。

val query = ModelQuery.list(Todo::class.java) as AppSyncGraphQLRequest<PaginatedResult<Todo>>
val apiKeyQuery = query
.newBuilder()
.authorizationType(AuthorizationType.API_KEY)
.build<PaginatedResult<Todo>>()
Amplify.API.query(apiKeyQuery,
{ Log.i("MyAmplifyApp", "Queried with API key ${it.data}")},
{ Log.e("MyAmplifyApp", "Error querying with API Key")})
val query = ModelQuery.list(Todo::class.java) as AppSyncGraphQLRequest<PaginatedResult<Todo>>
val userPoolQuery = query
.newBuilder()
.authorizationType(AuthorizationType.AMAZON_COGNITO_USER_POOLS)
.build<PaginatedResult<Todo>>()
Amplify.API.query(userPoolQuery,
{ Log.i("MyAmplifyApp", "Queried with Cognito user pool ${it.data}")},
{ Log.e("MyAmplifyApp", "Error querying with Cognito user pool")})
val query = ModelQuery.list(Todo::class.java) as AppSyncGraphQLRequest<PaginatedResult<Todo>>
val iamQuery = query
.newBuilder()
.authorizationType(AuthorizationType.AWS_IAM)
.build<PaginatedResult<Todo>>()
Amplify.API.query(iamQuery,
{ Log.i("MyAmplifyApp", "Queried with AWS IAM ${it.data}")},
{ Log.e("MyAmplifyApp", "Error querying with AWS IAM")})
val query = ModelQuery.list(Todo::class.java) as AppSyncGraphQLRequest<PaginatedResult<Todo>>
val oidcQuery = query
.newBuilder()
.authorizationType(AuthorizationType.OPENID_CONNECT)
.build<PaginatedResult<Todo>>()
Amplify.API.query(oidcQuery,
{ Log.i("MyAmplifyApp", "Queried with OIDC authorization mode ${it.data}")},
{ Log.e("MyAmplifyApp", "Error querying with OIDC authorization mode")})

AWS Lambda 関数を使用して、独自のカスタム API 認可ロジックを実装できます。認可ルールをカスタマイズを確認して、AWS Lambda で認可プロトコルを実装する方法について詳しく学んでください。

val query = ModelQuery.list(Todo::class.java) as AppSyncGraphQLRequest<PaginatedResult<Todo>>
val lambdaQuery = query
.newBuilder()
.authorizationType(AuthorizationType.AWS_LAMBDA)
.build<PaginatedResult<Todo>>()
Amplify.API.query(lambdaQuery,
{ Log.i("MyAmplifyApp", "Queried with AWS Lambda authorizer ${it.data}")},
{ Log.e("MyAmplifyApp", "Error querying with AWS Lambda authorizer")})

カスタムリクエストヘッダーを設定する

Amplify Data エンドポイントを使用する場合、認可目的またはフロントエンドからバックエンド API へのメタデータを渡すためにリクエストヘッダーを設定する必要があるかもしれません。

独自のヘッダーを指定するには、AWSApiPlugin のビルダーで configureClient() 設定オプションを使用します。amplify_outputs.json で設定されているいずれかの API の名前を指定します。以下のようにラムダ式を提供することで、基礎となる OkHttp インスタンスにカスタマイズを適用します。

AWSApiPlugin plugin = AWSApiPlugin.builder()
.configureClient(AWSApiPlugin.DEFAULT_GRAPHQL_API, okHttpBuilder -> {
okHttpBuilder.addInterceptor(chain -> {
Request originalRequest = chain.request();
Request updatedRequest = originalRequest.newBuilder()
.addHeader("customHeader", "someValue")
.build();
return chain.proceed(updatedRequest);
});
})
.build();
Amplify.addPlugin(plugin);
val plugin = AWSApiPlugin.builder()
.configureClient(AWSApiPlugin.DEFAULT_GRAPHQL_API) { okHttpBuilder ->
okHttpBuilder.addInterceptor { chain ->
val originalRequest = chain.request()
val updatedRequest = originalRequest.newBuilder()
.addHeader("customHeader", "someValue")
.build()
chain.proceed(updatedRequest)
}
}
.build()
Amplify.addPlugin(plugin)
val plugin = AWSApiPlugin.builder()
.configureClient(AWSApiPlugin.DEFAULT_GRAPHQL_API) { okHttpBuilder ->
okHttpBuilder.addInterceptor { chain ->
val originalRequest = chain.request()
val updatedRequest = originalRequest.newBuilder()
.addHeader("customHeader", "someValue")
.build()
chain.proceed(updatedRequest)
}
}
.build()
Amplify.addPlugin(plugin)
AWSApiPlugin plugin = AWSApiPlugin.builder()
.configureClient(AWSApiPlugin.DEFAULT_GRAPHQL_API, okHttpBuilder -> {
okHttpBuilder.addInterceptor(chain -> {
Request originalRequest = chain.request();
Request updatedRequest = originalRequest.newBuilder()
.addHeader("customHeader", "someValue")
.build();
return chain.proceed(updatedRequest);
});
})
.build();
RxAmplify.addPlugin(plugin);