Python Code

For Pyhton
AWS IP Range

AWS IP Range

Created by
  • mchlkim
Created at
AWS 공개되는 IP 범위는 여러 이유로 인해 변동이 될 수 있다.
이로 인해 AWS에서는 json으로 제공을 하고 있지만 Python 코드를 통해서 목록을 볼 수 있거나 코드를 사용하여 좀 더 유연하게 사용이 가능하다.

설치

pip install awsipranges
위의 명령어를 사용하여 패키지를 설치 가능하다.

예제

아래 코드는 서울리전의 Codebuild의 퍼블릭 엔드포인트 아이피를 조회를 위한 예제이다.
import awsipranges region = "ap-northeast-2" def get_ip_range(regions, services): ip_ranges = awsipranges.get_ranges() filter_ip_ranges = ip_ranges.filter(regions=regions, services=services) ip_range_list = [] for ip_range in filter_ip_ranges: ip_range_list.append(str(ip_range)) return ip_range_list res = get_ip_range(region, 'CODEBUILD') print(res)
다른 코드에서도 사용하기 용이하기 위해 List 변수에 추가하여 출력하여 사용하였다.
output
['3.38.90.8/29', '13.124.145.16/29']
만일 다중 리전환경 및 여러 서비스의 퍼블릭 엔드포인트가 필요하다면 regions, services에 리스트 형식으로 호출할 리전들 또는 서비스들을 추가하여 호출하면 된다.
region = "ap-northeast-2" services = ['CODEBUILD', 'EC2'] def get_ip_range(regions, services): ip_ranges = awsipranges.get_ranges() filter_ip_ranges = ip_ranges.filter(regions=regions, services=services) ip_range_list = [] for ip_range in filter_ip_ranges: ip_range_list.append(str(ip_range)) return ip_range_list res = get_ip_range(region, services) print(res)
리스트를 사용하여 호출하는 간단한 예제를 보여주기 위해 한 개의 리스트에 모두 담아 주었다.
필요시에는 서비스 및 리전을 구분하여 리스트에 추가해 주는 게 좋다.
output
['3.2.37.0/26', '3.5.140.0/22', '3.5.144.0/23', '3.5.184.0/21', '3.34.0.0/15', '3.36.0.0/14', '3.38.90.8/29', '13.124.0.0/16', '13.124.145.16/29', '13.125.0.0/16', '13.209.0.0/16', '15.164.0.0/15', '15.177.76.0/24', '15.193.9.0/24', '35.71.109.0/24', '43.200.0.0/14', '52.78.0.0/16', '52.79.0.0/16', '52.94.248.176/28', '52.95.252.0/24', '54.180.0.0/15', '99.77.141.0/24', '99.77.242.0/24', '99.150.24.0/21', '99.151.144.0/21', '151.148.40.0/24', '159.248.200.0/21', '159.248.216.0/21', '173.83.198.0/24', '2406:da00:2000::/40', '2406:da12::/36', '2406:da15::/36', '2406:da22::/36', '2406:da25::/36', '2406:da60:2000::/40', '2406:da61:2000::/40', '2406:da68:2000::/40', '2406:da69:2000::/40', '2406:da70:2000::/40', '2406:daf0:2000::/40', '2406:daf1:2000::/40', '2406:daf2:2000::/40', '2406:daff:2000::/40', '2600:f0f0:1:1000::/56', '2600:f0f0:82:900::/56']