标签: aws-api-gateway

如何查看外部呼叫的AWS Gateway日志?

我需要能够查看我的呼叫的日志AWS API Gateway.当我从Gateway的仪表板中执行调用时,我可以在该Logs部分下看到它们.

如何查看外部呼叫(例如:使用的呼叫curl)?

我尝试启用CloudWatch但我只能看到指标,而不是实际的日志消息.

amazon-cloudwatch aws-api-gateway

9
推荐指数
1
解决办法
4334
查看次数

如何在链接到API网关的AWS Lambda函数中获取阶段的名称

我在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 …

amazon-web-services aws-lambda aws-api-gateway

9
推荐指数
2
解决办法
6048
查看次数

通过Amazon API网关和lambda上传图像

我有一个REST API API gatewayLambda.我wan't为上传资料图片,那将文件传递到创建一个端点Lambda的功能,它是被调整,它注册到数据库并返回新图片的URL路径.

这些服务有什么办法吗?无法在线找到任何内容(我发现的唯一建议是直接上传到S3,这需要IAM权限,并且有一个事件触发Lambda函数来调整图片大小).

谢谢

UPDATE

AWS更新了APIGATEWAY并知道您可以通过端点发送二进制文件
感谢@blue和@Manzo对其进行评论

file-upload amazon-s3 aws-lambda aws-api-gateway

9
推荐指数
1
解决办法
8890
查看次数

如何在自定义授权程序AWS lambda函数中访问http标头

从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>"
}  

amazon-web-services aws-lambda aws-api-gateway

9
推荐指数
1
解决办法
2662
查看次数

AWS API网关自定义授权程序AuthorizerConfigurationException

对于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

9
推荐指数
3
解决办法
9359
查看次数

Amazon API Gateway授权AWS_IAM

AWS_IAM在Amazon API Gateway中作为授权模型意味着什么?

在此输入图像描述

如果我在AWS控制台内部测试Lambda,它会工作并打印"Hello World",但如果我使用端点URL并在另一个浏览器的选项卡中打开它,它会说{"message":"Missing Authentication Token"}我如何获得此身份验证令牌?

amazon-iam amazon-cognito aws-api-gateway

9
推荐指数
2
解决办法
6435
查看次数

AWS API Gateway应阻止使用TLS v1

参阅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协议?

amazon-web-services aws-api-gateway aws-security-group

9
推荐指数
3
解决办法
6947
查看次数

在亚马逊API网关的上下文中,什么是“阶段”?

在亚马逊API网关的上下文中,什么是“阶段”。它的目的是什么,打算创建多少个。

生产/阶段/开发约定中与“阶段”有任何关系。

staging aws-api-gateway

9
推荐指数
2
解决办法
4036
查看次数

Lambda限制低于并发限制

我们使用Lambda为通过新闻媒体网站访问的API(通过API网关)供电,接收波动但高负载的流量.我们开始体验限制,因此我们将并发限制提高到2000.但是,我们仍然每天多次经历限制.

奇怪的是,在CloudWatch指标中,当我们受到限制时,并发请求达到600或更低.请参阅此CloudWatch图表作为示例:

CloudWatch指标中的Lambda限制

有谁之前经历过这个吗?为什么你认为这种情况发生了?我们对于它可以做些什么呢?

更多信息

  • 此图表涵盖了整个地区的所有Lambdas.
  • 发生限制时,它会在所有Lambda实例中发生.
  • 我们主要通过API网关触发Lambdas,但有一些是通过SNS触发的(相当高的数据速率).
  • 我们在所有API前面都有CloudFront,其中一些我们有5秒的缓存时间(对于超级频繁请求的API - 节省我们$$$)

此外,这里的图像还显示了同一时间段内的总调用次数和平均持续时间.很难知道是什么因果关系(由于节流导致持续时间上升,反之亦然,因为一些lambdas会调用其他lambda).请查看相应的轴,因为刻度差异很大.

在此输入图像描述

throttling amazon-web-services aws-lambda aws-api-gateway

9
推荐指数
2
解决办法
1593
查看次数

在Lambda(Node.js)中解析multipart/form-data中的数据

我想通过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)

postman aws-lambda aws-api-gateway

9
推荐指数
1
解决办法
787
查看次数