クライアントライブラリの設定
aws-amplify クライアントライブラリは、AWS Lambda ランタイムから利用可能な認証情報を使用して function ハンドラーファイル内で使用するように設定できます。開始するには、バックエンド実行時パッケージから getAmplifyDataClientConfig を使用し、生成された env オブジェクトを渡して、事前に設定された resourceConfig と libraryOptions を取得します。
import { getAmplifyDataClientConfig } from '@aws-amplify/backend/function/runtime';import { env } from '$amplify/env/my-function';
const { resourceConfig, libraryOptions } = await getAmplifyDataClientConfig( env);resourceConfig と libraryOptions は Amplify.configure に渡すために返されます。これにより、クライアントライブラリが相互作用できるリソースと、それらのリソースへのリクエストに署名するときに使用する AWS 認証情報を取得する場所を指定します。
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 に渡す引数の値を作成するのに役立ちます。内部的には、これはクライアントライブラリがどのように動作するべきかを指定する設定も生成しており、特にライブラリが認証情報を読み取る場所を指定しています。
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 */ }, }, }, });