我想将防火墙规则复制到多个 Amazon Lightsail 实例。
简短描述
要对多个 Lightsail 实例使用相同的防火墙规则,必须编辑每个实例的规则。使用 AWS 命令行界面(AWS CLI)Lightsail 命令和 API 操作来检索当前的防火墙规则。将这些规则加入一个 .json 文件中,然后使用这个 .json 文件将所有规则复制到其他 Lightsail 实例中。
解决方法
**注意:**如果在运行 AWS CLI 命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,确保您使用的是最新版本的 AWS CLI。
-
要检索要从现有实例复制的当前配置,请运行 get-instance-port-states 命令:
$ aws lightsail get-instance-port-states --instance-name SourceInstanceName --region RegionName | grep -v "state" > firewall.json
**注意:**前面的命令生成一个包含防火墙配置信息的 .json 文件。将 SourceInstanceName 替换为您的源实例名称,将 RegionName 替换为您的实例所在的 AWS 区域。
-
打开 .json 文件,然后将 portStates 替换为 portInfos:
{
"portStates": [
{
"fromPort": 80,
"toPort": 80,
"protocol": "tcp",
"cidrs": [
"0.0.0.0/0"
],
"cidrListAliases": []
},
{
"fromPort": 22,
"toPort": 22,
"protocol": "tcp",
"cidrs": [
"0.0.0.0/0"
],
"cidrListAliases": []
},
{
"fromPort": 8080,
"toPort": 8080,
"protocol": "tcp",
"cidrs": [
"11.11.11.0/20",
"22.22.22.0/20"
],
"cidrListAliases": []
}
]
}
-
要将相同的配置添加到其他实例,请运行 put-instance-public-ports 命令:
$ aws lightsail put-instance-public-ports --instance-name DestinationInstanceName --cli-input-json file://firewall.json --region
RegionName
**注意:**将 DestinationInstanceName 替换为目标实例,将 firewall.json 替换为您的 .json 文件名,将 RegionName 替换为您的实例所在的区域。