如何使用AWS CLI查找Ubuntu 20.04 AMI启动t2.micro实例
错误原因
- 你当前使用的
describe-images筛选规则过于宽松,没有限制镜像所有者,匹配到了第三方厂商发布的非官方Ubuntu镜像,这类镜像属于AWS Marketplace需订阅产品,才会触发OptInRequired错误,且订阅页面匹配到第三方产品信息 - 你在执行
run-instances时,--security-group-ids参数传递了安全组名称,该参数仅支持传入安全组ID,即使镜像问题修复也会触发参数错误
修复后的完整操作步骤
1. 创建密钥对
aws ec2 create-key-pair --key-name test --query 'KeyMaterial' --output text > test.pem # 设置密钥文件权限避免后续SSH连接报错 chmod 400 test.pem
2. 创建安全组并提取安全组ID
SG_ID=$(aws ec2 create-security-group --group-name test --description test --query 'GroupId' --output text)
3. 查询Canonical官方Ubuntu 20.04 AMD64镜像ID
# 固定Canonical官方AWS账号ID作为镜像所有者,避免匹配到第三方镜像 AMI_ID=$(aws ec2 describe-images \ --owner 099720109477 \ --filters "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*" \ --query "reverse(sort_by(Images, &CreationDate))[0].ImageId" \ --output text)
4. 启动实例
aws ec2 run-instances \ --image-id $AMI_ID \ --count 1 \ --instance-type t2.micro \ --key-name test \ --security-group-ids $SG_ID
可选:给安全组开放SSH访问权限(需要远程连接实例时执行)
aws ec2 authorize-security-group-ingress \ --group-id $SG_ID \ --protocol tcp \ --port 22 \ --cidr 0.0.0.0/0
内容的提问来源于stack exchange,提问作者Vadim Kantorov
相关产品推荐
相关产品推荐

