web-dev-qa-db-ja.com

アクセスPOSTカスタムオーソライザーLambda関数からのリクエスト本文

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: '*******'
  }
}
14
Thiago Silva

この回答 ごとに、同様の質問に対して、本文がカスタム承認者に提供されていないようです。ドキュメント ここ はbodyパラメータをリストしていません。おそらく、承認者はアプリケーションレベルの本文データにアクセスするのではなく、ルートとヘッダーに依存する必要があると考えていると思います。

11
Joe Lafiosca