AWS CLI脚本创建EC2实例后卡住等待用户输入问题求助
问题分析与解决
你的脚本卡住需要手动输入的核心原因是**aws ec2 wait instance-running命令的语法错误**:该命令要求必须通过--instance-ids参数指定实例ID,而你直接把实例ID作为位置参数传入,导致AWS CLI进入交互模式等待补全必要参数,因此脚本卡住。
另外,原脚本通过标签查询实例ID的方式存在不可靠性——实例启动后标签可能需要几秒才能同步,直接从run-instances的输出提取ID更高效准确。
修正后的完整脚本
amazonLinux2AMI="ami-08f3d892de259504d" keypair="NV" keypair2="NV2" keypairOhio="ec2keypair" userdata="assign8userdata.txt" # 创建安全组并获取ID assign8SGid=$(aws ec2 create-security-group --group-name Assign8SG --description "Assignment#8 security group" --query 'GroupId' --output text) echo "创建安全组完成,ID: $assign8SGid" # 授权80端口 ingress aws ec2 authorize-security-group-ingress --group-name Assign8SG --protocol tcp --port 80 --cidr 0.0.0.0/0 # 启动实例并直接提取InstanceId(无需依赖标签查询) Instance1Id=$(aws ec2 run-instances --image-id "$amazonLinux2AMI" --instance-type t2.nano \ --key-name "$keypair" --associate-public-ip-address --user-data file://$userdata \ --security-group-ids "$assign8SGid" \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Assignment8task1}]' \ --query 'Instances[0].InstanceId' --output text) echo "启动实例,ID: $Instance1Id" # 修复wait命令的语法,添加--instance-ids参数 aws ec2 wait instance-running --instance-ids "$Instance1Id" echo "实例已处于运行状态" # 创建AMI并获取镜像ID ImId=$(aws ec2 create-image --instance-id "$Instance1Id" --name "FirstImage" --description "An AMI for my server" \ --tag-specifications 'ResourceType=image,Tags=[{Key=Name,Value=FirstImage}]' \ --query 'ImageId' --output text) echo "创建AMI,ID: $ImId" # 等待AMI可用 aws ec2 wait image-available --image-ids "$ImId" echo "AMI已可用" # 使用新AMI启动实例 aws ec2 run-instances --image-id "$ImId" --key-name "$keypair2" --instance-type t2.nano \ --associate-public-ip-address --security-group-ids "$assign8SGid" \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=Assignment8task2}]' echo "使用新AMI启动实例完成"
关键改进点
- 修复
aws ec2 wait instance-running的语法,添加--instance-ids参数,避免CLI进入交互等待。 - 从
run-instances和create-image的输出直接提取ID,无需后续查询,提升脚本可靠性和效率。 - 移除原脚本中多余的
;;和末尾的;,修正语法冗余。 - 添加关键步骤的echo提示,便于跟踪脚本执行进度。
内容的提问来源于stack exchange,提问作者Aziz bel
相关产品推荐
相关产品推荐

