通过AWS Lambda和API网关下载Amazon S3的文本文件

时间:2017-07-31 15:28:26

标签: amazon-web-services amazon-s3 aws-lambda aws-api-gateway

我们将一些文本文件上传到S3,我们想通过API Gateway使用Lambda函数下载这些文件,我们进行了以下配置。

例如,在这种情况下,文件download.txt具有此内容 在描述性写作中,作者没有告诉读者所看到,感觉,测试,闻到或听到的是什么。相反,他描述了他经历的一些事情......

  1. Lambda函数响应S3中文件的字节,在这种情况下是一个txt文件

    ... SW4gZGVzY3JpcHRpdmUgd3JpdGluZywgdGhlIGF1dGhvciBkb2VzIG5vdCB0ZWxsIHRoZSByZWFkZXIgd2hhdCB3YXMgc2VlbiwgZmVsdCwgdGVzdGVkLCBzbWVsbGVkLCBvciBoZWFyZC4gIFJhdGhlciwgaGUgZGVzY3JpYmVzIHNvbWV0aGluZyB0aGF0IGhlIGV4cGVyaWVuY2VkIGFuZCwgdGhyb3VnaCBoaXMg

  2. 配置API网关的方法响应和集成 Method Response Integration Resonse

  3. 使用所需参数执行API网关测试。

    在描述性写作中,作者并未告诉读者所看到,感受,测试,闻到或听到的内容。相反,他描述了他经历的一些事情......

  4. 响应是来自S3的文件的内容,但是当我们在浏览器中执行API网关时,它返回一个txt文件,但其内容是返回lambda函数的字节 并且应该与API Gateway测试中的测试响应相同。

    在浏览器中执行API网关

    https://xxxxxx.execute-api.us-west-2.amazonaws.com/file/download?key=download.txt&bucketName=xxxxxxxxxxxxxxxxxxxx&isMultipart=false
    

    文件内容为

    SW4gZGVzY3JpcHRpdmUgd3JpdGluZywgdGhlIGF1dGhvciBkb2VzIG5vdCB0ZWxsIHRoZSByZWFkZXIgd2hhdCB3YXMgc2VlbiwgZmVsdCwgdGVzdGVkLCBzbWVsbGVkLCBvciBoZWFyZC4gIFJhdGhlciwgaGUgZGVzY3JpYmVzIHNvbWV0aGluZyB0aGF0IGhlIGV4cGVyaWVuY2VkIGFuZCwgdGhyb3VnaCBoaXMg...
    

    您是否有任何想法可以接收正确的内容文件?

    谢谢

1 个答案:

答案 0 :(得分:0)

您应该能够使用Buffer.from将base64数据转换为二进制数据。

从那里,您可以将其上传到S3,或使用API​​网关将其作为响应发回。

注意:我假设您的Lambda函数是在Node中编写的。如果没有,您应该能够以其他语言应用相同的方法。