AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[amazon-api-gateway](server)

Martin Hope
krzysiexp
Asked: 2022-04-06 00:11:38 +0800 CST

DDOS AWS API 网关保护

  • 0

我已经公开了 API Gateway (HTTP)。要进行身份验证,您必须提供有效的 JWT。

我想用 Cloudfront + WAF 保护这个 APIGW。阅读文档后,我认为 API Gateway 端点仍然暴露在 Internet 上。保护 API Gateway 的唯一方法是验证 WAF 中的 Header。攻击者仍然可以在 Internet 中找到 API Gateway 并直接对 API Gateway 端点进行 DDOS 攻击,而无需经过 Cloudfront。

这种方法被认为是安全的吗?Cloudflare 使用Tunnel来确保您的基础设施不会暴露在 Internet 上。我认为这种方法更安全。AWS 中有类似的功能吗?

ddos amazon-web-services amazon-cloudfront amazon-api-gateway amazon-waf
  • 1 个回答
  • 328 Views
Martin Hope
dmitrybelyakov
Asked: 2022-03-11 02:40:14 +0800 CST

AWS HTTP Gateway:没有路径变量的私有集成路由

  • 1

我第一次设置 HTTP 网关时遇到了私有集成的问题。我希望我的所有集成都是私有的,但它不适用于路由。

我与$default路线进行了私人集成,效果很好。现在,我希望将另一个私有集成安装在下面,例如,/microservice/并代理其所有端点。

然而,这似乎是不可能的,因为私有集成要求您提供后端 ARN 而不是 URI,因此无法使用{proxy+}. 这导致只有我的微服务的根可以通过网关访问——所有其他路径都只是去$default路由。

如何建立这样的私有集成?理想情况下,我想要这样的东西:

- /microservice1/{proxy+}
- /microservice2/{proxy+}
- $default

目前据我了解,我只有两个选择:

  • 向世界公开我的服务并使用贪婪路径变量的公共集成{proxy+}- 不理想
  • 保留私有集成,但将每个微服务端点定义为网关上自己的路由 - 维护起来非常烦人

有没有我想念的好方法?

amazon-web-services amazon-api-gateway
  • 1 个回答
  • 136 Views
Martin Hope
Kid_Learning_C
Asked: 2021-12-17 06:30:57 +0800 CST

dig +trace:我的域无法访问任何服务器?

  • 0

我正在 AWS 中构建我的应用程序。

我已经在 EC2 实例中部署了我的 Reactjs 前端项目。我不想让外部互联网世界的用户直接访问我的 EC2 实例,而是将它放在 AWS API 网关后面。因此,AWS API Gateway 将成为我的应用程序前端和后端服务的单一入口点。这是计划:

外部世界 ---> AWS API Gateway ---> 网络负载均衡器 ---> 我的 VPC 目标组/EC2 实例

这是我所做的:

  1. Reactjs Frontend 项目在 EC2 实例中运行良好;我可以使用 EC2 实例的公共 IP 地址访问网页。

  2. 配置良好的目标组和网络负载均衡器。我通过在浏览器中输入 NLB 的 DNS 名称来确认,即http://myapp-frontend-NLB-c11112esd43524rw.elb.ap-northeast-1.amazonaws.com,它成功加载/打开了我的应用程序的前端网页。

  3. 我创建了新的 AWS API Gateway (REST API) 并为其配置了自定义域名。(在 AWS Certificate Manager 中处理了 https 证书)。

    即自定义域是frontend.myapp.com;API网关域名是d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

    我已经NS在我的 DNS 提供商中为他们创建了新记录,因此frontend.myapp.com指向d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com

  4. 我已经按照这个aws文档:https ://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started-with-private-integration.html一步一步配置了VPC链接、API资源、集成类型, ETC。

