Name:
interface
Value:
Amplify has re-imagined the way frontend developers build fullstack applications. Develop and deploy without the hassle.

Page updated Apr 30, 2024

Maintenance ModeYou are viewing Amplify Gen 1 documentation. Amplify Gen 1 has entered maintenance mode and will reach end of life on May 1, 2027. New project should use Amplify Gen 2. For existing Gen 1 projects, a migration guide and tooling are available to help you upgrade. Switch to the latest Gen 2 docs →

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 ユーザープールにカスタム属性を追加します:

Cognito ユーザープールスキーマから属性を削除または追加(デフォルト属性 (email など) を含む)すると、CloudFormationがこれをスキーマ変更と解釈し、Invalid AttributeDataType input, consider using the provided AttributeDataType enum などのエラーが発生します。

カスタム属性は、作成後に名前を変更または削除することはできません。

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 ユーザープール
userPoolClientWebWebアプリ用のCognito ユーザープールクライアント
userPoolClientモバイルアプリ用のCognito ユーザープールクライアント
identityPoolアイデンティティをフェデレートするためのCognito アイデンティティプール
identityPoolRoleMap認証ユーザーと非認証ユーザーロールのロールマッピング
lambdaConfigPermissionsLambda関数がCognito ユーザープールとアイデンティティプールにアクセスするための権限
lambdaTriggerPermissionsCognito Lambda トリガーに添付されるIAMポリシー
userPoolClientLambdaユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数
userPoolClientRoleユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数用のIAMロール
userPoolClientLambdaPolicyユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数用のIAMポリシー
userPoolClientLogPolicyユーザープールクライアントからアプリクライアントシークレットを取得するLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
userPoolClientInputsユーザープールクライアントからアプリクライアントシークレットを取得するためのカスタムCloudFormationリソース
hostedUICustomResourceCognito ユーザープールホストされたUIログインを有効にするLambda関数
hostedUICustomResourcePolicyCognito ユーザープールホストされたUIログインを有効にするLambda関数用のIAMポリシー
hostedUICustomResourceLogPolicyCognito ユーザープールホストされたUIログインを有効にするLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
hostedUICustomResourceInputsCognito ユーザープールホストされたUIログインを有効にするためのカスタムCloudFormationリソース
hostedUIProvidersCustomResourceホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数
hostedUIProvidersCustomResourcePolicyホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数用のIAMポリシー
hostedUIProvidersCustomResourceLogPolicyホストされたUIを第三者のアイデンティティプロバイダーで設定するLambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
hostedUIProvidersCustomResourceInputsホストされたUIを第三者のアイデンティティプロバイダーで設定するためのカスタムCloudFormationリソース
oAuthCustomResourceOAuthを有効にするLambda関数
oAuthCustomResourcePolicyOAuth カスタムCloudFormationリソース用のIAMポリシー
oAuthCustomResourceLogPolicyOAuth Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
oAuthCustomResourceInputsOAuthを有効にするためのカスタムCloudFormationリソース
mfaLambda多要素認証機能を有効にするLambda関数
mfaLogPolicy多要素認証Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
mfaLambdaPolicy多要素認証Lambda関数用のIAMポリシー
mfaLambdaInputs多要素認証を有効にするためのカスタムCloudFormationリソース
mfaLambdaRole多要素認証Lambda関数用のIAM実行ロール
openIdLambdaOpenID Connectを有効にするLambda関数
openIdLogPolicyOpenID Connect Lambda関数のCloudWatchログ記録を有効にするためのIAMポリシー
openIdLambdaIAMPolicyOpenID Connect Lambda関数を有効にするためのIAMポリシー
openIdLambdaInputsOpenID Connectを有効にするためのカスタムCloudFormationリソース
openIdLambdaRoleOpenID 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"
);
}