标签: aws-api-gateway

然后回应继续使用AWS Lambda/API Gateway?

我目前有一个Web钩子,它正在调用AWS API Gateway - > AWS Lambda函数代理.我想让网络钩子更具响应性,并在继续处理Lambda时返回早期回复.

我继续从Lambda(Node v6.10)做了这个早期回复,但似乎没有提高响应能力.尽管已经有来自回调的响应,API网关是否在某种程度上等待Lambda完成执行?

另一个想法是从Lambda发布SNS通知并进行第二次Lambda侦听并继续处理,但如果有更简单的方法,则宁愿避免这种复杂化.

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

15
推荐指数
1
解决办法
3030
查看次数

AWS API网关+弹性Beanstalk和微服务

我将在AWS上构建微服务架构,我想请你澄清我的疑虑.

我目前的一般概念

我想使用API​​网关,它公开了在Elastic Beanstalk中运行的微服务API.我想将Elastic Beanstalk放在VPC中,而无需从Internet直接访问其实例.

在此输入图像描述

问题和怀疑:

  1. Elastic Beanstalk在应用程序创建时获得子域.API网关应使用此子域与集成类型:AWS服务,在操作配置中 - 我是对的吗?
  2. 什么代表一个微服务?Elastic Beanstalk的应用程序是一个特定的可扩展微服务?
  3. 微服务应该如何相互通信?我将使用SQS(简单队列服务)进行一些任务.但在其他情况下,当两个微服务通过API网关而不是直接相互通信时,它会更好吗 - 我是对的吗?
  4. 测试环境:我应该在测试环境(或staging环境)中使用什么结构?我考虑使用另一个Elastic Beanstalk和其他Amazon服务创建单独的VPC.
  5. 测试环境和API网关:我应该如何设置API网关?如果请求具有特定的子域,它应该允许客户端访问测试环境中的微服务,例如:test.mydomain.com/hello_world/say_hello.我不确定如何在CI/CD中使用API​​网关使其快速简单,无需手动将某些配置从测试阶段复制到生产阶段.(我不期待任何复杂的解决方案,只能提供一些关于我可以使用哪些组件,部件和概念的提示.我将自己找到更多细节).
  6. 您是否有使用Codep Deploy和/或Jenkins将应用程序部署到Elastic Beanstalk的经验?我很有兴趣以哪种方式更好:Jenkins,AWS Code Deploy或Jenkins + CodeDeploy.

amazon-web-services amazon-elastic-beanstalk microservices aws-api-gateway

14
推荐指数
2
解决办法
8947
查看次数

Cognito用户池授权程序使用无服务器框架

我需要使用aws cognito userpool授权我的API端点.我可以手动完成,但我需要使用无服务器框架自动化授权部分.

无服务器框架是否支持aws cognito?

如果是这样,我们如何设置无服务器的aws-userpool?

amazon-web-services amazon-cognito aws-lambda aws-api-gateway serverless-framework

14
推荐指数
3
解决办法
7412
查看次数

如何从API网关自定义授权程序中抛出自定义错误消息

这里的蓝图说,API网关将与401回应:未经授权.

raise Exception('Unauthorized')在lambda中写了同样的内容,并且可以从Lambda Console中测试它.但是在POSTMAN中,我正在接收500 身体状态:

