我正在尝试向亚马逊网关签署我的请求.但每当我尝试发送POST请求时,它都会告诉我我的签名已过期.任何想法将不胜感激.
我已经设置了这样的API网关端点:
GET文件/ {filename}
因此,我会这样称呼它:https:// mydomain/api/files/somefile
我还有一个带有Nodejs的lambda函数,它是空的:
exports.handler = function(event,context){
//在这里检索名为'filename'的param并用它做一些事情
};
如何在GET请求中传递参数?我检查了事件和上下文对象,但我找不到任何有用的东西.
谢谢!!
lambda amazon-web-services node.js aws-lambda aws-api-gateway
我想使用API Gateway + Lambda做一个csv下载链接。但是存在一个问题,lambda总是返回JSON.stringify。有办法解决吗?
s-function.json
"responses": {
"default": {
"statusCode": "200",
"responseParameters": {
"method.response.header.Content-disposition": "'attachment; filename=testing.csv'"
},
"responseTemplates": {
"text/csv": ""
}
}
}
Run Code Online (Sandbox Code Playgroud)
handler.js
var json2csv = require('json2csv');
module.exports.handler = function(event, context, cb) {
var fields = ['car', 'price', 'color'];
var myCars = [
{
"car": "Audi",
"price": 40000,
"color": "blue"
}, {
"car": "BMW",
"price": 35000,
"color": "black"
}, {
"car": "Porsche",
"price": 60000,
"color": "green"
}
];
var csv = json2csv({ data: myCars, fields: fields });
return …Run Code Online (Sandbox Code Playgroud) 我有一个用例,我必须从EC2上托管的nginx调用AWS API Gateway.由于API网关默认使用SSL,我试图使用SSL设置nginx上游,但无法成功配置它.
我收到以下错误:
SSL_do_handshake() failed (SSL: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure) while SSL handshaking to upstream, client: yy.yy.yy.yy, server: api-gateway.cloud, request: "GET /devint/echo HTTP/1.1", upstream: "https://zz.zz.zz.zz:443/devint/echo", host: "xx.xx.xx.xx:8000"
Run Code Online (Sandbox Code Playgroud)
我应该如何解决它.
我试图通过AWS API Gateway的自定义授权程序来授权API调用,
这基本上是一个自定义的lambda函数,它接受以下格式的以下标题 -
{
"authorizationToken": "0c34ba00bde34200b383abe22bcfef96",
"methodArn": "arn:aws:execute-api:ap-southeast-1:855399270504:z6t3cv0z4m/null/GET/",
"type": "TOKEN"
}
Run Code Online (Sandbox Code Playgroud)
并期望以下格式的回复 -
{
"principalId": "xxxxxxx", // the principal user identification associated with the token send by the client
"policyDocument": { // example policy shown below, but this value is any valid policy
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"execute-api:Invoke"
],
"Resource": [
"arn:aws:execute-api:us-east-1:xxxxxxxxxxxx:xxxxxxxx:/test/*/mydemoresource/*"
]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
我能够使用authorizationToken执行内部逻辑并验证函数是否应该在"允许"或"拒绝"策略中响应,
但是当我尝试从控制台测试授权器时,我收到解析错误,
以下是我的请求日志 -
Execution log for request test-request
Thu Jun 29 11:48:10 UTC 2017 …Run Code Online (Sandbox Code Playgroud) java amazon-web-services amazon-iam aws-lambda aws-api-gateway
我使用AWS API Gateway将HTTP查询代理到我的服务.我的服务如何检查HTTP请求是否来自AWS API Gateway?
通过aws cli执行此操作的正确语法是什么?
aws apigateway update-stage --rest-api-id $api_id --stage-name 'test_stage' --patch-operations op="add",path=/variables,value="{server:8.8.8.8}"
Run Code Online (Sandbox Code Playgroud)
我无法value=".."正确处理最后一部分。该文档对我不是很有帮助。
我有一个API(通过API网关),其中每个资源的方法都通过lambda代理集成路由到单个lambda函数,其中每个请求在内部进行处理。
如何通过CloudWatch事件自动调度对一种资源的方法的计划调用?优选地,这将不能通过直接调用lambda函数来完成,而是允许指定的(恒定)输入。
我正在考虑启动一个开源项目,以开发基于AWS技术的无服务器CMS。我想将DynamoDB作为存储数据的后端,而不是使用简单的markdown CMS。我想从这里的社区中了解这个想法是否合理并且听起来不错,因为我在AWS方面有一定的经验,因此对它并不完全坚定并寻求帮助。
我将通过Lambda在ASP.NET MVC Core中开发CMS。此CMS将具有一个外部API,该外部API将是ASP.NET MVC Core Web API。
我还需要考虑运行此CMS的成本,例如,您认为与传统CMS相比,或者DynamoDB是否可以榨取大量果汁,运行起来会便宜吗!!!
我正在使用Cognito,API网关和授权者。授权者配置为缓存5分钟以提高性能。我觉得这是一个不错的功能。
我知道授权者是将身份验证逻辑放在一个地方的好方法,并且应用程序可以假定用户已被授权。但是,我对此表示怀疑。
渗透测试报告建议,一旦注销,令牌就不能使用。因此,为了安全起见,我不应该启用授权者缓存吗?这也意味着所有经过身份验证的API都要经过一个lambda授权者的开销...
同样从编码的角度来看,使用很难进行端到端测试的授权者真的是一个好主意吗?我可以将lambda函数作为一个单元进行测试。但是对我来说更重要的是它们已连接到正确的API。我目前无法看到可以轻松测试的方法。
另一个问题是查看代码,我再也无法轻易分辨出需要什么授权……我必须查看应该附加哪个授权者(例如CloudFormation),然后查看lambda代码本身。
使用授权者有什么好处吗?或实际上最佳做法是什么?
aws-api-gateway ×10
aws-lambda ×5
.net ×1
amazon-ec2 ×1
amazon-iam ×1
aws-cli ×1
c# ×1
csv ×1
java ×1
lambda ×1
nginx ×1
node.js ×1
serverless ×1