Skip to main content

Automating Update AWS Security Group

·122 words·1 min
Rory
Author
Rory
Step by step the ladder is ascended

最近在AWS上弄了一个EC2主机用来放一些比较杂的东西,开放了某个端口,由于我并不想放开所有的IP的访问权限, 就写了一个脚本用来获取我本机的公网地址然后用AWS CLI获取,撤销、更新 AWS 安全组规则中的 IP 地址。

请确保你已经配置好 AWS CLI 并拥有适当的权限来执行相关操作。

获取当前允许访问端口 xx 的 IP 地址
#

#!/usr/bin/env fish

# 获取当前 IP
set current_cidr (aws ec2 describe-security-groups --group-ids sg-xxxxx --query "SecurityGroups[0].IpPermissions[?FromPort=='xx'].IpRanges[0].CidrIp" --output text)

echo "当前端口 xx 的 CIDR: $current_cidr"

撤销旧的 IP 权限
#

if [ -n "$current_cidr" ]
    aws ec2 revoke-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$current_cidr"
    echo "从端口 xx 撤销了 CIDR $current_cidr"
else
    echo "未找到端口 xx 的 CIDR"
end

获取本机的公共 IP 地址
#

set local_ip (curl -s ifconfig.me)
echo "本机公共 IP 地址: $local_ip"

添加新的 IP 权限
#

if [ -n "$local_ip" ]
    aws ec2 authorize-security-group-ingress --group-id sg-xxxxx --protocol tcp --port xx --cidr "$local_ip/32"
    echo "将新的 CIDR $local_ip/32 添加到端口 xx"
else
    echo "无法获取本机公共 IP 地址"
end

以上脚本中的 sg-xxxxx 需要替换为实际的安全组 ID。此脚本会按照上述步骤执行操作,以管理安全组规则