POSTリソースを持つ別のLambda関数へのAPI用に構成されたAWSのカスタムオーソライザーラムダ関数があります。
承認ヘッダーでトークンを使用しておらず、代わりに投稿されているフォームデータにアクセスしたいので、承認者はRequest
ではなくタイプToken
で設定されています。
承認者関数のevent
パラメーターの内容を調べると、元のPOST
リクエスト本文(フォームデータ)が表示されません。ただし、リソースをGET
に変更すると、期待どおりにqueryStringParameters
にフォームデータが表示されます。
(リクエストがPOSTの場合、queryStringParameters
は常に空のオブジェクトであることに注意してください)
POST
メソッドを使用する場合、関数内のリクエストからフォームデータにアクセスする方法はありますか?
POSTを使用するときに、承認関数のevent
パラメーターに含まれるものの例を次に示します。
{
type: 'REQUEST',
methodArn: 'arn:aws:execute-api:us-east-1:********:********/dev/POST/receive',
resource: '/receive',
path: '/sms/receive',
httpMethod: 'POST',
headers: {
Accept: '*/*',
'CloudFront-Viewer-Country': 'US',
'CloudFront-Forwarded-Proto': 'https',
'CloudFront-Is-Tablet-Viewer': 'false',
'CloudFront-Is-Mobile-Viewer': 'false',
'User-Agent': 'TwilioProxy/1.1',
'X-Forwarded-Proto': 'https',
'CloudFront-Is-SmartTV-Viewer': 'false',
Host: 'api.myredactedcompany.io',
'X-Forwarded-Port': '443',
'X-Amzn-Trace-Id': 'Root=**************',
Via: '1.1 ***************.cloudfront.net (CloudFront)',
'Cache-Control': 'max-age=259200',
'X-Twilio-Signature': '***************************',
'X-Amz-Cf-Id': '****************************',
'X-Forwarded-For': '[redacted IP addresses]',
'Content-Length': '492',
'CloudFront-Is-Desktop-Viewer': 'true',
'Content-Type': 'application/x-www-form-urlencoded'
},
queryStringParameters: {},
pathParameters: {},
stageVariables: {},
requestContext: {
path: '/sms/receive',
accountId: '************',
resourceId: '*****',
stage: 'dev',
requestId: '5458adda-ce2c-11e7-ba08-b7e69bc7c01c',
identity: {
cognitoIdentityPoolId: null,
accountId: null,
cognitoIdentityId: null,
caller: null,
apiKey: '',
sourceIp: '[redacted IP]',
accessKey: null,
cognitoAuthenticationType: null,
cognitoAuthenticationProvider: null,
userArn: null,
userAgent: 'TwilioProxy/1.1',
user: null
},
resourcePath: '/receive',
httpMethod: 'POST',
apiId: '*******'
}
}