ファイアウォールルールを複数の Amazon Lightsail インスタンスにコピーしたいと考えています。
簡単な説明
複数の Lightsail インスタンスに同じファイアウォールルールを使用するには、各インスタンスのルールを編集する必要があります。AWS コマンドラインインターフェイス (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 をインスタンスが存在するリージョンに置き換えます。