在不暴露源的情况下将 AWS API Gateway 与 Cloud Front 集成

2023-12-04

我正在开发一个无服务器架构的项目。

我发现虽然AWS说API Gateway可以保护您的资源免受DDoS攻击。

但如果有坏用户不断向您的服务发送垃圾邮件,

API网关无法提供适当的方法来处理此类问题。

所以我开始思考我能做什么:

  • AWS WAF 显然是一个解决方案。

我在 stackoverflow 上找到了这篇文章:带有 aws waf 的 API 网关

然后为了设置WAF,

我将 Cloud Front 发行版放在 API 网关前面。

我意识到这可能是一个解决方案,但是是吗?

这是我发现的问题:

  1. 我有一个cloud front发行版,它的域名是cdn.net

  2. 我将原始路径设置为我的 api 网关:https://sampleagigw.amazon.com,并设置其阶段的路径dev.

  3. 当我调用 GET 时http://cdn.net/posts,它会返回我期望的结果。

  4. 那么如果你把http://cdn.net/posts在浏览器上,它比你想象的更让你惊讶,它还在浏览器的地址栏上暴露了API网关的url:https://sampleagigw.amazon.com/dev/posts

这意味着WAF和Cloud front的所有工作都是毫无意义的。

我有什么误解吗?


检查其他 CloudFront 分配 (cdn.net) 上的“查看器协议策略”,并确保将其设置为“将 HTTP 重定向到 HTTPS”或“仅 HTTPS”。或者,您可以编辑源并将“源协议策略”设置为“仅 HTTPS”。

