Amplify生成リソースの修正
Amplify Storage は S3 と DynamoDB などの基礎となる AWS サービスとリソースを使用しています。これらの基礎となるリソースをご自身のユースケースに合わせてカスタマイズできます。
amplify override storage上記のコマンドを実行して、S3 バケット、DynamoDB テーブルなど、Amplify生成のストレージリソースをオーバーライドします。
このコマンドは amplify/backend/storage/<resource-name>/ の下に新しい overrides.ts ファイルを作成します。このファイルは、Amplify生成のリソースを CDK コンストラクト として提供します。
Amplify生成の S3 リソースのカスタマイズ
すべてのオーバーライドを override(...) 関数に適用します。例えば、S3 バケットでバージョニングを有効にするには:
import { AmplifyS3ResourceTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyS3ResourceTemplate) { resources.s3Bucket.versioningConfiguration = { status: 'Enabled' };}Amplify が生成する以下の S3 関連リソースをオーバーライドできます:
| Amplify生成リソース | 説明 |
|---|---|
| s3Bucket | amplify add storage 実行時に Amplify が生成するファイルストレージ用 S3 バケット |
| s3AuthPublicPolicy | 認証済みユーザーの public/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3AuthProtectedPolicy | 認証済みユーザーの protected/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3AuthPrivatePolicy | 認証済みユーザーの private/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3AuthUploadPolicy | 認証済みユーザーの uploads/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3AuthReadPolicy | 認証済みユーザーの読み取りアクセス用 IAM ポリシー |
| s3GuestPublicPolicy | ゲストユーザーの public/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3GuestUploadPolicy | ゲストユーザーの uploads/* プレフィックスへの書き込みアクセス用 IAM ポリシー |
| s3GuestReadPolicy | ゲストユーザーの読み取りアクセス用 IAM ポリシー |
例えば、amplify override storage を使用して、S3 バケットのデフォルトの public Auth ポリシーに追加の PUT と GET アクセス IAM ポリシーステートメントを追加できます:
import { AmplifyS3ResourceTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyS3ResourceTemplate) { resources.s3AuthPublicPolicy.policyDocument.Statement = [ ...resources.s3AuthPublicPolicy.policyDocument.Statement, { Effect: 'Allow', Action: ['s3:PutObject', 's3:PutObjectAcl', 's3:GetObject'], Resource: '<ARN of the S3 resource>' } ];}Amazon S3 のアクション、リソース、および条件キーの詳細については、IAM ドキュメントを参照してください。
Amplify生成の DynamoDB テーブルのカスタマイズ
すべてのオーバーライドを override(...) 関数に適用します。例えば、DynamoDB テーブルでタイムトゥリーブ仕様を有効にするには:
import { AmplifyDDBResourceTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyDDBResourceTemplate) { resources.dynamoDBTable.timeToLiveSpecification = { attributeName: 'ttl', enabled: true };}Amplify が生成する以下の DynamoDB リソースをオーバーライドできます:
| Amplify生成リソース | 説明 |
|---|---|
| dynamoDBTable | amplify add storage 実行時に Amplify が作成する DynamoDB テーブル |