メニュー
Amazon API Gateway
開発者ガイド

Amazon API Gateway Lambda オーソライザーからの出力

Lambda オーソライザーの Lambda 関数は、プリンシパル ID (principalId) を含む必要がある出力と、ポリシーステートメントのリストを含むポリシードキュメント (policyDocument) を返します。出力には、キー/値ペアを含む context マップも含まることがあります。API に使用量プランが立てられている場合、メソッドには API キーが必要で、apiKeySourceAUTHORIZER に設定されます。Lambda オーソライザー Lambda 関数も usageIdentifierKey プロパティ値として使用量プランの API キーを返す必要があります。

この出力の例を以下に示します。

{   "principalId": "yyyyyyyy", // The principal user identification associated with the token sent by the client. "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Allow|Deny", "Resource": "arn:aws:execute-api:{regionId}:{accountId}:{appId}/{stage}/{httpVerb}/[{resource}/[child-resources]]" } ] }, "context": { "stringKey": "value", "numberKey": "1", "booleanKey": "true" }, "usageIdentifierKey": "{api-key}" }

ここで、ポリシーステートメントは、指定された API メソッド (Resource) を呼び出す (Action) ことを API Gateway 実行サービスに許可するか拒否するか (Effect) を指定しています。ワイルドカード (*) を使ってリソースタイプ (メソッド) を指定できます。API を呼び出す有効なポリシーの設定の詳細については、「API Gateway で API を実行するための IAM ポリシーのステートメントの参照」を参照してください。

権限付与対応のメソッド AR (arn:aws:execute-api:{region-id}:{account-id}:{api-id}/{stage-id}/{method}/{resource}/{path} など) の場合、最大長は 1600 バイトです。パスパラメーターの値 (そのサイズは実行時に決定されます) によっては、ARN の長さが制限を超えることがあります。これが発生した場合、API クライアントは 414 Request URI too long レスポンスを受け取ります。

さらに、リソース ARN は、承認者によって出力されたポリシーステートメントに示されているように、現在 512 文字に制限されています。このため、JWT トークンが長すぎる URI をリクエスト URI に使用しないでください。代わりに、JWT トークンはリクエストヘッダーで安全に渡すことができます。

principalId 値には、マッピングテンプレートで $context.authorizer.principalId 変数を使ってアクセスできます。これはバックエンドに値を渡す場合に便利です。詳細については、「$context 変数へのアクセス」を参照してください。

マッピングテンプレート内の context マップの stringKeynumberKey、または booleanKey 値 (例: "value""1"、または "true") には、それぞれ $context.authorizer.stringKey$context.authorizer.numberKey、または $context.authorizer.booleanKey を呼び出すことによりアクセスできます。返される値は、すべてが文字列化されます。context マップでキーの有効な値として JSON オブジェクトまたは配列を設定することはできません。

{api-key} は、API ステージに関連付けられた使用量プランの API キーを表します。詳細については、「API Gateway 使用量プランの作成と使用」を参照してください。

Lambda オーソライザー例からの出力例を次に示します。この出力例は、あらゆるステージ (*) で AWS アカウント (123456789012) の API (ymy8tbxw7b) の GET メソッドに対する呼び出すのをブロック (Deny) するポリシーステートメントを示しています。

{ "principalId": "user", "policyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": "execute-api:Invoke", "Effect": "Deny", "Resource": "arn:aws:execute-api:us-west-2:123456789012:ymy8tbxw7b/*/GET/" } ] } }