如果您将“查看器协议策略”设置为“HTTP 和 HTTPS”,并将“源协议策略”设置为“匹配查看器”,那么我可以看到您将如何获得此结果。你输入http://cdn.net/posts在浏览器上,然后 cdn.net 发行版尝试连接到http://sampleagigw.amazon.com(无 https/tls/ssl)。这将转到由 API Gateway 创建的 CloudFront 分配,该分配设置为“将 HTTP 重定向到 HTTPS”。由于它收到了 HTTP 请求,因此它返回 302 重定向到http://sampleagigw.amazon.com。这是由 cdn.net 分发返回给浏览器的。然后浏览器遵循 302 重定向,留下http://sampleagigw.amazon.com浏览器地址栏中的 URL。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不暴露源的情况下将 AWS API Gateway 与 Cloud Front 集成 的相关文章

  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • IOPS 与吞吐量。选择 AWS EBS 时使用哪一种

    在选择合适的 EBS 卷类型时 我需要决定IOPS 或吞吐量是否是更好的性能衡量标准 https docs aws amazon com en us AWSEC2 latest UserGuide EBSVolumeTypes html问题
  • 表单输入框不显示

    我正在尝试使用 Django 显示一个简单的表单输入文本框 我正在亚马逊 AWS 上部署 该网站在不同的服务器 pythonanywhere 上运行良好 但在 AWS 上存在主要问题 具体来说 输入框没有被显示 我使用的模板如下 首页 ht
  • 无法连接到 EC2 - ssh:连接到主机端口 22:连接被拒绝

    我目前在海外 尝试通过 ssh 连接到我的 EC2 实例 但收到错误ssh connect to host ec2 34 207 64 42 compute 1 amazonaws com port 22 Connection refuse
  • AWS Lambda 不读取环境变量

    我正在编写一个 python 脚本来查询 Qualys API 中的漏洞元数据 我在 AWS 中将其作为 lambda 函数执行 我已经在控制台中设置了环境变量 但是当我执行函数时 出现以下错误 module initialization
  • 在AWS EC2上挂载NVME磁盘

    所以我在每个节点上使用 NVME 磁盘创建了 i3 large 这是我的过程 lsblk gt nvme0n1 检查 nvme 是否尚未安装 sudo mkfs ext4 E nodiscard dev nvme0n1 sudo mount
  • 如何设置 AWS Appsync 请求超时限制 || AWSAppSync 客户端不提供回调

    我正在使用 AWS Appsync 来开发当前的应用程序 并面临一个严重的问题 即每当我在 Appsync 客户端中触发查询时 当互联网连接速度较慢时 请求永远不会以回调结束 我在互联网上查了一下 关于这个主题的信息来源有限 而且发现这个问
  • 从 Docker 容器中获取 AWS 实例元数据?

    是否有一种直接的方法可以从 Docker 容器内访问 AWS 实例元数据 例如 当尝试在 EC2 实例上获取 IAM 角色的凭证时 这将适用于实例本身 http 169 254 169 254 latest meta data iam se
  • 超时后无法部署到 AWS Elastic Beanstalk

    我是 AWS Elastic Beanstalk 的新手 这是我第一次遇到此问题 我尝试通过将我的应用程序 zip 上传到实例来部署新版本 更新完成后出现错误 已完成 但命令行超时 我增加了配置文件中的超时并重新部署 之后我收到了此消息 在
  • 在 AWS Glue 中覆盖动态框架中的镶木地板文件

    我使用动态框架在 S3 中写入镶木地板文件 但如果文件已存在 我的程序会附加一个新文件而不是替换它 我用的句子是这样的 glueContext write dynamic frame from options frame table con
  • AWS CloudSearch:1 个域中的不同文档?

    我有兴趣在我的 Web 应用程序中使用 AWS Cloud Search 我想要将 3 种不同的文档类型设为可搜索 用户 文章 图像 使用 Cloud Search 执行此操作的最佳方法是什么 我需要创建 3 个不同的 AWS 搜索域吗 这
  • 我可以指定默认的 AWS 配置文件吗?

    在我的开发环境中 我经常在多个 AWS 访问密钥之间切换 所以在我的 aws credentials文件 我有几个配置文件 然后 我可以通过指定以下内容将这些配置文件与 aws cli 一起使用 profile
  • 如何使用 AWS SAM 为 HttpApi 配置自定义域?

    我正在使用 AWS Lambda AWS API Gateway 和 aws sam 开发 API 我已经实现了 firebase 身份验证 我也使用嵌套堆栈 我正在尝试为我的 API 端点使用自定义域 因此我可以像这样调用api mydo
  • AWS SAM - 无法创建变更集:Waiter ChangeSetCreateComplete 失败

    AWS SAM 使用 aws sam cli 将代码库部署到 AWS 云 但出现以下错误 Failed to create the changeset Waiter ChangeSetCreateComplete failed Waiter
  • AWS Import-image 用户无权访问 S3 对象

    运行 AWS Amazon Web Services 导入映像任务时 aws ec2 import image description My OVA disk containers file c TEMP containers json 我
  • CORS 击败 AWS LAMBDA :(

    我读了很多关于 CORS Lambda AWS API Gateway 配置的文章 包括 AWS 的设置帮助 http docs aws amazon com apigateway latest developerguide how to
  • 适用于 AWS 区域的 Cassandra Ec2MultiRegionSnitch 或 GossipingPropertyFileSnitch

    我们在美国 AWS 区域有 3 个 Cassandra 节点 在新加坡 AWS 区域有 3 个节点 如果我必须构建多数据中心 我们是否必须使用 Ec2MultiRegionSnitch 或者我们可以使用 GossipingPropertyF
  • S3 静态网站中的目录列表

    我已经设置了一个 S3 存储桶来托管静态文件 使用网站端点 http s3 website us east 1 amazonaws com 时 它迫使我设置一个索引文件 当找不到文件时 它会抛出错误而不是列出目录内容 使用 s3 端点 s3
  • 无法在 xcode 8 beta 6 上编译 AWS CustomIdentityProvider

    我在 iOS 应用程序中使用 Amazon Cognito 和 Facebook 登录 直到 beta 5 为止此代码从这个SO线程 https stackoverflow com questions 37597388 aws cognit
  • 身份验证 AWS Cognito SRP

    我正在编写一个控制台 POC 来演示 AWS 认知身份验证 应用程序池而不是联合身份 作为我们的 API 网关身份验证机制 不在 AWS 中托管 这是用 C 编写的 我已经成功创建了一个用户 并确认了他们 但现在我需要进行身份验证以检索我可

随机推荐

  • APC值随机消失

    我使用 APC 来存储类名到类文件路径的映射 我在自动加载函数中像这样构建地图 class paths apc fetch class paths If the class path is stored in application cac
  • 为什么我无法访问此类的成员? [复制]

    这个问题在这里已经有答案了 我有以下三个类定义 class String public String String const char class ClassA public ClassA const String class Class
  • 语法错误:“导入”和“导出”可能仅与“源类型:模块”一起出现 - Gulp

    考虑以下两个文件 app js import Game from game game import React from react import ReactDOM from react dom export default absPath
  • php函数返回null而不是字符串[重复]

    这个问题在这里已经有答案了 我有一个数组 其中存储了所有类别 allCatArray array departments outdoor 123123 gt stdClass Object i gt 1 id gt departments
  • jQuery UI 日期选择器显示无操作

    是否可以显示 jQuery UI 日期选择器而无需单击任何内容 我希望日期选择器在窗口加载时可见 或者这是不可能的 如果没有 是否还有其他插件 或者最好自己创建一个新插件 您可以做的一件事是将焦点放在输入上 以便日期选择器显示 datepi
  • 将 String 或 Char 转换为 Keys 对象

    如果我使用以下代码 for int i 0 i lt text Length i char c text i Keys k Keys byte c MessageBox Show c ToString k ToString 我只能对大写字母
  • 模板化 Maven 原型

    我正在创建自己的 Maven 原型 这是我使用的项目的通用模板 在该模板中 我有许多 exec maven plugin 块 实际上每个项目都有所不同 这意味着在一个项目中我可能有 2 个 exec maven plugin 块 而在另一个
  • 创建一个基于 libreoffice 文本的数据源并使用 java 设置设置

    我需要在 Java 中创建一个 LibreOffice 基于文本的数据源 我的需求是向用户提供一个包含标题行和 n 个值行的 csv 文件 此 csv 文件是执行邮件合并作业的数据源 如果我使用 LibreOffice 向导手动创建数据源来
  • 通过 Asmack 发送 Image 时创建消息

    我在通过 XMPP 发送图像时遇到一个问题 下面是我完成的代码片段 我不知道代码有什么问题 Message msg new Message emailId Message Type chat ImageTransferExtension t
  • x86,BYTE 和 BYTE PTR 之间的区别

    这两行有什么区别 这里 PTR 发生了什么变化 first mov BYTE ecx 0 second mov BYTE PTR ecx 0 概括 NASM YASM 要求word ecx 当另一个操作数未隐含操作数大小时 否则 ecx i
  • CodeIgniter Upload 类 PDF 文件类型不允许

    在本地工作 但在我尝试过的两台服务器上显示相同的错误消息 使用 Codeigniter 2 1 3 private function upload file config upload path uploads config allowed
  • Kerberos aes-256 加密不起作用

    服务器是RHEL7 Kerberos是AD Windows 我只是KDC的客户 Arcfour hmac 工作正常 但是当我将加密类型更改为 aes 256 并设置新的密钥表时 kinit 仍然可以工作 但 kvno 不能 即使用户似乎拥有
  • 如何在不打电话的情况下从另一个应用程序中打开电话应用程序?

    我试图从我正在制作的应用程序中仅打开 电话 应用程序 而无需拨打号码 我试过了 NSString stringURL tel 但它什么也没做 任何人都有正确的解决方案 我见过关于这个主题的其他问题 但没有一个有效 这适用于打开短信应用程序
  • python 仅记录特定级别

    我使用 python 日志记录模块在 python 代码中记录事件 我也想记录 2 个日志文件 一个包含用户信息 另一个是供开发人员使用的更详细的日志文件 我已将两个日志文件设置为我想要的级别 usr log INFO 和 dev log
  • 为什么 NumPy 高级索引对列表列表和 numpy 数组产生不同的结果?

    我对 NumPy 的高级索引有疑问 I found this问题 但我想我的问题略有不同 在下面的例子中x array是预期的结果 但是当我对列表进行相同的尝试时 结果不同 来自 numpy 文档 当选择对象 obj 是 非元组序列对象 一
  • 是否可以覆盖所有媒体查询?

    我已经构建了一个响应式网站 其中包含针对不同移动设备的媒体查询 但希望在较小的设备上提供 覆盖所有 链接 单击时 该链接将删除所有媒体查询样式并将页面重置为默认样式 以 1024 像素宽的方式显示网站 有办法实现这一点吗 执行此操作的唯一方
  • android studio 3.3 创建新项目后在预览窗口中不显示操作栏和状态栏

    android studio 3 3 在创建新项目后未在预览窗口中显示操作栏和状态栏 我已经在 build graadle module app 文件中尝试过此操作 implementation com android support ap
  • 一条sql语句中的多个select

    我有一个调查答案表 例如 date q1 q2 12 12 10 yes no 12 13 10 no no 我想创建一个查询来获取该表的结果摘要 从而允许我设置相关的日期范围 我下面的声明几乎有效 SELECT SELECT Count
  • 控制器外部的 Orchard 主题属性

    我有一项服务将覆盖响应正文的内容 是否可以在覆盖内容的方法中使用主题 Themed public void forbiddenAlert IHttpContextAccessor Hca overriding response body 不
  • 在不暴露源的情况下将 AWS API Gateway 与 Cloud Front 集成

    我正在开发一个无服务器架构的项目 我发现虽然AWS说API Gateway可以保护您的资源免受DDoS攻击 但如果有坏用户不断向您的服务发送垃圾邮件 API网关无法提供适当的方法来处理此类问题 所以我开始思考我能做什么 AWS WAF 显然