Amplify生成のAWSリソースを変更する
Amplify GraphQL APIは、様々な自動生成された基盤となるAWSサービスとリソースを使用します。これらの基盤となるリソースをカスタマイズして、デプロイされたスタックを特定のユースケースに最適化できます。
Amplifyアプリでは、CDK"L2"または"L1"構築物を使用してすべての基盤となるリソースにアクセスできます。返されたスタックの.resourcesプロパティを使用してL2構築物として生成されたリソースにアクセスするか、.resources.cfnResourcesプロパティを使用してL1構築物として生成されたリソースにアクセスしてください。
import { defineBackend } from '@aws-amplify/backend';import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
for (const table of Object.values(cfnResources.amplifyDynamoDbTables)) { table.pointInTimeRecoveryEnabled = true;}Amplify生成のAppSync GraphQL APIリソースのカスタマイズ
すべてのカスタマイズをbackend.data.resources.graphqlApiまたはbackend.data.resources.cfnResources.cfnGraphqlApiに適用してください。例えば、AppSync GraphQL APIのX-Rayトレーシングを有効にするには:
import { defineBackend } from '@aws-amplify/backend';import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
cfnResources.cfnGraphqlApi.xrayEnabled = true;データモデル用のAmplify生成リソースのカスタマイズ
モデル型名をbackend.data.resources.amplifyDynamoDbTables["MODEL_NAME"]に渡して、その特定のモデル型に対して生成されたリソースを変更してください。例えば、Todo @model型のDynamoDBテーブルでタイムトゥリブを有効にするには:
import { defineBackend } from '@aws-amplify/backend';import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
cfnResources.amplifyDynamoDbTables["Todo"].timeToLiveAttribute = { attributeName: "ttl", enabled: true,};例 - DynamoDBテーブルの請求モードを設定する
DynamoDBテーブルのDynamoDB請求モードを「PROVISIONED」または「PAY_PER_REQUEST」に設定してください。
import { defineBackend } from '@aws-amplify/backend';import { BillingMode } from "aws-cdk-lib/aws-dynamodb";import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
cfnResources.amplifyDynamoDbTables['Todo'].billingMode = BillingMode.PAY_PER_REQUEST;例 - DynamoDBテーブルのプロビジョニング済みスループットを設定する
各モデルテーブルとそのグローバルセカンダリインデックス(GSI)にプロビジョニングされたデフォルトProvisionedThroughputをオーバーライドしてください。このオーバーライドは、「DynamoDBBillingMode」が「PROVISIONED」に設定されている場合にのみ有効です。
import { defineBackend } from '@aws-amplify/backend';import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
cfnResources.amplifyDynamoDbTables["Todo"].provisionedThroughput = { readCapacityUnits: 5, writeCapacityUnits: 5,};例 - DynamoDBテーブルのポイントインタイムリカバリを有効にする
各モデルテーブルのDynamoDBポイントインタイムリカバリを有効/無効にしてください。
import { defineBackend } from '@aws-amplify/backend';import { data } from './data/resource';
const backend = defineBackend({ data});
const { cfnResources } = backend.data.resources;
cfnResources.amplifyDynamoDbTables['Todo'].pointInTimeRecoveryEnabled = true;