Kembalikan media biner dari integrasi proxy Lambda di Gateway API - APIGerbang Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Kembalikan media biner dari integrasi proxy Lambda di Gateway API

Untuk mengembalikan media biner dari integrasi AWS Lambda proxy, base64 menyandikan respons dari fungsi Lambda Anda. Anda juga harus mengkonfigurasi jenis media biner Anda API. Batas ukuran muatan adalah 10 MB.

catatan

Untuk menggunakan browser web untuk memanggil integrasi API dengan contoh ini, atur tipe media API biner Anda ke*/*. APIGateway menggunakan Accept header pertama dari klien untuk menentukan apakah respons harus mengembalikan media biner. Untuk mengembalikan media biner saat Anda tidak dapat mengontrol urutan nilai Accept header, seperti permintaan dari browser, atur tipe media biner Anda API ke */* (untuk semua jenis konten).

Contoh berikut fungsi Lambda dapat mengembalikan gambar biner dari Amazon S3 atau teks ke klien. Respons fungsi mencakup Content-Type header untuk menunjukkan kepada klien jenis data yang dikembalikan. Fungsi secara kondisional menetapkan isBase64Encoded properti dalam responsnya, tergantung pada jenis data yang dikembalikan.

Node.js
import { S3Client, GetObjectCommand } from "@aws-sdk/client-s3" const client = new S3Client({region: 'us-east-2'}); export const handler = async (event) => { var randomint = function(max) { return Math.floor(Math.random() * max); } var number = randomint(2); if (number == 1){ const input = { "Bucket" : "bucket-name", "Key" : "image.png" } try { const command = new GetObjectCommand(input) const response = await client.send(command); var str = await response.Body.transformToByteArray(); } catch (err) { console.error(err); } const base64body = Buffer.from(str).toString('base64'); return { 'headers': { "Content-Type": "image/png" }, 'statusCode': 200, 'body': base64body, 'isBase64Encoded': true } } else { return { 'headers': { "Content-Type": "text/html" }, 'statusCode': 200, 'body': "<h1>This is text</h1>", } } }
Python
import base64 import boto3 import json import random s3 = boto3.client('s3') def lambda_handler(event, context): number = random.randint(0,1) if number == 1: response = s3.get_object( Bucket='bucket-name', Key='image.png', ) image = response['Body'].read() return { 'headers': { "Content-Type": "image/png" }, 'statusCode': 200, 'body': base64.b64encode(image).decode('utf-8'), 'isBase64Encoded': True } else: return { 'headers': { "Content-type": "text/html" }, 'statusCode': 200, 'body': "<h1>This is text</h1>", }

Untuk mempelajari lebih lanjut tentang jenis media biner, lihatJenis media biner untuk REST APIs di API Gateway.