为了保护我们的API,我正在尝试使用RateBasedRule部署WAFRegional。API网关位于SAM模板中,其中我还有一个嵌套堆栈,用于存放WAFRegional配置的子模板。下面提供了WAFRegional配置的子模板。在ExecuteChangeSet阶段将发生以下情况:
CamerasIpSet已创建
创建了CamerasRateRule
WAFCamerasWebACL CREATE_FAILED:引用的项目不存在。(服务:AWSWAFRegional;状态代码:400;错误代码:WAFNonexistentItemException
我发现大约2个月前的以下帖子,其中有人在使用Serverless时遇到相同的问题:https : //forum.serverless.com/t/dependon-api-gateway-deployment/7792
我在这里错过了什么?
AWSTemplateFormatVersion: '2010-09-09'
Description: 'Template for WAF Configuration'
Parameters:
CamerasApi:
Description: "Arn of the Cameras Api"
Type: String
Default: cameras-api-dev
StageName:
Description: "Stage name of the Cameras Api"
Type: String
Default: v
Blocking:
Description: "Number of calls per 5 minutes for WAF IP blocking."
Type: Number
Default: 2000
EnvironmentType:
Type: String
Default: "dev"
Description: "Type of environment: dev, staging or prod."
Resources:
WAFCamerasWebACL:
Type: AWS::WAFRegional::WebACL
DependsOn: CamerasRateRule
Properties:
DefaultAction:
Type: ALLOW …
Run Code Online (Sandbox Code Playgroud) 我在新创建的 VPC 中设置了一个 Aurora 数据库(已配置)并且没有公共可访问性。由于我想在 VPC 中运行一个 Lambda 函数,该函数既可以访问 RDS 实例,也可以访问 Internet,因此我将 RDS 实例的路由表更改为允许来自我放置在公共子网中的 NAT 网关的流量在同一个 VPC 中。
对于 Lambda 函数本身,我创建了一个单独的私有子网,在路由表中也只允许来自 NAT 网关的流量。我将此子网和 VPC 分配给 Lambda 设置中的 Lambda 函数。互联网连接在此配置下工作正常,但我无法访问数据库。这就是为什么我关注了这篇文章(https://serverfault.com/questions/941886/connect-an-aws-lambda-function-triggered-by-api-gateway-to-aurora-serverless-mys)并添加了 IP CIDR RDS 实例的安全组(称为 rds-launch-wizard)。
尽管如此,Lambda 函数仍能够与公共互联网交互,但无法连接到 RDS 实例(超时)。我的想法不多了,这里有什么问题?