既存の 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 ファイルが生成されます。次の例では、SourceInstanceNameRegionName をインスタンスの正しい情報に置き換えます。

$ 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 ファイルを使用して同じ設定を他のインスタンスに追加できます。次の例では、DestinationInstanceNamefirewall.json、および RegionName をインスタンスの正しい情報に置き換えます。

$ aws lightsail put-instance-public-ports --instance-name DestinationInstanceName  --cli-input-json file://firewall.json --region 
RegionName