我需要能够查看我的呼叫的日志AWS API Gateway.当我从Gateway的仪表板中执行调用时,我可以在该Logs部分下看到它们.
如何查看外部呼叫(例如:使用的呼叫curl)?
我尝试启用CloudWatch但我只能看到指标,而不是实际的日志消息.
我在AWS Lambda中配置了以下Lambda函数:
var AWS = require('aws-sdk');
var DOC = require('dynamodb-doc');
var dynamo = new DOC.DynamoDB();
exports.handler = function(event, context) {
var item = { id: 123,
foo: "bar"};
var cb = function(err, data) {
if(err) {
console.log(err);
context.fail('unable to update hit at this time' + err);
} else {
console.log(data);
context.done(null, data);
}
};
// This doesn't work. How do I get current stage ?
tableName = 'my_dynamo_table_' + stage;
dynamo.putItem({TableName:tableName, Item:item}, cb);
};
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作(我每次调用时都会在DynamoDB中插入一个项目).
我希望dynamo表名依赖于lambda部署的阶段.
我的桌子是:
my_dynamo_table_staging 为舞台 staging …我有一个REST API API gateway和Lambda.我wan't为上传资料图片,那将文件传递到创建一个端点Lambda的功能,它是被调整,它注册到数据库并返回新图片的URL路径.
这些服务有什么办法吗?无法在线找到任何内容(我发现的唯一建议是直接上传到S3,这需要IAM权限,并且有一个事件触发Lambda函数来调整图片大小).
谢谢
UPDATE
AWS更新了APIGATEWAY并知道您可以通过端点发送二进制文件
感谢@blue和@Manzo对其进行评论
从API Gateway,我使用python中的Lambda函数为我的API 创建了一个自定义授权器.API Gateway使用I configure(method.request.header.Authorization)标头移交传入的身份验证令牌.但是我还需要lambda函数中原始http请求的其他头文件.我如何访问它们?我没有看到event对象输入到我的lambda函数的标题.
请注意,这与使用Lambda访问AWS API Gateway的请求如何访问HTTP标头不重复?.问题是关于自定义授权者lambda函数.我没有看到任何配置选项将传入的http标头传递给授权者lambda函数.
根据AWS Documentation,API Gateway使用以下输入调用Custom Authorizer.基于以下内容,我认为我的要求是不可能的.但是想检查是否有解决方法.
{
"type":"TOKEN",
"authorizationToken":"",
"methodArn":"arn:aws:execute-api:<regionId>:<accountId>:<apiId>/<stage>/<method>/<resourcePath>"
}
对于Kinesis流,我使用AWS API Gateway创建了代理API.我使用python Lambda为代理添加了一个自定义授权程序.在发布lambda函数和部署API之后,我能够使用Gateway Test功能成功测试API.我可以看到cloudwatch中的日志,其中包含来自自定义auth lambda函数的详细打印.成功验证后,API Gateway将记录推送到我的Kinesis流
但是当我从Chrome Postman客户端调用相同的API时,我得到500内部服务器错误,响应头包括X-Cache→来自cloudfront的错误,x-amzn-ErrorType→AuthorizerConfigurationException
Lambda auth函数返回允许对我的API执行请求的策略.返回的政策文件是:
{
"policyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Action": "execute-api:Invoke",
"Resource": [
"arn:aws:execute-api:us-east-1:1234567:myapiId/staging/POST/*"
],
"Effect": "Allow"
}
]
},
"principalId": "Foo"
}
为什么请求会因Chrome或curl而失败,但API网关的相同API测试工作正常?
amazon-web-services custom-authentication aws-lambda aws-api-gateway
它AWS_IAM在Amazon API Gateway中作为授权模型意味着什么?
如果我在AWS控制台内部测试Lambda,它会工作并打印"Hello World",但如果我使用端点URL并在另一个浏览器的选项卡中打开它,它会说{"message":"Missing Authentication Token"}我如何获得此身份验证令牌?
请参阅AWS Cloudfront文档,AWS API Gateway支持TLS v1.0,v1.1,v1.2.
但我想将加密协议限制为TLS v1.1和v1.2以用于我的Gateway API.我在哪里配置?我没有看到我的API的任何cloudfront分发.网关资源页面没有指定安全协议的选项.
我的API使用自定义域在过去2年中投入生产.知道如何仅在API网关中将API限制为TLS V1.1和V1.2协议?
在亚马逊API网关的上下文中,什么是“阶段”。它的目的是什么,打算创建多少个。
生产/阶段/开发约定中与“阶段”有任何关系。
我们使用Lambda为通过新闻媒体网站访问的API(通过API网关)供电,接收波动但高负载的流量.我们开始体验限制,因此我们将并发限制提高到2000.但是,我们仍然每天多次经历限制.
奇怪的是,在CloudWatch指标中,当我们受到限制时,并发请求达到600或更低.请参阅此CloudWatch图表作为示例:
有谁之前经历过这个吗?为什么你认为这种情况发生了?我们对于它可以做些什么呢?
更多信息
此外,这里的图像还显示了同一时间段内的总调用次数和平均持续时间.很难知道是什么因果关系(由于节流导致持续时间上升,反之亦然,因为一些lambdas会调用其他lambda).请查看相应的轴,因为刻度差异很大.
我想通过multipart/form-data发送数据时解析数据,如何解析响应数据?
我使用API Gateway + Lambda,
所以我设置了身体映射模板,
Content-Type : multipart/form-data
{
"body" : $input.json('$'),
"headers": {
#foreach($header in $input.params().header.keySet())
"$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
#end
},
"method": "$context.httpMethod",
"params": {
#foreach($param in $input.params().path.keySet())
"$param": "$util.escapeJavaScript($input.params().path.get($param))" #if($foreach.hasNext),#end
#end
},
"query": {
#foreach($queryParam in $input.params().querystring.keySet())
"$queryParam": "$util.escapeJavaScript($input.params().querystring.get($queryParam))" #if($foreach.hasNext),#end
#end
}
}
Run Code Online (Sandbox Code Playgroud)
在lambda中,只需确认数据发送即可
const AWS = require('aws-sdk');
const querystring = require('querystring');
exports.handler = (event, context, callback) => {
callback(null,event.body);
};
Run Code Online (Sandbox Code Playgroud)
所以响应结果是这样的,
"----------------------------249221450291104233730977\r\nContent-Disposition: form-data; name=\"data\"\r\n\r\n1\r\n----------------------------249221450291104233730977\r\nContent-Disposition: form-data; name=\"file\"; filename=\"SampleJPGImage_15mbmb.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n\ufffd\ufffd\ufffd\ufffd\u0000\u0010JFIF\u0000\u0001\u0001\u0001\u0000H\u0000H\u0000\u0000\ufffd\ufffd\u0000\"Exif\u0000\u0000MM\u0000*\u0000\u0000\u0000\b\u0000\u0001\u0001\u0012\u0000\u0003\u0000\u0000\u0000\u0001\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\fXICC_PROFILE\u0000\u0001\u0001\u0000\u0000\fHLino\u0002\u0010\u0000\u0000mntrRGB XYZ \u0007\ufffd\u0000\u0002\u0000\t\u0000\u0006\u00001\u0000\u0000acspMSFT\u0000\u0000\u0000\u0000IEC sRGB\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ufffd\ufffd\u0000\u0001\u0000\u0000\u0000\u0000\ufffd-HP \u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0011cprt\u0000\u0000\u0001P\u0000\u0000\u00003desc\u0000\u0000\u0001\ufffd\u0000\u0000\u0000lwtpt\u0000\u0000\u0001\ufffd\u0000\u0000\u0000\u0014bkpt\u0000\u0000\u0002\u0004\u0000\u0000\u0000\u0014rXYZ\u0000\u0000\u0002\u0018\u0000\u0000\u0000\u0014gXYZ\u0000\u0000\u0002,\u0000\u0000\u0000\u0014bXYZ\u0000\u0000\u0002@\u0000\u0000\u0000\u0014dmnd\u0000\u0000\u0002T\u0000\u0000\u0000pdmdd\u0000\u0000\u0002\ufffd\u0000\u0000\u0000\ufffdvued\u0000\u0000\u0003L\u0000\u0000\u0000\ufffdview\u0000\u0000\u0003\ufffd\u0000\u0000\u0000$lumi\u0000\u0000\u0003\ufffd\u0000\u0000\u0000\u0014meas\u0000\u0000\u0004\f\u0000\u0000\u0000$tech\u0000\u0000\u00040\u0000\u0000\u0000\frTRC\u0000\u0000\u0004<\u0000\u0000\b\fgTRC\u0000\u0000\u0004<\u0000\u0000\b\fbTRC\u0000\u0000\u0004<\u0000\u0000\b\ftext\u0000\u0000\u0000\u0000Copyright (c) 1998 Hewlett-Packard Company\u0000\u0000desc\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0012sRGB …Run Code Online (Sandbox Code Playgroud) aws-api-gateway ×10
aws-lambda ×6
amazon-iam ×1
amazon-s3 ×1
file-upload ×1
postman ×1
staging ×1
throttling ×1