我通过 API Gateway 和 Lambda 在 AWS 上运行业务 API。目前,我使用内置的使用计划和 API 密钥来处理速率限制。每个帐户级别(例如基本、中等、高级)都与一个使用计划相关联,每个客户的 API 密钥都链接到该使用计划。
我刚刚发现单个 AWS 账户每个区域可以拥有 500 个 api 密钥的硬性(但可增加)限制(https://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/limits)。 html)。
依靠 API 密钥来限制每个客户的速率是否可持续?我们最终将达到 500 人的限制。我们还可以使用其他解决方案吗?
多谢
rate-limiting amazon-web-services aws-lambda aws-api-gateway api-gateway
背景:我的公司正在转向 API 网关来管理我们网络中的所有服务。目前,每项服务均使用 Azure AD 进行身份验证。一切都是单一租户,只允许公司用户。 问题:我的理解正确吗? 问题:当我调用 http:localhost:5000/authResource/get 时,我收到来自 Ocelot 的 401 响应。跟踪错误后,我发现当 Ocelot 身份验证中间件尝试使用 AzureADJwtBearer 方案进行身份验证时,我得到了 null。
我遵循了与 Ocelot 和 azure ad 相关的问题的建议,但即使遵循了这些建议,我也无法让任何东西发挥作用。(主要来自这个答案:How set up Ocelot Api Gateway with Azure Active Directory)我想我可能误解了身份验证应该如何工作。我目前的理解是,我告诉 Ocelot 使用 AzureADJwtBearer 方案针对我的 API 之一进行身份验证。在我的配置中,我有该特定 api 设置的信息(ClientId、TenantId 等)。
一旦我调用该路由,我希望 Ocelot 致电 Microsoft 以开始身份验证。此时,我期望与 API 提供的流程相同,即我拨打电话并获取 Microsoft 登录页面,然后在输入用户名和密码后将我重定向回应用程序。
在将我重定向回 Ocelot 后,我猜(这是我模糊的部分),我希望 ocelot 存储 Microsoft 发回的访问令牌以获取我刚刚请求的特定资源。然后我希望 ocelot 将令牌附加到 Auth 标头,然后发送对我最初请求的资源的请求。
为了澄清这一点,我将包含我的启动文件和 ocelot.json 文件的代码。来自 Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddProtectedWebApi(Configuration)
.AddProtectedApiCallsWebApis(Configuration)
.AddInMemoryTokenCaches(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用新的 Spring Boot Starter Parent 2.4.2 构建网关 API,但由于某种原因,它看起来spring-cloud-starter-netflix-zuul不再受支持并且不适用于新版本!有替代品吗?
我正在为我的环境创建 AWS Cloudformation 模板,并尝试为 API 网关方法启用 CORS。问题#40292888 的回答链接到问题#40292888部分回答了我的问题。当 API 返回代码 200 时,解决方案效果很好,但我仍然收到CORS 标头 \xe2\x80\x9cAccess-Control-Allow-Origin\xe2\x80\x9d 丢失而没有提供返回代码 403 Forbidden 的 api-key。我知道,如果您在从控制台启用 CORS 时检查 DEFAULT 4XX/5XX 它可以工作,我将如何在我的 cloudformation 模板中模拟它?
\n\n谢谢你,
\n我正在尝试将 api 网关的调用重定向到 AWS 中的公共 elb。ELB 向世界开放,但我无法通过 API 网关使其工作。
当我调用事件操作 { "message": "Internal server error" } 时,我从邮递员那里收到此响应
从 AWS 测试控制台,我收到此错误:
2018 年 1 月 17 日星期三 20:29:12 UTC :由于配置错误而执行失败:主机名“public-elb.amazonaws.com”与对等方提供的证书主题不匹配 (CN=*.confidential.com) 17 20:29:12 UTC 2018:方法已完成,状态:500
我假设 ELB 是可访问的,因为然后我更改为另一个随机 URL,错误代码是“无效的端点地址”。
为什么我会收到此错误?我只有一个证书,并且 url 和 elb 中的证书相同。
amazon-web-services amazon-elb aws-api-gateway elastic-load-balancer api-gateway
有没有办法从 aws cli 删除 Amazon API Gateway?
我创建了一堆网关,需要一段时间才能将它们从 GUI 中删除。有没有办法从 aws cli 做到这一点
在任何地方都找不到任何示例
我们使用 kong api 网关作为所有 api 的单一网关。我们的api很少(1500-2000ms)面临延迟问题。后来当我们检查时,由于“速率限制”插件,正在创建延迟。当我们禁用插件时,延迟会得到改善,并且响应与我们直接从 IP 获得的响应相同(接近 300 毫秒)。我正在尝试设置 redis 节点来缓存数据库查询,我不确定我们如何配置 kong 以从 redis 本身读取。我们如何将数据库查询缓存到 redis 节点。我们正在为 kong 使用 postgresql。
我正在尝试将 Traefik 作为 API 网关运行,并希望使用以下 docker compose 文件来触发 ForwardAuth 中间件,但中间件的身份验证端点未被命中。我将它与本地主机一起使用。
version: '3'
services:
reverse-proxy:
image: traefik # The official Traefik docker image
command: --api --docker # Enables the web UI and tells Traefik to listen to docker
ports:
- "80:80" # The HTTP port
- "8080:8080" # The Web UI (enabled by --api)
volumes:
- /var/run/docker.sock:/var/run/docker.sock # So that Traefik can listen to the Docker events
- $PWD/traefik.toml:/traefik.toml
whoami:
image: emilevauge/whoami
labels:
- traefik.enable=true
- "traefik.frontend.rule=Host:whoami.docker.localhost"
- "traefik.http.middlewares.test-redirectscheme.redirectscheme.scheme=https"
- "traefik.http.middlewares.test-replacepath.replacepath.path=/foo" …Run Code Online (Sandbox Code Playgroud) 我已经将 Ocelot 与 Asp.Net Core 2.1 一起使用并且可以正常工作,但是当与 Asp.Net Core 3.1 一起使用时,它根本无法工作。在我看来,它没有选择“ocelot.json”文件。以下是我的 Program.cs 文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace ApiGateway
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((hostingContext, config) =>
{
config
.SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{hostingContext.HostingEnvironment.EnvironmentName}.json", optional: true, reloadOnChange: true)
.AddJsonFile($"ocelot.{hostingContext.HostingEnvironment.EnvironmentName}.json")
.AddEnvironmentVariables();
})
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}
Run Code Online (Sandbox Code Playgroud)
下面是 Startup.cs 文件: …
我的 Lambda 函数返回 html 页面。我能够从 Node js 10.x 成功返回完整的 html。因此,如果我使用 api gateway url https://2kiz3ttah.execute-api.eu-west-1.amazonaws.com/stage/login访问我的 lambda ,如果未登录,则 lambda 应返回重定向 URL。如何返回在浏览器中打开的 URL,而不是呈现 HTML 页面。
api-gateway ×10
aws-lambda ×2
ocelot ×2
amazon-elb ×1
c# ×1
cors ×1
docker ×1
java ×1
kong ×1
netflix-zuul ×1
redis ×1
spring ×1
spring-boot ×1
traefik ×1