Amplify生成的Cognito リソースをオーバーライドする
amplify override auth上記のコマンドを実行して、Amazon Cognito ユーザープール、アイデンティティプール、ユーザープールグループなど、Amplify生成の認証リソースをオーバーライドします。
このコマンドは、amplify/backend/auth/<resource-name>/ の下に新しい overrides.ts ファイルを作成し、Amplify生成のリソースを CDK構築物 として提供します。
Amplify生成のCognito認証リソースをカスタマイズする
override(...) 関数内ですべてのオーバーライドを適用します。例えば、Cognito ユーザープールの一時パスワード有効日数を更新する場合:
import { AmplifyAuthCognitoStackTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyAuthCognitoStackTemplate) { resources.userPool.policies = { // Set the user pool policies passwordPolicy: { ...resources.userPool.policies["passwordPolicy"], // Carry over existing settings temporaryPasswordValidityDays: 3 // Add new setting not provided Amplify's default } }}または、Cognito ユーザープールにカスタム属性を追加します:
import { AmplifyAuthCognitoStackTemplate } from '@aws-amplify/cli-extensibility-helper'
export function override(resources: AmplifyAuthCognitoStackTemplate) { const myCustomAttribute = { attributeDataType: 'String', developerOnlyAttribute: false, mutable: true, name: 'my_custom_attribute', required: false, } resources.userPool.schema = [ ...(resources.userPool.schema as any[]), // Carry over existing attributes (example: email) myCustomAttribute, ]}Amplifyが生成する以下の認証リソースをオーバーライドできます:
| Amplify生成リソース | 説明 |
|---|---|
| customMessageConfirmationBucket | カスタムメッセージトリガー用に使用されるS3バケット |
| snsRole | 認証関連メッセージを送信するためのSNSロール |
| userPool | ユーザーのサインアップとサインインを有効にするCognito ユーザープール |
| userPoolClientWeb | Webアプリ用のCognito ユーザープールクライアント |
| userPoolClient | モバイルアプリ用のCognito ユーザープールクライアント |
| identityPool | アイデンティティをフェデレートするためのCognito アイデンティティプール |
| identityPoolRoleMap | 認証ユーザーと非認証ユーザーロールのロールマッピング |
| lambdaConfigPermissions | Lambda関数がCognito ユーザープールとアイデンティティプールにアクセスするための権限 |
| lambdaTriggerPermissions | Cognito Lambda トリガーに添付されるIAMポリシー |
| userPoolClientLambda | ユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数 |
| userPoolClientRole | ユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数用のIAMロール |
| userPoolClientLambdaPolicy | ユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数用のIAMポリシー |
| userPoolClientLogPolicy | ユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| userPoolClientInputs | ユーザープールクライアントからアプリクライアントシークレットを取得するためのカスタムCloudFormationリソース |
| hostedUICustomResource | Cognito ユーザープールホストされたUIログインを有効にするLambda関数 |
| hostedUICustomResourcePolicy | Cognito ユーザープールホストされたUIログインを有効にするLambda関数用のIAMポリシー |
| hostedUICustomResourceLogPolicy | Cognito ユーザープールホストされたUIログインを有効にするLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| hostedUICustomResourceInputs | Cognito ユーザープールホストされたUIログインを有効にするためのカスタムCloudFormationリソース |
| hostedUIProvidersCustomResource | ホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数 |
| hostedUIProvidersCustomResourcePolicy | ホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数用のIAMポリシー |
| hostedUIProvidersCustomResourceLogPolicy | ホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| hostedUIProvidersCustomResourceInputs | ホストされたUIを第三者のアイデンティティプロバイダーで設定するためのカスタムCloudFormationリソース |
| oAuthCustomResource | OAuthを有効にするLambda関数 |
| oAuthCustomResourcePolicy | OAuth カスタムCloudFormationリソース用のIAMポリシー |
| oAuthCustomResourceLogPolicy | OAuth Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| oAuthCustomResourceInputs | OAuthを有効にするためのカスタムCloudFormationリソース |
| mfaLambda | 多要素認証機能を有効にするLambda関数 |
| mfaLogPolicy | 多要素認証Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| mfaLambdaPolicy | 多要素認証Lambda関数用のIAMポリシー |
| mfaLambdaInputs | 多要素認証を有効にするためのカスタムCloudFormationリソース |
| mfaLambdaRole | 多要素認証Lambda関数用のIAM実行ロール |
| openIdLambda | OpenID Connectを有効にするLambda関数 |
| openIdLogPolicy | OpenID Connect Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー |
| openIdLambdaIAMPolicy | OpenID Connect Lambda関数を有効にするためのIAMポリシー |
| openIdLambdaInputs | OpenID Connectを有効にするためのカスタムCloudFormationリソース |
| openIdLambdaRole | OpenID Connect Lambda関数用のLambda実行ロール |
Amplify生成のCognitoユーザーグループリソースをカスタマイズする
override(...) 関数内ですべてのオーバーライドを適用します。例えば、ユーザープールグループのロールマッピングを促進するLambda実行ロールにパスを追加する場合:
import { AmplifyUserPoolGroupStackTemplate } from '@aws-amplify/cli-extensibility-helper';
export function override(resources: AmplifyUserPoolGroupStackTemplate) { resources.lambdaExecutionRole.path = "/<my-path>/" // Note: CFN does not allow you to modify the path after creation}Amplifyが生成する以下のユーザープールグループリソースをオーバーライドできます:
| Amplify生成リソース | 説明 |
|---|---|
| userPoolGroup | ユーザープールグループのマップ |
| userPoolGroupRole | ユーザープールグループロールのマップ |
| roleMapCustomResource | ユーザープールグループをロールにマップするためのカスタムCloudFormationリソース |
| lambdaExecutionRole | 「ユーザープールグループ」から「ロール」へのマッピング関数のLambda実行ロール |
| roleMapLambdaFunction | ユーザープールグループのロールマッピングを促進するLambda関数 |
ソーシャルプロバイダーを使用するAmplify生成のCognito認証リソースをカスタマイズする
override(...) 関数内ですべてのオーバーライドを適用します。例えば、Cognito ユーザープールにソーシャルプロバイダーを追加する場合:
import { AmplifyAuthCognitoStackTemplate } from "@aws-amplify/cli-extensibility-helper";
export function override(resources: AmplifyAuthCognitoStackTemplate) { resources.addCfnResource( { type: "AWS::Cognito::UserPoolIdentityProvider", properties: { AttributeMapping: { preferred_username: "email", email: "email" }, ProviderDetails: { client_id: "test", client_secret: "test", authorize_scopes: "test", }, ProviderName: "LoginWithAmazon", ProviderType: "LoginWithAmazon", UserPoolId: { Ref: "UserPool", }, }, }, "amazon-social-provider" );}