我正在编写第三方小部件,执行javascript客户端以向用户站点添加按钮。从本质上讲,用户将在其网站上包含一个标记,其中包含我的小部件的路径。该路径的URL将包含调用窗口小部件的特定用户的app_id。例如
<script src="www.widget.com/widget/{USER_ID}">
我希望能够使用AWS Lambda和API Gateway进行一些快速身份验证,允许用户下载小部件并提供javascript内容。这与Express.js中的res.sendFile类似,非常简单,但API Gateway似乎不支持发送文件。有没有什么方法可以使用API网关快速提供javascript,而不必将整个文件字符串化?
答案 0 :(得分:1)
您可以设置api网关代理对托管文件(S3 proxy example)的s3的所有请求。否则,您可以设置Http Proxy集成,然后运行提供整个文件的后端http服务器。 要对请求执行身份验证,您可以将lambda函数作为custom authorizer
执行如果您有lambda集成类型,唯一的方法是使用回调lambda documentation for callback返回响应中的整个文件。
答案 1 :(得分:1)
首先,您可以在Lambda函数中响应以下内容:
{
statusCode: 200,
headers: {
"content-type": "text/javascript"
},
body: buildMyJavascriptFileInTextFormat(event.user_id),
isBase64Encoded: false,
}
然后转到您的API网关资源,并按照以下步骤设置集成:
方法请求:
添加名为user_id
的查询字符串。
集成请求:
{
"user_id": "$input.params('user_id')"
}
集成响应
转到状态码:200
,创建一个名为:text/javascript
的映射模板,并进行以下设置:
$input.path('body')
方法响应
在Response Body for 200
框中,将Content-Type
更改为text/javascript
。