Amplifyが生成したプロジェクトレベルのIAMリソースをオーバーライドする
amplify override project上記のコマンドを実行して、認証済みおよび未認証ユーザーのIAMロールなど、Amplifyが生成したプロジェクトレベルのリソースをオーバーライドします。
このコマンドは、amplify/backend/awscloudformation/の下に新しいoverrides.tsファイルを作成します。このファイルは、Amplifyが生成したリソースをCDK構成として提供します。
override(...)関数内にすべてのオーバーライドを適用します。例えば、認証済みユーザーのIAMロールの名前を変更してパスを追加するには:
import { AmplifyRootStackTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyRootStackTemplate) { resources.authRole.roleName = "myCustomName" resources.authRole.path = "/<my-organization>/" // 注意:CloudFormationでは、リソースを再作成しない場合、パスの更新が制限されます。 // ロール名を変更するとリソースが再作成されます。}Amplifyが生成する次のプロジェクトレベルのリソースをオーバーライドできます:
| Amplifyが生成したリソース | 説明 |
|---|---|
| authRole | アプリバックエンドへの認証済みアクセス用のIAMロール |
| unauthRole | アプリバックエンドへの認証済みまたはゲストアクセス用のIAMロール |
例:authRoleのIAMポリシーを変更する
例えば、amplify override projectを使用して、デフォルトのポリシーステートメントを超えてGeoカテゴリのauthRoleポリシーをさらに変更します:
import { AmplifyRootStackTemplate } from "@aws-amplify/cli-extensibility-helper";
export function override(resources: AmplifyRootStackTemplate) { const authRole = resources.authRole;
const basePolicies = Array.isArray(authRole.policies) ? authRole.policies : [authRole.policies];
authRole.policies = [ ...basePolicies, { policyName: "amplify-permissions-custom-resources", policyDocument: { Version: "2012-10-17", Statement: [ //? ルートカルキュレータ { Resource: "<ARN of Geo>", Action: ["geo:CalculateRoute*"], Effect: "Allow", }, ], }, }, ];}