2

API レスポンス

body: ReadableStream
bodyUsed: true
headers: Headers
__proto__: Headers
ok: false
redirected: false
status: 502
statusText: ""
type: "cors"
url: "correct-url"
__proto__: Response

しかし、Lambda のログは、有効な応答を返していることを報告しています。

2019-05-16T20:40:54.113Z    some-id-snipped { statusCode: 200,
 correct headers and body...

Lambda コードの終了:

s3.getSignedUrl('putObject', s3Params, (err, data) => {
  if (err) {
    localLogger.log(err);
    callback(null, failure(err, localLogger));
  } else {
    const response = { url: data, fileName };
    callback(null, success(response, localLogger));
  }
});

そしてその成功方法:

export function success(body, logger = console) {
  const response = {
    statusCode: 200,
    headers: {
      "Access-Control-Allow-Origin": "*",
      "Access-Control-Allow-Credentials": true
    },
    body: JSON.stringify(body)
  };
  logger.log(response);
  return response;
}

サーバーレス アップロードの定義:

getUploadUrl:
  handler: src/resourceImages.getUploadUrl
  events:
    - http:
        path: resourceImages/getUploadUrl
        method: get
        cors: true
        authorizer:
          arn: ${self:provider.environment.USER_POOL_ARN}

ブラウザは、最初に 200 を返す OPTIONS リクエストを送信し、次に 502 を返す GET を送信することに注意してください。

4

1 に答える 1