前提
- AmazonのIP ⇒ AWS IP アドレスの範囲のip-ranges.json
- 取得したIPはすべてTCP443で投入する
- Lambda Python3.6で実行
IPの取得とSGの書き換え
url = 'https://ip-ranges.amazonaws.com/ip-ranges.json'
req = urllib.request.Request(url)
with urllib.request.urlopen(req) as res:
ipranges = json.load(res)
prefixes = ipranges['prefixes']
ips = []
for ip in prefixes:
if ip["region"] == "取得したいリージョン" and ip["service"] == "取得したいサービス名":
ips.append(ip["ip_prefix"])
for add_ip in ips:
DESC = '自由記載'
security_group = ec2.SecurityGroup(変更したいSGのID)
security_group.authorize_egress(
DryRun=False,
IpPermissions=[
{
'IpProtocol': 'tcp',
'FromPort': 443,
'ToPort': 443,
'IpRanges': [
{
'CidrIp': add_ip,
'Description': DESC
},
]
}
]
)
その他
-
上記に加え、既存IPの削除処理と下記IPアドレス範囲の変更通知を組み合わせればIP変更毎に自動的にSG書き換えも可能
AWS IP アドレスの範囲 - AWS 全般のリファレンス -
一度に結構な数のIPを投入するので、場合によってはセキュリティグループルール数の上限緩和が必要
以上