{
  message: null`
} 
Run Code Online (Sandbox Code Playgroud)

我想添加自定义错误消息,如"无效签名","TokenExpired"等,任何文档或指导将不胜感激.

aws-api-gateway

14
推荐指数
3
解决办法
5602
查看次数

如何在android中添加aws签名并调用aws api网关

我写了这段代码,但是我收到了一个错误.我怎么去上班?但同样的道理也适用于邮递员.

错误:

 {"message":"The security token included in the request is invalid."}
Run Code Online (Sandbox Code Playgroud)

代码:

public class test extends AppCompatActivity {

    private final AWS4Signer signer = new AWS4Signer();
    Request<?> aws;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

         AWSCredentials credentials = new BasicAWSCredentials("AccessKey", "SecretKey");
        aws = generateBasicRequest();
        signer.setServiceName("execute-api");
        signer.sign(aws, credentials);

        new get_aws().execute();

    }

    private Request<?> generateBasicRequest() {
         Request<?> request = new DefaultRequest<Void>("execute-api");
        request.addHeader("Content-type", "application/json");
         String securityToken = "Session Token";

        request.addHeader("X-Amz-Security-Token", securityToken);
        request.addHeader("Host", "********.amazonaws.com");
        request.addHeader("x-amz-archive-description", "test  test");
        request.setResourcePath("/");
        request.setEndpoint(URI.create("https://******.execute-api.****.amazonaws.com/data/all"));
        return request;
    }


    private class …
Run Code Online (Sandbox Code Playgroud)

android amazon-web-services aws-api-gateway

14
推荐指数
1
解决办法
1039
查看次数

即使事情在内部起作用,为什么我仍会从AWS API Gateway收到禁止消息?

我为没有身份验证的公共端点设置了AWS API网关。它连接到触发Lambda的WebSocket。

我正在通过https://pypi.org/project/websocket_client/与Python的websocket-clientlib 建立连接。

我注意到连接将在大约10%的时间内失败,并且随着负载的增加而变得更糟。正如我的常规API网关设置所说,我找不到任何让我感到烦恼的地方Your current account level throttling rate is 10000 requests per second with a burst of 5000 requests.。除此之外,每秒只有2-3个请求经常会触发问题。

同时失败响应会像 {u'message': u'Forbidden', u'connectionId': u'Z2Jp-dR5vHcCJkg=', u'requestId': u'Z2JqAEJRvHcFzvg='}

我进入了CloudWatch日志洞察,并搜索了连接ID和请求ID。API网关的日志组将找不到任何一个ID的结果。但是,在我的Lambda上进行搜索(在websocket connect上触发)时,将带有该连接ID的日志。日志显示一切正常运行。lambda只是运行一个将触发的MySQL查询。

尽管lambda可以按预期工作,但为什么我会得到禁止的响应?

获取消息时存在的问题:禁止从AWS API网关回复,似乎可以解决某些私有端点是否始终返回禁止的问题。我的用例没有任何内容。

更新

我认为这可能与locust.io或python有关,而我正在每秒使用python进行连接。我在我的机器上安装了https://www.npmjs.com/package/wscat,并反复尽可能快地连接和关闭。我没有收到Forbidden消息。由于我不确定我的连接方式在某些时候会随机向您吐出一条Forbidden消息,因此这更加令人困惑。

class SocketClient(object):
    def __init__(self, host):
        self.host = host
        self.session_id = uuid4().hex

    def connect(self):
        self.ws = websocket.WebSocket()
        self.ws.settimeout(10)
        self.ws.connect(self.host)

        events.quitting += self.on_close

        data = self.attach_session({}) …
Run Code Online (Sandbox Code Playgroud)

python websocket locust aws-lambda aws-api-gateway

14
推荐指数
1
解决办法
564
查看次数

在API网关端点后面本地测试AWS Lambdas

AWS noob在这里.这是一个"最佳实践发展问题" - 但我会尝试具体:

我知道我可以在节点与输入JSON文件测试lambda表达式本地,但我不知道该"集成测试"我的web应用程序的最佳途径,这将在S3中运行,并调用lambda表达式响应API网关端点调用.

使用我的实际API网关配置文件来让我在本地调用相同的方法并在本地执行我的Lambdas会很棒.本文认为这是不可能的,但因为没有本地API网关测试环境:http://nickmchardy.com/blog/2015/09/my-thoughts-about-aws-api-gateway-working-with-aws-lambda

也许这还不清楚,例如:如果我在API网关中有一个用户/方法,使用GET和POST,它们分别连接到AWS中的listUsers.js和createUser.js Lambdas; 在开发中我想调用:http:// localhost:0000/users GET/POST并让它运行Lambdas并给出正确的响应,这样我就可以在本地运行我的整个架构.

显然,在调用URL的东西不是特别复杂,所以我的问题是更多:什么是这样做的考虑我将我(的Cloudfront!?!?JAWS)配置这些东西如何在AWS链接在一起的最佳实践,可以我完全利用它进行本地测试?

如果这不清楚或非常明显,请道歉!

aws-lambda aws-api-gateway

13
推荐指数
2
解决办法
7041
查看次数

是否可以在AWS API Gateway中使用通配符或catch-all路径

我正在尝试将一个域的所有流量重定向到另一个域.我没有专门为此工作运行服务器,而是尝试使用带有lambda的AWS API Gateway来执行重定向.

我对根路径"/"的工作正常,但是没有处理任何子路径请求,例如/ a.有没有办法定义"catch all"资源或通配符路径处理程序?

aws-api-gateway

13
推荐指数
4
解决办法
1万
查看次数

AWS Api网关授权程序+ Cognito用户池无法正常工作{"message":"Unauthorized"}

我正在尝试使用带有cognito用户池的aws api网关授权程序.当我使用aws api网关控制台进行测试时,它工作正常.

但是,当我尝试在api中启用授权时,"message": "Unauthorized".请检查下面的屏幕截图

API网关控制台截图 - 这很好用 在此输入图像描述

邮差屏幕截图 - 不工作 在此输入图像描述

请有人帮忙吗.

仅供参考我遵循这里提到的说明http://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html

amazon-web-services aws-api-gateway aws-cognito

13
推荐指数
5
解决办法
6257
查看次数

CloudFront背后的API网关是否不支持AWS_IAM身份验证?

似乎无法调用通过CloudFront分配启用AWS_IAM保护的REST API.

以下是如何重现这个:

  • 使用API​​网关创建REST API
  • 使用AWS_IAM身份验证保护REST API方法
  • 创建面向REST API的CloudFront分配
  • 在Route 53中创建一个以CloudFront Distribution为目标的A Record

现在使用经过身份验证的用户(我使用Cognito UserPool用户和aws-amplify)来调用

  1. 受保护的REST API方法及其API网关URL = SUCCESS
  2. 受保护的REST API方法通过CloudFront分发URL = FAILURE
  3. 受保护的REST API方法通过Route 53域URL = FAILURE

我得到的错误是:

{"message":"我们计算的请求签名与您提供的签名不匹配.请检查您的AWS秘密访问密钥和签名方法.有关详细信息,请参阅服务文档."}

我无法相信AWS不支持自定义域后面的AWS_IAM受保护端点,因为这必须是一个非常常见的用例.

因此,请您提供一份如何实现这一目标的详细清单?

谢谢

amazon-cloudfront amazon-cognito aws-sdk aws-api-gateway aws-amplify

13
推荐指数
2
解决办法
1151
查看次数