AWS Infra

[ AWS ] Python boto3를 이용하여 WAF IPset IP 수정하기

Pydole 2023. 5. 16. 17:28

 

 

Python Boto3를 이용한 WAF IPset에 IP Address 추가

 

* 하나의 IP를 추가/삭제는 않되기 때문에, 기존 IP 리스트를 가져와서 수정하는 것

 

 

 

import boto3

client = boto3.client('wafv2')

ipsetName = 'string'
ipsetId = 'string'
ipAddress = 'x.x.x./32'

def wafv2_update_ip_set(n,i,a):

    # ip가 포함되어 있는지 get_ip_set으로 확인
    response = client.get_ip_set(
            Name=n,
            Scope='REGIONAL',
            Id=i)

    if a in response['IPSet']['Addresses']:
        return 'exist ipaddress'
        
    else:
        # ip가 포함되어 있지 않으면 기존 IPset IP에 추가
        ipset_ipaddrs = response['IPSet']['Addresses']
        ipset_ipaddrs.append(a)
        
        response = client.update_ip_set(
                Name=n,
                Scope='REGIONAL',
                Id=i,
                Addresses=ipset_ipaddrs,             # list data
                LockToken=response['LockToken'])     # LockToken값은 get_ip_set에서 득한다.
                
        # 응답값 리턴 : 200 정상
        return response['ResponseMetadata']['HTTPStatusCode']

print(wafv2_update_ip_set(ipsetName,ipsetId,ipAddress))



200

 

 

 

정상적으로 추가되면, 200응답코드를 리턴해주고, 아래와 같이 추가된 IP와 함께 수정된다.

 

 


 

 FastAPI와 같이 API로도 활용해도 괜찬겠다.

 

 

 

 

 

 

 

Document : https://boto3.amazonaws.com/v1/documentation/api/1.18.27/reference/services/wafv2.html#WAFV2.Client.update_ip_set

 

WAFV2 — Boto3 Docs 1.18.27 documentation

ResourceArn (string) -- [REQUIRED] The Amazon Resource Name (ARN) of the web ACL from which you want to delete the LoggingConfiguration .

boto3.amazonaws.com