如何使用 AWS CLI 创建、列出、获取或更新 AWS WAF IPSet?
我想使用 AWS 命令行界面 (AWS CLI) 在 AWS WAF 中创建、列出、获取或更新 IPSet。
解决方案
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI。
该解决方案使用 wafv2 在特定 AWS 区域中创建 IPSet 或在 Amazon CloudFront 中创建要使用的全局 IPSet。
在继续操作之前,请验证 AWS CLI 的默认区域是否是您要创建 IPSet 的区域。如果需要,使用 -region 选项更新区域。如果您使用 CloudFront,请在美国东部(弗吉尼亚北部)创建 IPSet,即 us-east-1 区域。
创建 IPSet
完成以下步骤:
- 登录 AWS CLI。
- 运行 create-ip-set 命令来创建 IPSet。
注意:****-scope 指定 IPSet 是用于 CloudFront 分配还是区域应用程序。区域应用程序包括:应用程序负载均衡器、Amazon API Gateway、REST API、AWS AppSync、GraphQL API 或 Amazon Cognito 用户池。
以下输出是区域 IPSet 的示例:
以下输出是 CloudFront IPSet 的示例:$ aws wafv2 create-ip-set --name ipv4-block --scope REGIONAL --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-west-1{ "Summary": { "Name": "ipv4-block", "Id": "952c5e24-2352-4a1e-a90b-01499086be1b", "Description": "", "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6", "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b" } }
$ aws wafv2 create-ip-set --name ipv4-block-cf --scope CLOUDFRONT --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-east-1{ "Summary": { "Name": "ipv4-block-cf", "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057", "Description": "", "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123", "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057" } }
列出 IPset
要列出您的所有 IPset,请运行 list-ip-sets 命令。
以下输出是区域 IPSet 的示例:
$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1{ "NextMarker": "ipv4-block", "IPSets": [ { "Name": "ipv4-block", "Id": "952c5e24-2352-4a1e-a90b-01499086be1b", "Description": "", "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6", "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b" } ] }
以下输出是 CloudFront IPSet 的示例:
$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{ "NextMarker": "ipv4-block-cf", "IPSets": [ { "Name": "ipv4-block-cf", "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057", "Description": "", "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123", "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057" } ] }
**注意:**如果您为 Limit 指定一个值并且拥有的 IPSet 数超过该值,则 AWS WAF 将返回一个 NextMarker 值。有关更多信息,请参阅请求参数。
获取 IPset
要检索特定的 IPSet,请运行 get-ip-set 命令。
以下输出是区域 IPSet 的示例:
$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{ "NextMarker": "ipv4-block-cf", "IPSets": [ { "Name": "ipv4-block-cf", "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057", "Description": "", "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123", "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057" } ] }
更新 IPSet
要更新 IPSet,请运行 update-ip-set 命令。必须使用速记语法或 JSON 文件。
速记语法
完成以下步骤:
-
运行 get-ip-set 命令获取要更新的 IPSet 的 ID 和 LockToken。
以下输出是获取 IPSet 的速记语法的示例:$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id fbce0c08-476b-4487-af2c-e38f0303ac5f --region eu-west-1 { "IPSet": { "Name": "ipv4-block", "Id": "fbce0c08-476b-4487-af2c-e38f0303ac5f", "ARN": "arn:aws:wafv2:eu-west-1:11111111:regional/ipset/ipv4-block/fbce0c08-476b-4487-af2c-e38f0303ac5f", "Description": "", "IPAddressVersion": "IPV4", "Addresses": [ "10.1.1.2/32", "10.1.1.1/32" ] }, "LockToken": "14562ba3-f99b-4e39-a232-51a703302c88" }
注意:AWS WAF 使用令牌进行乐观锁。要更改与令牌关联的实体,请添加令牌以进行操作,例如更新和删除。AWS WAF 使用该令牌来确认在您上次检索该实体后没有对其进行任何更改。如果进行了更改,则更新将失败,并出现 WAFOptimisticLockException。要解决此问题,请重新运行 get-ip-set 命令。然后,使用操作返回的新令牌。
-
运行 update-ip-set 命令,使用新配置覆盖当前的 IPSet 配置。包括 ID 和 LockToken 值:
$ aws wafv2 update-ip-set --name ipv4-block --scope REGIONAL --id 952c5e24-2352-4a1e-a90b-01499086be1b --addresses "10.1.1.1/32" "10.1.1.2/32" --lock-token c54cc0d5-42dc-4b4b-9335-a86c7ad784a6 --region us-west-1{ "NextLockToken": "a459c121-f160-4475-9352-fa602ff33df7" }
-
运行 get-ip-set 命令来查看 IPSet 的更改。包括 ID 和 NextLockToken 值:
$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{ "IPSet": { "Name": "ipv4-block", "Id": "952c5e24-2352-4a1e-a90b-01499086be1b", "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b", "Description": "", "IPAddressVersion": "IPV4", "Addresses": [ "10.1.1.2/32", "10.1.1.1/32" ] }, "LockToken": "a459c121-f160-4475-9352-fa602ff33df7" }
JSON 文件
完成以下步骤:
-
在您的首选编辑器中,使用更新后的请求语法创建 JSON 文件:
$ nano ip.json{ "Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"] }
-
运行 get-ip-set 命令获取要更新的 IPSet 的 ID 和 LockToken:
$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{ "IPSet": { "Name": "ipv4-block", "Id": "952c5e24-2352-4a1e-a90b-01499086be1b", "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b", "Description": "", "IPAddressVersion": "IPV4", "Addresses": [ "10.1.1.2/32", "10.1.1.1/32" ] }, "LockToken": "a459c121-f160-4475-9352-fa602ff33df7" }
-
运行 update-ip-set 命令,使用新配置覆盖当前的 IPSet 配置。不要以内联方式列出 IP 地址。改为引用 JSON 文件。包括 ID 和 LockToken 值:
$ aws wafv2 update-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --lock-token a459c121-f160-4475-9352-fa602ff33df7 --region us-west-1 --cli-input-json file://ip.json{ "NextLockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480" }
-
运行 get-ip-set 命令来查看 IPSet 的更改。包括 ID 和 NextLockToken 值:
$ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{ "IPSet": { "Name": "ipv4-block", "Id": "952c5e24-2352-4a1e-a90b-01499086be1b", "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b", "Description": "", "IPAddressVersion": "IPV4", "Addresses": [ "10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24" ] }, "LockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480" }
相关信息
相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前