当我想在 EC2 上启动 Ubuntu 实例时,如何找到合适的实例?有数以千计的公共映像名称中带有“Ubuntu”。我只对运行官方 Ubuntu 映像感兴趣。我现在如何确定哪个 AMI 是正确的?
smo*_*ser 26
Ubuntu 作为平台的成功以及 Ubuntu 对更新 AMI 的承诺意味着 Amazon EC2 上实际上有数千个图像名称中带有“ubuntu”。再加上“快速启动”菜单上缺少 Ubuntu,使得选择正确的 AMI 成为一项重要的任务。
一些通用的 Ubuntu 信息
您可能已经知道这些项目,但我想向那些刚开始使用 Ubuntu 或 EC2 的人指出它们。
最简单:从您的 Web 浏览器中查找 AMI
您可以选择用于选择图像的界面。转到:
在此页面底部,您可以选择区域、版本、架构或根存储。此处仅向您显示最新版本。做出选择后,您可以复制并粘贴 ami 编号,或者只需单击它即可直接转到该 AMI 的 EC2 控制台启动页面。
或者
通过 Amazon EC2 控制台搜索
EC2 控制台是一种对 AMI 进行排序并选择要启动的图形方式。要在此处启动官方 Ubuntu 映像,请按照以下步骤操作。
通过键入 ubuntu-images/ 将结果限制为 Ubuntu 稳定版映像
您应该尽可能宽地扩展“AMI 名称”字段(可能缩小其他字段)。
通过附加“.*”将结果限制为特定版本。
例如:ubuntu-images/.*10.04
通过附加 '.*i386' 或 '.*amd64' 将结果限制为给定的拱形
注意:如果要运行 m1.small 或 c1.medium,则需要“i386”。如果要运行 t1.micro,则需要选择“ebs”映像。
按 AMI 名称对结果进行排序并进行选择
通过按 AMI 名称排序,您可以更轻松地查看给定集合的最新 AMI。每个 AMI 都以 YYYYMMDD(年、月、日)格式的数字结尾。你想要最新的。
验证所有者是 099720109477!
任何用户都可以以任何名称注册 AMI。没有什么可以阻止恶意用户注册与上述搜索匹配的 AMI。因此,为了安全起见,您需要验证 ami 的所有者是否为“ 099720109477 ”。
笔记
HTTPS 访问:在上述选项中,目前https://cloud-images.ubuntu.com/server/releases/是唯一通过 https 提供数据的选项。如果您在查找 AMI id 时担心潜在的“中间人”攻击,这对您来说可能很重要。我已经请求 Ahmed [kim0 in irc] 支持 https 访问https://cloud.ubuntu.com/ami。
Web 控制台“启动实例”对话框:我无法在“启动实例”对话框中看到所有者 ID。因为如果是这样,我建议不要使用该对话框来查找“社区 AMI”。您根本无法从控制台中可靠地知道图像的所有者是谁。对于高级用户,我将很快在博客中介绍一种以编程方式查找 AMI 的方法 [提示]。
Joh*_*rry 11
新的和改进的版本。
# needed as json list returned by ubuntu site is mal-formed
remove_last_comma() { sed '
$x;$G;/\(.*\),/!H;//!{$!d
}; $!x;$s//\1/;s/^\n//'
}
curl -s "https://cloud-images.ubuntu.com/locator/ec2/releasesTable" \
| remove_last_comma \
| jq -c '.aaData[] | select(contains(["16.04", "us-west-2", "hvm:ebs"]))' \
| grep -o 'ami-[a-z0-9]\+' | head -1
Run Code Online (Sandbox Code Playgroud)
基本上是获取用于 ubuntu 的 ami 查找页面的原始数据,并使用 jq 解析出我想要的行,然后使用 grep 提取该值。比旧版本快得多。
——原版
这是另一个例子。我只是写这个来获取最新的可信赖的 AMI id。它使用 aws cli 工具来查询 API,使用名称按日期顺序排序以获得最新的事实。
name=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=root-device-type,Values=ebs \
Name=architecture,Values=x86_64 \
Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' \
| awk -F ': ' '/"Name"/ { print $2 | "sort" }' \
| tr -d '",' | tail -1)
ami_id=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=name,Values="$name" \
| awk -F ': ' '/"ImageId"/ { print $2 }' | tr -d '",')
Run Code Online (Sandbox Code Playgroud)
它分为两部分。第一部分获取满足各种标准(ebs、x86_64 和名称模式)的 ubuntu trusty 的所有 AMI。它拉出名称并按它排序。名称已格式化,以便按日期对它们进行排序,因此最后一个将是最新的。然后将此名称分配给“名称”变量。
第二部分使用该名称为具有该名称的 AMI 请求 AMI ID。它仅解析 id 并将其分配给“ami_id”。
Ubuntu 云门户上有可用官方 AMI 的完整列表。您可以在 Ubuntu 帮助中找到有关 Canonical 官方 EC2 AMI 版本的其他资源:EC2 启动指南以及 Canonical 在Ubuntu EC2 映像中发布的所有 AMI 的原始目录
| 归档时间: |
|
| 查看次数: |
26094 次 |
| 最近记录: |