如何使用 AWS CLI 创建、列出或更新 AWS WAF IPSet?
上次更新日期:2020 年 1 月 22 日
如何使用 AWS 命令行界面 (AWS CLI) 在 AWS WAF 中创建、列出或更新 IPSet?
简短描述
IPSet 指定了根据请求的来源 IP 地址将允许或阻止的 Web 请求。通过 AWS CLI,您可以使用 IPSet 来定义 Web 访问控制列表 (ACL) 的 IP 地址集。
解决方法
注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
此解决方法将使用 waf-regional CLI(在 botocore 版本 1.4.85 或更高版本中可用)命令在特定 AWS 区域创建一个 IPSet。如果您在 Amazon CloudFront 中创建了全局 IPSet,您可以使用 waf CLI 命令。
重要提示:如果您使用 waf-regional 命令,请在开始操作前确保选择了 AWS CLI 的默认区域,并验证该区域正是您要在其中创建 IPSet 的区域。否则,您必须在命令中为 IPSet 指定正确的 AWS 区域(使用 --region 选项)。
创建 IPSet
1. 登录到 AWS CLI。
2. 使用命令 get-change-token 生成更改令牌。
注意:更改令牌可防止应用程序向 AWS WAF 提交冲突的请求。您必须获得更改令牌并将其包括在创建、更新或删除 AWS WAF 对象的请求中。每个请求都必须使用一个唯一的更改令牌。有关更多信息,请参阅 GetChangeToken。
示例输出:
$ aws waf-regional get-change-token
{
"ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}
3. 使用 create-ip-set 命令创建一个 IPSet。示例输出:
$ aws waf-regional create-ip-set --name test_ipset --change-token 96836241-b667-4f0a-a655-e4bc49eaa2c4
{
"IPSet": {
"IPSetId": " bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test_ipset",
"IPSetDescriptors": []
},
"ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}
列出 IPSet
要列出 IPSet,请使用 list-ip-sets 命令。此命令的响应将会返回一组 IPSetSummary 对象。
示例输出:
$ aws waf-regional list-ip-sets
{
"IPSets": [
{
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test-ipset"
}
],
"NextMarker": "bd37ef8c-102b-4d7a-9532-80fb97e4c281"
}
注意:如果您指定了“限制”值并且您拥有的 IPSet 数超过该值,则 AWS WAF 将返回一个 NextMarker 值。请参阅请求参数。
更新 IPSet
$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --change-token c47ddcba-d128-4ec9-acd6-ce981c6655c5 --updates Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.1/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.2/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.3/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.4/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.5/32"}'
{
"ChangeToken": " c47ddcba-d128-4ec9-acd6-ce981c6655c5"
}
JSON 文件方法:
1. 根据前面创建 IPSet 部分所述,使用 get-change-token 命令生成更改令牌。
2. 在您的首选编辑器中使用您的更新请求语法创建一个 JSON 文件(例如 test.json)。例如:
$ nano test.json
{
"ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa",
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Updates": [{
"Action": "DELETE",
"IPSetDescriptor": {
"Type": "IPV4",
"Value": "192.168.2.5/32"
}
}]
}
3. 使用 update-ip-set 命令将您通过刚刚创建的 JSON 文件请求的更改应用到该 IPSet。例如:
$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --cli-input-json file:///home/ec2-user/test.json
{
"ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa"
}
4. 使用 get-ip-set 命令验证您请求对该 IPSet 作出的更改。例如:
$ aws waf-regional get-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281
{
"IPSet": {
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test-ipset",
"IPSetDescriptors": [
{
"Type": "IPV4",
"Value": "192.168.2.2/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.3/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.1/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.4/32"
}
]
}
}