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 22, 2025

クライアントライブラリの設定

aws-amplify クライアントライブラリは、AWS Lambda ランタイムから利用可能な認証情報を使用して function ハンドラーファイル内で使用するように設定できます。開始するには、バックエンド実行時パッケージから getAmplifyDataClientConfig を使用し、生成された env オブジェクトを渡して、事前に設定された resourceConfiglibraryOptions を取得します。

amplify/my-function/handler.ts
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { env } from '$amplify/env/my-function';
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(
env
);

getAmplifyDataClientConfig を使用する場合、function には Amplify デプロイ済み Amazon S3 バケットに保存されたスキーマ情報が必要です。このバケットはバックエンドのデプロイ中に作成され、function のための必要なアクセス権限が含まれています。バックエンドのデプロイプロセス外でこのバケットを変更すると、function で予期しないエラーが発生する可能性があります。

resourceConfiglibraryOptionsAmplify.configure に渡すために返されます。これにより、クライアントライブラリが相互作用できるリソースと、それらのリソースへのリクエストに署名するときに使用する AWS 認証情報を取得する場所を指定します。

amplify/my-function/handler.ts
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';
import { Amplify } from 'aws-amplify';
import { env } from '$amplify/env/my-function';
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig(
env
);
Amplify.configure(resourceConfig, libraryOptions);

クライアントライブラリは、function の IAM ロールで指定された他の AWS リソースに対して操作を実行するためのアクセス権を取得します。これは access プロパティを使用して他のリソースへのアクセスを付与する場合に自動的に処理されますが、CDK を使用して拡張することもできます。

内部動作

getAmplifyDataClientConfig function は、生成された env オブジェクトから読み取り、function がアクセス可能になっているリソースのための設定を生成するために、Amplify.configure に渡す引数の値を作成するのに役立ちます。内部的には、これはクライアントライブラリがどのように動作するべきかを指定する設定も生成しており、特にライブラリが認証情報を読み取る場所を指定しています。

amplify/my-function/handler.ts
import { env } from "$amplify/env/my-function";
Amplify.configure(
{/* resource configuration */},
{
Auth: {
credentialsProvider: {
// クライアントライブラリに環境から認証情報を読み取るよう指示します
getCredentialsAndIdentityId: async () => ({
credentials: {
accessKeyId: env.AWS_ACCESS_KEY_ID,
secretAccessKey: env.AWS_SECRET_ACCESS_KEY,
sessionToken: env.AWS_SESSION_TOKEN,
},
}),
clearCredentialsAndIdentityId: () => {
/* noop */
},
},
},
}
);