如何將現有 Lightsail 防火牆規則複製到不同的 Lightsail 執行個體?
上次更新日期:2021 年 9 月 28 日
如何將防火牆規則複製到多個 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