部署创建的 API 后,当我点击打开 Invoke URL 时,(以 的形式https://123qwe123qe.execute-api.ap-northeast-1.amazonaws.com/[stage]),我可以看到返回的 HTML 代码。


我预计当我frontend.myapp.com在浏览器中访问时,DNS 最终会将流量引导到 API Gateway 的域名d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com,然后 API Gateway 会将请求传递给 NLB 等,最终加载网页 / 或返回相同的 HTML 代码。

但是,当我frontend.myapp.com在浏览器中访问时,没有任何响应。我认为 DNS 记录不起作用。dig +trace docloud.iwg-inc.co.jp.给出以下结果:


; <<>> DiG 9.10.6 <<>> +trace frontend.myapp.com.
;; global options: +cmd
.     3240  IN  NS  i.root-servers.net.
.     3240  IN  NS  d.root-servers.net.
.     3240  IN  NS  b.root-servers.net.
.     3240  IN  NS  m.root-servers.net.
.     3240  IN  NS  j.root-servers.net.
.     3240  IN  NS  h.root-servers.net.
.     3240  IN  NS  f.root-servers.net.
.     3240  IN  NS  g.root-servers.net.
.     3240  IN  NS  k.root-servers.net.
.     3240  IN  NS  c.root-servers.net.
.     3240  IN  NS  a.root-servers.net.
.     3240  IN  NS  l.root-servers.net.
.     3240  IN  NS  e.root-servers.net.
;; Received 811 bytes from 240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c#53(240d:1a:6a5:c900:e67e:66ff:fe1f:bf4c) in 29 ms

 
 ...other results...

frontend.myapp.com.  14400 IN  NS  d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.
;; Received 117 bytes from 54.68.111.244#53(ns4.jp-domains.jp) in 131 ms

;; connection timed out; no servers could be reached

如您所见, frontend.myapp.com.确实指向d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.作为NS记录。

但是,它说connection timed out; no servers could be reached。

d-123sdf1234asd.execute-api.ap-northeast-1.amazonaws.com.是我的 API Gateway 的自定义域名,我用调用 URL 测试过,它连接到服务。

为什么会这样说no servers could be reached?

这是什么意思?我该如何解决它并完成流程?

domain-name-system dns-hosting amazon-api-gateway
  • 2 个回答
  • 240 Views
Martin Hope
Juanlu
Asked: 2021-12-01 03:38:42 +0800 CST

AWS 架构 - 流量镜像

  • 0

我们将把我们的数据库从 Aurora Serverless 迁移到 Aurora 集群。在此之前,我们想在实时流量场景中测试新数据库的性能。我们曾考虑克隆当前的 API 网关,以新数据库为目标并将流量从生产 API 镜像到测试 API。

这是疯了吗?有什么方法可以在不影响生产 API 网关的性能的情况下实现这一点?(我们的 API 网关前面有一个 CloudFront)也许在 Cloudwatch 中监听 API 网关事件并触发一个 lambda 来针对测试 API 网关运行查询?

migration database amazon-web-services amazon-cloudfront amazon-api-gateway
  • 1 个回答
  • 93 Views
Martin Hope
glowka
Asked: 2021-10-03 15:15:15 +0800 CST

我在 AWS 上的网关 API 不断收到奇怪的请求

  • 0

我有一个使用 AWS lambda 和 API 网关构建的简单 HTTP 服务。指向网关的域由 Route53 托管,网关使用来自证书管理器的证书。索引页面上唯一的“服务正在运行”文本绝对是新鲜的。相当标准的设置。所有这些都使用 Terraform 巧妙地连接起来,就像一个魅力......除了每隔几秒 (!) 就会向 API 发出奇怪的请求。我检查了 AWS 上所有可能的探测和健康检查——一切都被禁用了,但请求不断出现。

转储来自 lambda 的请求:

{
    ...
    "headers": {
        "accept": "*/*", "accept-encoding": "gzip, deflate", "content-length": "0",
        "host": "sub-b.sub-a.my-domain.com", 
        "user-agent": "python-requests/2.26.0", 
        "x-amzn-trace-id": "Root=1-6158e0d5-0d266e5d0a84add227005a79", 
        "x-forwarded-for": "3.85.226.144", "x-forwarded-port": "443", 
        "x-forwarded-proto": "https"
    }, 
    ...
    "http": {
        "method": "GET", "path": "/", "protocol": "HTTP/1.1",
        "sourceIp": "3.85.226.144", "userAgent": "python-requests/2.26.0"
    }, 
    "requestId": "GmgRbgATFiAEMtQ=",
    "routeKey": "$default", 
    "stage": "$default", 
    "time": "02/Oct/2021:22:44:37 +0000"
    ...
}

IP 是北弗吉尼亚州的3.85.226.144EC2 实例,所以它是us-east-1AWS 区域(我的是 eu-central-1)。还有那个代理python-requests/2.26.0。它看起来像 AWS 服务。特别是我已经尝试过更改子域,这不会改变最终结果,因为在使用不同的子域再次设置我的服务后请求立即开始出现。量约为每 1 小时 3000 个请求。

我已经花了几个小时在谷歌上搜索和检查我想到的任何东西,但即使很艰难,我也经常使用基础设施工作,我真的很无助。

这些请求到底是什么责任?!

各种想法和建议高度赞赏。

编辑:

我使用全新的根域进行了测试,以确保它来自 AWS。查询在中断期间停止(显然),但在服务再次可访问后立即返回(如几秒钟)。terraform apply9点52分开始,9点59分结束。新域在 9:59 之前附加了一点(一些不相关的修改等待了几分钟),因此请求开始出现。据我所知,没有任何东西可以这么快地检测到新的根域,所以它一定与 AWS 本身有关。 在此处输入图像描述

amazon-web-services amazon-api-gateway amazon-route53
  • 2 个回答
  • 254 Views
Martin Hope
realnsleo
Asked: 2021-09-09 21:50:06 +0800 CST

是否可以创建 AWS API 网关以将所有请求路由到 Classic Load Balancer?

  • 0

我有一个问题(希望不是愚蠢的)。我是一家使用 AWS 托管各种应用程序的企业的 IT 人员,我们目前有一个 Classic Load Balancer,位于 2 到 3 个处理我们所有 Web 流量的 EC2 实例前面。这是一个非常简单的配置。在过去 13 小时内,我们受到了我们认为是恶意活动的打击。一个人(我认为)试图每秒发送超过 500 个请求,我猜是个坏演员。不幸的是,我没有很好的 devops 技能,但我知道这是我需要在此之后投资的一个领域。

目前,我希望尽快阻止/速率限制这些请求。我在网上读到 API 网关可以做到这一点。我将不胜感激有关创建哪种类型的 API 网关的任何建议。是否也可以创建一个 API 网关并将所有到该网关的请求路由到负载均衡器?是否也可以根据请求主体而不是 IP 地址来限制请求?谢谢,我非常感谢对此的任何回应。我也很高兴在必要时改进我的问题。

load-balancing rate-limiting amazon-web-services amazon-api-gateway ip-blocking
  • 1 个回答
  • 120 Views
Martin Hope
A Poor
Asked: 2021-05-04 11:47:56 +0800 CST

如何跟踪用户对 AWS 上的外部 API 的请求?

  • 1

我有点初学者,但我正在使用 AWS SAM(使用 API Gateway 和 Lambda)创建一个外部 API,我想要一种跟踪和监控使用情况的方法。

我正在考虑的一些选择:

1.将请求存储在数据库中

Pro:它可以让我存储尽可能多的关于请求的信息
Con:我认为这可能太慢而无法处理大量快速请求

2. 记录用户使用 Redis 发出请求的频率——但我还想要更多关于他们发出的请求的信息

Pro:我可以快速计算用户请求
Con:如果我的键值对是,这可能会限制我可以存储的有关用户的信息量user-id:number-of-requests

3.使用消息队列

Pro:我可以将请求信息放入消息队列,然后让另一个 Lambda 函数将其放入数据库,而不会减慢 API 的响应时间 Con:这可能过于复杂?而且我可能仍然会遇到与选项 1 相同的问题,即我会同时进行一堆小交易。

您能否提出一种方法或批评上述任何选项?

谢谢你的帮助!

database amazon-web-services amazon-api-gateway amazon-lambda message-queuing
  • 1 个回答
  • 50 Views
Martin Hope
Wei Minn
Asked: 2021-03-16 10:36:14 +0800 CST

AWS ECS Fargate 目标组运行状况检查失败

  • 3

SpringBoot 应用程序在 AWS Fargate 集群的 ECS 服务中作为 ECS 任务运行。ECS 服务是负载平衡的,因此由服务生成的任务会自动注册到目标组。

我可以通过 API Gateway => VPC Link => Network ELB => Application ELB => ECS Task 调用 Health 端点,如下所示: 来自 Postman 的调用

但是,HealthChecks 似乎失败了,因此,任务被不断取消注册,导致设置完全无法使用。

ECS 服务事件

我已确保将目标组点的 HealthCheck 配置为指向正确的端点 URL,如下所示: Health Check Settings

我还确保 Fargate 任务所属的安全组允许来自应用程序负载均衡器的流量,如下所示: ECS 任务的安全组

但不知何故,HealthChecks 一直失败,任务被取消注册,我很困惑!

非常感谢您的帮助!

load-balancing amazon-web-services amazon-api-gateway aws-fargate containers
  • 1 个回答
  • 1138 Views
Martin Hope
GlinesMome
Asked: 2020-09-26 08:57:13 +0800 CST

如何调试 AWS API Getway “内部消息错误”?

  • 0

我创建了一个链接到(经过测试和工作的)Lambda 函数的 API 网关。

我得到一个

{"message":"Internal Server Error"}

当我尝试访问它时,但我没有关于它的日志,甚至创建和附加日志流。

我怎样才能有更精确的错误?

logging amazon-web-services amazon-api-gateway
  • 1 个回答
  • 385 Views
Martin Hope
Bobface
Asked: 2020-05-07 12:32:39 +0800 CST

AWS:保护对 EC2 实例上特定端口的访问

  • 0

我有一个 EC2 实例运行一个应用程序,该应用程序在端口 1000 和 2000 上提供 API。应该允许 EC2 实例的所有传出流量以及到端口 1000 的任何传入流量。

但是,与端口 2000 的连接应受授权保护 - 例如通过 Cognito 用户池。我在考虑是否可以使用 API 网关来实现这一点。我想到了三个问题:

  • 到端口 1000 的所有流量,不应该以任何形式的访问控制保护并且应该对整个互联网开放,是否也必须通过 API 网关路由,从而导致更高的成本?
  • 如果可以不通过 API 网关将流量路由到端口 1000,同时将流量路由到端口 2000,那么外部客户端是否可以通过相同的 IP 访问两个端点?
  • 通过添加 API 网关,我是否仍然可以轻松地允许来自 EC2 实例的所有传出流量?

我正在为这种情况寻找一种经济高效的方法。如果有更好的方法来实现这种行为,我愿意听到涉及其他 AWS 服务而不是 API Gateway 的解决方案。

amazon-ec2 amazon-web-services amazon-api-gateway
  • 1 个回答
  • 78 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve