如何在创建AWS EC2实例时添加自定义标签并导出实例公网IP日志
AWS 批量创建EC2并自定义标签、导出公网IP清单方案
以下提供两种不需要Terraform的实现方式,可按需选择:
方案1:纯AWS Web控制台操作(无需额外环境)
- 进入EC2控制台的「启动实例」向导,依次选择你的目标AMI、实例规格、密钥对、安全组等常规配置
- 在「实例数量」栏输入你需要创建的实例总数
- 下滑到「标签」配置模块,添加键为
Name的标签,值填写Server ${count.index+1},控制台会自动为批量创建的实例依次赋值Name标签为Server 1、Server 2、Server 3
提示:若使用旧版启动向导不支持
${count.index}变量,可在实例创建完成后,批量选中所有新实例,点击「操作」→「标签和实例设置」→「管理标签」,手动批量修改Name标签即可
- 确认所有配置无误后启动实例
- 实例启动完成后,在EC2实例列表页点击右上角齿轮设置按钮,勾选「名称」和「公有IPv4地址」两个展示字段,全选目标实例后点击「操作」→「导出实例列表」,导出CSV格式的清单即可得到标签与公网IP的对应关系,也可直接复制列表内容整理为日志文件。
方案2:AWS CLI/CloudShell 脚本方案(适合高频重复操作)
如果需要经常执行该操作,可以用脚本实现全自动化,无需手动在控制台点选:
- 前置准备:本地已安装AWS CLI并完成身份认证,或者直接点击AWS控制台顶部的CloudShell图标,在浏览器内置的终端中操作
- 参考脚本如下,替换尖括号内的参数即可使用:
#!/bin/bash # 自定义参数配置 AMI_ID="<替换为你的AMI ID>" INSTANCE_TYPE="<替换为实例规格,例:t2.micro>" KEY_NAME="<替换为你的密钥对名称>" SECURITY_GROUP_ID="<替换为你的安全组ID>" INSTANCE_COUNT=3 # 实例数量 TAG_PREFIX="Server" # Name标签前缀 # 批量创建实例,获取实例ID列表 INSTANCE_IDS=$(aws ec2 run-instances \ --image-id $AMI_ID \ --instance-type $INSTANCE_TYPE \ --key-name $KEY_NAME \ --security-group-ids $SECURITY_GROUP_ID \ --count $INSTANCE_COUNT \ --query 'Instances[*].InstanceId' \ --output text) # 批量为实例添加序列Name标签 INDEX=1 for INSTANCE_ID in $INSTANCE_IDS do aws ec2 create-tags \ --resources $INSTANCE_ID \ --tags Key=Name,Value="$TAG_PREFIX $INDEX" INDEX=$((INDEX+1)) done # 等待实例初始化完成,输出标签与公网IP对应清单到日志文件 echo "=== 实例标签与公网IP对照清单 ===" > instance_ip_log.txt aws ec2 describe-instances \ --instance-ids $INSTANCE_IDS \ --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value | [0], PublicIpAddress]' \ --output text >> instance_ip_log.txt # 打印日志内容 cat instance_ip_log.txt
- 脚本执行完成后,会在当前目录生成
instance_ip_log.txt日志文件,直接包含所有实例的标签和对应公网IP信息。
内容的提问来源于stack exchange,提问作者Mr. Oleg
相关产品推荐
相关产品推荐

