기존 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.    파라미터를 ‘PortInfo’로 변경한 후 .json 파일을 사용하여 동일한 구성을 다른 인스턴스에 추가할 수 있습니다. 다음 예에서는 DestinationInstanceName, firewall.jsonRegionName을 인스턴스에 대한 올바른 정보로 바꿉니다.

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