You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 08:15:30