1. オーソライザーの設定方法
この位置…なんかわかりにくい…
2. Execution failed due to configuration error: Invalid JSON in response
戻りのJSONが良くないのですが、どう良くないかって話ですよね。
とりあえず動かす場合は、
callback(null, { "principalId": "ユーザーを特定できる文字列なら何でも良し", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:*", "Effect": "Allow", // "Resource": "arn:aws:execute-api:ap-northeast-1:000000000000:yourApiGatewayId:*" "Resource": "*" } ] }, "context": { "stringKey": "stringval", "numberKey": 123, "booleanKey": true } }); }
contextにDynamo.getの戻り値(data)をセットするとうまくいかないです!!
"context": data
これハマりました。
(多分だけどJSON.stringify(data)すればいけるんだろうな…と後で思った)
policyDocumentのstatementにはIAMの指定とかではなく、IAMポリシーを作成してそれを指定するわけでもないんですね。
3. カスタムオーソライザーが呼び出されない
コンソール上のテストでは呼び出されるのに、Postmanやcurlだと呼び出されない。
⇒サイドメニュー"リソース" クリック
⇒カスタムオーソライザーを適用したいメソッドをクリック
⇒認証にて、作成したカスタムオーソライザーを指定
全部に自動的に効くわけじゃないんですね。。。面倒。
4. Invalid authorizer ID specified. Setting the authorization type to CUSTOM or COGNITO_USER_POOLS requires a valid authorizer.
画面リフレッシュしたら設定できることもあるかも知れません。
自分の場合は、オーソライザーを同じ名前で作り直したので、裏でそれが更新されていなかったのかも。
5. "Message": "User is not authorized to access this resource" が返ってくる
policyDocumentはちゃんと返してると思ったんですが、
"Resource": "*"
にしたら通りました。
少しづつ狭めて確認していきましょう。