ファイアウォールルールを複数の 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 リファレンス - Actions
get-instance-port-states
open-instance-public-ports