我想將防火牆規則複製到多個 Amazon Lightsail 執行個體。
簡短描述
若要對多個 Lightsail 執行個體使用相同的防火牆規則,您必須編輯每個執行個體的規則。使用 AWS Command Line Interface (AWS CLI) Lightsail 命令和 API 動作來擷取目前的防火牆規則。將它們放入 .json 檔案中,然後使用 .json 檔案將所有規則複製到其他 Lightsail 執行個體中。
解決方法
**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 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 取代為您的執行個體所在的區域。