如何将防火墙规则复制到多个 Amazon Lightsail 实例?
简短描述
防火墙规则对于每个 Lightsail 实例都是唯一的。如果您希望多个实例拥有相同的规则,则必须为每个实例编辑规则。您可以使用 AWS Command Line Interface(AWS CLI)和 API 调用来检索当前的防火墙规则,然后将其输出到 .json 文件中。您可以使用 .json 文件将所有规则复制到另一个 Lightsail 实例中。
**注意:**您必须安装和配置 AWS CLI 才能执行以下解决方法步骤。如果在运行 AWS CLI 命令时收到错误,请确保您使用的 AWS CLI 为最新版本。 您还可以使用 AWS CloudShell 来执行这些步骤。
解决方法
1. 运行以下命令以检索要从现有实例复制的当前配置,然后将其输出到 .json 文件。这将生成一个包含防火墙配置的 .json 文件。在以下示例中,将 SourceInstanceName 和 RegionName 替换为您的实例的正确信息。
$ aws lightsail get-instance-port-states --instance-name SourceInstanceName --region RegionName | grep -v "state" > firewall.json
2. 打开此示例中的 .json 文件 firewall.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": []
}
]
}
3. 将参数更改为**“portInfos”**后,您可以使用 .json 文件向其他实例添加相同的配置。在以下示例中,将 DestinationInstanceName、firewall.json 和 RegionName 替换为您的实例的正确信息。
$ aws lightsail put-instance-public-ports --instance-name DestinationInstanceName --cli-input-json file://firewall.json --region
RegionName
相关信息
AWS CLI 命令参考 – lightsail
Amazon Lightsail API 引用 – 操作
get-instance-port-states
open-instance-public-ports