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

API Gateway API を使用した Lambda でのバイナリファイルへのアクセス

次の例は、API Gateway API を通じて AWS Lambda でバイナリファイルにアクセスする方法を示しています。サンプル API は Swagger ファイルに示されています。コード例では、API Gateway REST API コールが使用されています。

Lambda でイメージにアクセスするためのサンプル API の Swagger ファイル

次の Swagger ファイルは、Lambda からのイメージファイルのダウンロードと Lambda へのイメージファイルのアップロードを示すサンプル API を示しています。

Copy
{ "swagger": "2.0", "info": { "version": "2016-10-21T17:26:28Z", "title": "ApiName" }, "host": "abcdefghi.execute-api.us-east-1.amazonaws.com", "basePath": "/v1", "schemes": [ "https" ], "paths": { "/lambda": { "get": { "produces": [ "application/json" ], "parameters": [ { "name": "key", "in": "query", "required": false, "type": "string" } ], "responses": { "200": { "description": "200 response", "schema": { "$ref": "#/definitions/Empty" } }, "500": { "description": "500 response" } }, "x-amazon-apigateway-integration": { "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:image/invocations", "type": "AWS", "credentials": "arn:aws:iam::123456789012:role/Lambda", "httpMethod": "POST", "requestTemplates": { "application/json": "{\n \"imageKey\": \"$input.params('key')\"\n}" }, "responses": { "default": { "statusCode": "500" }, "2\\d{2}": { "statusCode": "200", "responseTemplates": { "application/json": "{\n \"image\": \"$input.body\"\n}" } } } } }, "put": { "produces": [ "application/json", "application/octet-stream" ], "parameters": [ { "name": "key", "in": "query", "required": false, "type": "string" } ], "responses": { "200": { "description": "200 response", "schema": { "$ref": "#/definitions/Empty" } }, "500": { "description": "500 response" } }, "x-amazon-apigateway-integration": { "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:123456789012:function:image/invocations", "type": "AWS", "credentials": "arn:aws:iam::123456789012:role/Lambda", "httpMethod": "POST", "contentHandling" : "CONVERT_TO_TEXT", "requestTemplates": { "application/json": "{\n \"imageKey\": \"$input.params('key')\", \"image\": \"$input.body\"\n}" }, "responses": { "default": { "statusCode": "500" }, "2\\d{2}": { "statusCode": "200" } } } } } }, "x-amazon-apigateway-binary-media-types" : ["application/octet-stream", "image/jpeg"], "definitions": { "Empty": { "type": "object", "title": "Empty Schema" } } }

Lambda からのイメージのダウンロード

イメージファイル (image.jpg) を Lambda からバイナリ BLOB としてダウンロードするには

Copy
GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/octet-stream

正常な応答は次のようになります。

Copy
200 OK HTTP/1.1 [raw bytes]

イメージファイル (image.jpg) を、JSON プロパティとしてフォーマットして Base64 でエンコードされた文字列として Lambda からダウンロードするには

Copy
GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

正常な応答は次のようになります。

Copy
200 OK HTTP/1.1 { "image": "W3JhdyBieXRlc10=" }

Lambda へのイメージのアップロード

イメージファイル (image.jpg) をバイナリ BLOB として Lambda にアップロードするには

Copy
PUT /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/octet-stream Accept: application/json [raw bytes]

正常な応答は次のようになります。

Copy
200 OK

イメージファイル (image.jpg) を Base64 でエンコードされた文字列として Lambda にアップロードするには

Copy
PUT /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json W3JhdyBieXRlc10=

正常な応答は次のようになります。

Copy
200 OK