11

ファイルを s3 に (POST リクエスト経由で) アップロードし、それらを (GET リクエスト経由で) 提供するサーバーレス アプリがあります。

serverless-apigw-binaryおよびプラグインを使用しserverless-apigwy-binaryて、バイナリ データを画像の形式で返すことができるようにしています。URL がブラウザで機能するようにするには、バイナリ タイプを に設定する必要があります*/*

画像をアップロードするために、POST エンドポイントは { "base64": "..." } のようなボディを受け取ります。ただし、この構成では、本文全体が base64 でエンコードされた文字列として送信されます。application/jsonリクエスト本文が変換されないようにするにはどうすればよいですか?

serverless.yml以下を参照してください。

service: image-service

custom:
  envName: ${opt:stage, self:provider.stage}
  domains:
    prod: api.<mydomain>
    dev: dev-api.<mydomain>
  customDomain:
    basePath: images
    domainName: ${self:custom.domains.${self:custom.envName}}
    certificateName: "*.<mydomain>"
  apigwBinary:
    types:
      - '*/*'

provider:
  name: aws
  runtime: nodejs8.10
  region: eu-west-1
  memorySize: 1536

  role: ImageRenderingRole

  environment:
    ENV_NAME: ${self:custom.envName}
    APP_NAME: image-service
    BUCKET: <mybucket>

plugins:
  - serverless-offline
  - serverless-domain-manager
  - serverless-apigw-binary
  - serverless-apigwy-binary

functions:
 uploadImage:
   handler: handler.uploadImage
   events:
     - http:
      path: /
      method: POST

  getImage:
    handler: handler.getImage
    events:
      - http:
          path: 'images/{idAndFormat}'
          method: get
          contentHandling: CONVERT_TO_BINARY
          parameters:
              paths:
                idAndFormat: true
4

1 に答える 1