バグレポートの場合:
cognito-user-pool.yml
Resources:
CognitoUserPool:
Type: AWS::Cognito::UserPool
Properties:
# Generate a name based on the stage
UserPoolName: ${self:provider.stage}MyUserPool
serverless.yml
functions:
preSignUp:
handler: presignup.handler
events:
- cognitoUserPool:
pool: ${self:provider.stage}MyUserPool
trigger: PreSignUp
resources:
- ${file(resources/cognito-user-pool.yml)}
最終的に、同じ名前の2つのUserPoolが作成され、1つはトリガー関数が添付され、もう1つはポリシーが添付され、cognito-user-poolで定義するその他のものが作成されます。
類似または依存する問題:
「サーバーレス」:「1.30.3」
同じ問題を抱えています。 いつ解決に達する可能性があるのか知りたいですか?
私もこの問題を抱えており、ドキュメントの例やその他のクローズされた問題に従って解決することができません
@ Ccastillo06そうすることで問題を修正することができました...(太字の部分は重要な部分です。これは、すべての問題を経験した後でもうまくいきました。
CognitoUserPoolMyUserPool:
タイプ:AWS :: Cognito :: UserPool
プロパティ:
UserPoolName:mypool _ $ { self:provider.stage } _auth_pool
UsernameAttributes:
- Eメール
スキーマ:
-名前:given_name
AttributeDataType:文字列
可変:true
必須:true
-名前:family_name
AttributeDataType:文字列
可変:true
必須:true
-名前:メール
AttributeDataType:文字列
可変:false
必須:true
-名前:phone_number
AttributeDataType:文字列
可変:true
必須:true
AutoVerifiedAttributes:
- Eメール
postConfirmation:
ハンドラー:..
メモリー容量: ...
イベント:
-http:
道: ...
メソッド:置く
統合:ラムダ
cors:true
承認者:
タイプ:COGNITO_USER_POOLS
authorizerId:
参照:ApiGatewayAuthorizer
--cognitoUserPool:プール:MyUserPoolトリガー:PostConfirmation
あなたのソリューションは魅力的な@robotlemonsのように
私にとって本当に混乱した部分は、ドキュメントがCognitoUserPool
を常にMyUserPool
と呼んでいて、 CognitoUserPool
を設定していたことUserPoolName: ${self:provider.stage}-user-pool
。そのため、ラムダを宣言するときに考えました。 、次のことを行う必要があります。
- cognitoUserPool:
pool: ${self:provider.stage}-user-pool
trigger: PostConfirmation
この方法で両方に同じ名前を設定していると思いましたが、ここで重要なのは、 pool
属性にCognitoUserPoolと同じ値を付けることです。したがって、ドキュメントでMyUserPool
として設定されているのはなぜですか。
だから私はついにcognito-user-pool.yml
ユーザープールを次のように宣言しました:
Resources:
CognitoUserPoolMyUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: ${self:provider.stage}-user-pool
そしてserverless.yml
では、ラムダは次のように宣言されています。
postConfirmation:
handler: src/cognito/postConfirmation.handler
events:
- cognitoUserPool:
pool: MyUserPool // Notice that this one is the declared name of my pool CognitoUserPoolMyUserPool but without the CognitoUserPool part.
trigger: PostConfirmation
これが将来誰か他の人に役立つことを願っています!
よろしくお願いします! 💯
@ Ccastillo06
申し訳ありませんが、私は非常に混乱しており、いくつかの助けが欲しいです。
したがって、PostConfirmation宣言のcognitoUserPoolイベントセクションにあります。 'pool'の値はどうあるべきですか? ユーザープールの実際の名前を試しましたが、新しいユーザープールが作成され続けています。 また、「リソース」(あなたの場合は「CognitoUserPoolMyUserPool」)のすぐ下の値を試しました。
'pool'値で、CognitoUserPool部分なしで 'MyUserPool'を入力したと言いましたが、私のリソース名が異なります。 それで、私の名前はどうあるべきですか? フルネームを試しましたが、うまくいきません。
@ Studio2133
Resources:
CognitoUserPoolMyUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: ${self:provider.stage}-user-pool
この例では、CognitoUserPoolの後にあるものをプール値として使用します。 この場合、MyUserPoolになります
@robotlemons迅速な対応ありがとうございます!
したがって、リソースの名前を変更する必要があります。 現在、CognitoUserPoolで始まるものはありません。 現在は、MycompanyUserPoolと呼ばれています。 次のように変更します:CognitoUserPoolMyCompanyUserPool ...それは正しいですか?
はい
私のiPhoneから送信された
2019年4月11日には、12:33で、Studio2133 [email protected]書きました:
@robotlemons迅速な対応ありがとうございます!
したがって、リソースの名前を変更する必要があります。 現在、CognitoUserPoolで始まるものはありません。 現在は、MycompanyUserPoolと呼ばれています。 次のように変更します:CognitoUserPoolMyCompanyUserPool ...それは正しいですか?
—
あなたが言及されたのであなたはこれを受け取っています。
このメールに直接返信するか、GitHubで表示するか、スレッドをミュートしてください。
Studio2133 @あなたのケースでは、あなただけの追加、@robotlemonsが言ったことを行う必要がありますCognitoUserPool
自分の実際のユーザのプールの名前の前にMycompanyUserPool
。
したがって、最終的には、そのプール名にCognitoUserPoolMycompanyUserPool
が必要になります。
したがって、 cognito-user-pool.yml
ユーザープール定義は次のようになります。
Resources:
CognitoUserPoolMycompanyUserPool:
Type: AWS::Cognito::UserPool
Properties:
UserPoolName: ${self:provider.stage}-user-pool
そして、 serverless.yml
のラムダトリガー定義は次のようになります。
postConfirmation:
handler: src/cognito/postConfirmation.handler
events:
- cognitoUserPool:
pool: MycompanyUserPool
trigger: PostConfirmation
最新のプロジェクト( PostConfirmation
トリガーを使用してAWSから他のラムダとサービスを呼び出す)でこれを正常に機能させましたが、まったく問題はありませんでした。
AWSコントロールパネルで混乱が生じないように、固定プールを作成する前に、重複するすべてのプールを削除することを忘れないでください。
これがお役に立てば、問題が解決することを願っています。
@ Studio2133
cognitoUserPoolイベントをラムダに追加すると、サーバーレスは新しいCognitoユーザープールを自動的に生成し、生成されたCloudFormationテンプレートに追加します。 このプールのCloudFormation論理リソース名はCognitoUserPool {normalizedPoolId}です。ここで、normalizedPoolIdは、cognitoUserPoolイベントでプールに指定する名前です。 これは、トリガーが接続されるプールです。 リソースで宣言する独自のプールにトリガーを接続するために、この命名規則を利用して、cognitoUserPoolイベントを追加することによって生成されたプールをオーバーライドできます。 これを行うには、リソースセクションでプールの論理リソース名としてCognitoUserPool {normalizedPoolId}を使用する必要があります。 これにより、サーバーレスは新しいプールを生成する代わりに、このプールを使用してトリガーを接続します。
このアプローチの詳細については、この記事を参照し
最も参考になるコメント
あなたのソリューションは魅力的な@robotlemonsのように
私にとって本当に混乱した部分は、ドキュメントが
CognitoUserPool
を常にMyUserPool
と呼んでいて、CognitoUserPool
を設定していたことUserPoolName: ${self:provider.stage}-user-pool
。そのため、ラムダを宣言するときに考えました。 、次のことを行う必要があります。この方法で両方に同じ名前を設定していると思いましたが、ここで重要なのは、
pool
属性にCognitoUserPoolと同じ値を付けることです。したがって、ドキュメントでMyUserPool
として設定されているのはなぜですか。だから私はついに
cognito-user-pool.yml
ユーザープールを次のように宣言しました:そして
serverless.yml
では、ラムダは次のように宣言されています。これが将来誰か他の人に役立つことを願っています!
よろしくお願いします! 💯