はじめに
AWSのCognitoのCFnがよく理解できておらず、少し修正するとエラーが発生するのでメモ。
元々作成していたCFnをアップデートしたら壊れました。なんでや!
エラー
Property validation failure: [Encountered unsupported properties in {/AdminCreateUserConfig}: [TemporaryPasswordValidityDays]]
元々動いてたCFn.yaml
CognitoUserPool:
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: "user-pool"
AliasAttributes:
- email
AutoVerifiedAttributes:
- email
Policies:
PasswordPolicy:
MinimumLength: 8
RequireUppercase: true
RequireLowercase: true
RequireNumbers: true
RequireSymbols: true
MfaConfiguration: 'OFF'
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false
UnusedAccountValidityDays: 7
エラーが発生したCFn.yaml
CognitoUserPool:
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: "user-pool"
AliasAttributes:
- email
AutoVerifiedAttributes:
- email
Policies:
PasswordPolicy:
MinimumLength: 8
RequireUppercase: true
RequireLowercase: true
RequireNumbers: true
RequireSymbols: true
MfaConfiguration: 'ON'
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false
UnusedAccountValidityDays: 7
解決
UserPoolClientを作成すると、「MfaConfiguration: 'ON'」が指定できない。
「OPTIONAL」なら指定可能。
ドキュメントには書いてない。
以下を参照して解決.
UserPoolClientを作成すると「AdminCreateUserConfig」の「UnusedAccountValidityDays」は使用出来ないらしい。
ドキュメントに書いてました。
解決したコード
CognitoUserPool:
Type: "AWS::Cognito::UserPool"
Properties:
UserPoolName: !Sub "${ServiceName}-users-pool"
AliasAttributes:
- email
AutoVerifiedAttributes:
- email
Policies:
PasswordPolicy:
MinimumLength: 8
RequireUppercase: true
RequireLowercase: true
RequireNumbers: true
RequireSymbols: true
MfaConfiguration: 'OPTIONAL'
EnabledMfas:
- SOFTWARE_TOKEN_MFA
AccountRecoverySetting:
RecoveryMechanisms:
- Name: verified_email
Priority: 1
AdminCreateUserConfig:
AllowAdminCreateUserOnly: false