Amazon Elastic Compute Cloud Linux 实例用户指南

Amazon Elastic Compute Cloud Linux 实例用户指南
Amazon Elastic Compute Cloud
Linux 实例用户指南
Amazon Elastic Compute Cloud Linux 实例用户指南
Amazon Elastic Compute Cloud: Linux 实例用户指南
Copyright © 2016 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon Elastic Compute Cloud Linux 实例用户指南
Table of Contents
什么是 Amazon EC2? ................................................................................................................... 1
Amazon EC2 的功能 .............................................................................................................. 1
如何开始使用 Amazon EC2 ..................................................................................................... 2
相关服务 .............................................................................................................................. 2
访问 Amazon EC2 ................................................................................................................. 3
Amazon EC2 定价 ................................................................................................................. 3
PCI DSS 合规性 .................................................................................................................... 4
实例和 AMI ........................................................................................................................... 4
实例 ............................................................................................................................ 5
AMI ............................................................................................................................. 6
地区和可用区域 ..................................................................................................................... 7
区域和可用区域概念 ...................................................................................................... 7
可用区域 ...................................................................................................................... 8
区域和终端节点 ............................................................................................................. 9
描述您的区域和可用区域 ................................................................................................ 9
为资源指定区域 ........................................................................................................... 11
在可用区中启动实例 ..................................................................................................... 12
将实例迁移到其他可用区 ............................................................................................... 13
根设备卷 ............................................................................................................................ 14
根设备存储概念 .......................................................................................................... 14
根据根设备类型选择 AMI .............................................................................................. 15
确定实例的根设备类型 .................................................................................................. 16
将根设备卷更改为持久保留 ............................................................................................ 17
设置 .......................................................................................................................................... 19
注册 AWS .......................................................................................................................... 19
创建 IAM 用户 ..................................................................................................................... 20
创建密钥对 ......................................................................................................................... 21
创建 Virtual Private Cloud (VPC) ............................................................................................ 23
为您的 VPC ....................................................................................................................... 23
入门 .......................................................................................................................................... 26
概述 .................................................................................................................................. 26
先决条件 ............................................................................................................................ 27
步骤 1:启动实例 ................................................................................................................ 27
步骤 2:连接到您的实例 ....................................................................................................... 28
步骤 3:清除您的实例 .......................................................................................................... 29
后续步骤 ............................................................................................................................ 30
最佳实践 .................................................................................................................................... 31
教程 .......................................................................................................................................... 33
教程:安装 LAMP Web 服务器(在 Amazon Linux 上) ............................................................. 33
教程:托管 WordPress 博客 .................................................................................................. 41
先决条件 .................................................................................................................... 42
安装 WordPress .......................................................................................................... 42
后续步骤 .................................................................................................................... 49
帮助! 我的公有 DNS 名称发生更改导致我的博客瘫痪 ......................................................... 49
教程:将 Amazon Linux 上的 Apache Web 服务器配置为使用 SSL/TLS ........................................ 50
先决条件 .................................................................................................................... 51
步骤 1:在服务器上启用 SSL/TLS .................................................................................. 51
步骤 2:获取 CA 签名的证书 ......................................................................................... 52
步骤 3:测试和强化安全配置 ......................................................................................... 55
故障排除 .................................................................................................................... 57
教程:提高应用程序的可用性 ................................................................................................. 58
先决条件 .................................................................................................................... 58
对应用程序进行扩展和负载均衡 ..................................................................................... 59
测试负载均衡器 ........................................................................................................... 60
Amazon 系统映像 ........................................................................................................................ 62
iii
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 AMI ............................................................................................................................ 62
创建您自己的 AMI ................................................................................................................ 63
购买、共享和出售 AMI .......................................................................................................... 63
取消注册您的 AMI ................................................................................................................ 63
Amazon Linux ..................................................................................................................... 63
AMI 类型 ............................................................................................................................ 63
启动许可 .................................................................................................................... 64
根设备存储 ................................................................................................................. 64
虚拟化类型 ......................................................................................................................... 66
查找 Linux AMI .................................................................................................................... 67
使用 Amazon EC2 控制台查找 Linux AMI ......................................................................... 67
使用 AWS CLI 查找 AMI; ............................................................................................... 68
使用 Amazon EC2 CLI 查找 AMI .................................................................................... 68
共享 AMI ............................................................................................................................ 69
查找共享 AMI .............................................................................................................. 69
将 AMI 设为公用 .......................................................................................................... 71
将 AMI 与特定 AWS 账户共享 ........................................................................................ 73
使用书签 .................................................................................................................... 74
共享 Linux AMI 指导原则 ............................................................................................... 75
付费 AMI ............................................................................................................................ 79
出售 AMI .................................................................................................................... 80
查找付费 AMI .............................................................................................................. 80
购买付费 AMI .............................................................................................................. 81
获取实例的产品代码 ..................................................................................................... 81
使用付费支持 .............................................................................................................. 82
付费和支持 AMI 的账单 ................................................................................................. 82
管理 AWS Marketplace 订阅 .......................................................................................... 82
创建 Amazon EBS 支持的 Linux AMI ....................................................................................... 83
创建 Amazon EBS 支持的 AMI 的概述 ............................................................................. 83
从实例创建 Linux AMI ................................................................................................... 84
从快照创建 Linux AMI ................................................................................................... 85
创建由实例存储支持的 Linux AMI ........................................................................................... 86
由实例存储支持的 AMI 的创建过程概述 ........................................................................... 86
先决条件 .................................................................................................................... 87
通过实例存储支持的 Amazon Linux 实例创建 AMI ............................................................. 88
通过实例存储支持的 Ubuntu 实例创建 AMI ....................................................................... 91
将实例存储支持的 AMI 转换为 Amazon EBS 支持的 AMI .................................................... 97
带加密快照的 AMI .............................................................................................................. 100
涉及加密的 EBS 快照的 AMI 情景 ................................................................................. 100
复制 AMI .......................................................................................................................... 103
复制您拥有的 AMI ...................................................................................................... 103
从另一个 AWS 账户复制 AMI ....................................................................................... 103
跨区域复制 ............................................................................................................... 103
复制到加密 ............................................................................................................... 104
AMI 复制场景 ............................................................................................................ 105
使用控制台或命令行复制 AMI ....................................................................................... 106
停止待处理的 AMI 复制操作 ......................................................................................... 107
取消注册您的 AMI .............................................................................................................. 107
清除由 Amazon EBS 支持的 AMI .................................................................................. 108
清除由实例存储支持的 AMI .......................................................................................... 108
Amazon Linux ................................................................................................................... 109
查找 Amazon Linux AMI .............................................................................................. 110
启动并连接到 Amazon Linux 实例 ................................................................................. 110
识别 Amazon Linux AMI 映像 ....................................................................................... 110
包含的 AWS 命令行工具 ............................................................................................. 111
cloud-init ............................................................................................................. 111
存储库配置 ............................................................................................................... 113
添加软件包 ............................................................................................................... 113
iv
Amazon Elastic Compute Cloud Linux 实例用户指南
访问源软件包获取参考信息 ..........................................................................................
开发应用程序 ............................................................................................................
实例存储访问 ............................................................................................................
产品生命周期 ............................................................................................................
安全更新 ..................................................................................................................
支持 .........................................................................................................................
PV-GRUB .........................................................................................................................
PV-GRUB 的限制 .......................................................................................................
配置 GRUB ...............................................................................................................
Amazon PV-GRUB Kernel Image ID ..............................................................................
更新 PV-GRUB ..........................................................................................................
实例 .........................................................................................................................................
实例类型 ..........................................................................................................................
可用实例类型 ............................................................................................................
硬件规格 ..................................................................................................................
虚拟化类型 ...............................................................................................................
联网和存储功能 .........................................................................................................
实例限量 ..................................................................................................................
T2 实例 ....................................................................................................................
C4 实例 ....................................................................................................................
GPU 实例 .................................................................................................................
I2 实例 .....................................................................................................................
D2 实例 ....................................................................................................................
HI1 实例 ...................................................................................................................
HS1 实例 ..................................................................................................................
T1 微型实例 ..............................................................................................................
调整实例大小 ............................................................................................................
实例购买选项 ....................................................................................................................
实例生命周期 ............................................................................................................
预留实例 ..................................................................................................................
计划实例 ..................................................................................................................
竞价型实例 ...............................................................................................................
专用主机 ..................................................................................................................
实例生命周期 ....................................................................................................................
实例启动 ..................................................................................................................
停止和启动实例(仅限 Amazon EBS 支持的实例) ..........................................................
实例重启 ..................................................................................................................
实例停用 ..................................................................................................................
实例终止 ..................................................................................................................
重启、停止与终止之间的区别 .......................................................................................
启动 .........................................................................................................................
连接 .........................................................................................................................
停止和启动 ...............................................................................................................
重启 .........................................................................................................................
停用 .........................................................................................................................
终止 .........................................................................................................................
恢复 .........................................................................................................................
配置实例 ..........................................................................................................................
常见配置方案 ............................................................................................................
管理软件 ..................................................................................................................
管理用户 ..................................................................................................................
处理器状态控制 .........................................................................................................
设置时间 ..................................................................................................................
更改主机名 ...............................................................................................................
设置动态 DNS ...........................................................................................................
启动时运行命令 .........................................................................................................
实例元数据和用户数据 ................................................................................................
远程管理实例 ....................................................................................................................
v
114
114
114
115
115
115
116
116
117
117
119
121
121
122
123
123
123
124
124
127
130
133
134
137
138
139
146
149
150
151
170
174
217
227
227
228
228
228
228
229
229
239
250
253
253
255
260
261
262
262
270
272
276
280
282
284
287
301
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件 ..................................................................................................................
配置适用于 SSM Run Command 的 IAM 角色和用户 ........................................................
配置 SSM 代理 ..........................................................................................................
委派对 SSM Run Command 的访问权限 ........................................................................
使用 SSM Run Command 执行命令 ..............................................................................
在 Amazon EC2 控制台中查看命令输出 .........................................................................
创建您自己的命令 ......................................................................................................
SSM Run Command 演练 ............................................................................................
取消命令 ..................................................................................................................
监控命令 ..................................................................................................................
SSM Run Command 疑难解答 .....................................................................................
导入和导出实例 .................................................................................................................
先决条件 ..................................................................................................................
将 VM 作为镜像导入 Amazon EC2 ................................................................................
将 VM 作为实例导入 Amazon EC2 ................................................................................
导出 Amazon EC2 实例 ...............................................................................................
问题排查 ..................................................................................................................
监控 .........................................................................................................................................
自动和手动监控 .................................................................................................................
自动监控工具 ............................................................................................................
手动监控工具 ............................................................................................................
监控的最佳实践 .................................................................................................................
监控实例状态 ....................................................................................................................
实例状态检查 ............................................................................................................
计划的事件 ...............................................................................................................
使用 CloudWatch 监控您的实例 ............................................................................................
启用详细监控 ............................................................................................................
列出可用指标 ............................................................................................................
获取指标的统计数据 ...................................................................................................
绘制指标图形 ............................................................................................................
创建 CloudWatch 警报 ................................................................................................
创建停止、终止、重启或恢复实例的警报 .......................................................................
监控内存和磁盘指标 ...........................................................................................................
先决条件 ..................................................................................................................
入门 .........................................................................................................................
mon-put-instance-data.pl .............................................................................................
mon-get-instance-stats.pl ...........................................................................................
在控制台中查看自定义指标 ..........................................................................................
网络与安全性 ............................................................................................................................
密钥对 .............................................................................................................................
使用 Amazon EC2 创建密钥对 .....................................................................................
将您自己的密钥对导入 Amazon EC2 .............................................................................
在 Linux 上检索密钥对的公有密钥 .................................................................................
在 Windows 上检索密钥对的公有密钥 ............................................................................
验证您的密钥对指纹 ...................................................................................................
删除您的密钥对 .........................................................................................................
丢失私有密钥时连接到 Linux 实例 .................................................................................
安全组 .............................................................................................................................
EC2-Classic 安全组 ....................................................................................................
EC2-VPC 安全组 .......................................................................................................
安全组规则 ...............................................................................................................
默认安全组 ...............................................................................................................
自定义安全组 ............................................................................................................
正在创建安全组 .........................................................................................................
描述您的安全组 .........................................................................................................
向安全组添加规则 ......................................................................................................
从安全组中删除规则 ...................................................................................................
正在删除安全组 .........................................................................................................
vi
302
303
308
317
319
321
323
323
330
330
331
333
333
341
351
361
363
369
370
371
371
372
372
373
377
381
381
382
388
404
407
413
438
438
440
441
443
445
446
447
448
449
450
451
452
452
453
456
456
456
457
458
459
460
460
461
462
462
Amazon Elastic Compute Cloud Linux 实例用户指南
API 和命令概览 ..........................................................................................................
Controlling Access .............................................................................................................
网络访问您的实例: ...................................................................................................
Amazon EC2 权限属性 ................................................................................................
IAM 和 Amazon EC2 ..................................................................................................
IAM 策略 ..................................................................................................................
IAM 角色 ..................................................................................................................
网络访问 ..................................................................................................................
Amazon VPC ....................................................................................................................
使用 VPC 的优势 .......................................................................................................
EC2-Classic与 EC2-VPC 的区别 ...................................................................................
在 EC2-Classic 与 EC2-VPC 之间共享和访问资源 ...........................................................
实例类型仅在 VPC 中可用 ...........................................................................................
Amazon VPC 文档 .....................................................................................................
支持的平台 ...............................................................................................................
ClassicLink ...............................................................................................................
从 EC2-Classic 迁移到 VPC .........................................................................................
实例 IP 寻址 ......................................................................................................................
私有 IP 地址和内部 DNS 主机名 ...................................................................................
公有 IP 地址和外部 DNS 主机名 ...................................................................................
弹性 IP 地址 ..............................................................................................................
Amazon DNS 服务器 ..................................................................................................
EC2-Classic 和 EC2-VPC 之间的 IP 地址区别 .................................................................
确定您的公有、私有和弹性 IP 地址 ...............................................................................
分配公有 IP 地址 ........................................................................................................
多个私有 IP 地址 ........................................................................................................
弹性 IP 地址 ......................................................................................................................
弹性 IP 地址基础信息 ..................................................................................................
EC2-Classic 与 EC2-VPC 的弹性 IP 地址的区别 ..............................................................
使用弹性 IP 地址 ........................................................................................................
将反向 DNS 用于电子邮件应用程序 ...............................................................................
弹性 IP 地址限额 ........................................................................................................
弹性网络接口 ....................................................................................................................
每个实例类型每个 ENI 的私有 IP 地址 ...........................................................................
创建一个管理网络 ......................................................................................................
使用您的 VPC 中的网络和安全设备 ...............................................................................
通过不同子网的工作负荷/角色创建双主机实例。 .............................................................
创建一个低成本、高可用性解决方案 ..............................................................................
监控您的网络接口上的 IP 流量 .....................................................................................
有关配置弹性网络接口的最佳实践 .................................................................................
使用 ec2-net-utils 配置网络接口 ....................................................................................
创建弹性网络接口 ......................................................................................................
删除弹性网络接口 ......................................................................................................
查看有关弹性网络接口的详细信息 .................................................................................
在启动实例时连接弹性网络接口 ....................................................................................
将弹性网络接口连接至已停止的实例或正在运行的实例 .....................................................
从实例中分离弹性网络接口 ..........................................................................................
更改弹性网络接口的安全组 ..........................................................................................
更改弹性网络接口的源/目标检查 ...................................................................................
将弹性 IP 地址与弹性网络接口相关联 ............................................................................
解除弹性 IP 地址与弹性网络接口的关联 .........................................................................
更改弹性网络接口的终止行为 .......................................................................................
添加或编辑弹性网络接口的描述 ....................................................................................
添加或编辑弹性网络接口的标签 ....................................................................................
置放群组 ..........................................................................................................................
置放群组的限制 .........................................................................................................
将实例启动到置放群组中 .............................................................................................
删除置放群组 ............................................................................................................
vii
462
464
464
464
464
466
506
511
513
513
514
516
518
518
518
520
529
538
538
539
540
540
540
541
542
543
548
548
548
550
553
553
554
555
557
557
557
558
558
558
558
559
560
560
561
562
562
563
563
564
564
565
565
566
566
567
567
569
Amazon Elastic Compute Cloud Linux 实例用户指南
网络 MTU .........................................................................................................................
极大帧 (9001 MTU) ....................................................................................................
路径 MTU 发现 ..........................................................................................................
查看两台主机之间的路径 MTU .....................................................................................
在您的 Amazon EC2 实例上检查并设置 MTU ..................................................................
故障排除 ..................................................................................................................
启用增强联网 ....................................................................................................................
支持增强联网的实例 ...................................................................................................
要求 .........................................................................................................................
测试是否启用了增强联网功能 .......................................................................................
在 Amazon Linux 上启用增强联网 .................................................................................
在 Ubuntu 上启用增强联网 ...........................................................................................
在其他 Linux 分发版上启用增强联网 ..............................................................................
排除连接问题 ............................................................................................................
存储 .........................................................................................................................................
Amazon EBS ....................................................................................................................
Amazon EBS 的功能 ..................................................................................................
EBS 卷 .....................................................................................................................
EBS 快照 ..................................................................................................................
EBS 优化 ..................................................................................................................
EBS 加密 ..................................................................................................................
EBS 性能 ..................................................................................................................
实例存储 ..........................................................................................................................
实例存储生命周期 ......................................................................................................
实例存储卷 ...............................................................................................................
添加实例存储卷 .........................................................................................................
SSD 实例存储卷 ........................................................................................................
实例存储交换卷 .........................................................................................................
优化磁盘性能 ............................................................................................................
Amazon S3 .......................................................................................................................
Amazon S3 和 Amazon EC2 ........................................................................................
实例卷限制 .......................................................................................................................
特定于 Linux 的卷限制 ................................................................................................
特定于 Windows 的卷限制 ...........................................................................................
带宽与容量 ...............................................................................................................
设备命名 ..........................................................................................................................
可用设备名称 ............................................................................................................
设备名称注意事项 ......................................................................................................
块储存设备映射 .................................................................................................................
块储存设备映射的概念 ................................................................................................
AMI 块储存设备映射 ...................................................................................................
实例块储存设备映射 ...................................................................................................
使用公用数据集 .................................................................................................................
公用数据集概念 .........................................................................................................
查找公用数据集 .........................................................................................................
从快照创建公用数据集卷 .............................................................................................
连接和装载公用数据集卷 .............................................................................................
资源和标签 ...............................................................................................................................
资源位置 ..........................................................................................................................
资源 ID .............................................................................................................................
使用较长的 ID ...........................................................................................................
控制对较长 ID 设置的访问 ...........................................................................................
列出并筛选您的资源 ...........................................................................................................
高级搜索 ..................................................................................................................
使用控制台列出资源 ...................................................................................................
使用控制台筛选资源 ...................................................................................................
使用 CLI 和 API 列出并筛选 .........................................................................................
标记您的成员资源 ..............................................................................................................
viii
569
569
570
570
571
572
572
572
573
573
576
577
580
582
583
584
585
585
623
629
631
634
645
645
646
647
650
651
654
655
655
656
657
657
657
657
658
658
659
659
661
664
669
669
669
670
671
672
672
673
674
675
676
676
677
678
679
679
Amazon Elastic Compute Cloud Linux 实例用户指南
有关标签的基本知识 ...................................................................................................
标签限制 ..................................................................................................................
标记资源以便于计费 ...................................................................................................
通过控制台使用标签 ...................................................................................................
通过 CLI 或 API 使用标签 ............................................................................................
服务限制 ..........................................................................................................................
查看当前限制 ............................................................................................................
申请提高限制 ............................................................................................................
使用率报告 .......................................................................................................................
可用报告 ..................................................................................................................
开始设置使用率报告 ...................................................................................................
向 IAM 用户授予对 Amazon EC2 使用率报告的访问权限 ...................................................
实例使用率 ...............................................................................................................
预留实例使用率 .........................................................................................................
问题排查 ..................................................................................................................................
启动实例 ..........................................................................................................................
了解实例终止的原因 ...................................................................................................
连接到您的实例 .................................................................................................................
连接到您的实例时出错:连接超时 .................................................................................
错误:服务器无法识别用户密钥 ....................................................................................
错误:未找到主机密钥,权限被拒绝 (publickey),或者 身份验证失败,权限被拒绝 ...............
错误:未保护的私钥文件 .............................................................................................
错误:服务器拒绝我们的密钥或 没有支持的身份验证方法 .................................................
在 Safari 浏览器上使用 MindTerm 时的错误 ....................................................................
使用 Mac OS X RDP 客户端时出错 ...............................................................................
无法对实例执行 Ping 操作 ...........................................................................................
停止实例 ..........................................................................................................................
终止实例 ..........................................................................................................................
延迟的实例终止 ........................................................................................................
已终止实例仍然显示 ...................................................................................................
自动启动或终止实例 ...................................................................................................
实例恢复故障 ....................................................................................................................
故障状态检查 ....................................................................................................................
初始步骤 ..................................................................................................................
检索系统日志 ............................................................................................................
诊断基于 Linux 的实例的系统日志错误 ...........................................................................
内存不足:终止进程 ...................................................................................................
错误:mmu_update 失败(内存管理更新失败) ..............................................................
I/O 错误(块储存设备故障) ........................................................................................
IO 错误:既不是本地磁盘也不是远程磁盘(破损的分布式块储存设备) ...............................
request_module:runaway loop modprobe(在较旧的 Linux 版本上循环旧内核
modprobe) ..............................................................................................................
“严重错误:内核太旧”和“fsck:在尝试打开 /dev 时没有此文件或目录”(内核与 AMI 不匹配)
................................................................................................................................
“FATAL: Could not load /lib/modules”或者“BusyBox”(内核模块缺失) ................................
ERROR:无效内核”(EC2 不兼容内核) .......................................................................
request_module:runaway loop modprobe(在较旧的 Linux 版本上循环旧内核
modprobe) ..............................................................................................................
fsck:尝试打开时没有找到此文件或目录...(未找到文件系统) ..........................................
安装文件系统时出现一般性错误(安装失败) .................................................................
VFS:无法在未知块上安装根 fs(根文件系统不匹配) .....................................................
错误:无法确定根设备的主/次编号...(根文件系统/设备不匹配) .......................................
XENBUS:设备没有驱动程序… ...................................................................................
… 没有检查时,已强制执行检查的工作日(文件系统检查要求) ........................................
fsck 卡在退出状态...(缺少设备) .................................................................................
GRUB 提示 (grubdom>) ..............................................................................................
提起接口 eth0:设备 eth0 的 MAC 地址与预期不同,驳回。(硬编码的 MAC 地址)。 ........
无法加载 SELinux 策略。计算机处于强制执行模式。正在中断。(SELinux 配置错误) .........
ix
680
680
682
682
687
688
688
689
689
690
690
691
692
695
700
700
701
701
702
703
704
705
705
706
706
706
706
707
707
708
708
708
708
709
709
710
711
711
712
713
714
715
716
717
718
719
721
722
723
724
725
726
727
729
729
Amazon Elastic Compute Cloud Linux 实例用户指南
XENBUS:连接设备时超时(Xenbus 超时) ..................................................................
实例容量 ..........................................................................................................................
错误:InsufficientInstanceCapacity ...............................................................................
错误:InstanceLimitExceeded ......................................................................................
获取控制台输出和重启实例 ..................................................................................................
实例重启 ..................................................................................................................
实例控制台输出 .........................................................................................................
主机发生故障时的实例恢复 ..........................................................................................
正在从错误的卷启动我的实例 ...............................................................................................
提出 API 请求 ............................................................................................................................
文档历史记录 ............................................................................................................................
AWS 词汇表 ..............................................................................................................................
x
730
731
731
732
732
732
732
733
733
735
736
747
Amazon Elastic Compute Cloud Linux 实例用户指南
Amazon EC2 的功能
什么是 Amazon EC2?
Abstract
将 Amazon EC2 用于 AWS 云中可扩展的计算容量,以便在没有硬件约束的情况下开发和部署应用程序。
Amazon Elastic Compute Cloud (Amazon EC2) 在 Amazon Web Services (AWS) 云中提供可扩展的计算
容量。使用 Amazon EC2 可避免前期的硬件投入,因此您能够快速开发和部署应用程序。通过使用 Amazon
EC2,您可以根据自身需要启动任意数量的虚拟服务器、配置安全和网络以及管理存储。Amazon EC2 允
许您根据需要进行缩放以应对需求变化或流行高峰,降低流量预测需求。
有关云计算的更多信息,请参阅何为“云计算”?
Amazon EC2 的功能
Amazon EC2 提供以下功能:
• 虚拟计算环境,也称为实例
• 实例的预配置模板,也称为亚马逊系统映像 (AMI),其中包含您的服务器需要的程序包(包括操作系统
和其他软件)。
• 实例 CPU、内存、存储和网络容量的多种配置,也称为实例类型
• 使用密钥对的实例的安全登录信息(AWS 存储公有密钥,您在安全位置存储私有密钥)
• 临时数据(停止或终止实例时会删除这些数据)的存储卷,也称为实例存储卷
• 使用 Amazon Elastic Block Store (Amazon EBS) 的数据的持久性存储卷,也称为 Amazon EBS 卷。
• 用于存储资源的多个物理位置,例如实例和 Amazon EBS 卷,也称为区域和可用区
• 防火墙,让您可以指定协议、端口,以及能够使用安全组到达您的实例的源 IP 范围
• 用于动态云计算的静态 IP 地址,也称为弹性 IP 地址
• 元数据,也称为标签,您可以创建元数据并分配给您的 Amazon EC2 资源
• 您可以创建的虚拟网络,这些网络与其余 AWS 云在逻辑上隔离,并且您可以选择连接到您自己的网
络,也称为 Virtual Private Cloud (VPC)
有关 Amazon EC2 功能的更多信息,请参阅 Amazon EC2 产品页。
有关在 AWS 上运行网站的更多信息,请参阅网站和网站托管。
1
Amazon Elastic Compute Cloud Linux 实例用户指南
如何开始使用 Amazon EC2
如何开始使用 Amazon EC2
您需要做的第一件事是为使用 Amazon EC2 进行设置。设置完毕后,您便基本上完成了 Amazon EC2 入
门教程。如果需要关于 Amazon EC2 功能的更多信息,可阅读技术文档。
设置和运行
• Amazon EC2 的设置 (p. 19)
• Amazon EC2 Linux 实例入门 (p. 26)
基本知识
• 实例和 AMI (p. 4)
• 地区和可用区域 (p. 7)
• 实例类型 (p. 121)
• 标签 (p. 679)
网络和安全性
• Amazon EC2 密钥对 (p. 447)
• 安全组 (p. 456)
• 弹性 IP 地址 (p. 548)
• Amazon EC2 和 Amazon VPC (p. 513)
存储
• Amazon EBS (p. 584)
• 实例存储 (p. 645)
使用 Linux 实例
• 教程:安装 LAMP Web 服务器(在 Amazon Linux 上) (p. 33)
• 教程:将 Amazon Linux 上的 Apache Web 服务器配置为使用 SSL/TLS (p. 50)
• Getting Started with AWS:托管适用于 Linux 的 Web 应用程序
对于 AWS 是否适合您,如果有任何疑问,请联系 AWS 销售。如果遇到有关 Amazon EC2 的技术问题,
请使用 Amazon EC2 forum。
相关服务
您可以直接使用 Amazon EC2 预配置 Amazon EC2 资源,例如示例和卷。您也可以使用其他 AWS 服务
预配置 Amazon EC2 资源。有关更多信息,请参阅以下文档:
• Auto Scaling 开发人员指南
• AWS CloudFormation 用户指南
• AWS Elastic Beanstalk 开发人员指南
2
Amazon Elastic Compute Cloud Linux 实例用户指南
访问 Amazon EC2
• AWS OpsWorks 用户指南
要跨多个实例自动分配应用程序的传入流量,可使用 Elastic Load Balancing。有关更多信息,请参阅
Elastic Load Balancing 开发人员指南。
要监控您的实例和 Amazon EBS 卷的基本统计数据,可使用 Amazon CloudWatch。有关更多信息,请
参阅 Amazon CloudWatch 开发人员指南。
要监控对您的账户的 Amazon EC2 API 的调用(包括由 AWS 管理控制台、命令行工具和其他服务进行
的调用),请使用 AWS CloudTrail。有关更多信息,请参阅 AWS CloudTrail User Guide。
要获取云中托管的关系数据库,可使用 Amazon Relational Database Service (Amazon RDS) 启动数据库
实例。尽管可以在 EC2 实例上设置数据库,但是 Amazon RDS 为您处理数据库管理任务提供了优势,例
如修补软件、备份以及存储备份。有关更多信息,请参阅 Amazon Relational Database Service 开发人员
指南。
访问 Amazon EC2
Amazon EC2 提供基于 Web 的用户界面,即 Amazon EC2 控制台。如果您已注册 AWS 账户,可以通过
登录 AWS 管理控制台 并从控制台主页选择 EC2 来访问 Amazon EC2 控制台。
如果倾向于使用命令行界面,您可使用多种选项:
AWS 命令行界面(CLI)
提供大量 AWS 产品的相关命令,同时被 Windows、Mac 和 Linux 支持。要了解其用法,请参阅 AWS
Command Line Interface 用户指南。有关 Amazon EC2 的命令的更多信息,请参阅 AWS Command
Line Interface Reference 中的 ec2。
Amazon EC2 命令行界面 (CLI) 工具
提供用于 Amazon EC2、Amazon EBS 和 Amazon VPC 的命令,在 Windows、Mac 和 Linux 上受
支持。若要开始使用,请参阅 Amazon EC2 命令行参考 中的在 Linux 上设置 Amazon EC2 命令行界
面工具和命令(CLI 工具)。
适用于 Windows PowerShell 的 AWS 工具
为在 PowerShell 环境中编写脚本的用户提供大量 AWS 产品的相关命令。要开始使用,请参阅 适用
于 Windows PowerShell 的 AWS 工具 用户指南。有关 Amazon EC2 的 Cmdlet 的更多信息,请参
阅 适用于 Windows PowerShell 的 AWS 工具 Reference。
Amazon EC2 提供查询 API。这些请求属于 HTTP 或 HTTPS 请求,需要使用 HTTP 动词 GET 或 POST
以及一个名为 Action 的查询参数。有关 Amazon EC2 的 API 操作的更多信息,请参阅 Amazon EC2
API Reference 中的 Actions 。
如果您倾向于使用特定语言的 API 而非通过 HTTP 或 HTTPS 提交请求来构建应用程序,AWS 为软件开
发人员提供了库文件、示例代码、教程和其他资源。这些库文件提供可自动执行任务的基本功能,例如以
加密方式对请求签名、重试请求和处理错误响应,因此您可以更轻松地上手。有关更多信息,请参阅 AWS
SDKs and Tools。
Amazon EC2 定价
注册 AWS 后,您可以通过 AWS 免费套餐开始免费使用 Amazon EC2。
Amazon EC2 为实例提供以下购买选项:
按需实例
您只需要按小时支付使用实例的费用,无需长期购买或预付款。
3
Amazon Elastic Compute Cloud Linux 实例用户指南
PCI DSS 合规性
预留实例
以极低的费率支付一次性前期费用,可预留实例一年或三年,并大幅降低这些实例的每小时费率。
竞价型实例
指定您愿意为运行特定实例类型支付的最高小时价格。竞价价格随供需浮动,但您支付的价格不会超
过您所指定的最高价。当竞价价格高于您的最高价格时,Amazon EC2 会关闭您的竞价型实例。
有关 Amazon EC2 收费和具体价格的完整列表,请参阅 Amazon EC2 定价。
要计算示例设置环境的成本,请参阅 AWS 成本中心。
要查看您的账单,请转至 AWS 账户活动页面。您的账单中包含了提供您的账单详情的使用情况报告的链
接。要了解有关 AWS 账户账单的更多信息,请参阅 AWS 账户账单。
如果您有关于 AWS 账单、账户和事件的问题,请联系 AWS Support。
Trusted Advisor 可帮助您优化成本、安全性和您的 AWS 环境性能,有关其概述,请参阅 AWS Trusted
Advisor。
PCI DSS 合规性
Amazon EC2 支持由商家或服务提供商处理、存储和传输信用卡数据,而且已经验证符合支付卡行业 (PCI)
数据安全标准 (DSS)。有关 PCI DSS 的更多信息,包括如何请求 AWS PCI Compliance Package 的副
本,请参阅 PCI DSS 第 1 级。
实例和 AMI
Abstract
了解 Amazon EC2 的核心概念:实例和 AMI。
Amazon 系统映像 (AMI)是一种包含软件配置(例如,操作系统、应用程序服务器和应用程序)的模板。
通过 AMI,您可以启动实例,实例是作为云中虚拟服务器运行的 AMI 的副本。您可以启动多个 AMI 实
例,如下图所示。
您的实例会保持运行,直到您停止或终止运行,或实例失败。如果实例失败了,您可以从 AMI 启动一个
新实例。
4
Amazon Elastic Compute Cloud Linux 实例用户指南
实例
实例
您可以从一个单一的 AMI 启动不同类型的实例。实例类型从本质上决定了用于您的实例的主机硬件。每
一个实例类型提供不同的计算和存储能力。选择一种基于您打算在实例上运行的应用程序或软件所需的存
储容量和计算能力的实例类型。有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon
EC2 实例。
启动一个实例后,该实例看上去像一个传统主机,您可以像与任何计算机交互一样与其进行交互。您对实
例有完全控制权;您可以使用 sudo 运行需要根特权的命令。
你的 AWS 账户对于保持运行状态的实例数量有限制。有关此限制的更多信息,以及如何请求调高限制,
请参阅“Amazon EC2 一般常见问题”中的我能在 Amazon EC2 中运行多少个实例。
除了对正在运行的实例有所限制外,也会对您能拥有的实例总数有限制(除已终止实例以外,其他不管是
正在运行的、已停止的或其他状态的实例均包括在内)。总实例数上限是正在运行实例数量限额的两倍。
实例的存储
实例的根设备包含用于启动实例的映像。有关更多信息,请参阅 Amazon EC2 根设备卷 (p. 14)。
实例可能包括本地存储卷(称为实例存储卷),可以在启动时使用块储存设备映射配置这些卷。有关更多
信息,请参阅 块储存设备映射 (p. 659)。这些卷已添加到实例并进行映射之后,便可供您进行装载和使用。
如果实例失败,或是实例停止或终止,则这些卷上的数据会丢失;因此,这些卷最好用于临时数据。对于
重要数据,应在多个实例间使用复制策略以保证数据安全,或将持久性数据存储在 Amazon S3 或 Amazon
EBS 卷中。有关更多信息,请参阅 存储 (p. 583)。
安全最佳实践
• 使用 AWS Identity and Access Management (IAM) 控制对 AWS 资源(包括您的实例)的访问。您可
以在 AWS 账户下创建 IAM 用户和组,向每个用户和组分配安全证书并控制他们对 AWS 中资源和服务
的访问权限。有关更多信息,请参阅 控制对 Amazon EC2 资源的访问 (p. 464)。
• 通过仅允许受信任主机或网络访问实例的端口来限制访问。例如,您可以通过限制端口 22 的入站流量
来限制 SSH 访问。有关更多信息,请参阅 Amazon EC2 个安全组(对于 Linux 实例) (p. 456)。
• 定期审查安全组中的规则并确保应用最小权限原则(即仅开启您需要的权限)。您还可以创建不同的安
全组来处理具有不同安全要求的实例。考虑创建一个可允许外部登录的堡垒安全组,同时在不允许外部
登录的组内保留实例提醒程序。
• 对于从 AMI 启用的实例,禁用基于密码的登录。由于密码可以被查到或破解,因此存在安全风险。有
关更多信息,请参阅 对根禁用基于密码的远程登录 (p. 76)。有关安全共享 AMI 的更多信息,请参阅共
享 AMI (p. 69)。
停止、启动和终止实例
停止实例
实例停止后,该实例将执行正常关闭操作,然后过渡到 stopped 状态。其所有 Amazon EBS 卷都将保
持附加状态,并且您可以在稍后重新启动实例。
当实例处于停止状态时,您不必支付额外的实例小时费用。而每次从停止状态过渡到运行状态时,都需要
支付一整个实例小时费用,即使是在一小时内进行多次操作也是如此。当实例停止时,如果实例类型发生
变化,则在实例启动后,您需要就新实例类型支付费用。您实例的所有相关 Amazon EBS 用量(包括根
设备用量)都按照一般 Amazon EBS 价格计费。
当实例处于停止状态时,您可以附加或分离 Amazon EBS 卷。您还可以从实例创建 AMI,以及更改内核、
RAM 磁盘和实例类型。
终止实例
5
Amazon Elastic Compute Cloud Linux 实例用户指南
AMI
当终止实例后,实例将执行正常关闭操作,然后将删除附加的 Amazon EBS 卷,除非将该卷的
deleteOnTermination 属性设置为 false。实例本身也将被删除,并且您不能在稍后重新启动该实例。
要防止意外终止,您可以禁用实例终止。如果禁用,请确保将实例的 disableApiTermination 属性设
置为 true。若要控制实例关闭时的行为(如在 Linux 中为 shutdown -h,在 Windows 中为 shutdown),
则可根据需要将 instanceInitiatedShutdownBehavior 实例属性设为 stop 或 terminate。根设
备的 Amazon EBS 卷默认为 stop 的实例和带有实例存储根设备的实例,总会因实例关闭而终止。
有关更多信息,请参阅 实例生命周期 (p. 227)。
AMI
Amazon Web Services (AWS) 发布了许多包含常见软件配置的Amazon 系统映像 (AMI) 供公众使用。此
外,AWS 开发人员社区的会员也发布了他们的定制 AMI。您也可以创建一个或多个定制 AMI;这样能让
您快速轻松地启动能满足您一切需求的新实例。例如,如果您的应用程序是网站或 Web 服务,则您的
AMI 可能包含 Web 服务器、相关静态内容和动态页面代码。因此,您从这个 AMI 启动实例之后,您的
Web 服务器将启动,并且您的应用程序已准备好接受请求。
所有 AMI 都被分类为由 Amazon EBS 支持或由实例存储支持,前者意味着从 AMI 启动的实例的根设备
是 Amazon EBS 卷,后者意味着从 AMI 启动的实例的根设备是依据 Amazon S3 中存储的模板创建的实
例存储卷。
对 AMI 的描述显示了根设备类型(ebs 或 instance store)。这很重要,因为您使用每种 AMI 可进
行的操作有很大区别。有关这些区别的更多信息,请参阅 根设备存储 (p. 64)。
6
Amazon Elastic Compute Cloud Linux 实例用户指南
地区和可用区域
地区和可用区域
Abstract
描述可托管您的实例的区域和全球可用区。
Amazon EC2 托管在全球多个位置。这些位置由区域和可用区构成。每个区域 都是一个独立的地理区域。
每个区域都有多个相互隔离的位置,称为可用区。Amazon EC2 让您可以在多个位置放置资源(如实例)
和数据。除非您特意这样做,否则资源不会被跨区域复制。
Amazon 运行着具有高可用性的先进数据中心。数据中心有时会发生影响托管于同一位置的所有实例的可
用性的故障,虽然这种故障极少发生。如果您将所有实例都托管在受此类故障影响的同一个位置,则您的
所有实例都将不可用。
内容
• 区域和可用区域概念 (p. 7)
•
•
•
•
•
•
可用区域 (p. 8)
区域和终端节点 (p. 9)
描述您的区域和可用区域 (p. 9)
为资源指定区域 (p. 11)
在可用区中启动实例 (p. 12)
将实例迁移到其他可用区 (p. 13)
区域和可用区域概念
每一个区域都是完全独立的。每个可用区都是独立的,但区域内的可用区通过低延迟链接相连。下图阐明
了区域和可用区之间的关系。
Amazon EC2 资源要么具有全球性,要么与区域或可用区相关联。有关更多信息,请参阅 资源位置 (p. 672)。
区域
每个 Amazon EC2 区域都被设计为与其它 Amazon EC2 区域完全隔离。这可实现最大程度的容错能力和
稳定性。
当您查看您的资源时,您只会看到与您指定的区域相关联的资源。这是因为区域间彼此隔离,而且我们不
会自动跨区域复制资源。
当您启动实例时,必须选择位于同一地区的 AMI。如果 AMI 在其他区域,您可将该 AMI 复制到您使用的
区域。有关更多信息,请参阅 复制 AMI (p. 103)。
7
Amazon Elastic Compute Cloud Linux 实例用户指南
可用区域
区域之间的所有通信都是通过公共 Internet 进行的。因此,您应使用合适的加密方法来保护您的数据。无
论是对于发送数据的实例还是对于接收数据的实例,所产生的区域间数据传输均以 Internet 数据传输费率
收费。有关更多信息,请参阅 Amazon EC2 定价 - 数据传输。
可用区
当您启动实例时,您可以自己选择一个可用区或让我们为您选择。如果您的实例分布在多个可用区域且其
中的某个实例发生故障,则您可对您的应用程序进行相应设计,以使另一可用区域中的实例可代为处理相
关请求。
您也可使用弹性 IP 地址来掩蔽某个可用区中的实例所发生的故障,方法是快速将该地址重新映射到另一
可用区中的实例。有关更多信息,请参阅 弹性 IP 地址 (p. 548)。
可用区由区域代码后跟一个字母标识符表示;例如,cn-north-1a。为确保资源分配到区域的各可用区,
我们将可用区独立映射到每个账户的标识符。例如,您的可用区 cn-north-1a 与其他账户的可用区
cn-north-1a 所表示的可能不是同一个位置。您无法在不同账户之间协调可用区。
随着可用区中内容的增加,我们对其进行扩展的能力会逐渐受限。如果发生此情况,我们可能会阻止您在
扩展能力受限的可用区内启动实例,除非您在此可用区中已拥有实例。最终,我们还可能将扩展能力受限
的可用区从新客户的可用区列表中删除。因此,您的不同账户在一个区域中可用的可用区数量可能不同。
您可以列出您的账户可用的可用区。有关更多信息,请参阅 描述您的区域和可用区域 (p. 9)。
可用区域
您的账户会确定适用于您的地区。例如:
• AWS 账户提供多个区域,因此您可在满足您要求的位置启动Amazon EC2实例。例如,您可能希望在
欧洲区域启动实例以更多符合欧洲客户的要求或满足法律要求。
• 您可以通过AWS GovCloud(美国)账户访问AWS GovCloud(美国)地区。有关更多信息,请参阅
AWS GovCloud(美国)区域。
• 您可以通过 Amazon AWS 账户访问 中国(北京) 地区。
下表列出的是 AWS 账户提供的地区。请注意,您能通过 AWS 账户描述或访问其他区域,例如AWS
GovCloud(美国)或中国(北京)。
代码
名称
us-east-1
美国东部(弗吉尼亚北部)
us-west-2
美国西部(俄勒冈)
us-west-1
美国西部(加利福尼亚北部)
eu-west-1
欧洲(爱尔兰)
eu-central-1
欧洲(法兰克福)
ap-southeast-1
亚太区域(新加坡)
ap-northeast-1
亚太地区(东京)地区
ap-southeast-2
亚太地区(悉尼)
ap-northeast-2
亚太区域 (首尔)
sa-east-1
南美洲(圣保罗)
8
Amazon Elastic Compute Cloud Linux 实例用户指南
区域和终端节点
有关更多信息,请参阅 AWS 全球基础设施。
每个区域的可用区的数量和映射可能因 AWS 账户不同而异。要获取可用于您的账户的可用区列表,您可
以使用 Amazon EC2 控制台或命令行界面。有关更多信息,请参阅 描述您的区域和可用区域 (p. 9)。
区域和终端节点
当您通过命令行界面或 API 操作使用实例时,您必须指定其区域终端节点。有关 Amazon EC2 区域和终
端节点的更多信息,请参阅 Amazon Web Services General Reference 中的区域和终端节点。
若要了解有关AWS GovCloud(美国)内的终端节点和协议的更多信息,请参阅AWS GovCloud (US)
User Guide内的AWS GovCloud(美国) 终端节点。
描述您的区域和可用区域
您可使用 Amazon EC2 控制台或命令行界面来确定您的账户可用哪些区域和可用区。有关这些命令行界
面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
使用 Amazon EC2 控制台查找您的区域和可用区
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
从导航栏中,查看区域选择器中的选项。
3.
在控制面板上 Service Health (服务运行状况) 下的 Availability Zone Status (可用区状态) 下列出了您
的可用区。
9
Amazon Elastic Compute Cloud Linux 实例用户指南
描述您的区域和可用区域
使用 AWS CLI查找您的区域和可用区
1.
如下使用 describe-regions 命令描述您的区域。
$ aws ec2 describe-regions
{
"Regions": [
{
"Endpoint": "ec2.us-east-1.amazonaws.com",
"RegionName": "us-east-1"
},
{
"Endpoint": "ec2.ap-southeast-1.amazonaws.com",
"RegionName": "ap-southeast-1"
},
{
"Endpoint": "ec2.ap-southeast-2.amazonaws.com",
"RegionName": "ap-southeast-2"
},
...
]
}
2.
如下使用 describe-availability-zones 命令描述 cn-north-1 区域中您的可用区。
$ aws ec2 describe-availability-zones --region cn-north-1
{
"AvailabilityZones": [
{
"State": "available",
"RegionName": "cn-north-1",
"Messages": [],
"ZoneName": "cn-north-1b"
},
{
10
Amazon Elastic Compute Cloud Linux 实例用户指南
为资源指定区域
"State": "available",
"RegionName": "cn-north-1",
"Messages": [],
"ZoneName": "cn-north-1c"
},
{
"State": "available",
"RegionName": "cn-north-1",
"Messages": [],
"ZoneName": "cn-north-1d"
}
]
}
使用 Amazon EC2 CLI 查找您的区域和可用区
1.
如下使用 ec2-describe-regions 命令描述您的区域。
PROMPT> ec2-describe-regions
REGION cn-north-1 ec2.cn-north-1.amazonaws.com
2.
如下使用 ec2-describe-availability-zones 命令描述 cn-north-1 区域中您的可用区。
PROMPT> ec2-describe-availability-zones --region cn-north-1
AVAILABILITYZONE cn-north-1a available cn-north-1
AVAILABILITYZONE cn-north-1b available cn-north-1
为资源指定区域
每次创建 Amazon EC2 资源时,您都可为该资源指定区域。您可以使用 AWS 管理控制台或命令行为资
源指定区域。
Note
一些 AWS 资源可能不是在所有区域和可用区都可用。在具体的可用区内启动实例前,请确保您
可以在所需的区域或可用区内能够创建您需要的资源。
使用控制台为资源指定区域
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
使用导航栏中的区域选择器。
11
Amazon Elastic Compute Cloud Linux 实例用户指南
在可用区中启动实例
使用命令行指定默认区域
可以将环境变量的值设置为所需的区域终端节点(例如,https://ec2.us-west-1.amazonaws.com):
• AWS_DEFAULT_REGION (AWS CLI)
• EC2_URL (Amazon EC2 CLI)
或者,您也可以结合使用 --region 命令行选项和每个单独的命令。例如:--region us-west-1。
有关 Amazon EC2 终端节点的更多信息,请参阅 Amazon Elastic Compute Cloud 终端节点。
在可用区中启动实例
当您启动实例时,请选择能让您的实例更接近特定客户的区域,或选择能够满足法律或您的其他要求的区
域。通过启动独立可用区内的实例,您可以保护您的应用程序不受单一位置故障的影响。
当您启动实例时,可以选择指定所用区域中的可用区。如果您未指定可用区,我们将为您选择一个。启动
初始实例时,我们建议您采用默认可用区,因为这有助于我们根据系统运行状况和可用容量为您选择最佳
可用区。如果您要启动其他实例,则除非您的新实例必须接近正在运行的实例或必须与正在运行的实例相
隔离,否则请不要为新实例指定可用区。
使用控制台为您的实例指定可用区
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在控制面板上,选择 Launch Instance。
按照向导中的指示操作。在 Configure Instance Details (配置实例详细信息) 页面中,执行以下操作:
12
Amazon Elastic Compute Cloud Linux 实例用户指南
将实例迁移到其他可用区
• [EC2-Classic] 从列表中的可用区选项中选择一项,或选择 No Preference (无首选项),让我们为您
选择最佳可用区。
• [EC2-VPC] 从列表中的子网选项中选择一项,或选择 No Preference (default subnet in any Availability
Zone) (无首选项(任何可用区的默认子网)),让我们为您选择最佳可用区。
使用 AWS CLI 为您的实例指定可用区
您可以将 run-instances 命令与下面的一个选项结合使用:
• [EC2-Classic] --placement
• [EC2-VPC] --subnet-id
使用 Amazon EC2 CLI 为您的实例指定可用区
您可以将 ec2-run-instances 命令与下面的一个选项结合使用:
• [EC2-Classic] --availability-zone
• [EC2-VPC] --subnet
将实例迁移到其他可用区
如果需要,您可以将实例迁移从一个可用区迁移到另一个可用区。例如,如果您尝试修改实例的类型,且
我们无法在当前可用区中启动新实例类型的实例,则您可以将该实例迁移到我们可以启动该实例类型的实
例的可用区中。
如以下步骤所示,迁移过程包括从原始实例创建 AMI、在新可用区中启动实例以及更新新实例的配置。
将实例迁移到其他可用区
1.
从该实例创建 AMI。迁移过程取决于操作系统和实例的根设备卷的类型。有关更多信息,请参阅对应
于您的操作系统和根设备卷的文档:
• 创建 Amazon EBS 支持的 Linux AMI (p. 83)
• 创建由实例存储支持的 Linux AMI (p. 86)
• 创建 Amazon EBS 支持的 Windows AMI
• 创建实例存储支持的 Windows AMI
2.
3.
[EC2-VPC] 如果需要保留实例的私有 IP 地址,必须删除当前可用区中的子网,然后在新可用区中用
与原始子网相同的 IP 地址范围创建子网。请注意,在删除子网前,您必须终止该子网中的所有实例。
因此,您应该将在当前子网中的所有实例移至新子网。
指定新的可用区或子网,从您刚创建的 AMI 启动一个实例。您可以使用与初始实例相同的实例类型,
也可以选择新实例类型。有关更多信息,请参阅 在可用区中启动实例 (p. 12)。
4.
如果原始实例有关联的弹性 IP 地址,则请将其与新实例相关联。有关更多信息,请参阅 取消关联弹
性 IP 地址,并将它与其他实例重新关联 (p. 551)。
5.
如果原始实例是预留实例,请更改预留的可用区。(如果您还更改了实例类型,则可以更改预留的实
例类型。)有关更多信息,请参阅 提交修改请求 (p. 168)。
13
Amazon Elastic Compute Cloud Linux 实例用户指南
根设备卷
6.
(可选)终止原始实例。有关更多信息,请参阅 终止实例 (p. 256)。
Amazon EC2 根设备卷
Abstract
为您的实例选择启动卷的类型。
当您启动一个实例时,根设备卷 包含用于启动该实例的映像。当我们介绍 Amazon EC2 时,所有 AMI 都
由 Amazon EC2 实例存储提供支持,也就是说从该 AMI 启动的实例的根设备是从存储在 Amazon S3 中
的模板创建的实例存储卷。介绍完 Amazon EBS 之后,我们将介绍由 Amazon EBS 提供支持的 AMI。这
意味着从 AMI 启动的实例的根设备是一个从 Amazon EBS 快照创建的 Amazon EBS 卷。您可以在 Amazon
EC2 实例存储支持的 AMI 和 Amazon EBS 支持的 AMI 之间进行选择。我们建议您使用由 Amazon EBS
提供支持的实例,因为它们启动速度更快,而且采用了持久性存储。
主题
• 根设备存储概念 (p. 14)
• 根据根设备类型选择 AMI (p. 15)
• 确定实例的根设备类型 (p. 16)
• 将根设备卷更改为持久保留 (p. 17)
根设备存储概念
您可以从 AMI 的两种类型之一启动实例:由实例存储支持的 AMI 或由 Amazon EBS 支持的 AMI。AMI
的说明中包括 AMI 的类型;您会看到根设备在一些地方被称为 ebs(表示由 Amazon EBS 提供支持)或
instance store(表示由实例存储提供支持)。这很重要,因为您可以使用每种 AMI 进行哪些操作有
很大区别。有关这些区别的更多信息,请参阅根设备存储 (p. 64)。
实例存储支持的实例
使用实例存储作为根设备的实例自带可用的实例存储卷,其中一个充当根设备卷。当启动某个实例时,用
于启动该实例的映像会复制到根卷(通常是 sda1)。只要实例正在运行,实例存储卷上的所有数据便会
存在,但是在实例终止时(实例存储支持的实例不支持 Stop (停止) 操作)或是实例失败时(例如底层硬
盘有问题时),会删除这些数据。
由 Amazon 实例存储提供支持的实例失败或终止后,该实例不能被恢复。如果您打算使用由 Amazon EC2
实例存储提供支持的实例,我们强烈建议您将数据跨多个可用区分配到实例存储中。您还应该定期将您的
实例存储卷上的数据备份至持久性存储。
有关更多信息,请参阅 Amazon EC2 实例存储 (p. 645)。
14
Amazon Elastic Compute Cloud Linux 实例用户指南
根据根设备类型选择 AMI
由 Amazon EBS 提供支持的实例
使用 Amazon EBS 作为根设备的实例自动附加 Amazon EBS 卷。当您启动由 Amazon EBS 提供支持的
实例时,系统会为您使用的 AMI 所参考的每一个 Amazon EBS 快照创建 Amazon EBS 卷。您可以视情
况使用其他 Amazon EBS 卷或实例存储卷。
由 Amazon EBS 提供支持的实例可以停止然后再重新启动,所连接的卷中存储的数据不会受影响。当由
Amazon EBS 提供支持的实例处于停止状态时,您可以完成各种与该实例和卷有关的任务。例如,您可
以修改实例的属性,您可以更改实例的大小或更新实例使用的内核,或者您可以将您的根卷连接到另一个
的运行的实例,以进行调试或达到任何其他目的。
默认情况下,在您启动由 Amazon EBS 提供支持的实例时,附加的根设备卷和其他 Amazon EBS 卷会在
实例终止时自动删除。有关在启动实例时如何更改此行为的信息,请参阅将根设备卷更改为持久保
留 (p. 17)。
默认情况下,您连接到运行中的实例的所有 Amazon EBS 卷会在实例终止时断开。您可以将断开的卷连
接到任何正在运行的实例。
如果由 Amazon EBS 提供支持的实例失败,您可以通过以下方法之一恢复您的会话:
• 停止,然后再次启动(先尝试此方法)。
• 自动为相关卷拍摄快照并创建新的 AMI。有关更多信息,请参阅创建 Amazon EBS 支持的 Linux
AMI (p. 83)。
• 通过以下步骤将卷连接到一个新实例:
1. 创建根卷的快照。
2. 使用快照注册一个新的 AMI。
3. 从新的 AMI 启动一个新实例。
4. 从旧的实例中分离其余 Amazon EBS 卷。
5. 将 Amazon EBS 卷重新连接到新实例。
根据根设备类型选择 AMI
您在启动实例时指定的 AMI 决定着实例的根设备卷类型。
使用控制台选择 Amazon EBS 支持的 AMI
1.
打开 Amazon EC2 控制台。
2.
在导航窗格中,单击 AMIs。
15
Amazon Elastic Compute Cloud Linux 实例用户指南
确定实例的根设备类型
3.
4.
5.
从筛选条件列表中,选择映像类型(例如 Public images (公有映像))。在搜索栏中,单击 Platform
(平台) 以选择操作系统(例如 Amazon Linux),单击 Root Device Type (根设备类型) 以选择 EBS
images (EBS 映像)。
(可选)为了获取其他信息以帮助您进行选择,请单击 Show/Hide Columns (显示/隐藏列) 图标,更
新要显示的列,然后单击 Close (关闭)。
选择一个 AMI 并写下其 AMI ID。
使用控制台选择实例存储支持的 AMI
1.
2.
打开 Amazon EC2 控制台。
在导航窗格中,单击 AMIs。
3.
从筛选条件列表中,选择映像类型(例如 Public images (公有映像))。在搜索栏中,单击 Platform
(平台) 以选择操作系统(例如 Amazon Linux),单击 Root Device Type (根设备类型) 以选择 Instance
store (实例存储)。
(可选)为了获取其他信息以帮助您进行选择,请单击 Show/Hide Columns (显示/隐藏列) 图标,更
新要显示的列,然后单击 Close (关闭)。
选择一个 AMI 并写下其 AMI ID。
4.
5.
使用命令行验证 AMI 的根设备卷的类型
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-images (AWS CLI)
• ec2-describe-images (Amazon EC2 CLI)
• Get-EC2Image (适用于 Windows PowerShell 的 AWS 工具)
确定实例的根设备类型
使用控制台确定实例的根设备类型
1.
2.
3.
打开 Amazon EC2 控制台。
在导航窗格中,单击 Instances (实例),然后选择实例。
检查说明选项卡上根设备类型的值,如下所示:
• 如果值为 ebs,那么这是一个由 Amazon EBS 支持的实例。
• 如果值为 instance store,则表示这是由实例存储提供支持的实例。
使用命令行确定实例的根设备类型
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-instances (AWS CLI)
• ec2-describe-instances (Amazon EC2 CLI)
• Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)
16
Amazon Elastic Compute Cloud Linux 实例用户指南
将根设备卷更改为持久保留
将根设备卷更改为持久保留
默认情况下,当实例终止时,由 Amazon EBS 提供支持的 AMI 的根设备卷会被删除。要更改默认操作,
请使用块储存设备映射将 DeleteOnTermination 属性设置为 false。
使用控制台将根卷更改为持久保留
当您启动实例时,可以使用控制台更改 DeleteOnTermination 属性。要对正在运行的实例更改此属
性,您必须使用命令行。
使用控制台在启动时将实例的根设备卷更改为持久保留
1.
2.
打开 Amazon EC2 控制台。
从 Amazon EC2 控制台控制面板中,单击 Launch Instance (启动实例)。
3.
在 Choose an Amazon Machine Image (AMI) (选择一个Amazon 系统映像 (AMI)) 页面上,选择要使
用的 AMI 并单击 Select (选择)。
遵循向导完成 Choose an Instance Type (选择一个实例类型) 和 Configure Instance Details (配置实
例详细信息) 页面。
在 Add Storage (添加存储) 页面上,取消选中根卷的 Delete On Termination (终止时删除) 复选框。
完成其余向导页面,然后单击 Launch (启动)。
4.
5.
6.
您可以通过实例的详细信息窗格查看根设备卷的详细信息以验证设置。在 Block devices (块储存设备) 旁,
单击根设备卷的条目。默认情况下,Delete on termination (终止时删除) 为 True。如果您更改默认行为,
Delete on termination (终止时删除) 将为 False。
使用 AWS CLI 将实例的根卷更改为持久保留
使用 AWS CLI,您可以在启动实例或者在实例正在运行时更改 DeleteOnTermination 属性。根设备通
常是 /dev/sda1 (Linux) 或 xvda (Windows)
Example 在启动时
使用 run-instances 命令并在其中包括将根卷的 DeleteOnTermination 属性设置为 false 的块储存设
备映射,来保留根卷。
$ aws ec2 run-instances --image-id ami-1a2b3c4d --block-device-mappings
'[{"DeviceName":"/dev/sda1","Ebs":{"DeleteOnTermination":false}}]' other para
meters...
您可以通过使用 describe-instances 命令,并如此处所示,在命令输出中查找 /dev/sda1 的
BlockDeviceMappings 条目,确认 DeleteOnTermination 为 false。
...
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"Status": "attached",
"DeleteOnTermination": false,
"VolumeId": "vol-877166c8",
"AttachTime": "2013-07-19T02:42:39.000Z"
}
17
Amazon Elastic Compute Cloud Linux 实例用户指南
将根设备卷更改为持久保留
}
...
Example 当实例正在运行时
使用 modify-instance-attribute 命令,并在命令中包括将根卷的 DeleteOnTermination 属性设置为
false的块储存设备映射,来保留根卷。
$ aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --blockdevice-mappings '[{"DeviceName":"/dev/sda1","Ebs":{"DeleteOnTermina
tion":false}}]'
使用 Amazon EC2 CLI 将实例的根卷更改为持久保留
使用 Amazon EC2 CLI,您可以在启动实例或者在实例正在运行时更改 DeleteOnTermination 属性。
根设备通常是 /dev/sda1 (Linux) 或 xvda (Windows)
Example 在启动时
使用 ec2-run-instances 命令,并在其中包括将根设备的 DeleteOnTermination 标志设置为 false 的
块储存设备映射。包括 -v 选项以在冗余模式下运行命令。
$ ec2-run-instances ami-1a2b3c4d
-v
-b "/dev/sda1=::false" other parameters...
通过在详细模式下运行命令,您可以查看基本请求和回应,并确认 DeleteOnTermination 是否设置为
false,如此处所示。
...
<blockDeviceMapping>
<item>
<deviceName>/dev/sda1</deviceName>
<ebs>
<deleteOnTermination>false</deleteOnTermination>
</ebs>
</item>
</blockDeviceMapping>
...
Example 当实例正在运行时
使用 ec2-modify-instance-attribute 命令,将根卷的 DeleteOnTermination 属性设置为 false 来保留
根卷。
$ ec2-modify-instance-attribute i-1234567890abcdef0 -b "/dev/sda1=::false"
18
Amazon Elastic Compute Cloud Linux 实例用户指南
注册 AWS
Amazon EC2 的设置
Abstract
完成这些步骤为首次使用 Amazon EC2 做好准备。
如果您已注册了 Amazon Web Services (AWS),则可以立即开始使用 Amazon EC2。您可以打开 Amazon
EC2 控制台,单击 Launch Instance (启动实例),然后按照启动向导的步骤启动第一个实例。
如果您尚未注册 AWS,或如果需要帮助启动第一个实例,请完成以下任务以便为使用 Amazon EC2 进行
设置:
1. 注册 AWS (p. 19)
2. 创建 IAM 用户 (p. 20)
3. 创建密钥对 (p. 21)
4. 创建 Virtual Private Cloud (VPC) (p. 23)
5. 为您的 VPC (p. 23)
注册 AWS
当您注册 Amazon Web Services (AWS) 时,您的 AWS 账户会自动注册 AWS 中的所有服务,包括 Amazon
EC2。您只需为使用的服务付费。
使用 Amazon EC2,您可以按实际用量付费。如果您是 AWS 新客户,还可以免费试用 Amazon EC2。
有关更多信息,请参阅 AWS 免费套餐。
如果您已有一个 AWS 账户,请跳到下一个任务。如果您还没有 AWS 账户,请使用以下步骤创建。
如何创建 AWS 账户
1.
2.
打开 http://www.amazonaws.cn/,然后选择 Create an AWS Account。
按照屏幕上的说明进行操作。
作为注册流程的一部分,您会收到一个电话,需要您使用电话键盘输入一个 PIN 码。
请记住您的 AWS 账户,因为进行下一个任务时需要用到该账户。
19
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 IAM 用户
创建 IAM 用户
AWS 中的服务(例如 Amazon EC2)要求您在访问时提供证书,以便服务可以确定您是否有权限访问其
资源。控制台要求您的密码。您可以为您的 AWS 账户创建访问密钥以访问命令行界面或 API。但是,我
们不建议您使用 AWS 账户的证书访问 AWS,而建议您使用 AWS Identity and Access Management
(IAM)。创建 IAM 用户,然后将该用户添加到具有管理权限的 IAM 组或授予此用户管理权限。然后您就可
以使用特别的 URL 和 IAM 用户的证书访问 AWS。
如果您已注册 AWS 但尚未为自己创建一个 IAM 用户,则可以使用 IAM 控制台自行创建。如果您不熟悉
如何使用控制台,请参阅使用 AWS 管理控制台中的概述内容。
为管理员创建组
1.
2.
3.
登录到 https://console.amazonaws.cn/iam/ 上的 Identity and Access Management (IAM) 控制台。
在导航窗格中,选择 Groups,然后选择 Create New Group。
对于 Group Name,请为您的组键入一个名称(如 Administrators),然后选择 Next Step。
4.
在策略列表中,选中 AdministratorAccess 策略旁边的复选框。您可以使用 Filter 菜单和 Search 框
来筛选策略列表。
选择 Next Step,然后选择 Create Group。
5.
您的新组列在 Group Name 下方。
要为您自己创建 IAM 用户,请将用户添加到 Administrators 组中,并为该用户创建密码
1.
2.
3.
4.
5.
6.
7.
8.
9.
在导航窗格中选择 Users,然后选择 Create New Users。
在框 1 中,键入用户名。
清除 Generate an access key for each user 旁的复选框。
选择 Create。
在用户列表中,选择您刚创建的用户的名称(而不是复选框)。可以使用 Search 框搜索该用户名。
选择 Groups 选项卡,然后选择 Add User to Groups。
选中 Administrators 组旁的复选框。然后选择 Add to Groups。
选择 Security Credentials 选项卡。在 Sign-In Credentials 下,选择 Manage Password。
选择 Assign a custom password。然后在 Password 和 Confirm Password 框中键入密码。完成后,
请选择 Apply。
要以该新 IAM 用户的身份登录,请从 AWS 控制台退出,然后使用以下 URL,其中 your_aws_account_id
是您的不带连字符的 AWS 账户(例如,如果您的 AWS 账户是 1234-5678-9012,则您的 AWS 账户
ID 是 123456789012):
https://your_aws_account_id.signin.aws.amazon.com/console/
输入您刚创建的 IAM 用户名(而不是电子邮件地址)和密码。登录后,导航栏显示 your_user_name @
your_aws_account_id。
如果您不希望您的登录页面 URL 包含 AWS 账户 ID,可以创建账户别名。从 IAM 控制台中,单击导航窗
格中的控制面板。从控制面板中,单击 Customize,然后输入一个别名,例如您的公司名称。要在创建账
户别名后登录,请使用以下 URL:
https://your_account_alias.signin.aws.amazon.com/console/
20
Amazon Elastic Compute Cloud Linux 实例用户指南
创建密钥对
要为您的账户验证 IAM 用户的登录链接,请打开 IAM 控制台并在控制面板的 IAM users sign-in link (IAM
用户登录链接) 下进行检查。
有关 IAM 的更多信息,请参阅 IAM 和 Amazon EC2 (p. 464)。
创建密钥对
AWS 使用公共密钥密码术来保护您实例的登录信息。Linux 实例没有密码;您可以使用密钥对安全地登
录您的实例。 您可以在启动实例时指定密钥对的名称,然后提供私有密钥(使用 SSH 登录时)。
如果您尚未创建密钥对,则可以通过 Amazon EC2 控制台自行创建。请注意,如果您计划在多个区域启
动实例,则需要在每个区域中创建密钥对。有关区域的更多信息,请参阅地区和可用区域 (p. 7)。
创建密钥对
1.
2.
3.
使用您在上节中创建的 URL 登录到 AWS。
从 AWS 仪表板中,选择 EC2 以打开 Amazon EC2 控制台。
从导航栏中,选择密钥对区域。您可以选择向您提供的任何区域,无需理会您身处的位置。但是,密
钥对是特定于区域的;例如,如果您计划在 美国西部(俄勒冈)地区 中启动实例,则必须在 美国西
部(俄勒冈)地区 中创建实例的密钥对。
4.
在导航窗格中的 NETWORK & SECURITY 下,单击 Key Pairs。
Tip
导航窗格位于控制台的左侧。如果您看不到窗格,它可能被最小化了;单击箭头扩展窗格。
您可能必须向下滚动才能看到 Key Pairs 链接。
21
Amazon Elastic Compute Cloud Linux 实例用户指南
创建密钥对
5.
单击 Create Key Pair (创建密钥对)。
6.
在 Create Key Pair (创建密钥对) 对话框的 Key pair name (密钥对名称) 字段中输入新密钥对的名称,
然后单击 Create (创建)。选择一个容易记住的名称,例如,您的 IAM 用户名称,后跟 -key-pair
加区域名称。例如,me-key-pair-uswest2。
7.
您的浏览器会自动下载私有密钥文件。基本文件名是您为密钥对指定的名称,文件扩展名为 .pem。
将私有密钥文件保存在安全位置。
Important
这是您保存私有密钥文件的唯一机会。当您启动实例时,您将需要提供密钥对的名称;当您
每次连接到实例时,您将需要提供相应的私有密钥。
8.
如果您将在 Mac 或 Linux 计算机上使用 SSH 客户端连接到您的 Linux 实例,请使用以下命令设置您
私有密钥文件的权限,以确保只有您可以读取它。
$ chmod 400 your_user_name-key-pair-region_name.pem
有关更多信息,请参阅 Amazon EC2 密钥对 (p. 447)。
使用密钥对连接到实例
要从运行 Mac 或 Linux 的计算机连接到 Linux 实例,需要使用 - i 选项对 SSH 客户端指定 .pem 文件
和私有密钥的路径。若要从运行 Windows 的计算机连接到 Linux 实例,可以使用 MindTerm 或 PuTTY。
如果您计划使用 PuTTY,则需要安装它并按以下过程将 .pem 文件转换为 .ppk 文件。
(可选)准备使用 PuTTY 从 Windows 连接到 Linux 实例
1.
从 http://www.chiark.greenend.org.uk/~sgtatham/putty/ 下载并安装 PuTTY。确保安装整个套件。
2.
启动 PuTTYgen(例如,在“Start”菜单中,依次单击“All Programs > PuTTY > PuTTYgen ”)。
3.
在 Type of key to generate (要生成的密钥类型) 下,选择 SSH-2 RSA。
4.
单击“Load”。在默认情况下,PuTTYgen 仅显示扩展名为 .ppk 的文件。要找到您的 .pem 文件,请
选择显示所有类型的文件的选项。
5.
选择您在上一个步骤中创建的私有密钥文件,然后单击 Open (打开)。单击 OK (确定) 关闭确认对话
框。
22
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 Virtual Private Cloud (VPC)
6.
7.
单击 Save private key (保存私钥)。PuTTYgen 显示一条关于在没有口令的情况下保存密钥的警告。
单击 Yes (是)。
指定与密钥对相同的密钥名称。PuTTY 自动添加 .ppk 文件扩展名。
创建 Virtual Private Cloud (VPC)
Amazon VPC 允许您在已经定义的虚拟网络内启动 AWS 资源。如果您有默认 VPC,则可以跳过此部分
并进入下一个任务,即 为您的 VPC (p. 23)。若要确定您是否有默认的 VPC,请参阅在 Amazon EC2 控
制台中的所支持的平台 (p. 519)。否则,您可以使用以下步骤在账户中创建非默认 VPC。
Important
如果您的账户在某个区域中支持 EC2-Classic,则您在该区域没有默认 VPC。T2 实例必须在 VPC
中启动。
创建非默认 VPC
1.
2.
3.
4.
5.
打开 Amazon VPC 控制台 https://console.amazonaws.cn/vpc/。
从导航栏中,为 VPC 选择区域。VPC 特定于某一区域,因此您应选择已创建密钥对的区域。
在 VPC 控制面板上,单击 Start VPC Wizard (启动 VPC 向导)。
在 Step 1: Select a VPC Configuration (步骤 1: 选择 VPC 配置) 页面上,确保选择 VPC with a Single
Public Subnet (带有单个公有子网的 VPC),然后单击 Select (选择)。
在 Step 2: VPC with a Single Public Subnet (步骤 2: 带有单个公有子网的 VPC) 页面上,在 VPC
name (VPC 名称) 字段中为您的 VPC 输入友好名称。保留其他默认配置设置,然后单击 Create VPC
(创建 VPC)。在确认页面上,单击 OK (确定)。
有关 Amazon VPC 的更多信息,请参阅 Amazon VPC 是什么?(在 Amazon VPC 用户指南 中)。
为您的 VPC
安全组用作相关实例的防火墙,可在实例级别控制入站和出站的数据流。您必须在安全组中添加规则,以
便能够使用 SSH 从您的 IP 地址连接到实例。您还可以添加允许来自任意位置的入站和出站 HTTP 和
HTTPS 访问的规则。
请注意,如果您计划在多个区域中启动实例,则需要在每个区域中创建安全组。有关区域的更多信息,请
参阅地区和可用区域 (p. 7)。
先决条件
您需要本地计算机的公有 IP 地址,可以使用服务获得该地址。例如,我们提供以下服务:http://
checkip.amazonaws.com/。要查找另一项可提供您的 IP 地址的服务,请使用搜索短语“what is my IP
address”。如果您正通过 Internet 服务提供商 (ISP) 连接或者在不使用静态 IP 的情况下从防火墙后面连
接,则您需要找出客户端计算机使用的 IP 地址范围。
为您的 VPC 创建具有最小特权的
1.
打开 Amazon EC2 控制台。
Tip
另外,您可以使用 Amazon VPC 控制台创建安全组。但是,此过程中的说明不适用于 Amazon
VPC 控制台。因此,如果您在以前的部分中切换到了 Amazon VPC 控制台,请切换回
23
Amazon Elastic Compute Cloud Linux 实例用户指南
为您的 VPC
Amazon EC2 控制台并使用这些说明,或者使用 Amazon VPC 入门指南 中的为您的 VPC
设置安全组。
2.
从导航栏中选择安全组的区域。安全组特定于某一区域,因此您应选择已创建密钥对的区域。
3.
4.
5.
单击导航窗格中的 Security Groups (安全组)。
单击 Create Security Group (创建安全组)。
输入新安全组的名称和描述。选择一个容易记住的名称,例如,您的 IAM 用户名称,后跟 _SG_ 加
区域名称。例如,me_SG_uswest2。
在 VPC 列表中选择您的 VPC。如果您有默认 VPC,则该 VPC 会带有星号 (*) 标记。
6.
Note
如果您的账户支持 EC2-Classic,请选择您在上一个任务中创建的 VPC。
7.
在 Inbound (入站) 选项卡上,创建以下规则(为每个新规则单击 Add Rule (添加规则)),然后单击
Create (创建):
• 从 Type (类型) 列表中选择 HTTP,确保 Source (源) 设置为 Anywhere (任何位置) (0.0.0.0/0)。
• 从 Type (类型) 列表中选择 HTTPS,确保 Source (源) 设置为 Anywhere (任何位置) (0.0.0.0/0)。
• 从 Type (类型) 列表中选择 SSH。在 Source (源) 框中,确保选择 Custom IP (自定义 IP),然后采
用 CIDR 表示法指定您计算机或网络的公有 IP 地址。要采用 CIDR 表示法指定单个 IP 地址,请添
加路由前缀 /32。例如,如果您的 IP 地址是 203.0.113.25,请指定 203.0.113.25/32。如果
您的公司要分配同一范围内的地址,请指定整个范围,例如 203.0.113.0/24。
Caution
出于安全原因,我们建议您不要允许从所有 IP 地址 (0.0.0.0/0) 对您的实例进行 SSH
访问(以测试为目的的短暂访问除外)。
24
Amazon Elastic Compute Cloud Linux 实例用户指南
为您的 VPC
有关更多信息,请参阅 Amazon EC2 个安全组(对于 Linux 实例) (p. 456)。
25
Amazon Elastic Compute Cloud Linux 实例用户指南
概述
Amazon EC2 Linux 实例入门
Abstract
通过启动、连接以及使用 Linux 实例实现 Amazon EC2 入门。
让我们通过启动、连接以及使用 Linux 实例来实现 Amazon Elastic Compute Cloud (Amazon EC2) 入门。
实例 是 AWS 云中的虚拟服务器。您可以使用 Amazon EC2 来创建和配置在实例上运行的操作系统和应
用程序。
注册 AWS 后,您可以通过 AWS 免费套餐开始免费使用 Amazon EC2。如果您在过去 12 个月内创建过
AWS 账户,并且还没有超出 Amazon EC2 的免费套餐权益范围,则学完本教程不需要任何费用,因为我
们会帮助您选择免费套餐权益范围内的选项。否则,您将从启动实例的那一刻开始承担标准的 Amazon
EC2 使用费,直至终止实例(本教程最后一项任务),即使实例处于闲置状态也要计费。
内容
• 概述 (p. 26)
• 先决条件 (p. 27)
• 步骤 1:启动实例 (p. 27)
• 步骤 2:连接到您的实例 (p. 28)
• 步骤 3:清除您的实例 (p. 29)
• 后续步骤 (p. 30)
概述
该实例为 Amazon EBS 支持的实例(即,根卷为 EBS 卷)。您可以指定在其中运行您的实例的可用区,
也可以让 Amazon EC2 为您选择可用区。启动您的实例时,您可以通过指定密钥对和安全组保障其安全。
连接到您的实例时,您必须指定您在启动实例时指定的密钥对的私有密钥。
26
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
任务
要完成本教程,请执行以下任务:
1. 启动实例 (p. 27)
2. 连接到您的实例 (p. 28)
3. 清除您的实例 (p. 29)
相关教程
• 如果您希望启动 Windows 实例,请参阅 Amazon EC2 用户指南(适用于 Microsoft Windows 实例)
中的以下教程:Amazon EC2 Windows 实例入门。
• 如果您希望使用命令行,请参阅 AWS Command Line Interface 用户指南 中的以下教程:通过 AWS
CLI 使用 Amazon EC2。
先决条件
开始之前,请确保您已完成Amazon EC2 的设置 (p. 19)中的步骤。
步骤 1:启动实例
您可以根据以下过程所述使用 AWS 管理控制台启动 Linux 实例。本教程旨在帮助您快速启动第一个实
例,因此不会涵盖所有可能的选项。有关高级选项的更多信息,请参阅启动实例。
启动实例
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
从控制台控制面板中,选择 Launch Instance。
3.
Choose an Amazon Machine Image (AMI) 页面显示一组称为 Amazon 系统映像 (AMI) 的基本配置,
作为您的实例的模板。选择 Amazon Linux AMI 的 HVM 版本。 请注意,此 AMI 标记为“符合条件的
免费套餐。”
4.
在 Choose an Instance Type (选择实例类型) 页面上,您可以选择实例的硬件配置。选择 t2.micro
类型(默认情况下的选择)。请注意,此实例类型适用免费套餐。
27
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 2:连接到您的实例
Note
T2 实例(如 t2.micro)必须在 VPC 中启动。如果您的 AWS 账户支持 EC2-Classic 并且
您在所选区域中没有 VPC,则启动向导会为您创建 VPC,然后您可以继续执行下一个步骤。
否则,将禁用 Review and Launch 按钮,且您必须单击 Next: Configure Instance Details 并
遵循说明选择子网。
5.
6.
选择 Review and Launch 让向导为您完成其他配置设置。
在 Review Instance Launch (查看实例启动) 页面上的 Security Groups (安全组) 下,您将看到向导为
您创建并选择了安全组。使用以下步骤,您可以使用此安全组,或者也可以选择在设置时创建的安全
组:
a.
b.
c.
7.
8.
选择 Edit security groups。
在 Configure Security Group 页面上,确保 Select an existing security group 处于选中状态。
从现有安全组列表中选择您的安全组,然后选择 Review and Launch。
在 Review Instance Launch 页面上,选择 Launch。
当系统提示提供密钥时,选择 Choose an existing key pair,然后选择您在进行设置时创建的密钥对。
另外,您也可以新建密钥对。选择 Create a new key pair,输入密钥对的名称,然后选择 Download
Key Pair。这是您保存私有密钥文件的唯一机会,因此务必单击进行下载。将私有密钥文件保存在安
全位置。当您启动实例时,您将需要提供密钥对的名称;当您每次连接到实例时,您将需要提供相应
的私有密钥。
Caution
请勿选择 Proceed without a key pair (在没有密钥对的情况下继续) 选项。如果您启动的实例
没有密钥对,就不能连接到该实例。
准备好后,选中确认复选框,然后选择 Launch Instances。
9. 确认页面会让您知道自己的实例已启动。选择 View Instances 以关闭确认页面并返回控制台。
10. 在实例屏幕上,您可以查看启动状态。启动实例只需很短的时间。启动实例时,其初始状态为
pending。实例启动后,其状态变为 running,并且会收到一个公有 DNS 名称。(如果 Public DNS
列已隐藏,请选择页面右上角的“Show/Hide”图标,然后选择 Public DNS。)
11. 需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查;您可以在 Status
Checks 列中查看此信息。
步骤 2:连接到您的实例
有几种方法可以连接到 Linux 实例。在此过程中,您将使用浏览器连接。或者,您也可以使用 PuTTY 或
SSH 客户端进行连接。我们还假定您按照之前的步骤操作并从 Amazon Linux AMI 启动了一个实例,该
实例有特定的用户名。其他 Linux 发行版可能使用不同的用户名。有关更多信息,请参见 使用 PuTTY 从
Windows 连接到 Linux 实例 (p. 243) 或 使用 SSH 连接到 Linux 实例 (p. 239)。
Important
除非您在启动它时使用 .pem 文件的键前缀以及允许访问 SSH 的安全组,否则您无法连接到您的
实例。如果您无法连接到实例,请参阅排查实例的连接问题 (p. 701)以获得帮助。
28
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 3:清除您的实例
使用 Web 浏览器连接到您的 Linux 实例
1.
您必须安装了 Java 并已在浏览器中启用。如果您还未安装 Java,可以联系您的系统管理员进行安
装,也可以遵循以下页面中概括的步骤:安装 Java 和在您的 Web 浏览器中启用 Java。
2.
3.
4.
从 Amazon EC2 控制台中,在导航窗格中选择 Instances。
选择该实例,然后选择 Connect。
选择 A Java SSH client directly from my browser (Java required)。
5.
Amazon EC2 自动检测您实例的公有 DNS 名称并为您填写 Public DNS (公有 DNS)。它还检测您在
启动实例时指定的密钥对。完成以下步骤,然后选择 Launch SSH Client。
6.
7.
8.
9.
a.
在 User name (用户名) 中,输入 ec2-user。
b.
在 Private key path 中,输入私有密钥 (.pem) 文件的完全限定路径,包括密钥对名称。
c.
(可选)选择 Store in browser cache 以将私有密钥的位置存储在您的浏览器缓存中。这使得
Amazon EC2 可在后续的浏览器会话中检测私有密钥的位置,直到您清除浏览器缓存为止。
如有必要,请选择 Yes 以信任证书,然后选择 Run 以运行 MindTerm 客户端。
如果这是您第一次运行 MindTerm,则会出现一系列对话框,要求您接受许可协议、确认主目录的设
置以及确认已知主机目录的设置。确认这些设置。
一个对话框会提示您向已知主机集添加主机。如果您不想在本地计算机上存储主机密钥信息,请选择
No。
此时会打开一个窗口并且您连接到了您的实例。
Note
如果您在上一步中选择了 No,则将看到以下消息:
Verification of server key disabled in this session.
步骤 3:清除您的实例
在您完成为本教程创建的实例后,应通过终止该实例进行清除。如果在清除该实例前要对其执行更多操
作,请参阅后续步骤 (p. 30)。
Important
终止实例可有效地删除实例;无法在终止实例后重新连接到实例。
如果您启动的实例不在 AWS 免费套餐范围内,则该实例一旦变为 shutting down 或 terminated 状
态,就会停止产生费用。如果您希望在不产生费用的情况下保留实例以供将来使用,您可以立即停止该实
例,然后在稍后再次启动它。有关更多信息,请参阅停止实例。
终止您的实例
1.
2.
在导航窗格中,选择 Instances。在实例列表中选择实例。
依次选择 Actions、Instance State 和 Terminate。
3.
当系统提示您确认时,选择 Yes, Terminate。
Amazon EC2 关闭并终止您的实例。您的实例在终止之后,短时间内仍将在控制台上可见,然后该
条目将被删除。
29
Amazon Elastic Compute Cloud Linux 实例用户指南
后续步骤
后续步骤
启动实例后,您可能想尝试以下的一些练习:
• 配置 CloudWatch 警报以在您的使用量超出免费套餐时向您发出通知。有关更多信息,请参阅 AWS
Billing and Cost Management 用户指南 中的创建账单警报。
• 添加 EBS 卷。有关更多信息,请参阅 创建 Amazon EBS 卷 (p. 591) 和 将 Amazon EBS 卷连接到实
例 (p. 595)。
• 安装 LAMP 堆栈。有关更多信息,请参阅 教程:安装 LAMP Web 服务器(在 Amazon Linux
上) (p. 33)。
30
Amazon Elastic Compute Cloud Linux 实例用户指南
针对 Amazon EC2 的最佳实践
Abstract
使用此核对清单可评估您对 Amazon EC2 的使用。
此核对清单旨在帮助您从 Amazon EC2 获得最大好处和满意度。
安全与网络
• 使用联合身份验证、IAM 用户和 IAM 角色可管理对 AWS 资源和 API 的访问。建立证书管理策略和过
程,以便创建、分配、轮换和撤销 AWS 访问证书。有关更多信息,请参阅 IAM 用户指南 中的 IAM 最
佳实践。
• 为安全组实现最严格的规则。有关更多信息,请参阅 安全组规则 (p. 457)。
• 定期修补、更新和保护实例上的操作系统和应用程序。有关更新 Amazon Linux 的更多信息,请参阅
管理 Linux 实例上的软件。有关更新您的 Windows 实例的更多信息,请参阅 Amazon EC2 用户指南
(适用于 Microsoft Windows 实例) 中的 更新 Windows 实例。
• 在 VPC(而不是 EC2-Classic)中启动您的实例。请注意,如果您在 2013-12-04 后创建 AWS 账户,
我们会自动将实例启动到 VPC。有关所获好处的更多信息,请参阅Amazon EC2 和 Amazon Virtual
Private Cloud (p. 513)。
存储
• 了解根设备类型对数据持久性、备份和恢复的影响。有关更多信息,请参阅 根设备存储 (p. 64)。
• 对操作系统与您的数据分别使用单独的 Amazon EBS 卷。确保含有您数据的卷可在实例终止后保留。
有关更多信息,请参阅 在实例终止时保留 Amazon EBS 卷 (p. 258)。
• 使用您的实例可用的实例存储来存储临时数据。请注意,当您停止或终止您的实例时,会删除存储在实
例存储中的数据。如果将实例存储用于数据库存储,请确保您拥有一个具有重复因子的集群,从而确保
容错。
资源管理
• 使用实例元数据和自定义资源标签跟踪并确定您的 AWS 资源。有关更多信息,请参阅 实例元数据和用
户数据 (p. 287) 和 标记 Amazon EC2 资源 (p. 679)。
• 查看您的 Amazon EC2 的当前限制。需要时请提前计划请求提高限制。有关更多信息,请参阅 Amazon
EC2 服务限制 (p. 688)。
31
Amazon Elastic Compute Cloud Linux 实例用户指南
备份和恢复
• 使用 Amazon EBS 快照 (p. 623)或备份工具定期备份实例。
• 跨多个可用区部署应用程序的关键组件,并适当地复制数据。
• 设计您的应用程序,以便在实例重新启动时处理动态 IP 地址分配。有关更多信息,请参阅 Amazon
EC2 实例 IP 寻址 (p. 538)。
• 监控和响应事件。有关更多信息,请参阅 监控 Amazon EC2 (p. 369)。
• 确保您已准备好处理故障转移。对于基本解决方案,您可以手动将网络接口或弹性 IP 地址附加到替换
实例。有关更多信息,请参阅 弹性网络接口 (ENI) (p. 554)。对于自动解决方案,您可以使用 Auto
Scaling。有关更多信息,请参阅 Auto Scaling 开发人员指南。
• 定期测试在您实例和 Amazon EBS 卷发生故障时恢复它们的过程。
32
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
运行 Linux 的 Amazon EC2 实例的相
关教程
Abstract
运行 Linux 的 Amazon EC2 实例的相关教程。
以下教程为您介绍了如何使用运行 Linux 的 EC2 实例执行常见任务。
教程
• 教程:安装 LAMP Web 服务器(在 Amazon Linux 上) (p. 33)
• 教程:使用 Amazon Linux 托管 WordPress 博客 (p. 41)
• 教程:将 Amazon Linux 上的 Apache Web 服务器配置为使用 SSL/TLS (p. 50)
• 教程:提高应用程序在 Amazon EC2 上的可用性 (p. 58)
教程:安装 LAMP Web 服务器(在 Amazon Linux
上)
Abstract
教程 - 在您的 Amazon EC2 实例上安装带有 PHP 和 MySQL 支持的 Apache Web 服务器。
通过以下步骤,您可以将支持 PHP 和 MySQL 的 Apache Web 服务器(有时称为 LAMP Web 服务器或
LAMP 堆栈)安装到您 Amazon Linux 实例上。您可以使用此服务器来托管静态网站或部署能对数据库中
的信息执行读写操作的动态 PHP 应用程序。
先决条件
本教程假定您已经启动具有可从 Internet 访问的公有 DNS 名称的实例。有关更多信息,请参阅 步骤 1:
启动实例 (p. 27)。还必须将安全组配置为允许 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)
连接。有关这些先决条件的更多信息,请参阅 Amazon EC2 的设置 (p. 19)。
33
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。如果您尝
试在 Ubuntu 实例上设置 LAMP Web 服务器,则本教程不适合您。有关 Ubuntu 上的 LAMP Web
服务器的信息,请转到 Ubuntu 社区文档 ApacheMySQLPHP 主题。
安装和启动 LAMP Web 服务器(在 Amazon Linux 上)
1.
连接到您的实例 (p. 28)。
2.
为确保您的所有软件包都处于最新状态,请对您的实例执行快速软件更新。此过程可能需要几分钟的
时间,但必须确保您拥有最新的安全更新和缺陷修复。
Note
-y 选项安装更新时不提示确认。如果您希望在安装前检查更新,则可以忽略此选项。
[ec2-user ~]$ sudo yum update -y
3.
您的实例处于最新状态后,便可以安装 Apache Web 服务器、MySQL 和 PHP 软件包。使用 yum
install 命令可同时安装多个软件包和所有相关依赖项。
[ec2-user ~]$ sudo yum install -y httpd24 php56 mysql55-server php56-mysqlnd
4.
启动 Apache Web 服务器。
[ec2-user ~]$ sudo service httpd start
Starting httpd:
5.
[
OK
]
使用 chkconfig 命令将 Apache Web 服务器配置为在每次系统启动时启动。
[ec2-user ~]$ sudo chkconfig httpd on
Tip
当您成功启用服务时,chkconfig 命令不提供任何确认消息。您可以通过运行以下命令验证
httpd 是否已启用。
[ec2-user ~]$ chkconfig --list httpd
httpd
0:off
1:off
2:on
3:on
4:on
5:on
6:off
在运行级别 2、3、4 和 5 下,httpd 为 on(您希望看到的状态)。
6.
测试您的 Web 服务器。在 Web 浏览器中,输入您实例的公有 DNS 地址(或公有 IP 地址),您应
该可以看到 Apache 测试页面。您可以使用 Amazon EC2 控制台获取实例的公有 DNS(勾选 Public
DNS (公有 DNS) 列;如果此列处于隐藏状态,请单击 Show/Hide (显示/隐藏) 图标并选择 Public
DNS (公有 DNS))。
Tip
如果您未能看到 Apache 测试页面,请检查您使用的安全组是否包含允许 HTTP(端口 80)
流量的规则。有关将 HTTP 规则添加到您安全组的信息,请参阅 向安全组添加规则 (p. 461)。
34
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
Important
如果您使用的不是 Amazon Linux,则还可能需要在实例上配置防火墙才能允许这些连接。
有关如何配置防火墙的更多信息,请参阅适用于特定分配的文档。
Note
该测试页面仅在 /var/www/html 无内容时显示。将内容添加到文档根目录后,您的内容将
显示在您实例的公有 DNS 地址中,而不显示在本测试页面。
Apachehttpd 提供的文件保存在称为 Apache 文档根目录的目录中。Amazon Linux Apache 文档根目录是
/var/www/html,默认情况下归 root 所有。
[ec2-user ~]$ ls -l /var/www
total 16
drwxr-xr-x 2 root root 4096 Jul 12 01:00 cgi-bin
drwxr-xr-x 3 root root 4096 Aug 7 00:02 error
drwxr-xr-x 2 root root 4096 Jan 6 2012 html
drwxr-xr-x 3 root root 4096 Aug 7 00:02 icons
要允许 ec2-user 操作此目录中的文件,您需修改其所有权和权限。有多种方法可以完成此任务;在本
教程中,您可以将 www 组添加到您的实例,然后赋予该组 /var/www 目录的所有权并为该组添加写入权
限。随后,该组的所有成员都将能够为 Web 服务器添加、删除和修改文件。
设置文件权限
1.
将 www 组添加到您的实例。
[ec2-user ~]$ sudo groupadd www
2.
将您的用户(这里指 ec2-user)添加到 www。
35
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
[ec2-user ~]$ sudo usermod -a -G www ec2-user
Important
您必须先退出,再重新登录,然后才能接受新组。您可以使用 exit 命令,也可以关闭终端窗
口。
3.
先退出,再重新登录,然后验证您是否为 www 组的成员。
a.
退出。
[ec2-user ~]$ exit
b.
重新连接到实例,然后运行以下命令,以验证您是否为 www 组的成员。
[ec2-user ~]$ groups
ec2-user wheel www
4.
将 /var/ 及其内容的组所有权更改到 wwwwww 组。
[ec2-user ~]$ sudo chown -R root:www /var/www
5.
更改 /var/www 及其子目录的目录权限,以添加组写入权限和设置未来子目录上的组 ID。
[ec2-user ~]$ sudo chmod 2775 /var/www
[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} \;
6.
递归更改 /var/www 及其子目录的文件权限,以添加组写入权限。
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} \;
现在,ec2-user(以及 www 组的任何未来成员)可以在 Apache 根目录中添加、删除和编辑文件。现在
您已准备好添加内容,例如静态网站或 PHP 应用程序。
测试您的 LAMP Web 服务器
如果您的服务器已安装并运行,且文件权限设置正确,则您的 ec2-user 账户应该能够在 /var/www/html
目录(可从 Internet 访问)中创建一个简单的 PHP 文件。
1.
在 Apache 文档根目录中创建一个简单的 PHP 文件。
[ec2-user ~]$ echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
Tip
尝试运行此命令时,如果出现“Permission denied”错误,请尝试先退出,再重新登录,
以接受您在 设置文件权限 (p. 35) 中配置的适当组权限。
36
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
2.
在 Web 浏览器中,输入您刚刚创建的文件的 URL。此 URL 是实例的公用 DNS 地址,后接正斜杠和
文件名。例如:
http://my.public.dns.amazonaws.com/phpinfo.php
您应该可以看到 PHP 信息页面。
Note
如果您未看到此页面,请验证上一步中是否已正确创建 /var/www/html/phpinfo.php 文
件。您也可以使用以下命令验证是否安装了所有必需的程序包(第二列中的程序包版本不需
要与此示例输出匹配):
[ec2-user ~]$ sudo yum list installed httpd24 php56 mysql55-server
php56-mysqlnd
Loaded plugins: priorities, update-motd, upgrade-helper
959 packages excluded due to repository priority protections
Installed Packages
httpd24.x86_64
2.4.16-1.62.amzn1
@amzn-main
mysql55-server.x86_64
5.5.45-1.9.amzn1
@amzn-main
php56.x86_64
5.6.13-1.118.amzn1
@amzn-main
php56-mysqlnd.x86_64
5.6.13-1.118.amzn1
@amzn-main
如果输出中未列出任何必需的程序包,请使用 sudo yum install package 命令安装它们。
3.
删除 phpinfo.php 文件。尽管此信息可能对您很有用,但出于安全考虑,不应将其传播到 Internet。
[ec2-user ~]$ rm /var/www/html/phpinfo.php
保障 MySQL 服务器的安全
MySQL 服务器的默认安装提供有多种功能,这些功能对于测试和开发都很有帮助,但对于产品服务器,
应禁用或删除这些功能。mysql_secure_installation 命令可引导您设置根密码并删除安装中的不安全功能。
即使您不打算使用 MySQL 服务器,执行此步骤也是一个不错的建议。
37
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
1.
启动 MySQL 服务器。
[ec2-user ~]$ sudo service mysqld start
Initializing MySQL database: Installing MySQL system tables...
OK
Filling help tables...
OK
To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
...
Starting mysqld:
2.
[
OK
]
运行 mysql_secure_installation。
[ec2-user ~]$ sudo mysql_secure_installation
a.
3.
在系统提示时,输入 root 账户的密码。
i.
输入当前 root 密码。默认情况下,root 账户没有设置密码,因此按 Enter。
ii.
键入 Y 设置密码,然后输入两次安全密码。有关创建安全密码的更多信息,请转至 http://
www.pctools.com/guides/password/。确保将此密码存储在安全位置。
b.
c.
键入 Y 删除匿名用户账户。
键入 Y 禁用远程 root 登录。
d.
e.
键入 Y 删除测试数据库。
键入 Y 重新加载权限表并保存您的更改。
(可选)如果不打算立即使用 MySQL 服务器,请停止。您可以在需要时再次重新启动该服务器。
[ec2-user ~]$ sudo service mysqld stop
Stopping mysqld:
4.
[
OK
]
(可选)如果您希望每次启动时 MySQL 服务器都启动,请输入以下命令。
[ec2-user ~]$ sudo chkconfig mysqld on
现在,您应该有了一个功能完善的 LAMP Web 服务器。如果您将内容添加到位于 /var/www/html 的
Apache 文档根目录,您应该能够在实例的公有 DNS 地址处看到这些内容。
(可选)安装 phpMyAdmin
phpMyAdmin 是一种基于 Web 的数据库管理工具,可用于在 EC2 实例上查看和编辑 MySQL 数据库。按
照以下步骤操作可在您的 Amazon Linux 实例上安装和配置 phpMyAdmin。
1.
在您的实例上从 Fedora 项目启用 Extra Packages for Enterprise Linux (EPEL) 存储库。
38
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
[ec2-user ~]$ sudo yum-config-manager --enable epel
2.
安装 phpMyAdmin 软件包。
[ec2-user ~]$ sudo yum install -y phpMyAdmin
Note
在系统提示时,回答 y 以导入 EPEL 存储库的 GPG 密钥。
3.
将您的 phpMyAdmin 安装配置为允许从本地计算机进行访问。默认情况下,phpMyAdmin 仅允许从
其运行于的服务器进行访问,这不是很有用,因为 Amazon Linux 不包括 Web 浏览器。
a.
b.
通过访问服务(例如 whatismyip.com)查找您的本地 IP 地址。
编辑 /etc/httpd/conf.d/phpMyAdmin.conf 文件并使用以下命令将服务器 IP 地址 (127.0.0.1)
替换为您的本地 IP 地址,并将 your_ip_address 替换为您在上一步中标识的本地 IP 地址。
[ec2-user ~]$ sudo sed -i -e 's/127.0.0.1/your_ip_address/g' /etc/ht
tpd/conf.d/phpMyAdmin.conf
4.
重启 Apache Web 服务器,让新配置生效。
[ec2-user ~]$ sudo service httpd restart
Stopping httpd:
Starting httpd:
5.
[
[
OK
OK
]
]
在 Web 浏览器中,输入 phpMyAdmin 安装的 URL。此 URL 是实例的公用 DNS 地址,后接正斜杠
和 phpmyadmin。例如:
http://my.public.dns.amazonaws.com/phpmyadmin
您应该可以看到 phpMyAdmin 登录页面。
39
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:安装 LAMP Web 服务器(在 Amazon Linux 上)
Note
如果您收到 403 Forbidden 错误,请验证您是否在
/etc/httpd/conf.d/phpMyAdmin.conf 文件中设置了正确的 IP 地址。您可以使用以下
命令查看 Apache 访问日志,以了解 Apache 服务器实际从哪个 IP 地址获取请求:
40
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:托管 WordPress 博客
[ec2-user ~]$ sudo tail -n 1 /var/log/httpd/access_log | awk '{ print
$1 }'
205.251.233.48
重复Step 3.b (p. 39),使用此处返回的地址替换您以前输入的错误地址;例如:
[ec2-user ~]$ sudo sed -i -e 's/previous_ip_address/205.251.233.48/g'
/etc/httpd/conf.d/phpMyAdmin.conf
替换 IP 地址后,请使用Step 4 (p. 39) 重新启动 httpd 服务。
6.
使用您先前创建的 root 用户名和 MySQL 根密码登录到 phpMyAdmin 安装。有关使用 phpMyAdmin
的更多信息和帮助,请参阅 phpMyAdmin 用户指南。
相关主题
有关将文件传输到您的实例或在 Web 服务器上安装 WordPress 博客的更多信息,请参阅以下主题:
• 使用 WinSCP 将文件传输到您的 Linux 实例 (p. 247)
• 使用 SCP 将文件从 Linux 传输到 Linux 实例 (p. 241)
• 教程:使用 Amazon Linux 托管 WordPress 博客 (p. 41)
有关本主题中使用的命令和软件的更多信息,请转至以下网页:
•
•
•
•
Apache Web 服务器:http://httpd.apache.org/
MySQL 数据库服务器:http://www.mysql.com/
PHP 编程语言:http://php.net/
chmod 命令:https://en.wikipedia.org/wiki/Chmod
• chown 命令:https://en.wikipedia.org/wiki/Chown
如果您想注册 Web 服务器的域名或将现有域名转移到此主机,请参阅 Amazon Route 53 开发人员指南
中的创建域和子域并将其迁移到 Amazon Route 53。
教程:使用 Amazon Linux 托管 WordPress 博客
Abstract
教程 - 在 Amazon Linux 实例上安装、配置和保护 WordPress 博客。
以下步骤将帮助您在 Amazon Linux 实例上安装、配置和保护 WordPress 博客。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。本教程中
的很多步骤对 Ubuntu 实例并不适用。有关在 Ubuntu 实例上安装 WordPress 的帮助,请参阅
Ubuntu 文档中的 WordPress。
41
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
先决条件
本教程假定您已按照教程:安装 LAMP Web 服务器(在 Amazon Linux 上) (p. 33)中的所有步骤,通过
支持 PHP 和 MySQL 的功能性 Web 服务器启动了 Amazon Linux 实例。本教程还介绍了配置安全组以允
许 HTTP 和 HTTPS 流量的步骤,以及用于确保为 Web 服务器正确设置文件权限的几个步骤。如果您尚未
完成这些步骤,请参阅教程:安装 LAMP Web 服务器(在 Amazon Linux 上) (p. 33)以满足这些先决条
件,然后回到本教程安装 WordPress。有关添加规则到您安全组的信息,请参阅 向安全组添加规则 (p. 461)。
强烈建议您将弹性 IP 地址 (EIP) 与您正用于托管 WordPress 博客的实例关联。这将防止您的实例的公有
DNS 地址更改和中断您的安装。如果您有一个域名且打算将其用于您的博客,则可更新该域名的 DNS 记
录,使其指向您的 EIP 地址(如需帮助,请联系您的域名注册商)。您可以免费将一个 EIP 地址与正在
运行的实例相关联。有关更多信息,请参阅 弹性 IP 地址 (p. 548)。
如果您的博客还没有域名,则可使用 Amazon Route 53 注册一个域名并将您的实例的 EIP 地址与您的域
名相关联。有关更多信息,请参阅 Amazon Route 53 开发人员指南 中的使用 Amazon Route 53 注册域
名。
安装 WordPress
本教程是很好的 Amazon EC2 入门教程,因为您可以完全控制托管您 WordPress 博客的 Web 服务器,
这对传统的托管服务来说并不是一个典型的方案。当然,这意味着您要负责更新软件包以及为您的服务器
维护安全补丁。对于不需要与 Web 服务器配置直接交互的更自动化 WordPress 安装来说,AWS
CloudFormation 服务还会提供可让您快速入门的 WordPress 模板。有关更多信息,请参见 AWS
CloudFormation 用户指南 中的入门。如果您更喜欢将您的 WordPress 博客托管在 Windows 实例上,请
参阅 Amazon EC2 用户指南(适用于 Microsoft Windows 实例) 中的在您的 Amazon EC2 Windows 实
例上部署 WordPress 博客。
下载并解压 WordPress 安装包
1.
使用 wget 命令下载最新 WordPress 安装包。以下命令始终会下载最新版本。
[ec2-user ~]$ wget https://wordpress.org/latest.tar.gz
--2013-08-09 17:19:01-- https://wordpress.org/latest.tar.gz
Resolving wordpress.org (wordpress.org)... 66.155.40.249, 66.155.40.250
Connecting to wordpress.org (wordpress.org)|66.155.40.249|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4028740 (3.8M) [application/x-gzip]
Saving to: latest.tar.gz
100%[======================================>] 4,028,740
20.1MB/s
in 0.2s
2013-08-09 17:19:02 (20.1 MB/s) - latest.tar.gz saved [4028740/4028740]
2.
解压并解档安装包。将安装文件夹解压到名为 wordpress 的文件夹。
[ec2-user ~]$ tar -xzf latest.tar.gz
[ec2-user ~]$ ls
latest.tar.gz wordpress
创建 MySQL 用户和数据库以安装 WordPress
安装 WordPress 需要存储信息,例如数据库中的博客文章和用户评论。此步骤将帮助您为自己的博客创
建一个数据库,并创建一个有权读取该数据库的信息并将信息保存到该数据库的用户。
42
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
1.
启动 MySQL 服务器。
[ec2-user ~]$ sudo service mysqld start
2.
以 root 用户身份登录到 MySQL 服务器。在系统提示时输入您的 MySQL root 密码,这可能与您
的 root 系统密码不同,如果您尚未给您的 MySQL 服务器加密,它甚至可能是空的。
Important
如果您尚未给您的 MySQL 服务器加密,则必须执行这项操作。有关更多信息,请参阅 保障
MySQL 服务器的安全 (p. 37)。
[ec2-user ~]$ mysql -u root -p
Enter password:
3.
为您的 MySQL 数据库创建用户和密码。安装 WordPress 的过程将使用这些值与您的 MySQL 数据
库通信。输入以下命令,以替换唯一的用户名和密码。
mysql> CREATE USER 'wordpress-user'@'localhost' IDENTIFIED BY
'your_strong_password';
Query OK, 0 rows affected (0.00 sec)
4.
确保为您的用户创建强密码。请勿在您的密码中使用单引号字符 ('),因为这将中断前面的命令。有关
创建安全密码的更多信息,请转至 http://www.pctools.com/guides/password/。请勿重复使用现有密
码,并确保将密码保存在安全的位置。
创建数据库。为数据库提供一个有意义的描述性名称,例如 wordpress-db。
Note
以下命令中数据库名称两边的标点符号称为反引号。在标准键盘上,反引号 (`) 键通常位于
Tab 键的上方。并不总是需要反引号,但是它们允许您在数据库名称中使用其他的非法字
符,例如连字符。
mysql> CREATE DATABASE `wordpress-db`;
Query OK, 1 row affected (0.01 sec)
5.
对您之前创建的 WordPress 用户授予您数据库的完全访问权限。
mysql> GRANT ALL PRIVILEGES ON `wordpress-db`.* TO "wordpress-user"@"local
host";
Query OK, 0 rows affected (0.00 sec)
6.
刷新 MySQL 权限以接受您的所有更改。
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
7.
退出 mysql 客户端。
43
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
mysql> exit
Bye
创建和编辑 wp-config.php 文件
WordPress 安装文件夹包含名为 wp-config-sample.php 的示例配置文件。在本步骤中,您将复制此
文件并进行编辑以适合您的具体配置。
1.
将 wp-config-sample.php 文件复制到名为 wp-config.php 的文件。这样做会创建新的配置文
件并将原先的示例配置文件原样保留作为备份。
[ec2-user ~]$ cd wordpress/
[ec2-user wordpress]$ cp wp-config-sample.php wp-config.php
2.
使用常用文本编辑器(如 nano 或 vim)来编辑 wp-config.php 文件,然后输入安装的值。如果您
没有喜欢的文本编辑器,nano 对于初学者来说比较容易使用。
[ec2-user wordpress]$ nano wp-config.php
a.
查找定义 DB_NAME 的行并将 database_name_here 更改为您在 创建 MySQL 用户和数据库以
安装 WordPress (p. 42) 的 Step 4 (p. 43) 中创建的数据库名称。
define('DB_NAME', 'wordpress-db');
b.
查找定义 DB_USER 的行并将 username_here 更改为您在 创建 MySQL 用户和数据库以安装
WordPress (p. 42) 的 Step 3 (p. 43) 中创建的数据库用户。
define('DB_USER', 'wordpress-user');
c.
查找定义 DB_PASSWORD 的行并将 password_here 更改为您在 创建 MySQL 用户和数据库以
安装 WordPress (p. 42) 的 Step 3 (p. 43) 中创建的强密码。
define('DB_PASSWORD', 'your_strong_password');
d.
查找名为 Authentication Unique Keys and Salts 的一节。这些 KEY 和 SALT 值为
WordPress 用户存储在其本地计算机上的浏览器 Cookie 提供了加密层。总而言之,添加长的随
机值将使您的站点更安全。访问 https://api.wordpress.org/secret-key/1.1/salt/ 随机生成一组密
钥值,您可以将这些密钥值复制并粘贴到 wp-config.php 文件中。要粘贴文本到 PuTTY 终
端,请将光标放在您要粘贴文本的地方,并在 PuTTY 终端内部右键单击鼠标。
有关安全密钥的更多信息,请转至 http://codex.wordpress.org/
Editing_wp-config.php#Security_Keys。
Note
以下值仅用作示例;请勿使用以下值进行安装。
define('AUTH_KEY',
' #U$$+[RXN8:b^-L 0(WU_+ c+WFkI~c]o]bHw+)/Aj[wTwSiZ<Qb[mghEXcRh-');
44
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
define('SECURE_AUTH_KEY', 'Zsz._P=l/|y.Lq)XjlkwS1y5NJ76E6EJ.AV0pCK
ZZB,*~*r [email protected];+(ndLg');
define('LOGGED_IN_KEY',
'ju}qwre3V*+8f_zOWf?{LlGsQ][email protected]^,8x>)Y
|;(^[Iw]Pi+LG#A4R?7N`YB3');
define('NONCE_KEY',
'P(g62HeZxEes|LnI^i=H,[XwK9I&[2s|:?0N}VJM%?;v2v]v+;+^[email protected]::Cj');
define('AUTH_SALT',
'C$DpB4Hj[JK:?{ql`sRVa:{:7yShy([email protected]+`JJVb1fk%_-Bx*M4(qc[Qg%JT!h');
define('SECURE_AUTH_SALT',
'd!uRu#}+q#{f$Z?Z9uFPG.${+S{n~1M&%@~gL>U>NV<[email protected]');
define('LOGGED_IN_SALT',
';j{00P*owZf)kVD+FVLn-~
>.|Y%Ug4#I^*LVd9QeZ^&XmK|e(76miC+&W&+^0P/');
define('NONCE_SALT',
'-97r*V/cgxLmp?Zy4zUU4r99QQ_rGs2LTd%P;|_e1tS)8_B/,.6[=UK<J_y9?JWG');
e.
保存文件并退出您的文本编辑器。
移动 WordPress 安装至 Apache 文档根目录
现在,您已解压了安装文件夹、创建了 MySQL 数据库与用户并自定义了 WordPress 配置文件,那么也
就准备好移动您的安装文件至 Web 服务器文档根目录,以便可以运行安装脚本完成安装。这些文件的位
置取决于您是希望 WordPress 博客位于 Web 服务器的根目录(例如,
my.public.dns.amazonaws.com)还是位于某个子目录或文件夹(例如,
my.public.dns.amazonaws.com/blog)中。
•
选择要在其中提供博客的位置,仅运行与该位置关联的 mv。
Important
如果同时运行以下两组命令,则在运行第二个 mv 命令时,您会收到一条错误消息,因为您
尝试移动的文件已不存在。
•
要在 my.public.dns.amazonaws.com 中提供博客,请将 wordpress 文件夹中的文件(而
不是该文件夹本身)移动到 Apache 文档根目录中(Amazon Linux 实例上的 /var/www/html)。
[ec2-user wordpress]$ mv * /var/www/html/
•
或者,要在 my.public.dns.amazonaws.com/blog 提供博客,请在 Apache 文档根目录中
创建名为 blog 的新文件夹,然后将 wordpress 文件夹中的文件(而不是该文件夹本身)移到
新的 blog 文件夹中。
[ec2-user wordpress]$ mkdir /var/www/html/blog
[ec2-user wordpress]$ mv * /var/www/html/blog
Important
出于安全原因,如果您不打算立即进入到下一个过程,请立即停止 Apache Web 服务器 (httpd)。
将安装文件移动到 Apache 文档根目录后,WordPress 安装脚本将不受保护,如果 Apache Web
服务器运行,攻击者可能会获得访问您博客的权限。要停止 Apache Web 服务器,请输入命令
sudo service httpd stop。如果您即将继续到下一个步骤,则不需要终止 Apache Web 服务器。
45
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
允许 WordPress 使用 permalink
WordPress permalink 需要使用 Apache .htaccess 文件才能正常工作,但默认情况下这些文件在 Amazon
Linux 上处于禁用状态。使用此过程可允许 Apache 文档根目录中的所有覆盖。
1.
使用您常用的文本编辑器(如 nano 或 vim)打开 httpd.conf 文件。如果您没有喜欢的文本编辑
器,nano 对于初学者来说比较容易使用。
[ec2-user wordpress]$ sudo vim /etc/httpd/conf/httpd.conf
2.
找到以 <Directory "/var/www/html"> 开头的部分。
<Directory "/var/www/html">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
#
Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI Mul
tiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess
files.
# It can be "All", "None", or any combination of the keywords:
#
Options FileInfo AuthConfig Limit
#
AllowOverride None
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
3.
在以上部分中将 AllowOverride None 行改为读取 AllowOverride All。
Note
此文件中有多个 AllowOverride 行;请确保更改 <Directory "/var/www/html"> 部
分中的行。
AllowOverride All
4.
保存文件并退出您的文本编辑器。
46
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
修复 Apache Web 服务器的文件权限
WordPress 中的某些可用功能要求具有对 Apache 文档根目录的写入权限 (例如通过“Administration (管
理)”屏幕上传媒体)。Web 服务器以 apache 用户身份运行,因此,您需要将该用户添加至在 wwwLAMP
Web 服务器教程中创建的 (p. 33) 组。
1.
将 apache 用户添加到 www 组。
[ec2-user wordpress]$ sudo usermod -a -G www apache
2.
将 /var/www 及其内容的文件所有权更改到 apache 用户。
[ec2-user wordpress]$ sudo chown -R apache /var/www
3.
将 /var/ 及其内容的组所有权更改到 wwwwww 组。
[ec2-user wordpress]$ sudo chgrp -R www /var/www
4.
更改 /var/www 及其子目录的目录权限,以添加组写入权限和设置未来子目录上的组 ID。
[ec2-user wordpress]$ sudo chmod 2775 /var/www
[ec2-user wordpress]$ find /var/www -type d -exec sudo chmod 2775 {} \;
5.
递归更改 /var/www 及其子目录的文件权限,以添加组写入权限。
[ec2-user wordpress]$ find /var/www -type f -exec sudo chmod 0664 {} \;
6.
重启 Apache Web 服务器,让新组和权限生效。
[ec2-user wordpress]$ sudo service httpd restart
Stopping httpd:
Starting httpd:
运行 WordPress 安装脚本
1.
使用 chkconfig 命令确保 httpd 和 mysqld 服务在每次系统启动时启动。
[ec2-user wordpress]$ sudo chkconfig httpd on
[ec2-user wordpress]$ sudo chkconfig mysqld on
2.
验证 MySQL 服务器 (mysqld) 正在运行。
[ec2-user wordpress]$ sudo service mysqld status
mysqld (pid 4746) is running...
如果 mysqld 服务未运行,请启动。
47
[
[
OK
OK
]
]
Amazon Elastic Compute Cloud Linux 实例用户指南
安装 WordPress
[ec2-user wordpress]$ sudo service mysqld start
Starting mysqld:
3.
[
OK
]
[
OK
]
验证您的 Apache Web 服务器 (httpd) 正在运行。
[ec2-user wordpress]$ sudo service httpd status
httpd (pid 502) is running...
如果 httpd 服务未运行,请启动。
[ec2-user wordpress]$ sudo service httpd start
Starting httpd:
4.
在 Web 浏览器中,输入您 WordPress 博客的 URL(您实例的公有 DNS 地址,或者该地址后跟 blog
文件夹)。您应该可以看到 WordPress 安装屏幕。
http://my.public.dns.amazonaws.com
5.
将其余安装信息输入 WordPress 安装向导。
字段
值
Site Title (网站标题)
为您的 WordPress 网站输入名称。
Username
为您的 WordPress 管理员输入名称。出于安全
原因,您应为此用户选择一个唯一名称,因为与
默认用户名称 admin 相比,该名称更难破解。
48
Amazon Elastic Compute Cloud Linux 实例用户指南
后续步骤
6.
字段
值
密码
输入强密码,然后再次输入进行确认。请勿重复
使用现有密码,并确保将密码保存在安全的位
置。
Your E-mail (您的电子邮件)
输入您用于接收通知的电子邮件地址。
单击 Install WordPress (安装 WordPress) 完成安装。
恭喜您,您现在应该可以登录您的 WordPress 博客并开始发布博客文章。
后续步骤
在测试初始 WordPress 博客后,请考虑更新其配置。
使用自定义域名
如果您有一个与您的 EC2 实例的 EIP 地址关联的域名,则可将您的博客配置为使用该域名而不是 EC2
公有 DNS 地址。有关更多信息,请参阅 http://codex.wordpress.org/Changing_The_Site_URL。
配置您的博客
您可以将您的博客配置为使用不同的主题和插件,从而向您的读者提供更具个性化的体验。但是,有时安
装过程可能事与愿违,从而导致您丢失您的整个博客。强烈建议您在尝试安装任何主题或插件之前,为您
的实例创建一个备份 Amazon 系统映像 (AMI),以便在安装过程中出现任何问题时,您还可以还原您的博
客。有关更多信息,请参阅 创建您自己的 AMI (p. 63)。
添加容量
如果您的 WordPress 博客变得受关注并且您需要更多计算能力或存储,请考虑以下步骤:
•
•
•
•
对实例扩展存储空间。有关更多信息,请参阅 在 Linux 上扩展 EBS 卷的存储空间 (p. 610)。
将您的 MySQL 数据库移动到 Amazon RDS 以利用服务的自动扩展功能。
迁移到更大的实例类型。有关更多信息,请参阅 调整您的实例大小 (p. 146)。
添加额外实例。有关更多信息,请参阅 教程:提高应用程序在 Amazon EC2 上的可用性 (p. 58)。
了解有关 WordPress 的更多信息
有关 WordPress 的信息,请参阅 http://codex.wordpress.org/ 上的 WordPress Codex 帮助文档。有关排
除安装故障的更多信息,请转至 http://codex.wordpress.org/
Installing_WordPress#Common_Installation_Problems。有关如何使您的 WordPress 博客更安全的信息,
请转至 http://codex.wordpress.org/Hardening_WordPress。有关如何让您的 WordPress 博客保持最新的
信息,请转至 http://codex.wordpress.org/Updating_WordPress。
帮助! 我的公有 DNS 名称发生更改导致我的博客瘫痪
已使用您的 EC2 实例的公有 DNS 地址自动配置您的 WordPress 安装。如果您停止并重启实例,公有
DNS 地址将发生更改(除非它与弹性 IP 地址相关联),并且您的博客将不会再运行,因为您的博客引用
了不再存在的地址(或已分配给另一个 EC2 实例的地址)上的资源。http://codex.wordpress.org/
Changing_The_Site_URL 中概括了有关该问题的更多详细和几个可能的解决方案。
如果您的 WordPress 安装发生了此问题,您可以使用以下过程恢复您的博客,该过程使用了适用于
WordPress 的 wp-cli 命令行界面。
49
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:将 Amazon Linux 上的 Apache Web 服务器配置为使
用 SSL/TLS
使用 wp-cli 更改您的 WordPress 站点 URL
1.
使用 SSH 连接到您的 EC2 实例。
2.
请记下您的实例的旧站点 URL 和新站点 URL。安装了 WordPress 之后,旧站点 URL 可能是您的
EC2 实例的公有 DNS 名称。新站点 URL 是您的 EC2 实例的当前公有 DNS 名称。如果您不确定您
的旧站点 URL,则可通过以下命令使用 curl 来查找它。
[ec2-user ~]$ curl localhost | grep wp-content
您应该会在输出中看到对您的旧公有 DNS 名称的引用,如下所示(旧站点 URL 用红色表示):
<script type='text/javascript' src='http://ec2-52-8-139-223.us-west-1.com
pute.amazonaws.com/wp-content/themes/twentyfifteen/js/func
tions.js?ver=20150330'></script>
3.
使用以下命令下载 wp-cli。
[ec2-user ~]$ curl -O https://raw.githubusercontent.com/wp-cli/builds/ghpages/phar/wp-cli.phar
4.
使用以下命令在 WordPress 安装中搜索并替换旧站点 URL。替换您的 EC2 实例的旧站点 URL 和新
站点 URL 和到您的 WordPress 安装的路径(通常为 /var/www/html 或 /var/www/html/blog)。
[ec2-user ~]$ php wp-cli.phar search-replace 'old_site_url' 'new_site_url'
--path=/path/to/wordpress/installation --skip-columns=guid
5.
在 Web 浏览器中,输入您的 WordPress 博客的新站点 URL 以验证站点是否再次正常运行。如果未
正常运行,有关更多信息,请参阅 http://codex.wordpress.org/Changing_The_Site_URL 和 http://
codex.wordpress.org/Installing_WordPress#Common_Installation_Problems。
教程:将 Amazon Linux 上的 Apache Web 服务器
配置为使用 SSL/TLS
Abstract
在一个运行 Amazon Linux 和 Apache Web 服务器的 EC2 实例上安装和配置 SSL/TLS。
安全套接字层/传输层安全性 (SSL/TLS) 可在 Web 服务器和 Web 客户端之间创建一个加密通道,以防止
数据在传输过程中被窃听。本指南介绍了如何增加对运行 Apache Web 服务器的单个 Amazon Linux 实
例上的 SSL/TLS 的支持。
Note
由于历史原因,Web 加密通常简称为 SSL。虽然 Web 浏览器仍支持 SSL,但其后继者协议 TLS
被视为不易受攻击。默认情况下,Amazon Linux 将禁用 SSL 版本 2,本教程还建议禁用 SSL 版
本 3,如下所述。有关建议的更新后加密标准的更多信息,请转至 RFC7568。
50
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
Important
这些过程适用于 Amazon Linux。如果您尝试在其他分配的实例上设置 LAMP Web 服务器,则本
教程不适合您。有关 Ubuntu 上的 LAMP Web 服务器的信息,请转到 Ubuntu 社区文档
ApacheMySQLPHP 主题。有关 Red Hat Enterprise Linux 的信息,请转至客户门户网站主题
Web 服务器。
主题
• 先决条件 (p. 51)
• 步骤 1:在服务器上启用 SSL/TLS (p. 51)
• 步骤 2:获取 CA 签名的证书 (p. 52)
• 步骤 3:测试和强化安全配置 (p. 55)
• 故障排除 (p. 57)
先决条件
在开始本教程之前,请完成以下步骤:
• 启动 Amazon Linux 实例。有关更多信息,请参阅 步骤 1:启动实例 (p. 27)。
• 将安全组配置为允许 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)连接。有关更多信息,
请参阅 Amazon EC2 的设置 (p. 19)。
• 安装 Apache Web 服务器。有关分步说明,请参阅教程:在 Amazon Linux 上安装 LAMP Web 服务
器 (p. 33)。仅需要 http24 包及其依赖项;可以忽略涉及 PHP 和 MySQL 的说明。
• SSL/TLS 公钥基础设施 (PKI) 依赖域名系统 (DNS) 来识别和验证网站。如果您计划使用 EC2 实例来托
管公共网站,您需要为 Web 服务器注册域名或将现有域名传输给您的 Amazon EC2 主机。可通过许多
第三方域注册和 DNS 托管服务来执行此操作,也可以使用 Amazon Route 53 执行此操作。
步骤 1:在服务器上启用 SSL/TLS
此过程将指导您完成在 Amazon Linux 上使用自签名的数字证书设置 SSL/TLS 的流程。
在服务器上启用 SSL/TLS
1.
连接到您的实例 (p. 28)并确认 Apache 正在运行。
[ec2-user ~]$ sudo service httpd status
如有必要,启动 Apache。
[ec2-user ~]$ sudo service httpd start
2.
为确保您的所有软件包都处于最新状态,请对您的实例执行快速软件更新。此过程可能需要几分钟的
时间,但必须确保您拥有最新的安全更新和缺陷修复。
Note
-y 选项安装更新时不提示确认。如果您希望在安装前检查更新,则可以忽略此选项。
[ec2-user ~]$ sudo yum update -y
51
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 2:获取 CA 签名的证书
3.
您的实例现在处于最新状态,可通过安装 Apache 模块 mod_ssl 来添加 SSL/TLS 支持:
[ec2-user ~]$ sudo yum install -y mod24_ssl
在本教程的后面,您将使用已安装的三个重要文件:
• /etc/httpd/conf.d/ssl.conf
mod_ssl 的配置文件。它包含告知 Apache 以下信息的“指令”:在何处查找加密密钥和证书、允许
哪些 SSL/TLS 协议、要使用哪种加密算法。
• /etc/pki/tls/private/localhost.key
针对 Amazon EC2 主机的自动生成的 2048 位 RSA 私有密钥。安装期间,OpenSSL 已使用此密
钥生成自签名主机证书,您稍后也可使用此密钥生成证书签名请求 (CSR) 以提交给证书颁发机构
(CA)。
• /etc/pki/tls/certs/localhost.crt
针对服务器主机的自动生成的自签名 X.509 证书。此证书对于测试是否已将 Apache 正确设置为使
用 SSL/TLS 来说很有用。
4.
重启 Apache。
[ec2-user ~]$ sudo service httpd restart
5.
现在,您的 Apache Web 服务器应通过端口 443 支持 HTTPS(安全 HTTP)。通过将您的 EC2 实
例的 IP 地址或完全限定域名与前缀 https:// 一起键入浏览器 URL 栏中来对其进行测试。由于您
正在使用自签名的不可信证书连接到站点,因此您的浏览器可能会显示一系列警告。
忽视这些警告并继续连接站点。如果默认 Apache 欢迎页面打开,则意味着您已在服务器上成功配置
SSL/TLS。现在,浏览器和服务器之间传递的所有数据均已进行安全加密,这可通过浏览器的 URL
栏中的锁定图标反映出来。
为了防止站点访问者遇到警告屏幕,您需要获取一个证书,该证书不仅用于加密,而且还用于公开验
证您的站点所有者身份。
步骤 2:获取 CA 签名的证书
本部分介绍了以下流程:从私有密钥生成证书签名请求 (CSR)、将 CSR 提交给证书颁发机构 (CA)、获取
签名证书并配置 Apache 以使用该证书。
从加密上来说,自签名 SSL/TLS X.509 证书与 CA 签名的证书相同。二者之间的区别在于社交层面,而
非数学层面;CA 承诺,在向申请者颁发证书之前,至少验证域的所有权。每个 Web 浏览器均包含一个
CA 的列表,浏览器供应商信任这些 CA 来执行此操作。X.509 证书主要包含一个与您的私有服务器密钥
对应的公有密钥和一个以加密方式与该公有密钥关联的 CA 的签名。当浏览器通过 HTTPS 连接到 Web
服务器时,服务器将提供证书以便浏览器检查其可信 CA 的列表。如果签署人位于列表上,或可通过一系
列其他的可信签署人访问,则浏览器将与服务器协商一个快速加密数据通道并加载页面。
由于验证请求需要投入人力,证书通常会产生费用,因此应货比三家。在 dmoz.org 上可找到知名 CA 的
列表。一些 CA(例如 StartCom)免费提供基础级别(“1 级”)证书。
密钥是证书的基础。自 2013 年起,政府和行业团体建议对 RSA 密钥使用最小密钥(系数)大小 2048
位。OpenSSL 在 Amazon Linux 中生成的默认系数大小为 2048 位,意味着现有的自动生成的密钥适用
于 CA 签名的证书。下面介绍了适合需要自定义密钥的人员的替代过程,例如,具有较大系数或使用不同
加密方法的过程。
52
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 2:获取 CA 签名的证书
获取 CA 签名的证书
1.
连接到您的实例 (p. 28)并导航到 /etc/pki/tls/private/。这是存储适用于 SSL/TLS 的服务器私有密钥的
目录。如果您希望使用现有主机密钥来生成 CSR,请跳至步骤 3。
2.
(可选)生成新的私有密钥。下面是一些示例密钥配置。任何生成的密钥都将用于 Web 服务器,但
它们实施安全的方式和程度有所不同。
1. 以下命令可作为起点,用来创建与实例上默认主机密钥类似的 RSA 密钥:
[ec2-user ~]$ sudo openssl genrsa -out custom.key 2048
生成的文件 custom.key 是一个 2048 位 RSA 私有密钥。
2. 要创建系数更大的更严格的 RSA 密钥,请使用以下命令:
[ec2-user ~]$ sudo openssl genrsa -out custom.key 4096
生成的文件 custom.key 是一个 4096 位 RSA 私有密钥。
3. 要创建具有密码保护的 4096 位加密的 RSA 密钥,请使用以下命令:
[ec2-user ~]$ sudo openssl genrsa -aes128 -passout pass:abcde12345 -out
custom.key 4096
这将生成一个已使用 AES-128 密码加密的 4096 位 RSA 私有密钥。
Important
加密可增强安全性,但由于加密的密钥需要密码,因此依赖于加密密钥的服务无法自动启
动。每当您使用此密钥时,都需要通过 SSH 连接提供密码“abcde12345”。
4. RSA 密码术可能相对较慢,因为其安全性依赖于对两个较大质数的乘积进行因子分解的难度。不
过,可以为 SSL/TLS 创建使用非 RSA 密码的密钥。在交付同等级别的安全性时,基于椭圆曲线
的数学运算的密钥更小更快。示例如下:
[ec2-user ~]$ sudo openssl ecparam -name prime256v1 -out custom.key -genkey
此示例中的输出为一个使用 prime256v1(OpenSSL 支持的“命名曲线”)的 256 位椭圆曲线私有
密钥。根据 NIST,其加密强度略高于 2048 位 RSA 密钥。
Note
并非所有 CA 对基于椭圆曲线的密钥的支持级别与对 RSA 密钥的支持级别相同。
请确保新的私有密钥具有高度限制的权限(所有者根权限、组根权限、仅面向所有者的读取/写入权
限)。命令如下:
[ec2-user ~]$ sudo chown root.root custom.key
[ec2-user ~]$ sudo chmod 600 custom.key
[ec2-user ~]$ ls -al custom.key
上述命令应生成以下结果:
53
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 2:获取 CA 签名的证书
-rw------- root root custom.key
3.
在创建并配置满意的密钥后,可以创建 CSR。
使用您首选的密钥创建 CSR;下面的示例将使用 private.key:
[ec2-user ~]$ sudo openssl req -new -key private.key -out csr.pem
OpenSSL 将打开一个对话框,并提示您输入下表中显示的信息。对于基本的经域验证的证书来说,
除 Common Name 以外的所有字段都是可选字段。
名称
说明
示例
国家/地区名称
代表国家/地区的两个字母 ISO 缩写。
US(=美国)
州或省名称
组织所在州或省的名称。此名称不可使用缩写。
Washington
所在地名称
您的组织所在的位置,例如城市。
Seattle
组织名称
组织的法定全称。请勿缩写组织名称。
Example Corp
组织部门名称
额外的组织信息(如果有)。
示例部门
公用名
此值必须与您希望用户键入浏览器中的 Web 地址完 www.example.com
全匹配。通常,这表示以主机名称为前缀的域名或采
用 www.example.com 格式的别名。在使用自签名
证书且无 DNS 解析的测试中,公用名可能只包含主
机名。CA 还提供费用更高的证书,这些证书接受通
配符名称(例如 *.example.com)。
电子邮件地址
服务器管理员的电子邮件地址.
[email protected]
最后,OpenSSL 将提示您输入可选的质询密码。此密码仅适用于 CSR 和您与 CA 之间的事务,因
此请遵循 CA 提供的有关此密码以及其他可选字段、可选公司名的建议。CSR 质询密码不会影响服
务器操作。
生成的文件 csr.pem 包含您的公有密钥、您的公有密钥的数字签名以及您输入的元数据。
4.
5.
将 CSR 提交给 CA。这通常包括在文本编辑器中打开 CSR 文件并将内容复制到 Web 表格中。此时,
您可能需要提供一个或多个主题备用名称 (SAN) 以放置到证书上。如果 www.example.com 是公用
名,则 example.com 将是一个很好的 SAN,反之亦然。键入列出的任一名称的用户将看到一个无
误连接。如果您的 CA Web 表格允许该连接,请在 SAN 列表中包含公用名。(一些 CA 会自动包含
公用名。)
在您的请求获得批准后,您将收到一个由 CA 签署的新主机证书。此外,系统可能会指示您下载中间
证书文件,该文件包含完成 CA 的信任链所需的其他证书。
从 /etc/pki/tls/certs 目录删除旧的自签名主机证书 localhost.crt 并将新的 CA 签署的证书(以及
任何中间证书)放置到该目录中。
从 /etc/pki/tls/certs 目录内部,检查文件所有权、组和权限设置是否与高度限制的 Amazon Linux 默
认权限(所有者根权限、组根权限、仅面向所有者的读取/写入权限)匹配。命令如下:
[ec2-user certs]$ sudo chown root.root custom.crt
[ec2-user certs]$ sudo chmod 600 custom.crt
[ec2-user certs]$ ls -al custom.crt
54
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 3:测试和强化安全配置
上述命令应生成以下结果:
-rw------- root root custom.crt
中间证书文件的权限并不严格(所有者根权限、组根权限、所有者可写权限、任何人可读权限)。命
令如下:
[ec2-user certs]$ sudo chown root.root intermediate.crt
[ec2-user certs]$ sudo chmod 644 intermediate.crt
[ec2-user certs]$ ls -al intermediate.crt
上述命令应生成以下结果:
-rw-r--r-- root root intermediate.crt
6.
新的 CA 签署的证书的文件名(此示例中为 custom.crt)可能与旧证书的不同。使用 Apache 的
SSLCertificateFile 指令编辑 /etc/httpd/conf.d/ssl.conf 并提供正确的路径和文件名。
SSLCertificateFile /etc/pki/tls/certs/custom.crt
如果您收到一个中间证书文件(此示例中为 intermediate.crt),请使用 Apache 的
SSLCertificateChainFile 指令提供其路径和文件名。
SSLCertificateChainFile /etc/pki/tls/certs/intermediate.crt
7.
保存 /etc/httpd/conf.d/ssl.conf 并重启 Apache。
[ec2-user ~]$ sudo service httpd restart
步骤 3:测试和强化安全配置
在 SSL/TLS 可操作且公开发布后,应测试其实际安全性。使用在线服务(例如 Qualys SSL Labs,该服
务可对您的安全设置执行免费的全面分析)可轻松执行此操作。根据结果,您可以决定通过控制接受的协
议、首选的密码和排除的密码来强化默认安全配置。有关更多信息,请参阅 Qualys 如何用公式表示其分
数。
Important
实际测试对服务器的安全性非常重要。少量配置错误可能导致严重的安全漏洞和数据丢失。由于
建议的安全实践会不断变化以响应调查和新兴威胁,因此定期安全审核对于良好的服务器管理来
说是必不可少的。
在 Qualys SSL Labs 站点上,用 www.example.com 格式键入服务器的完全限定域名。约两分钟后,您
将收到您站点的评级(从 A 到 F)和结果的详细信息。下表汇总了具有与 Amazon Linux 上的默认 Apache
配置相同的设置的域的报告:
总评
C
证书
100%
55
Amazon Elastic Compute Cloud Linux 实例用户指南
步骤 3:测试和强化安全配置
协议支持
90%
密钥交换
90%
密码强度
90%
该报告显示,配置通常是合理的,并且对证书、协议支持、密钥交换和密码强度问题的评级可接受。但该
报告还标记了三个漏洞,这些漏洞会导致总体评级降低,应予以修复:
• POODLE 漏洞:2014 年发现的 POODLE 攻击利用了 SSL 版本 3 中允许攻击者假冒网站的弱点。修
复方法很简单:在服务器上禁用 SSL 版本 3 支持。在配置文件 /etc/httpd/conf.d/ssl.conf 中,通过在行
的开头键入“#”来注释掉以下内容:
SSLProtocol all -SSLv2
然后,添加以下指令:
SSLProtocol -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2
除了显式禁用 SSL 版本 2 之外,此命令还禁用 SSL 版本 3(安全审核标记的版本)并显式允许 TLS
的所有当前现有版本。现在,服务器将拒绝接受与使用 TLS 之外的任何协议的客户端进行加密连接。
指令中冗长的文字可更清楚地告知人类读者服务器的作用。
• RC4 密码支持:密码是加密算法的数学核心。众所周知,用于加密 SSL/TLS 数据流的快速密码 RC4
具有多个重大弱点。修复方法是在 ssl.conf 中禁用 RC4 支持,此操作将是下一示例中的修复方法的一
部分。
• 缺少对前向保密性的支持:前向保密性是协议的一种功能,该功能使用派生自私有密钥的临时(暂时)
会话密钥进行加密。这意味着,在实践中,攻击者无法解密 HTTPS 数据,即使他们拥有 Web 服务器
的长期私有密钥。Qualys 的“参考浏览器”列表中的 Web 浏览器都支持前向保密性。
修复 RC4 和前向保密性问题的方法是,自定义 Apache 的允许的密码和禁止的密码的列表,并强制实
施强密码优先于弱密码的策略。这需要更改两个配置。
在配置文件 /etc/httpd/conf.d/ssl.conf 中,找到包含用于配置 SSLCipherSuite 的注释掉示例的部分,
注释掉(但保留)当前列表,并添加以下指令:
Note
此处为方便阅读将指令显示为几行,但整个指令必须在一行上且密码名称之间不能有空格。
SSLCipherSuite ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHERSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:
ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128SHA256:ECDHE-ECDSA-AES128-SHA256:
AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256SHA256:AES:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:
!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA
这些密码是 OpenSSL 中更长的受支持密码列表的子集。根据以下标准选择这些密码并对其进行排序:
1. 对向前保密性的支持
2. 强度
56
Amazon Elastic Compute Cloud Linux 实例用户指南
故障排除
3. 速度
4. 具体密码位于密码系列之前
5. 允许的密码位于拒绝的密码之前
请注意,高级密码的名称中具有 ECDHE(表示 Elliptic Curve Diffie-Hellman Ephemeral);ephemeral
表示向前保密性。此外,RC4 现在位于禁止的密码中的结尾处。
建议您使用密码的明确列表,而不依赖于内容不可见的默认值或简短指令。
Important
此处显示的密码列表只是许多可能的列表之一;例如,您可能希望优化列表以加快速度而不是
向前保密性。
如果您预计需要支持较旧的客户端,则可以允许 DES-CBC3-SHA 密码套件。
最后,对 OpenSSL 的每次更新将引入新密码并弃用旧密码。使 EC2 Amazon Linux 实例保持
最新,关注来自 OpenSSL 的安全公告,并留意技术出版物中对新安全漏洞的报告。有关更多
信息,请参阅 Elastic Load Balancing 开发人员指南 中的 Elastic Load Balancing 的预定义 SSL
安全策略。
通过删除“#”取消对以下行的注释:
#SSLHonorCipherOrder on
此命令强制服务器优先选择高级密码,包括(在此示例中)支持向前保密性的密码。启用此指令后,服
务器会在回滚到允许的安全性较低的密码之前尝试建立高度安全的连接。
保存编辑后的配置文件后,重启 Apache。
如果您在 Qualys SSL Labs 上再次测试域,应会发现漏洞已修复,且摘要如下所示:
总评
A
证书
100%
协议支持
95%
密钥交换
90%
密码强度
90%
故障排除
• 除非我提供密码,否则我的 Apache Web 服务器不会启动。
如果您安装了受密码保护的加密的私有服务器密钥,这是预期行为。
您可以从此密钥上去除加密功能和密码。假设在默认目录中具有一个称为 custom.key 的加密的私有
RSA 密钥,并且此密钥上的密码是 abcde12345,对 EC2 实例运行以下命令可生成此密钥的未加密版
本:
[ec2-user ~]$ cd /etc/pki/tls/private/
[ec2-user private]$ sudo cp custom.key custom.key.bak
57
Amazon Elastic Compute Cloud Linux 实例用户指南
教程:提高应用程序的可用性
[ec2-user private]$ sudo
-out custom.key.nocrypt
[ec2-user private]$ sudo
[ec2-user private]$ sudo
[ec2-user private]$ sudo
[ec2-user private]$ sudo
openssl rsa -in custom.key -passin pass:abcde12345
mv custom.key.nocrypt custom.key
chown root.root custom.key
chmod 600 custom.key
service httpd restart
Apache 现在启动时应该不会提示您提供密码。
教程:提高应用程序在 Amazon EC2 上的可用性
Abstract
了解如何使用 Auto Scaling 和 Elastic Load Balancing 提高应用程序在 Amazon EC2 上的可用性。
假设您一开始在单个 EC2 实例上运行应用程序或网站,随着时间的推移,流量会增加到需要多个实例才
能满足需求的数量。您可以从 AMI 启动多个 EC2 实例,然后使用 Elastic Load Balancing 来跨这些 EC2
实例为应用程序分配传入流量。这将提高应用程序的可用性。将实例放置在多个可用区中还可提高应用程
序的容错能力。如果一个可用区发生中断,流量将路由到另一个可用区。
您可以使用 Auto Scaling 将您的应用程序的运行中的实例始终保持在最低数量。Auto Scaling 可检测您的
实例或应用程序在何时运行状况不佳并自动替换它,从而保持应用程序的可用性。您还可以使用 Auto
Scaling,通过您指定的条件来基于需求自动向上或向下扩展 Amazon EC2 容量。
在本教程中,我们将 Auto Scaling 与 Elastic Load Balancing 结合使用,以确保您在负载均衡器后保持指
定数量的正常运行的 EC2 实例。请注意,这些实例不需要公有 IP 地址,因为流量会流入负载均衡器,然
后再路由到这些实例。有关更多信息,请参阅 Auto Scaling 和 Elastic Load Balancing。
内容
• 先决条件 (p. 58)
• 对应用程序进行扩展和负载均衡 (p. 59)
• 测试负载均衡器 (p. 60)
先决条件
本教程假定您已执行以下操作:
58
Amazon Elastic Compute Cloud Linux 实例用户指南
对应用程序进行扩展和负载均衡
1.
2.
3.
4.
5.
6.
7.
如果您没有默认的 Virtual Private Cloud (VPC),请在两个或更多可用区中利用公有子网创建一个
VPC。有关更多信息,请参阅 创建 Virtual Private Cloud (VPC) (p. 23)。
在 VPC 中启动实例。
连接到实例并对其进行自定义。例如,您可以安装软件和应用程序、复制数据和连接更多的 EBS 卷。
有关在实例上设置 Web 服务器的信息,请参阅教程:安装 LAMP Web 服务器(在 Amazon Linux
上) (p. 33)。
测试您的实例上的应用程序以确保您的实例配置正确。
从您的实例创建自定义 Amazon 系统映像 (AMI)。有关更多信息,请参阅创建 Amazon EBS 支持的
Linux AMI (p. 83) 或创建由实例存储支持的 Linux AMI (p. 86)。
(可选)如果您不再需要实例,请终止它。
创建一个 IAM 角色,该角色将为您的应用程序授予对所需的 AWS 的访问权限。有关更多信息,请
参阅 使用控制台创建 IAM 角色 (p. 508)。
对应用程序进行扩展和负载均衡
使用以下过程创建负载均衡器、为您的实例创建启动配置、使用两个或更多实例创建 Auto Scaling 组以
及将负载均衡器与 Auto Scaling 组关联。
对应用程序进行扩展和负载均衡
1.
2.
3.
4.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中的 LOAD BALANCING 下,单击 Load Balancers。
单击 Create Load Balancer (创建负载均衡器)。
在 Define Load Balancer (定义负载均衡器) 页面上,执行以下操作:
a.
在 Load Balancer name 中输入负载均衡器的名称。例如,my-lb。
b.
c.
d.
从 Create LB Inside 中选择您的 VPC。
保留 Listener Configuration 的默认值,它是一个 HTTP 侦听器。
如果您选择了非默认 VPC,则系统会提示您在 Select Subnets 下选择子网。分别单击您的两个
公有子网的 Action 列中的图标。
单击 Next: Assign Security Groups。
e.
5.
在 Assign Security Groups 页面上,执行以下操作:
a.
b.
c.
6.
7.
单击 Create a new security group (创建新安全组)。
为您的安全组输入名称和说明。这个新的安全组包含一个规则,该规则允许流量流入 HTTP 侦
听器的端口。
单击 Next: Configure Security Settings。
在 Configure Security Settings 页面上,单击 Next: Configure Health Check 以前进到下一页,因为
我们不创建 HTTPS 负载均衡器。
在 Configure Health Check (配置运行状况检查) 页面上,执行以下操作:
a.
将 Ping Protocol (Ping 协议) 和 Ping Port (Ping 端口) 保留为默认值。
b.
将 Ping Path (Ping 路径) 设置为 /。这会向默认页面发送查询,而不管该页面的名称是
index.html 还是其他名称。
c.
单击 Next: Add EC2 Instances。
59
Amazon Elastic Compute Cloud Linux 实例用户指南
测试负载均衡器
8.
在 Add EC2 Instances 页面上,单击 Next: Add Tags 以前进到下一页,因为我们将使用 Auto Scaling
来将 EC2 实例添加到负载均衡器。
9. 在 Add Tags 页面上,添加所需的任何标签,然后单击 Review and Create。
10. 在 Review 页面上,检查您的设置,然后单击 Create。创建负载均衡器后,单击 Close (关闭)。
11. 在导航窗格中的 AUTO SCALING 下,单击 Launch Configurations。
•
如果您是首次接触 Auto Scaling,您将看到欢迎页面。单击 Create Auto Scaling group 以启动
“Create Auto Scaling Group”向导,然后单击 Create launch configuration。
•
否则,请单击 Create launch configuration。
12. 在 Choose AMI (选择 AMI) 页面上,选择 My AMIs (我的 AMI) 选项卡,然后选择在先决条件 (p. 58)
中创建的 AMI。
13. 在 Choose Instance Type 页面上,选择实例类型,然后单击 Next: Configure details。
14. 在 Configure details 页面上,执行以下操作:
a.
在 Name 中,为您的启动配置输入一个名称(例如,my-launch-config)。
b.
从 IAM role 中,选择您在先决条件 (p. 58)中创建的 IAM 角色。
c.
(可选)如果您需要运行一个启动脚本,请展开 Advanced Details 并在 User data 中输入该脚
本。
单击 Skip to review (跳到审核)。
d.
15. 在 Review (审核) 页面上,单击 Edit security groups (编辑安全组)。您可以选择现有安全组或创建新
安全组。此安全组必须允许来自负载均衡器的 HTTP 流量和运行状况检查。如果您的实例将拥有公
有 IP 地址,您也可以选择允许 SSH 流量(前提是您需要连接到该实例)。完成后,单击 Review。
16. 在 Review 页面上,单击 Create launch configuration。
17. 在系统提示时,请选择一个现有密钥对、创建一个新的密钥对或在没有密钥对的情况下继续。单击确
认复选框,然后单击 Create launch configuration (创建启动配置)。
18. 创建启动配置后,您必须创建 Auto Scaling 组。
•
如果您是初次使用 Auto Scaling 并且正在使用“Create Auto Scaling group”向导,则会自动进入
下一步。
•
否则,请单击 Create an Auto Scaling group using this launch configuration。
19. 在 Configure Auto Scaling group details (配置 Auto Scaling 组详细信息) 页面上,执行以下操作:
a.
输入 Auto Scaling 组的名称。例如,my-asg。
b.
在 Group size 中,在文本框中输入实例的数量(例如,2)。请注意,建议您在每个可用区中保
留数量大致相同的实例。
从 Network 中选择您的 VPC,然后从 Subnet 中选择您的两个公有子网。
展开 Advanced Details (高级详细信息)。选择 Receive traffic from Elastic Load Balancer(s) (从
Elastic 负载均衡器接收流量)。从文本字段选择负载均衡器。
单击 Next: Configure scaling policies (下一步: 配置扩展策略)。
c.
d.
e.
20. 在 Configure scaling policies 页面上,单击 Review,因为我们只打算让 Auto Scaling 将组保持在指
定大小。请注意,您稍后可以手动扩展此 Auto Scaling 组、根据计划配置要扩展的组或根据需求配
置要扩展的组。
21. 在 Review (审核) 页面上,单击 Create Auto Scaling group (创建 Auto Scaling 组)。
22. 创建组后,单击 Close。
测试负载均衡器
首先,验证 Auto Scaling 是否已启动您的实例并且这些实例已就绪。在 Auto Scaling Groups 页面中,选
择您的 Auto Scaling 组,然后选择 Instances 选项卡。
60
Amazon Elastic Compute Cloud Linux 实例用户指南
测试负载均衡器
最初,您的实例处于 Pending 状态。如果状态为 InService,则表示相应实例已就绪。
然后,验证您的实例是否已注册到负载均衡器并准备好接收来自负载均衡器的流量。在 Load Balancers
页面中,选择您的负载均衡器,然后选择 Instances 选项卡。
如果实例的状态是 OutOfService,可能表示它们仍在注册过程中。如果状态为 InService,则表示相
应实例已就绪。实例就绪后,您可通过以下步骤测试负载均衡器。
测试负载均衡器
1.
2.
从 Load Balancers (负载均衡器) 页面选择您的负载均衡器。
在 Description (描述) 选项卡上,找到 DNS 名称。此名称具有以下形式:
my-lb-xxxxxxxxxx.us-west-2.elb.amazonaws.com
3.
在 Web 浏览器中,将负载均衡器的 DNS 名称粘贴到地址栏并按 Enter。您将看到您的网站。
有关视频,请参阅 AWS 说明视频和实验室。
61
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 AMI
Amazon 系统映像 (AMI)
Abstract
AMI 为实例提供软件配置。
Amazon 系统映像 (AMI) 提供启动实例(云中的虚拟服务器)所需的信息。您在启动实例时指定 AMI,可
以从该 AMI 启动所需任意数量的实例。您还可以根据需要从任意多个不同 AMI 启动实例。
AMI 包括以下内容:
• 一个用于实例(例如,操作系统、应用程序服务器和应用程序)根卷的模板
• 控制可以使用 AMI 启动实例的 AWS 账户的启动许可
• 一个指定在实例启动时要附加到实例的卷的块储存设备映射。
使用 AMI
下图总结了 AMI 生命周期。创建并注册一个 AMI 之后,您可以将其用于启动新实例。(如果 AMI 拥有者
向您授予启动许可,则您也可以从 AMI 启动实例。)您可以将 AMI 复制到同一区域或不同区域。当您完
成从 AMI 启动实例时,可以取消注册 AMI。
您可以搜索符合您实例条件的 AMI。您可以搜索 AWS 提供的 AMI 或社区提供的 AMI。有关更多信息,
请参阅 AMI 类型 (p. 63) 和 查找 Linux AMI (p. 67)。
连接到某个实例之后,您可以像使用任何其他服务器那样使用该实例。有关启动、连接和使用实例的信
息,请参阅 Amazon EC2 实例 (p. 121)。
62
Amazon Elastic Compute Cloud Linux 实例用户指南
创建您自己的 AMI
创建您自己的 AMI
可以自定义从公用 AMI 启动的 实例,然后将配置保存为自定义 AMI 以供自己使用。从 AMI 启动的实例
使用您的所有自定义项。
实例的根存储设备确定创建 AMI 所遵循的过程。实例的根卷是 Amazon EBS 卷或实例存储卷。有关信
息,请参阅 Amazon EC2 根设备卷 (p. 14).
要创建由 Amazon EBS 支持的 AMI,请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83)。要创建由实例
存储支持的 AMI,请参阅创建由实例存储支持的 Linux AMI (p. 86)。
您可以为 AMI 分配自定义标签,以帮助您对 AMI 进行分类和管理。有关更多信息,请参阅 标记 Amazon
EC2 资源 (p. 679)。
购买、共享和出售 AMI
创建 AMI 之后,您可以将其设为私有,这样只有您才能使用它,也可以与指定的 AWS 账户列表进行共
享。您还可以选择公开您的自定义 AMI,以供社区使用。如果遵循一些简单的指导,为公共使用构建安
全、可靠、可用的 AMI 的过程可以很简单。有关如何创建和使用共享 AMI 的信息,请参阅共享
AMI (p. 69)。
您可以从第三方购买 AMI,包括具有 Red Hat 等组织的服务合同的 AMI。您还可以创建 AMI 并将其出售
给其他 Amazon EC2 用户。有关购买或出售 AMI 的更多信息,请参阅付费 AMI (p. 79)。
取消注册您的 AMI
使用完 AMI 之后,可以取消注册它。取消注册 AMI 之后,便无法将其用于启动新实例。有关更多信息,
请参阅 取消注册您的 AMI (p. 107)。
Amazon Linux
Amazon Linux AMI 是 AWS 提供、支持和维护的 Linux 映像。以下是一些 Amazon Linux 功能:
• 稳定、安全和高性能的执行环境,适用于 Amazon EC2 上运行的应用程序。
• 对于 Amazon EC2 用户没有额外费用。
• 对多个版本的 MySQL、PostgreSQL、Python、Ruby、Tomcat 及许多常见软件包的存储库访问权限。
• 定期更新以包括最新组件,这些更新也可在 yum 存储库中使用,适用于安装在运行中的实例上。
• 包括可与 AWS 服务轻松集成的软件包,如 AWS CLI、Amazon EC2 API 和 AMI 工具、适用于 Python
的 Boto 库以及 Elastic Load Balancing 工具。
有关更多信息,请参阅 Amazon Linux (p. 109)。
AMI 类型
Abstract
基于区域、操作系统、架构和根卷类型选择 AMI。
63
Amazon Elastic Compute Cloud Linux 实例用户指南
启动许可
可以基于以下特性选择要使用的 AMI:
• 区域(请参阅地区和可用区域 (p. 7))
• 操作系统
• 架构(32 位或 64 位)
• 启动许可 (p. 64)
• 根设备存储 (p. 64)
启动许可
AMI 的拥有者通过指定启动许可来确定其可用性。启动许可分为以下类别。
启动许可
说明
公有
拥有者向所有 AWS 账户授予启动许可。
显式
拥有者向特定 AWS 账户授予启动许可。
隐式
拥有者拥有 AMI 的隐式启动许可。
Amazon 和 Amazon EC2 社区提供了大量的公用 AMI。有关更多信息,请参阅 共享 AMI (p. 69)。开发人
员可以为其 AMI 收费。有关更多信息,请参阅付费 AMI (p. 79)。
根设备存储
所有 AMI 均可归类为由 Amazon EBS 支持或由实例存储支持。前者是指从 AMI 启动的实例的根设备是
从 Amazon EBS 快照创建的 Amazon EBS 卷。后者是指从 AMI 启动的实例的根设备是从存储在 Amazon
S3 中的模板创建的实例存储卷。有关更多信息,请参阅Amazon EC2 根设备卷 (p. 14)。
本节总结了两种类型的 AMI 之间的重要区别。下表简要总结了这些区别。
性能
受 Amazon EBS 支持
受 Amazon 实例存储支持
启动时间
通常不到 1 分钟
通常不到 5 分钟
大小限制
16 TiB
10 GiB
根设备卷
Amazon EBS 卷
实例存储卷
数据持久性
默认情况下,当实例终止时,将删除
根卷。* 默认情况下,实例终止后,
任何其他 Amazon EBS 卷上的数据
将会保留。任意实例存储卷上的数据
仅在实例的生命周期内保留。
任意实例存储卷上的数据仅在实例的
生命周期内保留。默认情况下,实例
终止后,任何 Amazon EBS 卷上的数
据将会保留。
升级
实例停止后,实例类型、内核、RAM 实例存在期间,实例属性是稳定不变
磁盘和用户数据仍可更改。
的.
收费
您需要为实例使用、Amazon EBS 卷 您需要为实例使用以及在 Amazon S3
使用以及将 AMI 存储为 Amazon EBS 中存储 AMI 付费。
快照付费。
AMI 创建/捆绑
使用单一命令/调用
64
需要安装和使用 AMI 工具
Amazon Elastic Compute Cloud Linux 实例用户指南
根设备存储
性能
受 Amazon EBS 支持
受 Amazon 实例存储支持
停止状态
可置于停止状态,在该状态下,实例 不可置于停止状态;实例正在运行或
不运行,但是根卷可在 Amazon EBS 已终止
中保留
* 默认情况下,Amazon EBS 支持的实例根卷的 DeleteOnTermination 标志设置为 true。有关如何
更改此标志以便卷在终止之后保留的信息,请参阅将根设备卷更改为持久保留 (p. 17)。
确定 AMI 的根设备类型
使用控制台确定 AMI 的根设备类型
1.
打开 Amazon EC2 控制台。
2.
3.
在导航窗格中,单击 AMI,然后选择 AMI。
在 Details (详细信息) 选项卡中检查 Root Device Type (根设备类型) 的值,如下所示:
• 如果值是 ebs,则是 Amazon EBS 支持的 AMI。
• 如果值是 instance store,则是实例存储支持的 AMI。
使用命令行确定 AMI 的根设备类型
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-images (AWS CLI)
• ec2-describe-images (Amazon EC2 CLI)
• Get-EC2Image (适用于 Windows PowerShell 的 AWS 工具)
停止状态
您可以停止由 Amazon EBS 支持的实例,但不能停止由 Amazon EC2 实例存储支持的实例。停止操作会
导致实例停止运行(它的状态会由 running 变成 stopping 再到 stopped)。停止的实例保留在 Amazon
EBS 中,这样就可重新启动。停止与终止不同;您无法重新启动一个已终止的实例。因为由 Amazon EC2
实例存储支持的 AMI 不能被停止,所以这些 AMI 要么在运行要么已经终止。有关实例停止可能会发生情
况及您可以执行哪些操作的更多信息,请参见 停止和启动您的实例 (p. 250)。
默认数据存储和持久性
使用实例存储卷作为根设备的实例自动具有可用的实例存储(根卷包含根分区并且您可以存储其他数据)。
如果实例失败或终止,实例存储卷上的所有数据将被删除(根设备上的数据除外)。您可以通过附加一个
或多个 Amazon EBS 卷向您的实例添加持久性存储。
使用 Amazon EBS 作为根设备的实例自动附加 Amazon EBS 卷。该卷像其它卷一样显示在您的卷列表
中。默认情况下,实例不使用任何可用的实例存储卷。您可以使用块储存设备映射添加实例存储或其他
Amazon EBS 卷。有关更多信息,请参阅 块储存设备映射 (p. 659)。有关停止实例时实例存储卷可能发生
的状况的信息,请参阅 停止和启动您的实例 (p. 250)。
启动时间
比起由 Amazon EC2 实例存储支持的 AMI,由 Amazon EBS 支持的 AMI 的启动速度更快。当您启动由
Amazon EC2 实例存储支持的 AMI 时,必须先从 Amazon S3 中检索所有部件才能使用该实例。使用由
65
Amazon Elastic Compute Cloud Linux 实例用户指南
虚拟化类型
Amazon EBS 支持的 AMI 时,仅需从快照中检索启动实例所需的分段,然后即可使用该实例。但是,使
用 Amazon EBS 卷作为根设备的实例在从快照中检索剩余分段并加载到卷中的这一小段时间内会运行地
较为缓慢。当您停止和重新启动实例时,实例可快速启动,因为实例状态已存储在 Amazon EBS 卷中。
AMI 创建
要创建由实例存储支持的 Linux AMI,您必须使用 Amazon EC2 AMI 工具在您的实例上创建来自实例的
AMI。
AMI 创建对于由 Amazon EBS 支持的 AMI 来说要容易得多。CreateImage API 操作创建由 Amazon
EBS 支持的 AMI 并为其注册。AWS 管理控制台中还有一个按钮能让您从正在运行的实例中创建 AMI。
有关更多信息,请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83)。
如何向您收费
如果您使用由实例存储提供支持的 AMI,您需要为 AMI 存储和实例使用付费。如果您使用由 Amazon EBS
支持的 AMI,除了 AMI 和实例使用费用之外,您还需要为卷的存储和使用付费。
如果您使用由 Amazon EC2 实例存储支持的 AMI,当您每次自定义以及新建一个 AMI 时,所有分段都存
储在每个 AMI 的 Amazon S3 中。因此,每个定制 AMI 的存储占用空间都是 AMI 的完整大小。对于由
Amazon EBS 支持的 AMI,当您每次自定义以及新建 AMI 时,将仅存储更改内容。因此,您之后自定义
的 AMI 的存储占用空间比首次自定义的 AMI 要小得多,从而降低 AMI 存储费用。
当由 Amazon EBS 支持的实例停止时,您无需再为实例使用付费;但是,您仍需为卷存储付费。每次从
停止状态转换到运行状态,即使您在一小时内进行多次状态转换,我们都按一个完整实例小时收费。例
如,假设您的实例每小时的实例收费为 0.10 USD。如果您要运行该实例一小时,中途不停止,您将被收
取 0.10 USD。如果您在一小时内停止并重新启动该实例两次,您将因该使用小时被收取 0.30 USD(最
初 0.10 USD,加上 2 x 每次重新启动 0.10 USD )。
Linux AMI 虚拟化类型
Abstract
Amazon 系统映像使用两种虚拟化类型之一:半虚拟化 (PV) 或硬件虚拟机 (HVM)。了解这些虚拟化类型之间的区别。
Linux Amazon 系统映像 使用两种虚拟化类型之一:半虚拟化 (PV) 或硬件虚拟机 (HVM)。半虚拟化和
HVM AMI 之间的主要区别在于它们的启动方式,以及它们能否使用特定硬件扩展(CPU、网络和存储)
实现更好的性能。
为获得最佳性能,建议您在启动您的实例时使用最新一代的实例类型和 HVM AMI。有关最新一代实例类
型的更多信息,请参阅 Amazon EC2 实例详细信息页面。如果您正在使用上一代实例类型并且想升级,
请参阅升级路径。
有关建议的针对每个实例类型的 Amazon Linux AMI 的类型的信息,请参阅 Amazon Linux AMI 实例类型
详细信息页面。
HVM AMI
硬件虚拟机 AMI 配有一组完全虚拟化的硬件,通过执行映像根块储存设备的主启动记录来启动。通过此
虚拟化类型可以直接在虚拟机上运行操作系统而不进行任何修改(如同它在裸机硬件上运行一样)。
Amazon EC2 主机系统可模拟向客户机提供的部分或所有底层硬件。
与半虚拟化客户机不同,硬件虚拟机客户机可以利用硬件扩展快速访问主机系统上的底层硬件。有关
Amazon EC2 中可用的 CPU 虚拟化扩展的更多信息,请参阅 Intel 网站上的 英特尔虚拟化技术。硬件虚
拟机 AMI 需要利用增强联网和 GPU 处理。要将指令传递给专用网络和 GPU 设备,操作系统需要能够访
问本机硬件平台;HVM 虚拟化提供这种访问。有关更多信息,请参阅增强联网 (p. 572)和Linux GPU 实
例 (p. 130)。
66
Amazon Elastic Compute Cloud Linux 实例用户指南
查找 Linux AMI
当前一代的所有实例类型都支持 HVM AMI。CC2、CR1、HI1 和 HS1 上一代实例类型支持 HVM AMI。
要查找 HVM AMI,请使用控制台或 describe-images 命令验证 AMI 的虚拟化类型是否已设置为 hvm。
PV AMI
PV AMI 使用名为 PV-GRUB 的特殊启动加载程序启动,该加载程序开始启动循环,然后对您的映像链式
加载 menu.lst 文件中指定的内核。半虚拟化来宾可以在没有显式虚拟化支持的主机硬件上运行,但无
法利用特殊硬件扩展(如增强联网或 GPU 处理)。以往,半虚拟化来宾在许多情况下的性能优于 HVM
来宾,但是由于硬件虚拟机虚拟化的功能增强以及 HVM AMI 可使用半虚拟化驱动程序,情况发生了改
变。有关 PV-GRUB 及其在 Amazon EC2 中的使用情况的更多信息,请参阅 PV-GRUB (p. 116)。
C3 和 M3 最新一代实例类型支持 PV AMI。C1、HI1、HS1、M1、M2 和 T1 上一代实例类型支持 PV
AMI。
要查找 PV AMI,请使用控制台或 describe-images 命令验证 AMI 的虚拟化类型是否已设置为
paravirtual。
硬件虚拟机上的半虚拟化
以往,半虚拟化客户机在存储和网络操作方面的性能要优于硬件虚拟机客户机,因为它们可以对 I/O 使用
特殊驱动程序,从而避免模拟网络和磁盘硬件的开销,而硬件虚拟机客户机必须将这些指令转换为模拟的
硬件。现在,这些半虚拟化驱动程序可用于硬件虚拟机客户机,因此无法移植到半虚拟化环境中运行的操
作系统(如 Windows)仍可以使用它们获取存储和网络 I/O 方面的性能优势。借助这些硬件虚拟机驱动
程序上的半虚拟化,硬件虚拟机客户机可以获得与半虚拟化客户机相同甚至更佳的性能。
查找 Linux AMI
Abstract
搜索符合您的要求的 AMI。
启动实例之前,必须选择要使用的 AMI。选择 AMI 时,对于将启动的实例,可能需要考虑以下要求:
• 区域
• 操作系统
• 架构:32 位 (i386) 或 64 位 (x86_64)
• 根设备类型:Amazon EBS 或实例存储
• 提供商:Amazon Web Services、Oracle、IBM、Microsoft 或社区
如果您需要查找 Windows AMI,请参阅 Amazon EC2 用户指南(适用于 Microsoft Windows 实例) 中的
查找 Windows AMI。
内容
• 使用 Amazon EC2 控制台查找 Linux AMI (p. 67)
• 使用 AWS CLI 查找 AMI; (p. 68)
• 使用 Amazon EC2 CLI 查找 AMI (p. 68)
使用 Amazon EC2 控制台查找 Linux AMI
您可以使用 Amazon EC2 控制台查找 Linux AMI。您可以使用 Images (映像) 页面搜索所有可用 AMI,或
者,在使用控制台启动实例时,使用 Quick Launch (快速启动) 选项卡在常用 AMI 中选择。
67
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 AWS CLI 查找 AMI;
使用“Images (映像)”页面查找 Linux AMI
1.
打开 Amazon EC2 控制台。
2.
从导航栏中选择区域。您可以选择向您提供的任何区域,无需理会您身处的位置。这是您将在其中启
动实例的区域。
在导航窗格中,单击 AMIs。
(可选)使用 Filter (筛选条件) 选项将显示的 AMI 列表范围确定为仅限您关注的 AMI。例如,要列出
AWS 提供的所有 Linux AMI,请选择 Public images (公有映像)。单击搜索栏,从菜单中选择 Owner
(拥有者),然后选择 Amazon images (Amazon 映像)。再次单击搜索栏以选择 Platform (平台),然后
从提供的列表中选择操作系统。
3.
4.
5.
(可选)单击 Show/Hide Columns (显示/隐藏列) 图标以选择要显示的映像属性,如根设备类型。或
者,可以从列表中选择 AMI,然后在 Details (详细信息) 选项卡中查看其属性。
6.
选择 AMI 之前,请确认它是由实例存储支持还是由 Amazon EBS 支持并了解此差异的影响,这十分
重要。有关更多信息,请参阅 根设备存储 (p. 64)。
要从此 AMI 启动实例,请选择该实例,然后单击 Launch (启动)。有关使用控制台启动实例的更多信
息,请参阅从 AMI 启动实例 (p. 232)。如果您没有准备好立即启动实例,请记下 AMI ID (ami-xxxxxxxx)
以供将来使用。
7.
在您启动实例时查找 Linux AMI
1.
2.
3.
打开 Amazon EC2 控制台。
从控制台控制面板中,单击 Launch Instance (启动实例)。
在 Choose an Amazon Machine Image (AMI) (选择一个 Amazon 系统映像 (AMI)) 页面的 Quick Start
(快速启动) 选项卡上,从列表中选择一个常用的 AMI。如果您没有看到所需的 AMI,请选择 AWS
Marketplace 或 Community AMIs (社区 AMI) 选项卡来查找其他 AMI。
使用 AWS CLI 查找 AMI;
您可以使用命令行参数仅列出感兴趣的 AMI 类型。例如,您可以按如下所示使用 describe-images 命令
查找由您或者 Amazon 拥有的公用 AMI。
$ aws ec2 describe-images --owners self amazon
将以下筛选条件添加到上一个命令以便仅显示 Amazon EBS 支持的 AMI:
--filters "Name=root-device-type,Values=ebs"
找到满足您需要的 AMI 之后,记下其 ID (ami-xxxxxxxx)。您可以使用此 AMI 启动实例。有关更多信息,
请参阅 AWS Command Line Interface 用户指南 中的使用 AWS CLI 启动实例。
使用 Amazon EC2 CLI 查找 AMI
您可以使用命令行参数仅列出感兴趣的 AMI 类型。例如,您可以按如下所示使用 ec2-describe-images
命令查找由您或者 Amazon 拥有的公用 AMI。
$ ec2-describe-images -o self -o amazon
将以下筛选条件添加到上一个命令以便仅显示 Amazon EBS 支持的 AMI:
--filter "root-device-type=ebs"
68
Amazon Elastic Compute Cloud Linux 实例用户指南
共享 AMI
找到满足您需要的 AMI 之后,记下其 ID (ami-xxxxxxxx)。您可以使用此 AMI 启动实例。有关更多信息,
请参阅 Amazon EC2 命令行参考 中的使用 Amazon EC2 CLI 启动实例。
共享 AMI
Abstract
查找或共享公用 AMI。
共享 AMI 是开发人员创建并可供其他开发人员使用的 AMI。要开始使用 Amazon EC2,最简单的方法之
一是使用共享 AMI,您可以从中获得所需的组件,然后添加自定义内容。您还可以创建自己的 AMI 并与
他人共享。
使用共享 AMI 需自行承担风险。Amazon 不保证其他 Amazon EC2 用户共享的 AMI 的完整性或安全性。
因此,您应该像处理其他您可能会考虑在自己的数据中心部署的外来代码一样处理共享 AMI,对其执行适
当的功能调查。我们建议您从可靠来源获取 AMI。如果您对某个共享 AMI 有任何问题或意见,请访问
AWS 论坛。
Amazon 的公有映像的拥有者有一个别名,在账户字段中显示为 amazon。这使您可以轻松地从 Amazon
查找 AMI。其他用户不能对其 AMI 使用别名。
有关创建 AMI 的信息,请参阅创建实例存储支持的 Linux AMI 或创建 Amazon EBS 支持的 Linux AMI 。
有关在 AWS Marketplace 中构建、交付和维护应用程序的更多信息,请参阅 AWS Marketplace 用户指南
和 AWS Marketplace 卖方指南。
查找共享 AMI
Abstract
查找共享 AMI。
可以使用 Amazon EC2 控制台或命令行查找共享 AMI。
查找共享 AMI(控制台)
使用控制台查找共享的私有 AMI
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在导航窗格中,选择 AMIs。
在第一个筛选条件中,选择 Private images。将列出已与您共享的所有 AMI。要细化您的搜索,可选
择搜索栏并使用菜单中提供的筛选条件选项。
使用控制台查找共享的公用 AMI
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在导航窗格中,选择 AMIs。
要查找共享 AMI,请从 Filter 列表中选择 Public images。要细化您的搜索,可选择搜索栏并使用菜
单中提供的筛选条件选项。
使用筛选条件仅列出您需要的 AMI 类型。例如,选择 Amazon images 可仅显示 Amazon 的公有映
像。
4.
69
Amazon Elastic Compute Cloud Linux 实例用户指南
查找共享 AMI
查找共享 AMI (AWS CLI)
使用命令行工具查找共享的公用 AMI
使用 describe-images 命令可列出 AMI。可以将该列表范围确定为所需的 AMI 类型,如以下示例所示。
以下命令使用 --executable-users 选项列出所有公用 AMI。此列表包括您拥有的所有公用 AMI。
$ aws ec2 describe-images --executable-users all
以下命令列出您对其拥有显式启动许可的 AMI。此列表不包括您拥有的任何此类 AMI。
$ aws ec2 describe-images --executable-users self
以下命令列出 Amazon 拥有的 AMI。Amazon 的公用 AMI 的拥有者有一个别名,在账户字段中显示为
amazon。这使您可以轻松地从 Amazon 查找 AMI。其他用户不能对其 AMI 使用别名。
$ aws ec2 describe-images --owners amazon
以下命令列出指定 AWS 账户拥有的 AMI。
$ aws ec2 describe-images --owners 123456789012
要减少显示的 AMI 数量,请使用筛选条件只列出您感兴趣的 AMI 类型。例如,使用以下筛选条件可以只
显示 EBS 支持的 AMI。
--filters "Name=root-device-type,Values=ebs"
查找共享 AMI (Amazon EC2 CLI)
使用命令行工具查找共享的公用 AMI
使用 ec2-describe-images 命令可列出 AMI。可以将该列表范围确定为所需的 AMI 类型,如以下示例所
示。
以下命令使用 -x all 选项列出所有公用 AMI。此列表包括您拥有的所有公用 AMI。
$ ec2-describe-images -x all
以下命令列出您对其拥有显式启动许可的 AMI。此列表不包括您拥有的任何此类 AMI。
$ ec2-describe-images -x self
以下命令列出 Amazon 拥有的 AMI。Amazon 的公用 AMI 的拥有者有一个别名,在账户字段中显示为
amazon。这使您可以轻松地从 Amazon 查找 AMI。其他用户不能对其 AMI 使用别名。
$ ec2-describe-images -o amazon
以下命令列出指定 AWS 账户拥有的 AMI。
70
Amazon Elastic Compute Cloud Linux 实例用户指南
将 AMI 设为公用
$ ec2-describe-images -o <target_uid>
<target_uid> 是拥有您正在寻找的 AMI 的账户 ID。
要减少显示的 AMI 数量,请使用筛选条件只列出您感兴趣的 AMI 类型。例如,使用以下筛选条件可以只
显示 EBS 支持的 AMI。
--filter "root-device-type=ebs"
使用共享 AMI
使用共享 AMI 之前,应执行以下步骤以确认没有预安装证书允许第三方对您的实例进行不希望的访问,
并且没有可能将敏感数据传输给第三方的预配置远程登录。查看 AMI 使用的 Linux 发行版的文档以了解
有关提高系统安全性的信息。
为了确保您不会在无意中丢失对您实例的访问,我们建议您启动两个 SSH 会话并将第二个会话保持为打
开状态,直到您删除了无法识别的证书并确认您仍可以使用 SSH 登录您的实例。
1. 标识并禁用任何未经授权的公有 SSH 密钥。该文件中的唯一密钥应是您用于启动 AMI 的密钥。以下命
令查找 authorized_keys 文件:
$ sudo find / -name "authorized_keys" -print -exec cat {} \;
2. 对根用户禁用基于密码的身份验证。打开 ssh_config 文件并编辑 PermitRootLogin 行,如下所示:
PermitRootLogin without-password
或者,您可以禁用以根身份登录实例的功能:
PermitRootLogin No
重启 sshd 服务。
3. 检查是否有任何其他用户账户能够登录您的实例。具有超级用户权限的账户尤为危险。删除或锁定任
何未知账户的密码。
4. 检查打开的端口以确认您未在使用和运行侦听传入连接的网络服务。
5. 要防止预配置的远程登录,应删除现有配置文件并重启 rsyslog 服务。例如:
$ sudo rm /etc/rsyslog.config
$ sudo service rsyslog restart
6. 确认所有 Corn 任务是合法的。
如果您发现了认为存在安全风险的公用 AMI,请联系 AWS 安全团队。有关更多信息,请参阅 AWS 安全
中心。
将 AMI 设为公用
Abstract
与所有 Amazon EC2 用户共享您的 AMI。
71
Amazon Elastic Compute Cloud Linux 实例用户指南
将 AMI 设为公用
Amazon EC2 使您能与其他 AWS 账户共享您的 AMI。您可以允许所有 AWS 账户启动 AMI(将 AMI 设
为公用),也可以仅允许几个特定的账户启动 AMI。当其他 AWS 账户启动您的 AMI 时,不会向您收费;
只会向启动 AMI 的账户收取费用。
要避免在共享 AMI 时泄露敏感数据,请阅读共享 Linux AMI 指导原则 (p. 75)中的安全注意事项并遵循建
议的操作。
Note
如果 AMI 有产品代码,则不能将其设为公用。只能将 AMI 与特定 AWS 账户共享。
共享公用 AMI(控制台)
使用控制台共享公用 AMI
1.
2.
3.
4.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 AMIs。
在列表中选择您的 AMI,然后从 Actions 列表中选择 Modify Image Permissions。
选择 Public,然后选择 Save。
共享公用 AMI (AWS CLI)
每个 AMI 都有一个 launchPermission 属性,用于控制允许哪些 AWS 账户(除拥有者账户外)使用该
AMI 启动实例。通过修改 AMI 的 launchPermission 属性,可以将 AMI 设为公用(这会向所有 AWS
账户授予启动权限)或仅将其与指定的 AWS 账户共享。
您可以在具有 AMI 启动权限的账户的列表中添加或从中删除账户 ID。要将 AMI 设为公用,请指定 all
组。公用和显式启动许可都可以指定。
将 AMI 设为公用
使用 modify-image-attribute 命令可将 all 组添加到指定 AMI 的 launchPermission 列表,如下所示。
$ aws ec2 modify-image-attribute --image-id ami-2bb65342 --launch-permission
"{\"Add\":[{\"Group\":\"all\"}]}"
要验证 AMI 的启动许可,请使用以下 describe-image-attribute 命令。
$ aws ec2 describe-image-attribute --image-id ami-2bb65342 --attribute launch
Permission
(可选)要再次将 AMI 设为私有,请从其启动许可中删除 all 组。请注意,AMI 的拥有者始终具有启动
许可,因此不受此命令影响。
$ aws ec2 modify-image-attribute --image-id ami-2bb65342 "{\"Re
move\":[{\"Group\":\"all\"}]}"
共享公用 AMI (Amazon EC2 CLI)
每个 AMI 都有一个 launchPermission 属性,用于控制允许哪些 AWS 账户(除拥有者账户外)使用该
AMI 启动实例。通过修改 AMI 的 launchPermission 属性,可以将 AMI 设为公用(这会向所有 AWS
账户授予启动许可)或仅将其与指定的 AWS 账户共享。
72
Amazon Elastic Compute Cloud Linux 实例用户指南
将 AMI 与特定 AWS 账户共享
可以对具有 AMI 启动许可的账户的列表添加或删除账户 ID。要将 AMI 设为公用,请指定 all 组。公用
和显式启动许可都可以指定。
将 AMI 设为公用
使用 ec2-modify-image-attribute 命令可将 all 组添加到指定 AMI 的 launchPermission 列表,如下所
示。
$ ec2-modify-image-attribute ami-2bb65342
--launch-permission -a all
要验证 AMI 的启动许可,请使用以下 命令。
$ ec2-describe-image-attribute ami-2bb65342 -l
要再次将 AMI 设为私有,请从其启动许可中删除 all 组。请注意,AMI 的拥有者始终具有启动许可,因
此不受此命令影响。
$ ec2-modify-image-attribute ami-2bb65342 -l -r all
将 AMI 与特定 AWS 账户共享
Abstract
将 AMI 与特定 Amazon EC2 用户共享。
您可以在不将 AMI 设为公用的情况下,与特定 AWS 账户共享 AMI。您只需要 AWS 账户 ID 即可。
共享 AMI(控制台)
使用控制台授予显式启动许可
1.
2.
3.
4.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 AMIs。
在列表中选择您的 AMI,然后从 Actions 列表中选择 Modify Image Permissions。
在 AWS Account Number 字段中指定您想与之共享 AMI 的用户的 AWS 账号,然后选择 Add
Permission。
要与多个用户共享此 AMI,请重复上述步骤,直至您添加完所需全部用户。
5.
要允许创建快照的卷权限,请选择 Add "create volume" permissions to the following associated
snapshots when creating permissions。
Note
您不需要为了共享 AMI 而共享 AMI 引用的 Amazon EBS 快照。只需共享 AMI 本身;系统
自动为实例提供访问所引用 Amazon EBS 快照的权限以便启动。
6.
完成后选择 Save。
共享 AMI (AWS CLI)
使用 modify-image-attribute 命令可共享 AMI,如下例所示。
73
Amazon Elastic Compute Cloud Linux 实例用户指南
使用书签
要授予显式启动许可
以下命令向指定 AWS 账户授予指定 AMI 的启动许可。
$ aws ec2 modify-image-attribute --image-id ami-2bb65342 --launch-permission
"{\"Add\":[{\"UserId\":\"123456789012\"}]}"
要删除账户的启动许可
以下命令从指定 AWS 账户中删除指定 AMI 的启动许可:
$ aws ec2 modify-image-attribute --image-id ami-2bb65342 "{\"Re
move\":[{\"UserId\":\"123456789012\"}]}"
要删除所有的启动许可
以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此
不受此命令影响。
$ aws ec2 reset-image-attribute --image-id ami-2bb65342 --attribute launchPer
mission
共享 AMI (Amazon EC2 CLI)
使用 ec2-modify-image-attribute 命令可共享 AMI,如下例所示。
要授予显式启动许可
以下命令向指定 AWS 账户授予指定 AMI 的启动许可。
$ ec2-modify-image-attribute ami-2bb65342 -l -a 111122223333
要删除账户的启动许可
以下命令从指定 AWS 账户中删除指定 AMI 的启动许可:
$ ec2-modify-image-attribute ami-2bb65342 -l -r 111122223333
要删除所有的启动许可
以下命令从指定 AMI 中删除所有公用和显式启动许可。请注意,AMI 的拥有者始终具有启动许可,因此
不受此命令影响。
$ ec2-reset-image-attribute ami-2bb65342 -l
使用书签
Abstract
允许其他 Amazon EC2 用户访问和使用您的共享 AMI。
74
Amazon Elastic Compute Cloud Linux 实例用户指南
共享 Linux AMI 指导原则
如果您创建了公用 AMI,或与其他 AWS 用户共享了 AMI,您可以创建一个书签 来允许用户访问您的 AMI
并允许他们立即在自己的账户中启动一个实例。这是共享 AMI 引用的一种简单方法,借助这种方法,用
户无需花时间来查找您的 AMI 即可使用。
请注意,您的 AMI 必须为公用,否则必须与您要向其发送书签的用户共享它。
为您的 AMI 创建书签
1.
在 URL 中键入以下信息,其中 <region> 是您的 AMI 所属的区域,<ami_id> 是 AMI 的 ID:
https://console.www.amazonaws.cn/ec2/v2/home?region=<region>#LaunchInstanceWiz
ard:ami=<ami_id>
举例来说,该 URL 从 cn-north-1 区域的 ami-2bb65342 AMI 启动实例:
https://console.www.amazonaws.cn/ec2/v2/home?region=cn-north-1#LaunchIn
stanceWizard:ami=ami-2bb65342
2.
3.
将链接分发给那些想要使用您的 AMI 的用户。
要使用书签,请选择链接或将其复制并粘贴到您的浏览器中。启动向导打开,同时 AMI 已被选定。
共享 Linux AMI 指导原则
Abstract
创建共享 Linux AMI 时,请遵循以下指导原则。
使用以下指南可缩小攻击面并提高您创建的 AMI 的可靠性。
Note
任何安全指南都不是详尽无遗的。请仔细构建您的共享 AMI,并花时间考虑可能导致暴露敏感数
据的位置。
主题
• 在启动时更新 AMI 工具 (p. 76)
• 对根禁用基于密码的远程登录 (p. 76)
• 禁用本地根访问 (p. 76)
• 删除 SSH 主机密钥对 (p. 77)
• 安装公有密钥证书 (p. 77)
• 禁用 sshd DNS 检查(可选) (p. 78)
• 标识您的身份 (p. 78)
• 保护自己 (p. 78)
如果为 AWS Marketplace 构建 AMI,请参阅为 AWS Marketplace 构建 AMI,以了解指导原则、策略和
最佳实践。
有关安全共享 AMI 的更多信息,请参阅以下文章:
• How To Share and Use Public AMIs in A Secure Manner
• Public AMI Publishing: Hardening and Clean-up Requirements
75
Amazon Elastic Compute Cloud Linux 实例用户指南
共享 Linux AMI 指导原则
在启动时更新 AMI 工具
对于实例存储支持型 AMI,我们建议您的 AMI 在启动期间下载和更新 Amazon EC2 AMI 创建工具。这可
确保基于您的共享 AMI 的新 AMI 拥有最新的 AMI 工具。
对于 Amazon Linux,请将以下内容添加到 /etc/rc.local:
# Update the Amazon EC2 AMI tools
echo " + Updating EC2 AMI tools"
yum update -y aws-amitools-ec2
echo " + Updated EC2 AMI tools"
使用此方法自动更新您映像上的其它软件。
Note
确定自动更新何种软件时,要考虑到此更新将产生的 WAN 流量(您的用户将为此付费),以及
更新破坏 AMI 上其他软件的风险。
对于其他分配,请确保您拥有最新的 AMI 工具。
对根禁用基于密码的远程登录
为公用 AMI 使用固定的根密码是一种很快为人知晓的安全风险。甚至于用户在第一次登录后更改密码都
会给可能的滥用以可乘之机。
要解决此问题,请对根用户禁用基于密码的远程登录。
对根禁用基于密码的远程登录
1.
用文字编辑器打开 /etc/ssh/sshd_config 文件并查找以下行:
#PermitRootLogin yes
2.
将行更改为:
PermitRootLogin without-password
若您的分配不同或您不在运行 OpenSSH,此配置文件的位置可能也会不同。若情况如此,请咨询相
关文档。
禁用本地根访问
在使用共享 AMI 时,最佳做法是禁用直接根登录。为此,请登录到您正在运行的实例并发出以下命令:
[ec2-user ~]$ sudo passwd -l root
Note
此命令不影响 sudo 的使用。
76
Amazon Elastic Compute Cloud Linux 实例用户指南
共享 Linux AMI 指导原则
删除 SSH 主机密钥对
如果您计划共享源自公用 AMI 的 AMI,请删除 /etc/ssh 中的现有 SSH 主机密钥对。这会促使 SSH 在
有人使用您的 AMI 启动实例时生成新的独特 SSH 密钥对,从而提高安全性并降低“中间人”攻击可能性。
删除系统上存在的以下所有密钥文件。
• ssh_host_dsa_key
• ssh_host_dsa_key.pub
• ssh_host_key
• ssh_host_key.pub
• ssh_host_rsa_key
• ssh_host_rsa_key.pub
• ssh_host_ecdsa_key
• ssh_host_ecdsa_key.pub
• ssh_host_ed25519_key
• ssh_host_ed25519_key.pub
您可以使用以下命令安全地删除所有这些文件。
[ec2-user ~]$ sudo shred -u /etc/ssh/*_key /etc/ssh/*_key.pub
Warning
安全删除实用工具(例如 shred)可能不会删除存储介质中某个文件的所有副本。文件的隐藏副
本可能是由日志文件系统(包括 Amazon Linux 默认 ext4)、快照、备份、RAID 和临时缓存创
建的。有关更多信息,请参阅 shred 文档。
Important
如果您忘记从您的公用 AMI 中删除现有 SSH 主机密钥对,我们的例行审核过程会通知您和所有
运行您的 AMI 实例的客户存在潜在安全风险。短暂的宽限期过后,我们会将 AMI 标记为私有。
安装公有密钥证书
配置 AMI 以防止使用密码进行登录后,您必须确保用户能用另一种机制登录。
Amazon EC2 允许用户在启动实例时指定公用–私有密钥对名称。向 RunInstances API 调用提供有效的
密钥对名称后(或通过命令行 API 工具),公用密钥(Amazon EC2 在至 CreateKeyPair 或
ImportKeyPair 的调用后在服务器上保留的密钥对的部分)通过针对实例元数据的 HTTP 查询供实例使
用。
要通过 SSH 登录,您的 AMI 必须在启动时检索密钥值并将该值附加到 /root/.ssh/authorized_keys
(或 AMI 上任何其他用户账户的等效密钥)。用户可使用密钥对启动您的 AMI 的实例,并在不需要根密
码的情况下进行登录。
许多发布版(包括 Amazon Linux 和 Ubuntu)使用 cloud-init 软件包为配置的用户插入公有密钥证
书。如果您的分发版本不支持 cloud-init,则可以将以下代码添加到系统启动脚本(如
/etc/rc.local),以提取您在启动时为 root 用户指定的公有密钥。
77
Amazon Elastic Compute Cloud Linux 实例用户指南
共享 Linux AMI 指导原则
if [ ! -d /root/.ssh ] ; then
mkdir -p /root/.ssh
chmod 700 /root/.ssh
fi
# Fetch public key using HTTP
curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key > /tmp/mykey
if [ $? -eq 0 ] ; then
cat /tmp/my-key >> /root/.ssh/authorized_keys
chmod 700 /root/.ssh/authorized_keys
rm /tmp/my-key
fi
这一点适用于任何用户账户;您不需要将其限制为 root。
Note
根据此 AMI 进行的实例重新捆绑包括启动时所用的密钥。要防止密钥被包含,您必须清除(或删
除)authorized_keys 文件或将此文件排除在重新捆绑之外。
禁用 sshd DNS 检查(可选)
禁用 sshd DNS 检查会稍微减弱您的 sshd 安全性。但是,如果 DNS 解析失败,SSH 的登录仍然有效。
如果您未禁用 sshd 检查,DNS 解析失败后会阻止所有的登录。
要禁用 sshd DNS 检查
1. 用文字编辑器打开 /etc/ssh/sshd_config 文件并查找以下行:
#UseDNS yes
2. 将行更改为:
UseDNS no
Note
若您的分配不同或您不在运行 OpenSSH,此配置文件的位置也会不同。若情况如此,请咨询相
关文档。
标识您的身份
目前,没有简单的方法来了解谁提供了共享 AMI,因为每个 AMI 都由账户 ID 代表。
我们建议您将您的 AMI 描述和 AMI ID 发布在 Amazon EC2 forum中。这可为有兴趣尝试新的共享 AMI
的用户提供方便的中心位置。您还可以将 AMI 发布到Amazon 系统映像 (AMI) 页面。
保护自己
前述各节介绍如何使您的共享 AMI 成为安全、有保障的可用 AMI,以供启动它们的用户使用。本节描述
了保护您不受您的 AMI 用户影响的指南。
78
Amazon Elastic Compute Cloud Linux 实例用户指南
付费 AMI
我们不建议您将敏感数据或软件存储在您共享的任何 AMI 上。启动共享 AMI 的用户可能能够重新捆绑
AMI 并能自行注册 AMI。遵循上述指南可助您避免一些容易被忽视的安全风险:
• 我们建议对 ec2-bundle-vol 使用 --exclude directory 选项,以跳过包含您不想在捆绑中包含
的机密信息的所有目录和子目录。具体而言,在捆绑映像时,排除所有用户拥有的 SSH 公有/私有密钥
对和 SSH authorized_keys 文件。Amazon 公用 AMI 会将它们存储在 /root/.ssh(对于 root 账
户)和 /home/user_name/.ssh/(对于常规用户账户)中。有关更多信息,请参阅 Amazon EC2 命
令行参考 中的 ec2-bundle-vol。
• 务必在捆绑前删除外壳程序历史记录。如果您在同一 AMI 中多次尝试捆绑上传,外壳程序历史中会包
含您的私有访问密钥。以下示例应为从实例内部捆绑前执行的最后一个命令。
[ec2-user ~]$ shred -u ~/.*history
Warning
以上警告中描述的 shred 的限制在此处也适用。
请注意,bash 在退出时会将当前会话的历史记录写入磁盘。如果您在删除 ~/.bash_history
后注销您的实例,然后重新登录,您将发现 ~/.bash_history 已重新创建且包含上一会话期
间执行的所有命令。
Bash 以外的其他程序也会将历史记录写入磁盘,请谨慎使用并删除或排除不必要的点文件和
点目录。
• 捆绑正在运行的实例需要您的私有密钥和 X.509 证书。将上述密钥和证书以及其它证书放置到未予捆
绑的位置(如实例存储)。
付费 AMI
Abstract
购买或出售自定义 AMI(称为付费 AMI)。
付费 AMI 是可以从开发人员处购买的 AMI。
Amazon EC2 与 AWS Marketplace 集成,使开发人员能够向使用其 AMI 的其他 Amazon EC2 用户收取
费用或提供实例支持。
AWS Marketplace 是一个在线商店,您可以从中购买在 AWS 上运行的软件,包括可用来启动 EC2 实例
的 AMI。AWS Marketplace AMI 分为各种类别(如开发人员工具),您可以根据自己的要求查找产品。
有关 AWS Marketplace 的更多信息,请参阅 AWS Marketplace 站点。
从付费 AMI 启动实例与从任何其他 AMI 启动实例的方式相同。不需要额外参数。实例根据 AMI 拥有者设
置的费率以及相关 Web 服务的标准使用费(例如,在 Amazon EC2 中运行 m1.small 实例类型的小时费
率)来收费。付费 AMI 拥有者可以确认是否使用该付费 AMI 启动特定实例。
Important
Amazon DevPay 不再接受新的卖家或产品。AWS Marketplace 现在是通过 AWS 销售软件和服
务的统一电子商务平台。有关如何从 AWS Marketplace 部署和销售软件的信息,请参阅在 AWS
Marketplace 上出售。AWS Marketplace 支持受 Amazon EBS 支持的 AMI。
主题
• 出售 AMI (p. 80)
79
Amazon Elastic Compute Cloud Linux 实例用户指南
出售 AMI
• 查找付费 AMI (p. 80)
• 购买付费 AMI (p. 81)
• 获取实例的产品代码 (p. 81)
• 使用付费支持 (p. 82)
• 付费和支持 AMI 的账单 (p. 82)
• 管理 AWS Marketplace 订阅 (p. 82)
出售 AMI
您可以使用 AWS Marketplace 销售 AMI。AWS Marketplace 提供组织有序的购物体验。此外,AWS
Marketplace 还支持 AWS 功能,如 Amazon EBS 支持的 AMI、预留实例和竞价型实例。
有关如何在 AWS Marketplace 上出售 AMI 的信息,请参阅在 AWS Marketplace 上出售。
查找付费 AMI
有几种方法可查找可供您购买的 AMI。例如,您可以使用 AWS Marketplace、Amazon EC2 控制台或命
令行。开发人员自己也可能向您介绍付费 AMI。
使用控制台查找付费 AMI
使用控制台查找付费 AMI
1.
2.
打开 Amazon EC2 控制台。
在导航窗格中,单击 AMIs。
3.
从第一个 Filter (筛选条件) 列表中选择 Public images (公有映像)。单击搜索栏并选择 Product Code
(产品代码),然后选择 Marketplace (市场)。再次单击搜索栏并选择 Platform (平台),然后从列表中
选择操作系统。
使用 AWS Marketplace 查找付费 AMI
使用 AWS Marketplace 查找付费 AMI
1.
2.
打开 AWS Marketplace。
在搜索框中输入操作系统的名称,然后单击 Go (开始)。
3.
4.
要进一步确定结果范围,请使用一种类别或筛选条件。
每个产品都使用其产品类型进行标记:AMI 或Software as a Service。
使用 AWS CLI 查找付费 AMI
可以使用 describe-images 命令查找付费 AMI,如下所示。
$ ec2-describe-images --owners aws-marketplace
此命令返回描述每个 AMI 的大量详细信息,包括付费 AMI 的产品代码。describe-images 的输出包含
一个用于产品代码的条目,如下所示:
"ProductCodes": [
{
80
Amazon Elastic Compute Cloud Linux 实例用户指南
购买付费 AMI
"ProductCodeId": "product_code",
"ProductCodeType": "marketplace"
}
],
使用 Amazon EC2 CLI 查找付费 AMI
可以使用 ec2-describe-images 命令查找付费 AMI,如下所示。
$ ec2-describe-images -o aws-marketplace
此命令返回描述每个 AMI 的大量详细信息,包括付费 AMI 的产品代码。ec2-describe-images 的以下
示例输出包含一个产品代码。
IMAGE
ami-a5bf59cc
image_source
product_code
x86_64
machine
123456789012
available public
instance-store
购买付费 AMI
必须先注册(购买)付费 AMI,然后才能使用该 AMI 启动实例。
通常情况下,付费 AMI 的卖方会为您提供 AMI 的相关信息,包括其价格以及购买网站链接。单击该链接
时,首先会提示您登录 AWS,然后可以购买 AMI。
使用控制台购买付费 AMI
可以使用 Amazon EC2 启动向导购买付费 AMI。有关更多信息,请参阅 启动 AWS Marketplace 实
例 (p. 237)。
使用 AWS Marketplace 订阅产品
要使用 AWS Marketplace,必须拥有 AWS 账户。要从 AWS Marketplace 产品启动实例,必须注册以使
用 Amazon EC2 服务,并且必须订阅从中启动实例的产品。可通过两种方式在 AWS Marketplace 中订阅
产品:
• AWS Marketplace 网站:您可以使用 1-Click 部署功能快速启动预配置的软件。
• Amazon EC2 启动向导:您可以直接从向导搜索 AMI 并启动实例。有关更多信息,请参阅 启动 AWS
Marketplace 实例 (p. 237)。
从开发人员处购买付费 AMI
通过付费 AMI 的开发人员,可以购买 AWS Marketplace 中未列出的付费 AMI。开发人员为您提供用于通
过 Amazon 购买产品的链接。您可以使用 Amazon.com 证书登录,选择存储在您的 Amazon.com 账户中
的信用卡以在购买 AMI 时使用。
获取实例的产品代码
可以使用实例元数据检索实例的 AWS Marketplace 产品代码。有关检索元数据的更多信息,请参阅 实例
元数据和用户数据 (p. 287)。
要检索产品代码,请使用以下查询:
81
Amazon Elastic Compute Cloud Linux 实例用户指南
使用付费支持
$ GET http://169.254.169.254/latest/meta-data/product-codes
如果实例具有产品代码,则 Amazon EC2 将返回产品代码。例如:
774F4FF8
使用付费支持
Amazon EC2 还使开发人员可以为软件(或派生 AMI)提供支持。开发人员可以创建您可注册使用的支
持产品。在注册支持产品的过程中,开发人员会为您提供产品代码,您必须将该代码与您自己的 AMI 关
联起来。这样,开发人员就能确认您的实例有获取支持的权限。此外,还能确保您在运行产品实例时,按
照开发人员指定的产品使用条款付费。
Important
不能将支持产品用于预留实例。通常情况下,您需按支持产品卖方指定的价格付费。
要将产品代码与您的 AMI 相关联,请使用以下命令之一,其中,ami_id 是 AMI 的 ID,product_code 是
产品代码:
• modify-image-attribute (AWS CLI)
$ aws ec2 modify-image-attribute --image-id ami_id --product-codes
"product_code"
• ec2-modify-image-attribute (Amazon EC2 CLI)
$ ec2-modify-image-attribute ami_id --product-code product_code
您设置产品代码属性后,该属性不能被更改或删除。
付费和支持 AMI 的账单
在每个月月底,您会收到一封电子邮件,邮件里注明了该月因使用任何付费和受支持的 AMI 所产生的信
用卡付费金额情况。这个账单与您的常规 Amazon EC2 账单是分开的。有关更多信息,请参阅为 AWS
Marketplace 产品付费。
管理 AWS Marketplace 订阅
在 AWS Marketplace 网站上,您可以检查订阅详细信息,查看供应商的使用说明,管理订阅等。
检查订阅详细信息
1.
登录 AWS Marketplace。
2.
3.
单击 Your Account (我的账户)。
单击 Manage Your Software Subscriptions (管理软件订阅)。
4.
会列出当前所有订阅。单击 Usage Instructions (使用说明) 查看使用产品的特定说明,例如,用于连
接到运行中的实例的用户名称。
82
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 Amazon EBS 支持的 Linux AMI
取消 AWS Marketplace 订阅
1.
2.
3.
确保您终止了从订阅运行的所有实例。
a.
b.
打开 Amazon EC2 控制台。
在导航窗格中,单击 Instances (实例)。
c.
选择实例,单击 Actions (操作),选择 Instance State (实例状态),然后选择 Terminate (终止)。
出现提示时,单击 Yes, Terminate (是,终止)。
登录 AWS Marketplace,单击 Your Account (我的账户),然后单击 Manage Your Software
Subscriptions (管理软件订阅)。
单击 Cancel subscription (取消订阅)。会提示您确认取消。
Note
取消了订阅之后,您无法再从该 AMI 启动任何实例。要再次使用该 AMI,需要在 AWS
Marketplace 网站上或通过 Amazon EC2 控制台中的启动向导重新订阅它。
创建 Amazon EBS 支持的 Linux AMI
Abstract
从 Amazon EBS 支持的自定义 Linux 实例创建您自己的 AMI。
要创建 Amazon EBS 支持的 Linux AMI,请通过从 Amazon EBS 支持的现有 Linux AMI 启动的实例开始
进行。根据您自己的需要自定义该实例之后,请创建和注册新 AMI,您可以使用该 AMI 启动具有这些自
定义项的新实例。有关创建 Amazon EBS 支持的 Windows AMI 的更多信息,请参阅 Amazon EC2 用户
指南(适用于 Microsoft Windows 实例) 中的创建 Amazon EBS 支持的 Windows AMI。
下述过程适用于由加密的 Amazon EBS 卷(包括根卷)支持的 Amazon EC2 实例,也适用于未加密卷。
用于由实例存储支持的 AMI 的 AMI 创建过程有些不同。有关 Amazon EBS 支持的实例和实例存储支持
的实例之间的差别以及如何确定实例的根设备类型的更多信息,请参阅根设备存储 (p. 64)。有关创建实
例存储支持的 Linux AMI 的更多信息,请参阅创建由实例存储支持的 Linux AMI (p. 86)。
创建 Amazon EBS 支持的 AMI 的概述
首先,从类似于您要创建的 AMI 的 AMI 启动实例。您可以连接到您的实例并进行自定义。正确配置实例
后,通过在创建 AMI 和映像之前停止实例来确保数据完整性。当您创建 Amazon EBS 支持的 AMI 时,
我们会自动为您注册它。
Amazon EC2 先切断实例的电源再创建 AMI,以确保创建过程中实例上的所有内容均停止并保持一致状
态。如果您确信您的实例处于适合 AMI 创建的一致状态,则可以告知 Amazon EC2 不断电和重启实例。
一些文件系统(例如 XFS)可以冻结和解冻活动,因此能在不重启实例的情况下安全创建映像。
在 AMI 创建过程中,Amazon EC2 会创建您实例的根卷和附加到您实例的任何其他 EBS 卷的快照。如果
有任何附加到实例的卷进行了加密,则新 AMI 只会在支持 Amazon EBS 加密 的实例上成功启动。有关更
多信息,请参阅 Amazon EBS Encryption (p. 631)。
根据卷的大小,可能需要几分钟才能完成 AMI 创建过程(有时长达 24 小时)。您可能发现在创建 AMI
之前创建卷快照更有效。这样,创建 AMI 时就只需创建小的增量快照,且创建过程完成得更快(快照创
建的总时间保持不变)。有关更多信息,请参阅 创建 Amazon EBS 快照 (p. 624)。
83
Amazon Elastic Compute Cloud Linux 实例用户指南
从实例创建 Linux AMI
该过程完成之后,您便具有从实例的根卷创建的新 AMI 和快照。当您使用新 AMI 启动实例时,我们会使
用快照为其根卷创建新 EBS 卷。AMI 和快照都会对您的账户产生费用,直至您删除它们。有关更多信息,
请参阅 取消注册您的 AMI (p. 107)。
如果除了根设备卷之外,您还向实例添加了实例存储卷或 EBS 卷,则新 AMI 的块储存设备映射包含这些
卷的信息,并且您从新 AMI 启动的实例的块储存设备映射自动包含这些卷的信息。新实例的块储存设备
映射中指定的实例存储卷是新的,不包含用于创建 AMI 的实例的实例存储卷中的任何数据。EBS 卷上的
数据会持久保留。有关更多信息,请参阅 块储存设备映射 (p. 659)。
从实例创建 Linux AMI
可以使用 AWS 管理控制台或命令行创建 AMI。下图总结了从正在运行的 EC2 实例创建 Amazon EBS 支
持的 AMI 的过程。从现有 AMI 开始,启动一个实例,自定义该实例,从该实例创建新 AMI,并最终启动
新 AMI 的实例。下图中的步骤与下面的过程中的步骤匹配。
使用控制台从实例创建 AMI
1.
2.
3.
选择适当的由 EBS 支持的 AMI 作为新 AMI 的起始点,并在启动前根据需要对其进行配置。有关更
多信息,请参阅 启动实例 (p. 230)。
选择 Launch 以启动您选择的由 EBS 支持的 AMI 实例。接受默认值,以按向导逐步操作。有关更多
信息,请参阅 启动实例 (p. 230)。
在实例运行时连接到该实例。
您可以对您的实例执行以下任何操作,以便根据您的需求自定义该实例:
•
•
•
•
安装软件和应用程序
复制数据
通过删除临时文件、对您的硬盘进行碎片整理以及将可用空间清零来缩短启动时间
连接其他 Amazon EBS 卷
(可选)创建所有附加到您实例的卷的快照。有关创建快照的更多信息,请参阅创建 Amazon EBS
快照 (p. 624)。
在导航窗格中,选择 Instances,然后选择您的实例。依次选择 Actions、Image 和 Create Image。
Tip
如果此选项处于禁用状态,则表明您的实例不是 Amazon EBS 支持的实例。
4.
在 Create Image 对话框中,指定以下字段的值,然后选择 Create Image。
名称
图像的唯一名称。
说明
(可选)图像的描述(最多 255 个字符)。
84
Amazon Elastic Compute Cloud Linux 实例用户指南
从快照创建 Linux AMI
默认情况下,Amazon EC2 将关闭实例,为附加的任意卷拍摄快照,创建和注册 AMI,然后重新启
动实例。如果不希望关闭实例,请选择 No reboot。
Warning
如果您选择 No reboot 选项,则我们无法保证所创建映像的文件系统完整性。
您可以修改根卷、Amazon EBS 卷和实例存储卷,方法如下:
• 要更改根卷的大小,请在 Type (类型) 列中找到 Root (根) 卷,然后填写 Size (大小) 字段。
• 要隐藏用于启动实例的 AMI 块储存设备映射所指定的 Amazon EBS 卷,请在列表中找到该 EBS
卷,然后选择 Delete。
• 要添加 Amazon EBS 卷,请依次选择 Add New Volume、Type 和 EBS,然后填写字段。然后,
当您从新 AMI 启动实例时,这些额外的卷会自动附加到该实例。您必须格式化并安装空卷。您必
须安装基于快照的卷。
• 要隐藏用于启动实例的 AMI 块储存设备映射所指定的实例存储卷,请在列表中找到卷,然后选择
Delete。
• 要添加实例存储卷,请依次选择 Add New Volume、Type 和 Instance Store,然后从 Device 列表
中选择设备名称。当您从新 AMI 启动实例时,这些额外的卷会自动初始化并挂载。这些卷不包含
您的 AMI 所基于的运行实例的实例存储卷上的数据。
5.
6.
7.
在创建 AMI 时,您可以选择导航窗格中的 AMIs 以查看其状态。最初,状态将为 pending。几分钟
后,状态应更改为 available。
(可选)选择导航窗格中的 Snapshots 以查看为新 AMI 创建的快照。您从此 AMI 启动实例时,我们
使用此快照创建其根设备卷。
从新 AMI 启动实例。有关更多信息,请参阅 启动实例 (p. 230)。
正在运行的新实例包含您在之前的步骤中应用的所有自定义项。
使用命令行从实例创建 AMI
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• create-image (AWS CLI)
• ec2-create-image (Amazon EC2 CLI)
• New-EC2Image (适用于 Windows PowerShell 的 AWS 工具)
从快照创建 Linux AMI
如果您有实例的根设备卷的快照,则可以使用 AWS 管理控制台或命令行从此快照创建 AMI。
Important
某些 Linux 分配(如 Red Hat Enterprise Linux (RHEL) 和 SUSE Linux Enterprise Server (SLES))
使用与 AMI 关联的 Amazon EC2 billingProduct 代码来验证程序包更新的订阅状态。从 EBS
快照创建 AMI 不会保留此账单代码,并且从此类 AMI 启动的后续实例不能连接到程序包更新基
础设施。
同样,虽然您可以从快照中创建一个 Windows AMI,但是您不能从该 AMI 中成功启动实例。
一般来说,AWS 不建议从快照手动创建 AMI。
85
Amazon Elastic Compute Cloud Linux 实例用户指南
创建由实例存储支持的 Linux AMI
有关创建 Windows AMI 或创建必须保持 AMI 账单代码正常工作的适用于 Linux 操作系统的 AMI
的更多信息,请参阅从实例创建 Linux AMI (p. 84)。
使用控制台从快照创建 AMI
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在导航窗格中的 Elastic Block Store 下,选择 Snapshots。
依次选择快照、Actions 和 Create Image。
4.
在 Create Image from EBS Snapshot 对话框中,填写与创建 AMI 相关的字段,然后选择 Create。
如果要重新创建父实例,请选择与父实例相同的选项。
• Architecture:对 32 位选择 i386,对 64 位选择 x86_64。
• Root device name:输入相应的根卷名称。有关更多信息,请参阅 Linux 实例上的设备命名 (p. 657)。
• Virtualization type:选择是从此 AMI 使用半虚拟化 (PV) 还是硬件虚拟机 (HVM) 虚拟化启动实例。
有关更多信息,请参阅 Linux AMI 虚拟化类型 (p. 66)。
• (仅限 PV 虚拟化类型)Kernel ID 和 RAM disk ID:从列表中选择 AKI 和 ARI。如果选择默认 AKI
或不选择 AKI,则每次使用此 AMI 启动实例时系统都会要求您指定 AKI。此外,如果默认 AKI 与
实例不兼容,对您的实例进行的运行状况检查可能会失败。
• (可选)Block Device Mappings:添加卷或扩展 AMI 根卷的默认大小。有关调整实例上的文件系
统大小以扩展卷的更多信息,请参阅扩展 Linux 文件系统 (p. 612)。
使用命令行从快照创建 AMI
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• register-image (AWS CLI)
• ec2-register (Amazon EC2 CLI)
• Register-EC2Image (适用于 Windows PowerShell 的 AWS 工具)
创建由实例存储支持的 Linux AMI
Abstract
从由实例存储支持的自定义 Linux 实例创建自己的 AMI。
要创建由实例存储支持的 Linux AMI,请通过从由实例存储支持的现有 Linux AMI 启动的实例开始进行。
根据您自己的需要自定义该实例之后,请捆绑卷并注册新 AMI,您可以使用该 AMI 启动具有这些自定义
项的新实例。
如果您需要创建实例存储支持的 Windows AMI,请参阅 Amazon EC2 用户指南(适用于 Microsoft Windows
实例) 中的创建实例存储支持的 Windows AMI。
用于由实例存储支持的 AMI 的 AMI 创建过程有些不同。有关 Amazon EBS 支持的实例和实例存储支持
的实例之间的差别,以及如何确定实例的根设备类型的更多信息,请参阅根设备存储 (p. 64)。如果您需
要创建 Amazon EBS 支持的 Linux AMI,请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83)。
由实例存储支持的 AMI 的创建过程概述
下图总结了从由实例存储支持的实例创建 AMI 的过程。
86
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
首先,从类似于您要创建的 AMI 的 AMI 启动实例。您可以连接到您的实例并进行自定义。根据您的需要
设置好实例后,您可以捆绑它。完成捆绑过程需要几分钟的时间。该过程完成后,会有一个捆绑,由映像
清单 (image.manifest.xml) 和文件 (image.part.xx) 组成,文件中包含根卷模板。接下来,将该捆
绑上传到 Amazon S3 存储桶,然后注册您的 AMI。
当您使用新 AMI 启动实例时,我们会使用您上传到 Amazon S3 的捆绑为实例创建根卷。Amazon S3 中
的捆绑使用的存储空间会使您的账户产生费用,直到将其删除。有关更多信息,请参阅 取消注册您的
AMI (p. 107)。
如果除了根设备卷之外,您还向实例添加实例存储卷,则新 AMI 的块储存设备映射包含这些卷的信息,
并且您从新 AMI 启动的实例的块储存设备映射自动包含这些卷的信息。有关更多信息,请参阅 块储存设
备映射 (p. 659)。
先决条件
必须先完成以下任务才能创建 AMI:
• 安装 AMI 工具。有关更多信息,请参阅设置 AMI 工具。
• 安装 API 工具。有关更多信息,请参阅在 Linux 上设置 Amazon EC2 命令行界面工具。
• 确保您具有用于捆绑的 Amazon S3 存储桶。要创建 Amazon S3 存储桶,请打开 Amazon S3 控制台,
然后单击 Create Bucket (创建存储桶)。
Note
您还可以使用 AWS CLI mb 命令创建存储桶。若要开始使用 AWS CLI,请参阅 AWS Command
Line Interface 用户指南。
• 确保您具有以下证书:
• 您的 AWS 账户 ID。要在 AWS 管理控制台 中查找 AWS 账户 ID 号,请在右上角的导航栏中单击
Support (支持),然后单击 Support Center (支持中心)。当前登录的账户 ID 会出现在 Support (支持)
菜单下。
• X.509 证书和对应的私有密钥。如果您需要创建 X.509 证书,请参阅 Amazon EC2 命令行参考 中的
管理签名证书。X.509 证书和私有密钥用于加密和解密您的 AMI。
• 您的 AWS 账户访问密钥 ID 和秘密密钥。有关更多信息,请参阅 IAM 用户指南 中的创建、修改和查
看访问密钥。
• 连接到您的实例并进行自定义。例如,您可以安装软件和应用程序、复制数据、删除临时文件及修改
Linux 配置。
87
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Amazon Linux 实例创建 AMI
通过实例存储支持的 Amazon Linux 实例创建 AMI
本节介绍如何通过 Amazon Linux 实例创建 AMI。以下过程可能不适用于运行其他 Linux 分配的实例。有
关特定于 Ubuntu 的过程,请参阅 the section called “通过实例存储支持的 Ubuntu 实例创建 AMI” (p. 91)。
准备使用 Amazon EC2 AMI 工具(仅限 HVM 实例)
1.
Amazon EC2 AMI 工具需要正确启动传统 GRUB。使用以下命令安装 GRUB:
[ec2-user ~]$ sudo yum install -y grub
2.
使用以下命令安装分区管理程序包:
[ec2-user ~]$ sudo yum install -y gdisk kpartx parted
通过实例存储支持的 Linux 实例创建 AMI
此过程假设您满足先决条件 (p. 87)中的先决条件。
1.
将您的证书上传到您的实例。我们使用这些证书确保只有您和 Amazon EC2 才能访问您的 AMI。
a.
在您的实例上为证书创建临时目录,如下所示:
[ec2-user ~]$ mkdir /tmp/cert
b.
这使您可以从创建的映像中排除您的证书。
使用安全复制工具(如 scp (p. 241))将 X.509 证书和对应的私有密钥从您的计算机复制到实例
上的 /tmp/cert 目录中。以下 scp 命令中的 -i my-private-key.pem 选项是用来通过 SSH
连接到实例的私有密钥,而不是 X.509 私有密钥。例如:
[email protected]_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYK
TAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXY
IBH3HXV4ZBEXAMPLE.pem [email protected]
aws.com:/tmp/cert/
pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717
0.7KB/s
00:00
cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 685
0.7KB/s
00:00
此外,由于这些是纯文本文件,所以您可以在文本编辑器中打开证书和密钥,并将其内容复制到
/tmp/cert 中的新文件。
2.
通过从您的实例内部运行 ec2-bundle-vol 命令,准备捆绑包以便上传到 Amazon S3。请务必指定 -e
选项以排除用于存储您的证书的目录。默认情况下,捆绑过程不包括可能包含敏感信息的文件。这些
文件包括 *.sw、*.swo、*.swp、*.pem、*.priv、*id_rsa*、*id_dsa* *.gpg、*.jks、
*/.ssh/authorized_keys 和 */.bash_history。要包括所有这些文件,请使用 --no-filter
选项。要包括其中部分文件,请使用 --include 选项。
Important
默认情况下,AMI 捆绑过程在表示根卷的 /tmp 目录中创建经过压缩和加密的文件集合。如
果 /tmp 中没有足够的可用磁盘空间来存储捆绑,则需要使用 -d
88
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Amazon Linux 实例创建 AMI
/path/to/bundle/storage 选项指定其他捆绑存储位置。某些实例在 /mnt 或
/media/ephemeral0 上安装您可以使用的短暂存储,您也可以创建 (p. 591)、连接 (p. 595)
和安装 (p. 596)新的 Amazon EBS 卷来存储捆绑。
a.
ec2-bundle-vol 命令需要作为 root 运行。对于大多数命令,您可以使用 sudo 获取提升的权限,
但在这种情况下,您应运行 sudo -E su 以保留环境变量。
[ec2-user ~]$ sudo -E su
请注意,在 bash 提示符下现在将您标识为根用户,并且美元符号已替换为哈希标签,表示您现
在处于 root shell 中:
[root ec2-user]#
b.
要创建 AMI 捆绑包,请运行带有以下形参和实参的 ec2-bundle-vol 命令。
参数
参数
-c
RSA 证书的路径和文件名
-k
RSA 证书私有密钥的路径和文件名
--partition
分区类型:mbr、gpt 或 none。HVM 实例中的 AMI 在没有此分区类型的情况下将不
-r
CPU 架构:i386 或 x86_64。您可以通过运行 arch 命令检查此架构。
-u
您的 AWS 用户账户 ID
-e
要从已创建映像中排除的目录的逗号分隔列表。
-d
如果默认目录 /tmp 的空间不足以存放捆绑包,可以在此提供具有足够空间的目录的路
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-bundle-vol。
下面是 ec2-bundle-vol 命令示例:
[root ec2-user]# $EC2_AMITOOL_HOME/bin/ec2-bundle-vol -k /tmp/cert/pkHKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXY
IBH3HXV4ZBEXAMPLE.pem -u your_aws_account_id -r x86_64 -e /tmp/cert -partition gpt
创建映像可能需要几分钟时间。此命令执行完后,/tmp(或非默认)目录中包含捆绑包
(image.manifest.xml 以及多个 image.part.xx 文件)。
c.
从 root shell 退出。
[root ec2-user]# exit
3.
(可选)编辑 image.manifest.xml 文件中您的 AMI 所对应的块储存设备映射。对于实例存储支
持的 AMI,只能在创建 AMI 时在块储存设备映射中指定实例存储卷,这些映射是在
image.manifest.xml 文件中指定的。有关更多信息,请参阅 块储存设备映射 (p. 659)。
89
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Amazon Linux 实例创建 AMI
Note
只有当您希望在 AMI 上添加一个或多个其他实例存储卷时,才需要执行此步骤。
a.
创建 image.manifest.xml 文件的备份。
[ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
b.
重新设置 image.manifest.xml 文件的格式,使其更易于阅读和编辑。
[ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak >
/tmp/image.manifest.xml
c.
使用文本编辑器编辑 image.manifest.xml 中的块储存设备映射。以下示例显示了 ephemeral1
实例存储卷的一个新条目。
<block_device_mapping>
<mapping>
<virtual>ami</virtual>
<device>sda</device>
</mapping>
<mapping>
<virtual>ephemeral0</virtual>
<device>sdb</device>
</mapping>
<mapping>
<virtual>ephemeral1</virtual>
<device>sdc</device>
</mapping>
<mapping>
<virtual>root</virtual>
<device>/dev/sda1</device>
</mapping>
</block_device_mapping>
d.
4.
保存 image.manifest.xml 文件并退出文本编辑器。
要将捆绑包上传到 Amazon S3,请运行带有以下形参和实参的 ec2-upload-bundle 命令。
参数
参数
-b
S3 存储桶位置:my-s3-bucket/bundle_folder/bundle_name。请注意,如果存储桶和
在,此命令将会创建。
-m
image.manifest.xml 的路径。如果在 Step 2 (p. 88) 中使用 -d /path/to/bundle/s
路径,请在 -m 参数中使用该同一路径。
-a
您的 AWS 账户访问密钥 ID
-s
您的 AWS 账户私有访问密钥
--region
如果您打算在美国东部(弗吉尼亚北部)之外的区域中注册 AMI,则必须指定带 --regio
目标区域中已存在的存储桶路径或可在目标区域中创建的唯一存储桶路径。
90
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-upload-bundle。
下面是 ec2-upload-bundle 命令示例:
[ec2-user ~]$ ec2-upload-bundle -b my-s3-bucket/bundle_folder/bundle_name
-m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
5.
(可选)将捆绑上传到 Amazon S3 之后,可以使用以下 rm 命令从实例上的 /tmp 目录删除捆绑:
Note
如果在Step 2 (p. 88)中使用 -d /path/to/bundle/storage 选项指定了路径,请在下面
使用该路径,而不使用 /tmp。
[ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
6.
要注册 AMI,请运行带有以下形参和实参的 ec2-register 命令。
参数
参数
清单路径
my-s3-bucket/bundle_folder/bundle_name/image.manifest.
-n
AMI 的名称
-O
您的 AWS 账户访问密钥 ID
-W
您的 AWS 账户私有访问密钥
--virtualization-type
可能的值为 hvm 和 paravirtual。
--region
如果您先前为 ec2-upload-bundle 命令指定了某个区域,请为此命令再次
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-register。
下面是 ec2-register 命令示例:
[ec2-user ~]$ ec2-register my-s3-bucket/bundle_folder/bundle_name/image.mani
fest.xml -n AMI_name -O your_access_key_id -W your_secret_access_key --vir
tualization-type hvm
7.
通过实例存储支持的 Ubuntu 实例创建 AMI
本节介绍如何通过 Ubuntu Linux 实例创建 AMI。以下过程可能不适用于运行其他 Linux 分配的实例。有
关特定于 Amazon Linux 的过程,请参阅 the section called “通过实例存储支持的 Amazon Linux 实例创
建 AMI” (p. 88)。
准备使用 Amazon EC2 AMI 工具(仅限 HVM 实例)
Amazon EC2 AMI 工具需要正确启动传统 GRUB。不过,Ubuntu 配置为使用 GRUB 2。您必须检查您的
实例是否使用传统 GRUB,如果未使用,您需要安装并配置它。
91
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
HVM 实例还需要安装分区工具,以便 AMI 工具可以正常工作。
1.
传统 GRUB(版本 0.9x 或更早版本)必须安装在您的实例上。检查传统 GRUB 是否存在,并根据需
要安装它。
a.
检查您的 GRUB 安装版本。
ubuntu:~$ grub-install --version
grub-install (GRUB) 1.99-21ubuntu3.10
b.
在该示例中,GRUB 版本高于 0.9x,因此必须安装传统 GRUB。继续执行Step 1.b (p. 92)。如
果传统 GRUB 已存在,您可以跳到Step 2 (p. 92)。
使用以下命令安装 grub 程序包。
ubuntu:~$ sudo apt-get install -y grub
验证您的实例是否正在使用传统 GRUB:
ubuntu:~$ grub --version
grub (GNU GRUB 0.97)
2.
使用您发布版的软件包管理器安装以下分区管理软件包。
• gdisk(此软件包在某些发布版可能名为 gptfdisk)
• kpartx
• parted
使用以下 命令。
ubuntu:~$ sudo apt-get install -y gdisk kpartx parted
3.
检查您实例的内核参数。
ubuntu:~$ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-3.2.0-54-virtual root=UUID=4f392932-ed93-4f8f-aee772bc5bb6ca9d ro console=ttyS0 xen_emul_unplug=unnecessary
请注意内核和根设备参数之后的选项 ro、console=ttyS0 和 xen_emul_unplug=unnecessary。
您的选项可能有所不同。
4.
检查 /boot/grub/menu.lst 中的内核条目。
ubuntu:~$ grep ^kernel /boot/grub/menu.lst
kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro con
sole=hvc0
kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro single
kernel /boot/memtest86+.bin
请注意,console 参数指向 hvc0 而不是 ttyS0,并且缺少 xen_emul_unplug=unnecessary 参
数。同样,您的选项可能有所不同。
92
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
5.
使用常用文本编辑器(如 vim 或 nano)编辑 /boot/grub/menu.lst 文件以更改控制台并将之前
标识的参数添加到启动条目中。
title
Ubuntu 12.04.3 LTS, kernel 3.2.0-54-virtual
root
(hd0)
kernel
/boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs
ro console=ttyS0 xen_emul_unplug=unnecessary
initrd
/boot/initrd.img-3.2.0-54-virtual
title
Ubuntu 12.04.3 LTS, kernel 3.2.0-54-virtual (recovery mode)
root
(hd0)
kernel
/boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs
ro single console=ttyS0 xen_emul_unplug=unnecessary
initrd
/boot/initrd.img-3.2.0-54-virtual
title
root
kernel
6.
Ubuntu 12.04.3 LTS, memtest86+
(hd0)
/boot/memtest86+.bin
验证您的内核条目现在是否包含正确参数。
ubuntu:~$ grep ^kernel /boot/grub/menu.lst
kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro con
sole=ttyS0 xen_emul_unplug=unnecessary
kernel /boot/vmlinuz-3.2.0-54-virtual root=LABEL=cloudimg-rootfs ro single
console=ttyS0 xen_emul_unplug=unnecessary
kernel /boot/memtest86+.bin
7.
(仅适用于 Ubuntu 14.04 及更高版本)从 Ubuntu 14.04 开始,实例存储支持的 Ubuntu AMI 使用
GPT 分区表和挂载在 /boot/efi 中的单独 EFI 分区。ec2-bundle-vol 命令不会捆绑此启动分区,因
此您需要为 EFI 分区的 /etc/fstab 条目添加注释,如下例所述。
LABEL=cloudimg-rootfs
/
#LABEL=UEFI
/boot/efi
/dev/xvdb
/mnt
auto
2
ext4
defaults
0 0
vfat
defaults
0 0
defaults,nobootwait,comment=cloudconfig 0
通过实例存储支持的 Linux 实例创建 AMI
此过程假设您满足先决条件 (p. 87)中的先决条件。
1.
将您的证书上传到您的实例。我们使用这些证书确保只有您和 Amazon EC2 才能访问您的 AMI。
a.
在您的实例上为证书创建临时目录,如下所示:
ubuntu:~$ mkdir /tmp/cert
这使您可以从创建的映像中排除您的证书。
b.
使用安全复制工具(如 scp (p. 241))将 X.509 证书和私有密钥从您的计算机复制到实例上的
/tmp/cert 目录。以下 scp 命令中的 -i my-private-key.pem 选项是用来通过 SSH 连接
到实例的私有密钥,而不是 X.509 私有密钥。例如:
93
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
[email protected]_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYK
TAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXY
IBH3HXV4ZBEXAMPLE.pem [email protected]
aws.com:/tmp/cert/
pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717
0.7KB/s
00:00
cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 685
0.7KB/s
00:00
此外,由于这些是纯文本文件,所以您可以在文本编辑器中打开证书和密钥,并将其内容复制到
/tmp/cert 中的新文件。
2.
通过从您的实例内部运行 ec2-bundle-vol 命令,准备捆绑包以便上传到 Amazon S3。请务必指定 -e
选项以排除用于存储您的证书的目录。默认情况下,捆绑过程不包括可能包含敏感信息的文件。这些
文件包括 *.sw、*.swo、*.swp、*.pem、*.priv、*id_rsa*、*id_dsa* *.gpg、*.jks、
*/.ssh/authorized_keys 和 */.bash_history。要包括所有这些文件,请使用 --no-filter
选项。要包括其中部分文件,请使用 --include 选项。
Important
默认情况下,AMI 捆绑过程在表示根卷的 /tmp 目录中创建经过压缩和加密的文件集合。如
果 /tmp 中没有足够的可用磁盘空间来存储捆绑,则需要使用 -d
/path/to/bundle/storage 选项指定其他捆绑存储位置。某些实例在 /mnt 或
/media/ephemeral0 上安装您可以使用的短暂存储,您也可以创建 (p. 591)、连接 (p. 595)
和安装 (p. 596)新的 Amazon EBS 卷来存储捆绑。
a.
ec2-bundle-vol 命令需要作为 root 运行。对于大多数命令,您可以使用 sudo 获取提升的权限,
但在这种情况下,您应运行 sudo -E su 以保留环境变量。
ubuntu:~$ sudo -E su
请注意,在 bash 提示符下现在将您标识为根用户,并且美元符号已替换为哈希标签,表示您现
在处于 root shell 中:
[email protected]:#
b.
要创建 AMI 捆绑包,请运行带有以下形参和实参的 ec2-bundle-vol 命令。
参数
参数
-c
RSA 证书的路径和文件名
-k
RSA 证书私有密钥的路径和文件名
--partition
分区类型:mbr、gpt 或 none。对于 Ubuntu 14.04 及更高版本的 HVM 实例,请添加
志以正确捆绑启动指令;否则,新创建的 AMI 不会启动。
-r
CPU 架构:i386 或 x86_64。您可以通过运行 arch 命令检查此架构。
-u
您的 AWS 用户账户 ID
-e
要从已创建映像中排除的目录的逗号分隔列表。
-d
如果默认目录 /tmp 的空间不足以存放捆绑包,可以在此提供具有足够空间的目录的路
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-bundle-vol。
94
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
下面是 ec2-bundle-vol 命令示例:
[email protected]:# $EC2_AMITOOL_HOME/bin/ec2-bundle-vol -k /tmp/cert/pkHKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXY
IBH3HXV4ZBEXAMPLE.pem -u your_aws_account_id -r x86_64 -e /tmp/cert -partition gpt
创建映像可能需要几分钟时间。此命令执行完后,tmp 目录包含捆绑(image.manifest.xml
以及多个 image.part.xx 文件)。
c.
从 root shell 退出。
[email protected]:# exit
3.
(可选)编辑 image.manifest.xml 文件中您的 AMI 所对应的块储存设备映射。对于实例存储支
持的 AMI,只能在创建 AMI 时在块储存设备映射中指定实例存储卷,这些映射是在
image.manifest.xml 文件中指定的。有关更多信息,请参阅 块储存设备映射 (p. 659)。
Note
只有当您希望在 AMI 上添加一个或多个其他实例存储卷时,才需要执行此步骤。
a.
创建 image.manifest.xml 文件的备份。
ubuntu:~$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
b.
重新设置 image.manifest.xml 文件的格式,使其更易于阅读和编辑。
ubuntu:~$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/im
age.manifest.xml
c.
使用文本编辑器编辑 image.manifest.xml 中的块储存设备映射。以下示例显示了 ephemeral1
实例存储卷的一个新条目。
<block_device_mapping>
<mapping>
<virtual>ami</virtual>
<device>sda</device>
</mapping>
<mapping>
<virtual>ephemeral0</virtual>
<device>sdb</device>
</mapping>
<mapping>
<virtual>ephemeral1</virtual>
<device>sdc</device>
</mapping>
<mapping>
<virtual>root</virtual>
<device>/dev/sda1</device>
</mapping>
</block_device_mapping>
95
Amazon Elastic Compute Cloud Linux 实例用户指南
通过实例存储支持的 Ubuntu 实例创建 AMI
d.
4.
保存 image.manifest.xml 文件并退出文本编辑器。
要将捆绑包上传到 Amazon S3,请运行带有以下形参和实参的 ec2-upload-bundle 命令。
参数
参数
-b
S3 存储桶位置:my-s3-bucket/bundle_folder/bundle_name。请注意,如果存储桶和
在,此命令将会创建。
-m
image.manifest.xml 的路径。如果在 Step 2 (p. 94) 中使用 -d /path/to/bundle/s
路径,请在 -m 参数中使用该同一路径。
-a
您的 AWS 账户访问密钥 ID
-s
您的 AWS 账户私有访问密钥
--region
如果您打算在美国东部(弗吉尼亚北部)之外的区域中注册 AMI,则必须指定带 --regio
目标区域中已存在的存储桶路径或可在目标区域中创建的唯一存储桶路径。
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-upload-bundle。
下面是 ec2-upload-bundle 命令示例:
ubuntu:~$ ec2-upload-bundle -b my-s3-bucket/bundle_folder/bundle_name -m
/tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
5.
(可选)将捆绑上传到 Amazon S3 之后,可以使用以下 rm 命令从实例上的 /tmp 目录删除捆绑:
Note
如果在Step 2 (p. 94)中使用 -d /path/to/bundle/storage 选项指定了路径,请在下面
使用该路径,而不使用 /tmp。
ubuntu:~$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
6.
要注册 AMI,请运行带有以下形参和实参的 ec2-register 命令。
参数
参数
清单路径
my-s3-bucket/bundle_folder/bundle_name/image.manifest.
-n
AMI 的名称
-O
您的 AWS 账户访问密钥 ID
-W
您的 AWS 账户私有访问密钥
--virtualization-type
可能的值为 hvm 和 paravirtual。
--region
如果您先前为 ec2-upload-bundle 命令指定了某个区域,请为此命令再次
有关此命令及其可用选项的更多信息,请参阅 Amazon EC2 命令行参考 中的 ec2-register。
下面是 ec2-register 命令示例:
96
Amazon Elastic Compute Cloud Linux 实例用户指南
将实例存储支持的 AMI 转换为 Amazon EBS 支持的 AMI
ubuntu:~$ ec2-register my-s3-bucket/bundle_folder/bundle_name/image.mani
fest.xml -n AMI_name -O your_access_key_id -W your_secret_access_key --vir
tualization-type hvm
7.
(仅适用于 Ubuntu 14.04 及更高版本)在 /etc/fstab 中取消对 EFI 条目的注释;否则,正在运行
的实例不会重启。
将实例存储支持的 AMI 转换为 Amazon EBS 支持的
AMI
您可以将拥有的实例存储支持的 Linux AMI 转换为 Amazon EBS 支持的 Linux AMI。
Important
您无法将实例存储支持的 Windows AMI 转换为 Amazon EBS 支持的 Windows AMI,并且无法
转换您不拥有的 AMI。
将由实例存储支持的 AMI 转换为由 Amazon EBS 支持的 AMI
1.
2.
从 Amazon EBS 支持的 AMI 启动 Amazon Linux 实例。有关更多信息,请参阅启动实例 (p. 230)。
Amazon Linux 实例会预安装 Amazon EC2 命令行和 AMI 工具。
上传您用于将实例存储支持的 AMI 捆绑到实例的 X.509 私有密钥。我们使用此密钥确保只有您和
Amazon EC2 才能访问您的 AMI。
a.
在您的实例上为 X.509 私有密钥创建临时目录,如下所示:
[ec2-user ~]$ mkdir /tmp/cert
b.
使用安全复制工具(如 scp (p. 241))将 X.509 私有密钥从您的计算机复制到实例上的 /tmp/cert
目录。以下命令中的 my-private-key 参数是您用于通过 SSH 连接到实例的私有密钥。例如:
[email protected]_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYK
TAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem [email protected]:/tmp/cert/
pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717
0.7KB/s
00:00
3.
为您的 AWS 访问密钥和私有密钥设置环境变量。
[ec2-user ~]$ export AWS_ACCESS_KEY=your_access_key_id
[ec2-user ~]$ export AWS_SECRET_KEY=your_secret_access_key
4.
为新 AMI 准备 Amazon EBS 卷。
a.
使用 ec2-create-volume 命令在与您实例相同的可用区中创建空 Amazon EBS 卷。记下命令输
出中的卷 ID。
Important
此 Amazon EBS 卷不小于原始实例存储根卷。
97
Amazon Elastic Compute Cloud Linux 实例用户指南
将实例存储支持的 AMI 转换为 Amazon EBS 支持的 AMI
[ec2-user ~]$ ec2-create-volume --size 10 --region us-west-2 --availab
ility-zone us-west-2b
VOLUME volume_id 10 us-west-2b creating 2014-01-24T23:11:45+0000
standard
b.
使用 ec2-attach-volume 命令将该卷连接到 Amazon EBS 支持的实例。
[ec2-user ~]$ ec2-attach-volume volume_id -i instance_id --device /dev/sdb
--region us-west-2
ATTACHMENT volume_id instance_id /dev/sdb attaching 2014-0124T23:15:34+0000
5.
创建用于捆绑的文件夹。
[ec2-user ~]$ mkdir /tmp/bundle
6.
使用 ec2-download-bundle 命令,将基于实例存储的 AMI 的捆绑下载到 /tmp/bundle。
[ec2-user ~]$ ec2-download-bundle -b my-s3-bucket/bundle_folder/bundle_name
-m image.manifest.xml -a $AWS_ACCESS_KEY -s $AWS_SECRET_KEY --privatekey
/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle
7.
使用 ec2-unbundle 命令从捆绑重新构建映像文件。
a.
将目录更改为捆绑文件夹。
[ec2-user ~]$ cd /tmp/bundle/
b.
运行 ec2-unbundle 命令。
[ec2-user bundle]$ ec2-unbundle -m image.manifest.xml --privatekey
/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
8.
将文件从未捆绑的映像复制到新 Amazon EBS 卷。
[ec2-user bundle]$ sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
9.
探测所有未捆绑的新分区的卷。
[ec2-user bundle]$ sudo partprobe /dev/sdb
10. 列出块储存设备以查找要挂载的设备名称。
[ec2-user bundle]$ lsblk
NAME
MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
98
Amazon Elastic Compute Cloud Linux 实例用户指南
将实例存储支持的 AMI 转换为 Amazon EBS 支持的 AMI
/dev/sda
/dev/sda1
/dev/sdb
/dev/sdb1
202:0
202:1
202:80
202:81
0
0
0
0
8G
8G
10G
10G
0
0
0
0
disk
part /
disk
part
在此示例中,要挂载的分区是 /dev/sdb1,但您的设备名称可能有所不同。如果您的卷未分区,则
要挂载的设备类似于 /dev/sdb(没有设备分区尾部数字)。
11. 为新 Amazon EBS 卷创建安装点并安装该卷。
[ec2-user bundle]$ sudo mkdir /mnt/ebs
[ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs
12. 使用常用文本编辑器(如 vim 或 nano)打开 EBS 卷上的 /etc/fstab 文件,并删除任何实例存储
(短暂)卷条目。由于 Amazon EBS 卷安装在 /mnt/ebs 上,fstab 文件位于 /mnt/ebs/etc/fstab
中。
[ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
#
LABEL=/
/
ext4
defaults,noatime 1
1
tmpfs
/dev/shm
tmpfs
defaults
0
0
devpts
/dev/pts
devpts gid=5,mode=620 0
0
sysfs
/sys
sysfs
defaults
0
0
proc
/proc
proc
defaults
0
0
/dev/sdb
/media/ephemeral0
auto
defaults,comment=cloudconfig
0
2
在上面的示例中,应删除最后一行。
13. 从实例中卸载和分离该卷。
[ec2-user bundle]$ sudo umount /mnt/ebs
[ec2-user bundle]$ ec2-detach-volume volume_id --region us-west-2
ATTACHMENT volume_id instance_id /dev/sdb detaching 2014-01-24T23:15:34+0000
14. 按如下所示从新 Amazon EBS 卷创建 AMI。
a.
创建新 Amazon EBS 卷的快照。
[ec2-user bundle]$ ec2-create-snapshot --region us-west-2 -d
"your_snapshot_description" -O $AWS_ACCESS_KEY -W $AWS_SECRET_KEY
volume_id
SNAPSHOT snapshot_id volume_id pending 2014-01-25T00:18:48+000
1234567891011 10 your_snapshot_description
b.
检查快照是否完整。
[ec2-user bundle]$ ec2-describe-snapshots --region us-west-2 snapshot_id
SNAPSHOT snapshot_id volume_id completed 2014-01-25T00:18:48+0000 100%
1234567891011 10 your_snapshot_description
c.
使用 ec2-describe-images 命令确定在原始 AMI 上使用的处理器架构、虚拟化类型和内核映像
(aki)。对于此步骤,您需要实例存储支持的原始 AMI 的 AMI ID。
99
Amazon Elastic Compute Cloud Linux 实例用户指南
带加密快照的 AMI
[ec2-user bundle]$ ec2-describe-images --region us-west-2 ami-id
IMAGE ami-8ef297be amazon/amzn-ami-pv-2013.09.2.x86_64-s3 amazon available
public x86_64 machine aki-fc8f11cc
instance-store paravirtual xen
在此示例中,架构是 x86_64,内核映像 ID 是 aki-fc8f11cc。在以下步骤中使用这些值。如
果上面命令的输出还列出 ari ID,请记下该 ID。
d.
使用新 Amazon EBS 卷的快照 ID 和上一步中得到的值注册新 AMI。如果前一命令输出列出了
ari ID,请通过 --ramdisk ari_id 将其包括在后续命令中。
[ec2-user bundle]$ ec2-register --region us-west-2 -n your_new_ami_name
-s snapshot_id -a x86_64 --kernel aki-fc8f11cc
IMAGE new-ami-id
15. (可选)测试了您可以从新 AMI 启动实例之后,您可以删除为此过程创建的 Amazon EBS 卷。
$ ec2-delete-volume volume_id
带加密快照的 AMI
Abstract
在各种配置中将 EBS 加密与 AMI 结合使用。
由 Amazon EBS 快照支持的 AMI 可以利用 Amazon EBS 加密。可以将数据和根卷的快照加密并附加到
AMI。
带加密卷的 EC2 实例从 AMI 中启动的方式与其他实例的相同。
CopyImage 操作可用于从带未加密快照的 AMI 创建带加密快照的 AMI。默认情况下,在创建目标副本
时,CopyImage 会保留源快照的加密状态。但是,您也可以配置复制过程的参数来加密目标快照。
可使用您的默认 AWS Key Management Service 客户主密钥 (CMK),或您指定的自定义密钥加密快照。
在所有情况下,您都必须拥有使用所选密钥的权限。如果您拥有带加密快照的 AMI,则可以选择使用其他
加密密钥对其重新加密以作为 CopyImage 操作的一部分。CopyImage 一次只接受一个密钥并且会将映
像的所有快照(无论是根还是数据)加密到该密钥。但是,无法使用加密到多个密钥的快照手动构建
AMI。
对创建带加密快照的 AMI 的支持可通过 Amazon EC2 控制台、Amazon EC2 API、Amazon EC2 命令行
或 AWS CLI 获得。
CopyImage 的加密参数在 AWS KMS 可用的所有区域中都可用。
涉及加密的 EBS 快照的 AMI 情景
您可以使用 AWS 管理控制台或命令行复制 AMI 并同时对与其关联的 EBS 快照进行加密。
复制带加密数据快照的 AMI
在此方案中,EBS 支持的 AMI 拥有未加密的根快照和加密的数据快照,如步骤 1 所示。在步骤 2 中,
CopyImage 操作在没有加密参数的情况下调用。因此,将保留每个快照的加密状态,以便让目标 AMI(如
100
Amazon Elastic Compute Cloud Linux 实例用户指南
涉及加密的 EBS 快照的 AMI 情景
步骤 3 所示)也由未加密的根快照和加密的数据快照提供支持。尽管这两种快照包含相同的数据,但两者
是截然不同的,两个 AMI 中的快照都将产生存储费用,从任一 AMI 启动的任何实例也将产生费用。
您可以使用 Amazon EC2 控制台或命令行执行简单复制(如上述复制)。有关更多信息,请参阅 复制
AMI (p. 103)。
复制由加密的根快照支持的 AMI
在此方案中,Amazon EBS 支持的 AMI 拥有加密的根快照,如步骤 1 所示。在步骤 2 中,CopyImage
操作在没有加密参数的情况下调用。因此,将保留快照的加密状态,以便让目标 AMI(如步骤 3 所示)
也由加密的根快照支持。尽管这两种根快照包含相同的系统数据,但两者是截然不同的,两个 AMI 中的
快照都将产生存储费用,从任一 AMI 启动的任何实例也将产生费用。
您可以使用 Amazon EC2 控制台或命令行执行简单复制(如上述复制)。有关更多信息,请参阅 复制
AMI (p. 103)。
从未加密的 AMI 创建带加密的根快照的 AMI
在此方案中,Amazon EBS 支持的 AMI 拥有未加密的根快照(如步骤 1 所示),将创建带加密的根快照
的 AMI(如步骤 3 所示)。步骤 2 中的 CopyImage 操作将通过两个加密参数(包括选择 CMK)调用。
因此,根快照的加密状态将更改,以便让目标 AMI 由包含与源快照相同的数据但使用指定密钥进行加密
的根快照提供支持。两个 AMI 中的快照都将产生存储费用,从任一 AMI 启动的任何实例也将产生费用。
您可以使用 Amazon EC2 控制台或命令行执行复制和加密操作(如上述操作)。有关更多信息,请参阅
复制 AMI (p. 103)。
从正在运行的实例创建带加密的根快照的 AMI
在此方案中,将从正在运行的 EC2 实例创建 AMI。步骤 1 中的正在运行的实例拥有加密的根卷,步骤 3
中创建的 AMI 拥有加密到与源卷相同的密钥的根快照。无论加密是否存在,CreateImage 操作都具有完
全相同的行为。
101
Amazon Elastic Compute Cloud Linux 实例用户指南
涉及加密的 EBS 快照的 AMI 情景
您可以使用 Amazon EC2 控制台或命令行从正在运行的 Amazon EC2 实例(带或不带加密卷)创建 AMI。
有关更多信息,请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83)。
使用每个加密快照的唯一 CMK 创建 AMI
此方案最初有一个由根卷快照(加密到密钥 #1)支持的 AMI,最终得到一个附加了 2 个额外数据卷快照
(加密到密钥 #2 和密钥 #3)的 AMI。CopyImage 操作无法将多个加密密钥应用于单个操作。但是,您
可以从拥有加密到不同密钥的多个附加卷的实例创建 AMI。生成的 AMI 拥有加密到这些密钥的快照,且
从此新 AMI 启动的任何实例也拥有加密到这些密钥的卷。
本示例过程的步骤对应于下图。
1.
2.
3.
4.
5.
6.
从 vol. #1(根)快照支持的源 AMI 开始,该快照使用密钥 #1 进行加密。
从源 AMI 启动 EC2 实例。
创建 EBS 卷 vol.#2(数据)和 vol.#3(数据),它们分别加密到密钥 #2 和密钥 #3。
将加密的数据卷附加到 EC2 实例。
EC2 实例现在拥有 1 个加密的根卷以及 2 个加密的数据卷,这些卷都使用不同的密钥。
对 EC2 实例执行 CreateImage 操作。
7. 生成的目标 AMI 包含三个 EBS 卷的加密快照,这些卷都使用不同的密钥。
您可以使用 Amazon EC2 控制台或命令行执行此过程。有关更多信息,请参阅以下主题:
• 启动实例 (p. 229)
• 创建 Amazon EBS 支持的 Linux AMI (p. 83)。
• Amazon EBS 卷 (p. 585)
102
Amazon Elastic Compute Cloud Linux 实例用户指南
复制 AMI
• AWS Key Management Service Developer Guide 中的 AWS 密钥管理
复制 AMI
Abstract
将 AMI 复制到另一个区域,或创建加密 Amazon EBS 快照支持的版本。
您可以使用 AWS 管理控制台、命令行或 Amazon EC2 API(三者均支持 CopyImage 操作)在 AWS 区
域或跨 AWS 区域复制 (AMI)。Amazon EBS 支持的 AMI 和实例存储支持的 AMI 均可复制。
复制源 AMI 将生成完全相同但独立的目标 AMI(具有自己的唯一标识符)。对于 Amazon EBS 支持的
AMI,默认情况下每个 AMI 的支持快照将复制到完全相同但独立的目标快照。(唯一的例外是您选择加密
快照时,如下所述。)源 AMI 可更改或取消注册,这不会对目标 AMI 产生任何影响。反之亦然。
复制 AMI 没有任何费用。但要收取标准存储和数据传输费。
AWS 不会将启动许可、用户定义的标签或 Amazon S3 存储桶许可从源 AMI 复制到新 AMI。复制操作完
成之后,可以将启动许可、用户定义的标签和 Amazon S3 存储桶权限应用于新 AMI。
复制您拥有的 AMI
您可以使用 CopyImage 操作复制您拥有的任何 AMI。这包括具有加密快照的 AMI。
从另一个 AWS 账户复制 AMI
如果您拥有必要许可,则可以复制不属于您的账户的 AMI。这包括具有加密快照的 AMI。账户的所有者必
须授予对支持该 AMI 的存储的读取许可,无论它是关联的 EBS 快照(对于 Amazon EBS 支持的 AMI)
还是关联的 Amazon S3 存储桶(对于实例存储支持的 AMI)。要允许其他账户复制您的 AMI,您必须使
用 Amazon EBS 或 Amazon S3 访问管理工具授予对您的关联快照或存储桶的读取许可。
Note
CopyImage 操作不支持复制任何 与 billingProduct 代码关联的 AMI。这包括 Windows AMI
和来自 AWS Marketplace 由另一个 AWS 账户拥有和共享的其他 AMI。要为与 billingProduct
代码关联的 AMI 创建私有副本,建议从您要复制的 AMI 启动一个 EC2 实例,然后从此正在运行
的实例创建一个映像。这将生成您拥有的私有 AMI,并且可以像您拥有的任何其他 AMI 一样对其
进行自定义。例如,如果您为 EBS 支持的 Red Hat Enterprise Linux AMI 创建了私有副本,则可
对该 AMI 使用 CopyImage 以创建具有加密根卷的 Red Hat Enterprise Linux AMI。有关更多信
息,请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83)。
复制 AMI 后,源 AMI 的所有者需要支付标准 Amazon EBS 或 Amazon S3 传输费,目标 AMI 的所有者
需要支付目标区域的存储费用。
跨区域复制
跨不同地理位置复制 AMI 具有以下优势:
• 一致的全球部署:通过将 AMI 从一个区域复制到另一个区域,使您能够在不同的区域启动基于相同 AMI
的一致实例。
• 可扩展性:无论用户身处何处,您都可以更轻松地设计和构建能满足他们需求的全球范围应用程序。
• 性能:您可以通过分发您的应用程序以及找到较接近您用户的应用程序的关键组件来提高性能。您还可
以利用区域特定的功能,例如实例类型或其他 AWS 服务。
103
Amazon Elastic Compute Cloud Linux 实例用户指南
复制到加密
• 高可用性:您可以跨 AWS 区域设计和部署应用程序以提高可用性。
下图显示源 AMI 和不同区域中的两个复制 AMI 以及从三者启动的 EC2 实例之间的关系。当您从 AMI 启
动一个实例时,该实例将驻留在 AMI 所在的区域。如果您更改源 AMI,并希望这些更改反映到目标区域
的 AMI 中,则必须将源 AMI 重新复制到目标区域。
当您首次将实例存储支持的 AMI 复制到一个区域时,我们会为复制到该区域的 AMI 创建一个 Amazon S3
存储桶。复制到该区域的所有实例存储支持的 AMI 都将存储在此存储桶中。这些存储桶的名称具有以下
格式:amis-for-account-in-region-hash。例如:
amis-for-123456789012-in-us-west-2-yhjmxvp6。
Note
目标区域限制为一次 50 个并发 AMI 副本,并且来自一个源区域的不能超过 25 个。要请求提高
此限制,请参阅 Amazon EC2 服务限制 (p. 688)。
复制 AMI 前,您必须确保源 AMI 的内容得到更新,以支持在另一个区域运行。例如,您应更新任何数据
库连接字符串或相似的应用程序配置数据,以指向适当的资源。否则,从目标区域的新 AMI 启动的实例
可能会继续使用来自源区域的资源,这可能会影响性能和成本。
复制到加密
在复制期间加密仅适用于 Amazon EBS 支持的 AMI。由于实例存储支持的 AMI 不依赖快照,因此无法使
用 CopyImage 操作来更改其加密状态。
CopyImage 操作还可以用于创建加密 Amazon EBS 快照支持的新 AMI。如果您在复制 AMI 时调用加密,
将使用您指定的密钥对为其关联的 Amazon EBS 卷(包括根卷)拍摄的每个快照进行加密。有关使用具
有加密快照的 AMI 的更多信息,请参阅带加密快照的 AMI (p. 100)。
默认情况下,将复制 AMI 的备份快照并保持其原始加密状态。复制未加密快照支持的 AMI 将生成完全相
同、也未加密的目标快照。如果源 AMI 受加密快照支持,则复制它将生成一个加密到指定密钥的目标快
照。复制多个快照支持的 AMI 将保留其在每个目标快照中的源加密状态。有关复制具有多个快照的 AMI
的更多信息,请参阅带加密快照的 AMI (p. 100)。
下表显示了各种场景的加密支持。请注意,尽管可以复制未加密快照来生成加密快照,但是不能复制加密
快照来生成未加密快照。
场景
说明
支持服务
1
未加密到未加密
是
2
加密到加密
是
104
Amazon Elastic Compute Cloud Linux 实例用户指南
AMI 复制场景
场景
说明
支持服务
3
未加密到加密
是
4
加密到未加密
否
AMI 复制场景
本部分将介绍复制 AMI 的基本场景并提供使用 Amazon EC2 控制台和命令行进行复制的过程。
将未加密的源 AMI 复制到未加密的目标 AMI
在最简单的情况下,具有单个未加密支持快照的 AMI 副本是在指定地理区域(未显示)中创建的。
Note
尽管上图显示了具有单个支持快照的 AMI,CopyImage 操作也适用于具有多个快照的 AMI。将
保留每个快照的加密状态。这意味着源 AMI 中的未加密快照将导致在目标 AMI 中创建未加密快
照,源 AMI 中的加密快照将导致在目标 AMI 中创建加密快照。
将加密源 AMI 复制到加密目标 AMI
尽管此场景涉及加密快照,但它在功能上等效于前一场景。
Note
如果您在复制多快照 AMI 时应用加密,则将使用指定密钥(如果未指定密钥,则使用默认密钥)
来加密所有目标快照。有关利用加密到多个密钥的多个快照创建 AMI 的信息,请参阅带加密快照
的 AMI (p. 100)。
将未加密的源 AMI 复制到加密目标 AMI
在此最后一个场景中,CopyImage 操作将更改目标映像的加密状态,例如,对未加密快照进行加密,或
使用不同密钥对加密快照进行重新加密。要在复制期间应用加密,您必须提供加密参数:一个加密标志和
一个密钥。仅当您提供此密钥时,从目标快照创建的卷才可访问。有关 AMI 的支持加密场景的更多信息,
请参阅带加密快照的 AMI (p. 100)。
105
Amazon Elastic Compute Cloud Linux 实例用户指南
使用控制台或命令行复制 AMI
使用控制台或命令行复制 AMI
以下过程中的步骤对应于每副场景图中的三个步骤。除加密选项的配置外,所有案例中执行 CopyImage
操作的过程完全相同。
使用控制台复制 AMI
1.
2.
创建或获取 Amazon EBS 快照支持的 AMI。有关更多信息,请参阅创建 Amazon EBS 支持的 Linux
AMI (p. 83)。许多 AWS 提供的 AMI 可通过 Amazon EC2 控制台使用。
从控制台导航栏中,选择包含您要复制的 AMI 的区域。在导航窗格中,展开 Images 并选择 AMIs 以
显示所选区域中可供您使用的 AMI 的列表。
选择要复制的 AMI,然后选择 Actions 和 Copy AMI。
在 AMI Copy 页中,设置以下字段并选择 Copy AMI:
• Destination region:选择要将 AMI 复制到的区域。
• Name:为新 AMI 提供名称。
• Description:默认情况下,描述包括源 AMI 的相关信息,以便您能区分副本和原本。您可以按需
更改此描述。
• Encryption:选择此字段可加密目标 Amazon EBS 快照,或使用不同的密钥对它们进行重新加密。
• Master Key:将用于加密目标 Amazon EBS 快照的 KMS 密钥(如果选择了 Encryption)。
3.
我们将显示一个确认页面,以告知您复制操作已启动,并为您提供新 AMI 的 ID。
若要立即查看复制操作的进度,请访问提供的链接。若要稍后查看进度,请选择 Done,然后在您准
备就绪时使用导航栏切换到目标区域(如果适用)并在 AMI 列表中找到您的 AMI。
目标 AMI 的初始状态为 pending,当状态为 available 时,此操作完成。
使用命令行复制 AMI
使用命令行复制 AMI 需要您同时指定源区域和目标区域。可使用 --source-region 参数指定源区域。
对于目标区域,您有两种选择:
• 使用 --region 参数。
• 设置环境变量。有关更多信息,请参阅设置 CLI 工具 (Linux)。
在复制期间加密目标快照时,您需要提供两个额外参数:
106
Amazon Elastic Compute Cloud Linux 实例用户指南
停止待处理的 AMI 复制操作
• 一个布尔值,--encrypted
• 一个字符串,--kms-key-id,提供主加密密钥 ID
您可以使用以下命令之一复制 AMI。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• copy-image (AWS CLI)
• ec2-copy-image (Amazon EC2 CLI)
• Copy-EC2Image(适用于 Windows PowerShell 的 AWS 工具)
停止待处理的 AMI 复制操作
您可以使用 AWS 管理控制台或命令行停止待处理的 AMI 复制。
使用控制台停止 AMI 复制操作
1.
2.
3.
4.
5.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
从导航栏中,在区域选择器中选择目标区域。
在导航窗格中,选择 AMIs。
选择要停止复制的 AMI 并选择 Actions 和 Deregister。
当系统要求确认时,请选择 Continue。
使用命令行停止 AMI 复制操作
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• deregister-image (AWS CLI)
• ec2-deregister (Amazon EC2 CLI)
• Unregister-EC2Image(适用于 Windows PowerShell 的 AWS 工具)
取消注册您的 AMI
Abstract
使用后取消注册您的 AMI。
使用完 AMI 之后,可以取消注册它。取消注册 AMI 之后,便无法将其用于启动新实例。
取消注册某个 AMI 时,不会影响您已从该 AMI 启动的任何实例。这些实例将继续对您产生使用费用。因
此,如果您使用完这些实例,应终止它们。
用于清除 AMI 的过程取决于它是由 Amazon EBS 还是由实例存储支持。(请注意,只有用于 Windows
Server 2003 的 Windows AMI 可由实例存储支持。)
内容
• 清除由 Amazon EBS 支持的 AMI (p. 108)
• 清除由实例存储支持的 AMI (p. 108)
107
Amazon Elastic Compute Cloud Linux 实例用户指南
清除由 Amazon EBS 支持的 AMI
清除由 Amazon EBS 支持的 AMI
在取消注册 Amazon EBS 支持的 AMI 时,不会影响在创建 AMI 的过程中为实例的根卷创建的快照。此
快照将继续对您产生存储费用。因此,如果您使用完该快照,应删除它。
下图说明清除由 Amazon EBS支持的 AMI 的过程。
清除由 Amazon EBS支持的 AMI
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 AMIs。选择 AMI 并记下其 ID — 这可帮助您在下一步骤中找到正确的快照。选
择 Actions,然后选择 Deregister。当系统提示进行确认时,请选择 Continue。
AMI 状态现在变为 unavailable。
Note
可能要用几分钟时间,控制台才会将状态 available 变为 unavailable 或者从列表中完
全删除该 AMI。选择 Refresh 以刷新状态。
3.
4.
在导航窗格中,选择 Snapshots,然后选择快照(在 Description 列中查找 AMI ID)。选择 Actions,
然后选择 Delete Snapshot。当系统提示进行确认时,选择 Yes, Delete。
(可选)如果您使用完从 AMI 启动的实例,请终止该实例。在导航窗格中,选择 Instances。选择实
例,然后依次选择 Actions、Instance State 和 Terminate。当系统提示您确认时,选择 Yes,
Terminate。
清除由实例存储支持的 AMI
取消注册某个由实例存储支持的 AMI 时,不会影响您在创建该 AMI 时上传到 Amazon S3 的文件。这些
文件将继续在 Amazon S3 中对您产生使用费用。因此,如果您使用完这些文件,应删除它们。
下图说明清除由实例存储支持的 AMI 的过程。
108
Amazon Elastic Compute Cloud Linux 实例用户指南
Amazon Linux
清除由实例存储支持的 AMI
1.
使用 ec2-deregister 命令取消注册 AMI,如下所示。
ec2-deregister ami_id
AMI 状态现在变为 unavailable。
2.
使用 ec2-delete-bundle 命令删除捆绑,如下所示。
ec2-delete-bundle -b myawsbucket/myami -a your_access_key_id -s
your_secret_access_key -p image
3.
(可选)如果您使用完从 AMI 启动的实例,则可以使用 ec2-terminate-instances 命令终止该实例,
如下所示。
ec2-terminate-instances instance_id
4.
(可选)如果您使用完将捆绑上传到的 Amazon S3 存储桶,则可以删除该存储桶。要删除 Amazon
S3 存储桶,请打开 Amazon S3 控制台,选择存储桶,再选择 Actions,然后选择 Delete。
Amazon Linux
Abstract
Amazon Linux 是由 AWS 提供以在 Amazon EC2 上使用的 Linux 映像。
Amazon Linux 由 Amazon Web Services (AWS) 提供。它旨在为 Amazon EC2 上运行的应用程序提供稳
定、安全和高性能的执行环境。此外,它还包括让您能够与 AWS 轻松集成的软件包,包括启动配置工具
和许多常见的 AWS 库及工具。AWS 为运行 Amazon Linux 的所有实例提供持续的安全性和维护更新。
Note
对 Amazon Linux AMI 存储库结构进行了配置以提供不间断的更新,可让您从一个版本的 Amazon
Linux AMI 更新到下一版本。要将现有实例锁定到当前版本,请参阅 存储库配置 (p. 113)。
要启动 Amazon Linux 实例,请使用 Amazon Linux AMI。AWS 向 Amazon EC2 用户提供 Amazon Linux
AMI,无需额外费用。
109
Amazon Elastic Compute Cloud Linux 实例用户指南
查找 Amazon Linux AMI
主题
• 查找 Amazon Linux AMI (p. 110)
• 启动并连接到 Amazon Linux 实例 (p. 110)
• 识别 Amazon Linux AMI 映像 (p. 110)
• 包含的 AWS 命令行工具 (p. 111)
• cloud-init (p. 111)
• 存储库配置 (p. 113)
• 添加软件包 (p. 113)
• 访问源软件包获取参考信息 (p. 114)
• 开发应用程序 (p. 114)
• 实例存储访问 (p. 114)
• 产品生命周期 (p. 115)
• 安全更新 (p. 115)
• 支持 (p. 115)
查找 Amazon Linux AMI
有关最新 Amazon Linux AMI 的列表,请参阅 Amazon Linux AMI。
启动并连接到 Amazon Linux 实例
找到您需要的 AMI 后,记下 AMI ID。您可以使用 AMI ID 来启动,然后连接到您的实例。
默认情况下,Amazon Linux 不支持远程根 SSH。此外,密码验证已禁用,以防止强力 (brute-force) 密码
攻击。要在 Amazon Linux 实例上启用 SSH 登录,您必须在实例启动时为其提供密钥对。您还必须设置
用于启动实例的安全组以允许 SSH 访问。默认情况下,唯一可以使用 SSH 进行远程登录的账户是
ec2-user;此账户还拥有 sudo 特权。如果您希望启动远程根登录,请注意,其安全性不及依赖密钥对
和二级用户。
有关启动和使用 Amazon Linux 实例的信息,请参阅启动实例 (p. 229)。有关连接到 Amazon Linux 实例的
更多信息,请参阅连接到 Linux 实例 (p. 240)。
识别 Amazon Linux AMI 映像
每个映像都包含唯一的 /etc/image-id,用于识别 AMI。此文件包含有关映像的信息。
下面是 /etc/image-id 文件示例:
[ec2-user ~]$ cat /etc/image-id
image_name="amzn-ami-hvm"
image_version="2016.03"
image_arch="x86_64"
image_file="amzn-ami-hvm-2016.03.0.x86_64.ext4.gpt"
image_stamp="3459-5706"
image_date="20160316230432"
recipe_name="amzn ami"
recipe_id="b98814bf-77f8-bee1-2f82-a8bf-0c5a-2003-a03d307c"
image_name、image_version 和 image_arch 项目来自 Amazon 用于构建映像的构建配方。
image_stamp 只是映像创建期间随机生成的唯一十六进制值。image_date 项目的格式为
YYYYMMDDhhmmss,是映像创建时的 UTC 时间。recipe_name 和 recipe_id 是 Amazon 用于构建
110
Amazon Elastic Compute Cloud Linux 实例用户指南
包含的 AWS 命令行工具
映像的构建配方的名称和 ID,用于识别当前运行的 Amazon Linux 的版本。当您从 yum 存储库安装更新
时,此文件不会更改。
Amazon Linux 包含 /etc/system-release 文件,用于指定当前安装的版本。此文件通过 yum 进行更
新,是 system-release RPM 的一部分。
下面是 /etc/system-release 文件示例:
[ec2-user ~]$ cat /etc/system-release
Amazon Linux AMI release 2016.03
Amazon Linux 还包含 /etc/system-release 文件(在 /etc/system-release-cpe 中)的计算机
可读版本,遵循 MITRE 的 CPE 规范 (CPE)。
包含的 AWS 命令行工具
以下常用 AWS 集成命令行工具及使用方法已包含在 Amazon Linux 或默认存储库中:
• aws-amitools-ec2
• aws-apitools-as
• aws-apitools-cfn
• aws-apitools-ec2
• aws-apitools-elb
• aws-apitools-iam
• aws-apitools-mon
• aws-apitools-rds
• aws-cfn-bootstrap
• aws-cli
• aws-scripts-ses
虽然每个 Amazon Linux 版本都包含 aws-apitools-* 命令行工具,但是 aws-cli 命令行工具可在所
有 Amazon Web Services 间提供标准体验,将最终替代特定于服务的工具集。
对于使用 IAM 角色启动的实例,提供了一个简单脚本,用于在安装证书文件后准备
AWS_CREDENTIAL_FILE、JAVA_HOME、AWS_PATH、PATH 和产品特定的环境变量,以简化这些工具的
配置。
此外,为了支持安装多个版本的 API 和 AMI 工具,我们还在 /opt/aws 中提供了指向所需工具版本的符
号链接,如下所述:
/opt/aws/bin
指向每个已安装工具目录中的 /bin 目录的符号链接。
/opt/aws/{apitools|amitools}
产品安装在形式为 name--version 的目录中,符号链接 name 附加到最近安装的版本。
/opt/aws/{apitools|amitools}/name/environment.sh
/etc/profile.d/aws-apitools-common.sh 用于设置产品特定的环境变量,如 EC2_HOME。
cloud-init
cloud-init 软件包是由 Canonical 构建的开源应用程序,用于在云计算环境(例如 Amazon EC2)中
引导启动 Linux 映像。Amazon Linux 包含自定义版 cloud-init。它使您能够指定实例启动时应执行的
操作。启动实例时,您可以通过用户数据字段将需要的操作传递到 cloud-init。这意味着,您可以在许
111
Amazon Elastic Compute Cloud Linux 实例用户指南
cloud-init
多用例中使用普通 AMI,并在启动时进行动态配置。Amazon Linux 还使用 cloud-init 来执行 ec2-user
账户的初始配置。
有关 cloud-init 的更多信息,请参阅 http://cloudinit.readthedocs.org/en/latest/。
Amazon Linux 使用以下 cloud-init 操作(可在 /etc/sysconfig/cloudinit 中配置):
• 操作:INIT(始终运行)
• 设置默认区域设置
• 设置主机名
• 解析并处理用户数据
• 动作: CONFIG_SSH
• 生成主机私有 SSH 密钥
• 将用户的公有 SSH 密钥添加到 ssh/authorized_keys,以便于登录和管理
• 动作: PACKAGE_SETUP
• 准备 yum 存储库
• 处理用户数据中定义的软件包操作
• 动作: RUNCMD
• 运行 shell 命令
• 动作: RUN_USER_SCRIPTS
• 执行在用户数据中找到的脚本
• 动作: CONFIG_MOUNTS
• 装载暂存驱动器
• 动作: CONFIG_LOCALE
• 根据用户数据,在区域设置配置文件中配置区域设置
支持的用户数据格式
cloud-init 软件包可处理多种格式的用户数据:
• Gzip
• 如果用户数据是经过 gzip 压缩过的,cloud-init 可解压缩数据,并进行适当处理。
• MIME 多部分内容型
• 使用 MIME 多部分内容型文件,您可以指定多种数据类型。例如,您可以指定用户数据脚本和云配
置类型。如果分段文件是受支持的格式,则 cloud-init 可以处理其每个段。
• Base64 解码
• 如果用户数据使用 base64 编码,cloud-init 可确定它能否将解码后的数据理解为一种受支持的类
型。如果它能理解解码后的数据,则会解码数据,并进行适当处理。如果不能,它将完整地返回
base64 数据。
• 用户数据脚本
• 开头为 #! 或 Content-Type: text/x-shellscript。
• 该脚本由 /etc/init.d/cloud-init-user-scripts 在首轮启动过程中执行。此操作会在启动过
程的后期发生(即执行初始配置操作后)。
• 包含文件
• 开头为 #include 或 Content-Type: text/x-include-url。
• 此内容是一个包含文件。该文件包含一个 URL 列表,每行一个 URL。系统会读取每个 URL,其内容
会通过此相同规则集验证。从 URL 读取的内容可使用 gzipp 进行压缩、采用 MIME 分段处理或存储
为纯文本。
• 云配置数据
112
Amazon Elastic Compute Cloud Linux 实例用户指南
存储库配置
• 开头为 #cloud-config 或 Content-Type: text/cloud-config。
• 此内容是云配置数据。查看示例以了解受支持配置格式的带有注释的示例。
• Cloud Boothook
• 开头为 #cloud-boothook 或 Content-Type: text/cloud-boothook。
• 此内容为 boothook 数据。它存储在 /var/lib/cloud 下的文件中,然后立即执行。
• 这是最早可用的 "hook"。请注意,尚无仅供运行一次的机制。boothook 必须自行解决此问题。它的
环境变量 INSTANCE_ID 中包含实例 ID。可使用此变量来提供一组一个实例可用一次的 boothook 数
据。
存储库配置
从 2011.09 版 Amazon Linux 开始,Amazon Linux AMI 被当作时间快照处理,因此当您运行 yum update
-y 时,存储库和更新结构可始终为您提供最新的软件包。
存储库结构进行了配置以提供不间断的更新流,可让您从一个版本的 Amazon Linux 滚动到下一版本。举
例来说,如果从较旧版本的 Amazon Linux AMI(如 2015.09 或更低版本)启动实例并运行 yum update
-y,则会得到最新程序包。
您可通过启用 lock-on-launch 功能禁用 Amazon Linux 滚动更新。lock-on-launch 功能会锁定您最近启动
的实例,使其仅接收来自指定版本的 AMI 的更新。举例来说,您可以启动 2015.09 AMI,使其仅接收早
于 2016.03 AMI 发布的更新,直至您准备好迁移到 2016.03 AMI 为止。要在新实例中启用 lock-on-launch
功能,请使用 Amazon EC2 控制台或带有 cloud-init 标志的 ec2-run-instances 命令启动它,同
时将以下用户数据传递到 -f。
Important
如果将 AMI 锁定到并非 latest 的存储库版本,则您不会收到任何后续更新。接收 Amazon Linux
AMI 的连续更新流的唯一方式是使用最新的 AMI,或持续更新您的旧 AMI,使存储库指向 latest。
#cloud-config
repo_releasever: 2015.09
将现有实例锁定在当前 AMI 版本
1. 编辑 /etc/yum.conf。
2. 评论 releasever=latest.
3. 运行 yum clean all ,以清除缓存。
添加软件包
Amazon Linux 可与每个 Amazon EC2 区域中托管的在线软件包存储库结合使用。这些存储库为 Amazon
Linux AMI 中的软件包提供持续更新,并可再访问数百个常见的开源服务器应用程序。所有区域都提供这
些存储库,可使用 yum 更新工具访问,Amazon Linux AMI 软件包站点 也有提供。通过在每个地区托管
存储库,我们可以快速部署更新,不会产生任何数据传输费。通过发出 yum 命令可安装软件包,如下例
所示:
[ec2-user ~]$ sudo yum install httpd
系统配置了对 Extra Packages for Enterprise Linux (EPEL) 存储库的访问权限,但默认情况下没有启用。
除了 Amazon Linux 存储库中的软件包以外,EPEL 还提供了第三方软件包。AWS 不支持第三方软件包。
113
Amazon Elastic Compute Cloud Linux 实例用户指南
访问源软件包获取参考信息
如果您发现 Amazon Linux 中没有您需要的应用程序,可以直接在 Amazon Linux 实例上安装该应用程
序。Amazon Linux 使用 RPM 和 yum 进行软件包管理,这可能是最简单的新应用程序安装方式。您始终
应该首先查看我们的中央 Amazon Linux 存储库,确定其中是否有您需要应用程序,因为许多应用程序在
那里都可以找到。您可以轻松地将这些应用程序添加到 Amazon Linux 实例。
要将应用程序上传到正在运行的 Amazon Linux 实例,请使用 scp 或 sftp,然后通过登录实例来配置应
用程序。您还可以使用内置 PACKAGE_SETUP 软件包中的 cloud-init 操作,在实例启动期间上传应用
程序。有关更多信息,请参阅 cloud-init (p. 111)。
Important
如果您的实例在 Virtual Private Cloud (VPC) 中运行,则必须将 Internet 网关连接到 VPC,才能
连接您的 yum 存储库。有关更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关。
访问源软件包获取参考信息
您可以使用 Amazon Linux 中提供的工具,查看您已在实例上安装的软件包的源,获取参考信息。您可以
查看 Amazon Linux 和在线软件包存储库中包含的全部软件包的源软件包。只需确定您要安装的源软件包
的名称,并使用 get_reference_source 命令在您正在运行的实例中查看源。例如:
[ec2-user ~]$ get_reference_source -p bash
以下为示例响应:
Requested package: bash
Found package from local RPM database: bash-4.2.46-19.35.amzn1.x86_64
Corresponding source RPM to found package : bash-4.2.46-19.35.amzn1.src.rpm
Are these parameters correct? Please type 'yes' to continue: yes
Source RPM downloaded to: /usr/src/srpm/debug/bash-4.2.46-19.35.amzn1.src.rpm
源 RPM 在实例的 /usr/src/srpm/debug 目录中。您可以在那里进行解压缩,并可以使用标准 RPM
工具查看源树进行参考。完成调试之后,该软件包可供使用。
Important
如果您的实例在 Virtual Private Cloud (VPC) 中运行,则必须将 Internet 网关连接到 VPC,才能
连接您的 yum 存储库。有关更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关。
开发应用程序
Amazon Linux 的 yum 存储库中提供了一套完整的 Linux 开发工具。要在 Amazon Linux 上开发应用程
序,请通过 yum 选择所需的开发工具。另外,许多在 CentOS 和其他类似发行版上开发的应用程序应该
可以在 Amazon Linux 上运行。
实例存储访问
实例存储驱动器 ephemeral0 只能安装在 Amazon 实例存储支持的 AMI 上的 /media/ephemeral0 中。
这与在 /mnt 下安装实例存储驱动器的许多其他映像不同。
114
Amazon Elastic Compute Cloud Linux 实例用户指南
产品生命周期
产品生命周期
Amazon Linux AMI 定期进行更新,增强了安全性及功能。如果您不需要在 Amazon Linux 实例上保留数
据或自定义项,只需用最新 Amazon Linux AMI 重新启动新实例即可。如果您需要保留 Amazon Linux 实
例的数据或自定义项,可以通过 Amazon Linux yum 存储库维护这些实例。yum 存储库包含所有已更新
软件包。您可以选择将这些更新应用到正在运行的实例中。
即使新版本发布后,旧版的 AMI 和更新软件包仍继续可用。在某些情况下,如果您需要针对旧版 Amazon
Linux 的支持,则通过 AWS Support,作为支持流程的一部分,我们可能会要求您迁移到较新的版本。
安全更新
安全更新通过 Amazon Linux AMI yum 存储库及更新的 Amazon Linux AMI 提供。Amazon Linux AMI 安
全中心会发布安全警报。有关 AWS 安全策略的更多信息,或要报告安全问题,请访问 AWS 安全中心。
Amazon Linux AMI 已配置为在启动时下载和安装安全更新。此操作是通过名为 cloud-init 的
repo_upgrade 设置控制的。以下 cloud-init 配置片段显示如何修改传递到实例初始化的用户数据文
本中的设置:
#cloud-config
repo_upgrade: security
repo_upgrade 设置可能会有以下值:
security
应用 Amazon 标记为安全更新的重要更新。
bugfix
应用 Amazon 标记为缺陷修正的更新。缺陷修正是一组较大的更新,其中包括安全更新和针对各种
其他小漏洞的修正更新。
all
应用全部适用更新(不论类别)。
none
实例启动时不应用任何更新。
repo_upgrade 的默认设置是安全的。也就是说,如果您不在用户数据中指定其他值,在默认情况下,
Amazon Linux AMI 在启动时执行适用于当时所有已安装软件包的安全升级。在您使用 /etc/motd 文件
登录时,Amazon Linux AMI 还会通过列出可用更新的数量,通知您已安装程序包的所有更新。要安装这
些更新,您需要在实例上运行 sudo yum upgrade。
Important
如果您的实例在 Virtual Private Cloud (VPC) 中运行,则必须将 Internet 网关连接到 VPC,才能
连接您的 yum 存储库。有关更多信息,请参阅 Amazon VPC 用户指南 中的 Internet 网关。
支持
AWS Support 订阅包含对安装和使用基础 Amazon Linux AMI 的支持。有关更多信息,请参阅 AWS
Support。
建议您将有关 Amazon Linux 的任何问题发布到 Amazon EC2 forum。
115
Amazon Elastic Compute Cloud Linux 实例用户指南
PV-GRUB
PV-GRUB
Abstract
将 PV-GRUB 用于半虚拟化 (PV) AMI。
使用半虚拟化 (PV) 的 Amazon 系统映像 会在启动过程中使用名为 PV-GRUB 的系统。PV-GRUB 是半虚
拟化启动加载器,运行经过修补的 GNU GRUB 0.97 版本。当您启动实例时,PV-GRUB 会开始启动过
程,然后链式加载映像的 menu.lst 文件指定的内核。
PV-GRUB 理解标准 grub.conf 或 menu.lst 命令,可与当前支持的所有 Linux 分发版本配合使用。较
旧发布版(如 Ubuntu 10.04 LTS、Oracle Enterprise Linux 或 CentOS 5.x)需要特殊的“ec2”或“xen”内核
软件包,而较新发布版在默认内核软件包中包含所需驱动程序。
大多数新半虚拟化 AMI 在默认情况下使用 PV-GRUB AKI(包括 Amazon EC2 启动向导快速启动菜单中
提供的所有半虚拟化 Linux AMI),无需执行附加步骤即可在实例上使用不同的内核,前提是要使用的内
核与您的发布版兼容。在实例上运行自定义内核的最佳方式是从接近于您所需内容的 AMI 开始,然后在
实例上编译自定义内核并修改 menu.lst 文件(如配置 GRUB (p. 117) 所示)以使用该内核启动。
可以通过使用 Amazon EC2 命令行工具执行以下 describe-images 命令(换入要检查的内核映像 ID),
验证 AMI 的内核映像是否为 PV-GRUB AKI:
$ aws ec2 describe-images --filters Name=image-id,Values=aki-880531cd
检查 Name 字段是否以 pv-grub 开头。
主题
• PV-GRUB 的限制 (p. 116)
• 配置 GRUB (p. 117)
• Amazon PV-GRUB Kernel Image ID (p. 117)
• 更新 PV-GRUB (p. 119)
PV-GRUB 的限制
PV-GRUB 具有以下限制:
• 您不能使用 64 位版本的 PV-GRUB 来启动 32 位的内核,反之亦然。
• 当您使用 PV-GRUB AKI 时,不能指定 Amazon Ramdisk Image (ARI)。
• AWS 经测试确认 PV-GRUB 可与以下文件系统格式配合使用:EXT2、EXT3、EXT4、JFS、XFS 和
ReiserFS。其他文件系统格式可能不适用。
• PV-GRUB 可以引导使用 gzip、bzip2、lzo 和 xz 压缩格式压缩的内核。
• 集群 AMI 不支持也不需要 PV-GRUB,因为它们使用完全硬件虚拟化 (HVM)。当半虚拟化实例使用
PV-GRUB 来启动时,HVM 实例卷用作实际磁盘,并且启动过程与带已分区磁盘和启动加载程序的裸
金属操作系统的类似。
• PV-GRUB 版本 1.03 及更低版本不支持 GPT 分区;它们仅支持 MBR 分区。
• 如果您计划通过 Amazon EBS 卷使用逻辑卷管理 (LVM),则需要在 LVM 外有一个独立的启动分区。然
后,您可以通过 LVM 创建逻辑卷。
116
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 GRUB
配置 GRUB
要启动 PV-GRUB,GRUB menu.lst 文件必须存在于映像中;此文件的最常见位置是
/boot/grub/menu.lst。
以下是用于启动带 PV-GRUB AKI 的 AMI 的 menu.lst 配置文件示例。在该示例中,可在两个内核条目
中进行选择:Amazon Linux 2016.03(此 AMI 的原始内核),以及 Vanilla Linux 4.5(来自
https://www.kernel.org/ 的较新 Vanilla Linux 内核版本)。Vanilla 条目是从此 AMI 的原始条目复制的,
kernel 和 initrd 路径已更新为新位置。default 0 参数将引导加载器指向其发现的第一个条目(在
此例中为 Vanilla 条目),fallback 1 参数在引导第一个条目的过程中发生问题时,将引导加载器指向
下一个条目。
default 0
fallback 1
timeout 0
hiddenmenu
title Vanilla Linux 4.5
root (hd0)
kernel /boot/vmlinuz-4.5 root=LABEL=/ console=hvc0
initrd /boot/initrd.img-4.5
title Amazon Linux 2016.03 (4.4.5-15.26.amzn1.x86_64)
root (hd0)
kernel /boot/vmlinuz-4.4.5-15.26.amzn1.x86_64 root=LABEL=/ console=hvc0
initrd /boot/initramfs-4.4.5-15.26.amzn1.x86_64.img
无需在 menu.lst 文件中指定后备内核,但是我们建议您在测试新内核时准备好后备内核。如果新内核
发生故障,PV-GRUB 可以回退到其他内核。如果有后备内核,实例即使没有找到新内核也能进行引导。
PV-GRUB 检查以下位置是否存在 menu.lst,使用找到的第一项:
• (hd0)/boot/grub
• (hd0,0)/boot/grub
• (hd0,0)/grub
• (hd0,1)/boot/grub
• (hd0,1)/grub
• (hd0,2)/boot/grub
• (hd0,2)/grub
• (hd0,3)/boot/grub
• (hd0,3)/grub
请注意,PV-GRUB 1.03 及更低版本仅检查此列表中的前两个位置。
Amazon PV-GRUB Kernel Image ID
PV-GRUB AKI 在所有 Amazon EC2 区域中都可用。同时存在适用于 32 位和 64 位架构类型的 AKI。大
多数新 AMI 在默认情况下使用 PV-GRUB AKI。
我们建议您始终使用最新版本的 PV-GRUB AKI,因为并不是所有的 PV-GRUB AKI 版本都能与全部实例
类型兼容。使用以下 describe-images 命令可获取当前区域的 PV-GRUB AKI 列表:
117
Amazon Elastic Compute Cloud Linux 实例用户指南
Amazon PV-GRUB Kernel Image ID
$ aws ec2 describe-images --owners amazon --filters Name=name,Values=pv-grub*.gz
请注意,PV-GRUB 是 ap-southeast-2 区域中唯一可用的 AKI。您应验证要复制到此区域的任何 AMI
是否使用此区域中可用的 PV-GRUB 版本。
以下是每个区域的当前 AKI ID。使用 hd0 AKI 注册新 AMI。
Note
在之前提供 hd00 AKI 的地区,我们将继续提供,以实现向后兼容性。
ap-northeast-1,亚太地区(东京)地区
映像 ID
映像名称
aki-136bf512
pv-grub-hd0_1.04-i386.gz
aki-176bf516
pv-grub-hd0_1.04-x86_64.gz
ap-northeast-2,亚太区域 (首尔)
映像 ID
映像名称
aki-01a66b6f
pv-grub-hd0_1.04-x86_64.gz
ap-southeast-1, 亚太区域(新加坡)
映像 ID
映像名称
aki-ae3973fc
pv-grub-hd0_1.04-i386.gz
aki-503e7402
pv-grub-hd0_1.04-x86_64.gz
ap-southeast-2,亚太地区(悉尼)
映像 ID
映像名称
aki-cd62fff7
pv-grub-hd0_1.04-i386.gz
aki-c362fff9
pv-grub-hd0_1.04-x86_64.gz
eu-central-1,欧洲(法兰克福)
映像 ID
映像名称
aki-3e4c7a23
pv-grub-hd0_1.04-i386.gz
aki-184c7a05
pv-grub-hd0_1.04-x86_64.gz
118
Amazon Elastic Compute Cloud Linux 实例用户指南
更新 PV-GRUB
eu-west-1,欧洲(爱尔兰)
映像 ID
映像名称
aki-68a3451f
pv-grub-hd0_1.04-i386.gz
aki-52a34525
pv-grub-hd0_1.04-x86_64.gz
sa-east-1,南美洲(圣保罗)
映像 ID
映像名称
aki-5b53f446
pv-grub-hd0_1.04-i386.gz
aki-5553f448
pv-grub-hd0_1.04-x86_64.gz
us-east-1,美国东部(弗吉尼亚北部)
映像 ID
映像名称
aki-8f9dcae6
pv-grub-hd0_1.04-i386.gz
aki-919dcaf8
pv-grub-hd0_1.04-x86_64.gz
us-gov-west-1、AWS GovCloud (US)
映像 ID
映像名称
aki-1fe98d3c
pv-grub-hd0_1.04-i386.gz
aki-1de98d3e
pv-grub-hd0_1.04-x86_64.gz
us-west-1,美国西部(加利福尼亚北部)
映像 ID
映像名称
aki-8e0531cb
pv-grub-hd0_1.04-i386.gz
aki-880531cd
pv-grub-hd0_1.04-x86_64.gz
us-west-2,美国西部(俄勒冈)
映像 ID
映像名称
aki-f08f11c0
pv-grub-hd0_1.04-i386.gz
aki-fc8f11cc
pv-grub-hd0_1.04-x86_64.gz
更新 PV-GRUB
我们建议您始终使用最新版本的 PV-GRUB AKI,因为并不是所有的 PV-GRUB AKI 版本都能与全部实例
类型兼容。较旧版本的 PV-GRUB 也并非在所有区域都可用,因此如果您将使用较旧版本的 AMI 复制到
119
Amazon Elastic Compute Cloud Linux 实例用户指南
更新 PV-GRUB
不支持该版本的区域,则无法引导从该 AMI 启动的实例,直至您更新内核映像。使用以下过程可检查您
的实例的 PV-GRUB 版本并在必要时更新它。
检查您的 PV-GRUB 版本
1.
查找您实例的内核 ID。
$ ec2-describe-instance-attribute instance_id --kernel --region region
kernel instance_id aki-fc8f11cc
此实例的内核 ID 是 aki-fc8f11cc。
2.
查看该内核 ID 的版本信息。
$ ec2-describe-images aki-fc8f11cc --region region
IMAGE aki-fc8f11cc amazon/pv-grub-hd0_1.04-x86_64.gz ...
该内核映像是 PV-GRUB 1.04。如果您的 PV-GRUB 版本不是最新版本(如 Amazon PV-GRUB Kernel
Image ID (p. 117) 所示),则应使用以下过程更新它。
更新您的 PV-GRUB 版本
如果您的实例使用较旧版本的 PV-GRUB,则您应将它更新为最新版本。
1.
2.
通过 Amazon PV-GRUB Kernel Image ID (p. 117) 确定您区域和处理器架构的最新 PV-GRUB AKI。
停止您的实例。您的实例必须停止才能修改所使用的内核映像。
$ ec2-stop-instances instance_id --region region
INSTANCE instance_id stopped stopped
3.
修改用于您实例的内核映像。
$ ec2-modify-instance-attribute --kernel kernel_id --region region instance_id
4.
重新启动您的实例。
$ ec2-start-instances --region region instance_id
120
Amazon Elastic Compute Cloud Linux 实例用户指南
实例类型
Amazon EC2 实例
Abstract
配置、启动、连接和管理您的实例。
如果您是首次接触 Amazon EC2,请参见以下主题了解其用法:
• 什么是 Amazon EC2? (p. 1)
• Amazon EC2 的设置 (p. 19)
• Amazon EC2 Linux 实例入门 (p. 26)
• 实例生命周期 (p. 227)
您需先回答以下问题,然后才能启动生产环境。
Q. 什么样的实例类型最能满足我的需求?
Amazon EC2 提供不同的实例类型,以便您可以选择需要的 CPU、内存、存储和网络容量来运行您
的应用程序。有关更多信息,请参阅 实例类型 (p. 121)。
Q. 什么样的购买选项最能满足我的需求?
Amazon EC2 支持按需实例(默认设置)、竞价型实例和预留实例。有关更多信息,请参阅 实例购
买选项 (p. 149)。
Q. 哪种类型的根卷能满足我的需求?
由 Amazon EBS 或实例存储支持的每一个实例。根据您需要的根卷类型选择 AMI。有关更多信息,
请参阅 根设备存储 (p. 64)。
Q. 我能否从使用虚拟私有云中获益?
如果您可以在 EC2-Classic 或 EC2-VPC 中启动实例,您将需要确定哪个平台能满足您的需求。有关
更多信息,请参阅 支持的平台 (p. 518) 和 Amazon EC2 和 Amazon Virtual Private Cloud (p. 513)。
实例类型
Abstract
Amazon EC2 提供了具有不同计算、内存、存储和网络功能的各种实例类型。
121
Amazon Elastic Compute Cloud Linux 实例用户指南
可用实例类型
启动实例时,您指定的实例类型 决定了用于您的实例的主机硬件。每个实例类型提供不同的计算、内存
和存储功能,并按照这些功能分组到实例系列。选择一种基于您打算在实例上运行的应用程序或软件的需
求的实例类型。
Amazon EC2 为每个实例提供一致且可预计的 CPU 容量,无论实际的底层硬件是什么。
CPU、内存和实例存储这类主机资源是 Amazon EC2 专用的。但 Amazon EC2 也会在实例间共享主机的
另一些资源,例如网络和磁盘子系统。如果一台主机上的每个实例都试图尽可能多地使用这些共享的资
源,那么每个实例都将获得该资源相等份额。然而,当某个资源未被充分利用时,实例往往可以在它可用
时获取该资源的更高份额。
每种实例类型均从共享资源提供更高或更低的起始性能。例如,高 I/O 性能的实例类型能获取共享资源的
更高份额。分配更大份额的共享资源也降低了 I/O 性能的方差。对于大多数应用程序,中等 I/O 是绰绰有
余的。然而,对于需要更大或一致性更高的 I/O 性能的应用程序,可考虑使用更高 I/O 性能的实例类型。
内容
• 可用实例类型 (p. 122)
• 硬件规格 (p. 123)
• 虚拟化类型 (p. 123)
• 联网和存储功能 (p. 123)
• 实例限量 (p. 124)
可用实例类型
Amazon EC2 提供了以下各表中列出的实例类型。
当前一代实例
为获得最佳性能,我们建议您在启动新实例时使用当前一代实例类型。有关当前一代实例类型的更多信
息,请参阅 Amazon EC2 实例。
实例系列
当前一代实例类型
通用型
t2.nano | t2.micro | t2.small | t2.medium | t2.large |
m3.medium | m3.large | m3.xlarge | m3.2xlarge
计算优化
c4.large | c4.xlarge | c4.2xlarge | c4.4xlarge | c4.8xlarge
| c3.large | c3.xlarge | c3.2xlarge | c3.4xlarge |
c3.8xlarge
内存优化
r3.large | r3.xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge
存储优化
i2.xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge |
d2.xlarge | d2.2xlarge | d2.4xlarge | d2.8xlarge
GPU 实例
g2.2xlarge
上一代实例
Amazon Web Services 为根据上一代实例优化了应用程序,但尚未升级的用户提供了上一代实例。我们
鼓励您使用最新一代的实例以获得最佳性能,但我们将继续支持这些上一代数据库实例。如果您目前使用
的是上一代实例,您可以查看哪个当前一代实例是合适的升级。有关更多信息,请参阅上一代实例。
122
Amazon Elastic Compute Cloud Linux 实例用户指南
硬件规格
实例系列
上一代实例类型
通用型
m1.small | m1.medium | m1.large | m1.xlarge
计算优化
c1.medium | c1.xlarge | cc2.8xlarge
内存优化
m2.xlarge | m2.2xlarge | m2.4xlarge | cr1.8xlarge
存储优化
hi1.4xlarge | hs1.8xlarge
GPU 实例
cg1.4xlarge
微型实例
t1.micro
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
要确定最适合您需求的实例类型,我们建议启动一个实例,并使用自己的基准测试应用程序。由于是按实
例小时数付费,因而您能够在做出决策前方便而经济地测试不同的实例类型。
在做出决策后,如果您的需求有变化,则可以在稍后调整您的实例的大小。有关更多信息,请参阅 调整
您的实例大小 (p. 146)。
虚拟化类型
每个实例类型支持以下虚拟化类型中的一种或两种:半虚拟 (PV) 或硬件虚拟机 (HVM)。实例的虚拟化类
型由用于启动该实例的 AMI 决定。
为获得最佳性能,我们建议您使用 HVM AMI。此外,HVM AMI 还需要利用增强联网。HVM 虚拟化使用
AWS 平台提供的硬件辅助技术。借助 HVM 虚拟化,客户虚拟机如同在本地硬件平台上运行一样,除了
仍然使用半虚拟 (PV) 网络和存储驱动程序以提高性能。有关更多信息,请参阅 Linux AMI 虚拟化类
型 (p. 66)。
联网和存储功能
在选择实例类型时,这将决定以下哪些联网和存储功能可用:
• 某些实例类型在 EC2-Classic 中不可用,因此您必须在 VPC 中启动它们。通过在 VPC 中启动某个实
例,您可以利用在 EC2-Classic 中不可用的功能,如增强联网、将多个私有 IP 地址分配给实例和更改
分配给您的实例的安全组。有关更多信息,请参阅 实例类型仅在 VPC 中可用 (p. 518)。
• 一些实例类型支持 EBS 卷和实例存储卷,而另一些实例类型仅支持 EBS 卷。某些支持实例存储卷的实
例使用固态硬盘 (SSD) 来提供非常高的随机 I/O 性能。有关更多信息,请参阅 存储 (p. 583)。
• 若要获得 Amazon EBS I/O 的额外专用容量,您可以将某些实例类型作为 EBS 优化实例启动。某些实
例类型在默认情况下会进行 EBS 优化。有关更多信息,请参阅 Amazon EBS 优化实例 (p. 629)。
• 若要为高性能计算 (HPC) 应用程序优化实例,您可以启动某个置放群组中的某些实例类型。有关更多
信息,请参阅 置放群组 (p. 566)。
• 若要显著提高每秒数据包数 (PPS) 性能、减弱网络抖动和减少网络延迟,您可以为某些当前一代实例
类型启用增强联网。有关更多信息,请参阅 对 VPC 中的 Linux 实例启用增强联网 (p. 572)。
• 支持的最大 MTU 因实例类型而异。所有 Amazon EC2 实例类型都支持标准以太网 V2 1500 MTU 框
架。所有当前一代实例都支持 9001 MTU(超大框架),某些上一代实例也支持它们。有关更多信息,
请参阅 EC2 实例的网络最大传输单位 (MTU) (p. 569)。
下表总结了当前一代实例类型支持的联网和存储功能。
123
Amazon Elastic Compute Cloud Linux 实例用户指南
实例限量
仅限 VPC
仅限于 EBS
C3
C4
是
SSD 卷
置放群组
是
是
是
D2
仅限 HVM
增强联网
是
是
是
是
是
是
是
G2
是
是
是
I2
是
是
是
是
M3
是
是
是
是
是
是
是
M4
是
是
R3
T2
是
是
是
是
实例限量
在一个区域中可以启动的实例总数存在限制,某些实例类型还存在其他限制。
有关默认限制的更多信息,请参阅我可以在 Amazon EC2 中运行多少个实例?
有关查看当前限制或请求提高当前限制的更多信息,请参阅 Amazon EC2 服务限制 (p. 688)。
T2 实例
Abstract
使用 T2 实例提供适度的基准性能,并能够根据您工作负载的需要实现性能的显著突增。T2 实例非常适合于通用工作
负载,如 Web 服务器、开发人员环境和小型数据库。
T2 实例旨在提供适度的基准性能,并能够根据您工作负载的需要实现性能的显著突增。它们旨在用于不
经常或不持续使用完整 CPU、但偶尔需要突增性能的工作负载。T2 实例非常适合于通用工作负载,如
Web 服务器、开发人员环境和小型数据库。有关 T2 实例定价的更多信息和其他硬件详细信息,请参阅
Amazon EC2 实例。
如果您的账户不到 12 个月,您可以在特定使用限制下免费使用 t2.micro 实例。有关更多信息,请参阅
AWS 免费套餐。
内容
• 硬件规格 (p. 124)
• T2 实例要求 (p. 125)
• CPU 积分 (p. 125)
• 监控 CPU 积分 (p. 126)
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
124
Amazon Elastic Compute Cloud Linux 实例用户指南
T2 实例
T2 实例要求
以下是 T2 实例的要求:
• 必须在 Virtual Private Cloud (VPC) 中启动 T2 实例;EC2-Classic 平台不支持 T2 实例。Amazon VPC
允许您在已经定义的虚拟网络内启动 AWS 资源。您无法将 EC2-Classic 中的现有实例的实例类型更改
为 T2 实例类型。有关 EC2-Classic 和 EC2-VPC 的更多信息,请参阅支持的平台 (p. 518)。有关启动仅
限 VPC 的实例的更多信息,请参阅实例类型仅在 VPC 中可用 (p. 518)。
• 您必须使用 HVM AMI 启动 T2 实例。有关更多信息,请参阅 Linux AMI 虚拟化类型 (p. 66)。
• 您必须使用 EBS 卷作为根设备来启动 T2 实例。有关更多信息,请参阅 Amazon EC2 根设备卷 (p. 14)。
• T2 实例可用作按需实例和预留实例,但它们不能用作竞价型实例、计划实例或专用实例。此外,它们
在专用主机上不受支持。有关这些选项的详细信息,请参阅 实例购买选项 (p. 149)。
• 在一个区域中可以启动的实例总数存在限制,某些实例类型还存在其他限制。默认情况下,您最多可同
时运行 20 个 T2 实例。如果您需要更多 T2 实例,可以使用 Amazon EC2 实例请求表请求实例。
• 确保您选择的 T2 实例大小达到您的操作系统和应用程序的最低内存要求。在许多使用案例中,带有消
耗大量内存和 CPU 资源的图形用户界面的操作系统(例如,Microsoft Windows)可能需要 t2.micro
或更大的实例大小。随着您的工作负载对内存和 CPU 的需求随着时间增加,您可以扩展到更大的 T2
实例或其他 EC2 实例类型。
CPU 积分
一个 CPU 积分可以持续一分钟提供完整的 CPU 核心性能。传统 Amazon EC2 实例类型提供固定性能,
而 T2 实例提供基准水平的 CPU 性能并能够突增到基准水平之上。基准性能和突增能力由 CPU 积分控
制。
什么是 CPU 积分?
一个 CPU 积分等于一个 vCPU 按 100% 使用率运行一分钟。vCPU、利用率和时间的其他组合也等于一
个 CPU 积分;例如,一个 vCPU 按 50% 利用率运行两分钟,或是两个 vCPU 按 25% 利用率运行两分
钟。
如何赢取 CPU 积分?
每个 T2 实例开始都附带适量的初始 CPU 积分余额,随后每小时都以固定的数额持续(以毫秒级精度)
接收 CPU 积分(具体取决于实例大小)。用于加减积分的核算过程也以毫秒级精度进行,因此您不必担
心 CPU 积分超支;CPU 的短时间突增只消耗少部分的 CPU 积分。
当 T2 实例使用的 CPU 资源少于其基本性能水平资源限量时(如空闲时),未使用的 CPU 积分(或积分
赢取与花费之间的差异)将存入积分余额且最多保留 24 小时,从而积累 CPU 积分以应对性能突增。当
您的 T2 实例需要的 CPU 资源超过其基本性能水平资源限量时,它将占用 CPU 积分余额中的积分突增到
最大 100% 的使用率。T2 实例拥有的 CPU 资源积分越多,它在需要更佳性能时可以超过其基本性能水
平的突增时间就越长。
下表列出启动时收到的初始 CPU 积分分配、收到 CPU 积分的速率、采用完整核心性能百分比形式的基
准性能水平,以及实例可以累积的获得的最大 CPU 积分余额。
实例类型
初 每小时获得的 CPU 积分
始
U
P
C
积
分
*
基本性能(CPU 使 获得的最大 CPU 积
用率)
分余额***
t2.nano
03 3
5%
72
t2.micro
03 6
10%
144
125
Amazon Elastic Compute Cloud Linux 实例用户指南
T2 实例
实例类型
初 每小时获得的 CPU 积分
始
U
P
C
积
分
*
基本性能(CPU 使 获得的最大 CPU 积
用率)
分余额***
t2.small
03 12
20%
288
t2.medium
06 24
40%**
576
t2.large
06 36
60%**
864
* 可使用初始 CPU 积分启动的 T2 实例数量存在限制;默认情况下,该限制被设置为每个区域中每个账
户的任何 T2 实例每 24 小时可启动 100 次。如果您要提高此限制,则可以使用基于 Amazon EC2 积分
的实例启动积分表提出客户支持限制提高请求。如果您的账户在 24 小时内不会启动 100 个以上 T2 实
例,则此限制对您没有影响。
** t2.medium 和 t2.large 实例有两个 vCPU。基本性能是两个 vCPU 的聚合。例如,如果您完全使
用了一个 vCUP 并少量使用了其他 vCPU,则您的 CloudWatch 指标将显示利用率超过 50%。
*** 此最大值不包括初始 CPU 积分,初始积分将最先使用,并且不会过期。例如,启动后保持空闲长达
24 小时以上的 t2.micro 实例可达到高达 174 个积分余额(30 个初始 CPU 积分 + 获得的 144 个积
分)。但是,在此实例使用初始 30 个 CPU 积分后,积分余额绝对不会超过 144 个,除非停止并再次
启动此实例产生了新的初始 CPU 积分余额。
此初始积分余额旨在提供良好的启动体验。实例的获得的最大积分余额等于每小时收到的 CPU 积分数乘
以 24 小时。例如,一个 t2.micro 实例每小时获得 6 个 CPU 积分,可以积累获得的最大 CPU 积分余
额为 144 个 CPU 积分。
CPU 积分是否会过期?
初始 CPU 积分不会过期,但将在实例使用 CPU 积分时最先使用它们。以指定的 5 分钟时间为间隔,未
使用的获得的积分将在获得后 24 小时过期,届时,在添加任何新获得的积分之前,将从 CPU 积分余额
中删除过期的任何积分。此外,实例的 CPU 积分余额不会在实例停止与启动之间保留;停止实例会导致
它丢失其全部积分余额,但是当它重新启动时会再次收到初始积分余额。
例如,如果 t2.small 实例在某个小时的 CPU 使用率为 5%,则它会使用 3 个 CPU 积分(60 分钟的
5%),但它在该小时赢取 12 个 CPU 积分,因此相差的 9 个 CPU 积分会添加到 CPU 积分余额。若在
这个小时内,余额中有任何 CPU 积分达到其 24 小时的过期时间,这些积分(如果实例在 24 小时前完全
空闲,则会有多达 12 个积分)也会从余额中扣除。如果过期的积分量大于赢取的积分量,则积分余额会
减少;相反,如果过期的积分量小于赢取的积分量,则积分余额会增多。
如果我用掉了所有积分,会发生什么情况?
如果您的实例使用其所有 CPU 积分余额,则性能会保持在基准性能水平。如果您的实例在积分较少的情
况下运行,则实例的 CPU 积分消耗(因此还有 CPU 性能)会在 15 分钟间隔内逐渐降低到基本性能水
平,因此您在 CPU 积分耗尽时不会遇到急剧的性能下降。如果您的实例经常用完所有 CPU 积分余额,
建议您使用更大的 T2 大小,或使用固定性能实例类型(如 M3 或 C3)。
监控 CPU 积分
您可以查看 CloudWatch 控制台 Amazon EC2 每个实例的指标中提供的每个 T2 实例积分余额。T2 实例
有两个指标:CPUCreditUsage 和 CPUCreditBalance。CPUCreditUsage 指标指示在测量期内使用
的 CPU 积分数。CPUCreditBalance 指标指示 T2 实例获得的未使用 CPU 积分数。此余额会在突增期
间耗尽,因为花费 CPU 积分的速度比获得积分的速度更快。
126
Amazon Elastic Compute Cloud Linux 实例用户指南
C4 实例
下表介绍可以使用的新 CloudWatch 指标;有关在 CloudWatch 中使用这些指标的信息,请参阅列出实例
的可用 CloudWatch 指标 (p. 382)。
指标
说明
CPUCreditUsage
(仅对 T2 实例有效)在指定时段内消耗的 CPU 积分数量。
这项指标标识了物理 CPU 在处理虚拟 CPU 分配给实例的指令时所
花费的时间。
Note
CPU 积分指标每 5 分钟可用一次。
单位:计数
CPUCreditBalance
(仅对 T2 实例有效)实例累积的 CPU 积分数量。
该指标用于确定实例在给定的速率下可以突增至超出基准性能水平的
时长。
Note
CPU 积分指标每 5 分钟可用一次。
单位:计数
C4 实例
Abstract
使用 C4 实例可提供高性能计算和高级优化功能。
C4 实例是受益于高性能处理器的受计算限制的应用程序的理想选择。C4 实例也适用于以下应用程序:
• 批处理工作负载
• 媒体转码
• 高流量 Web 服务器、大型多人联机 (MMO) 游戏服务器和广告服务引擎
• 高性能计算 (HPC) 以及其他计算密集型应用程序
内容
• 硬件规格 (p. 127)
• C4 实例功能 (p. 128)
• C4 实例要求 (p. 129)
• 支持 36 个 vCPU (p. 129)
硬件规格
C4 实例基于自定义 2.9 GHz Intel® Xeon® E5-2666 v3 (Haswell) 处理器,并针对 Amazon EC2 专门进
行了优化。C4 实例采用 Intel® 睿频加速技术,c4.8xlarge 实例中的单核或双核经睿频加速后,处理器
时钟频率可高达 3.5Ghz。
127
Amazon Elastic Compute Cloud Linux 实例用户指南
C4 实例
下表突出显示了 Intel® Xeon® E5-2666 v3 处理器的功能集。有关更多信息,请参阅 Intel 和 Amazon Web
Services。
功能
规范
处理器编号
E5-2666 v3
Intel® 智能缓存
25 MiB
指令集
64 位
指令集扩展
AVX 2.0
平版印刷
22 nm
处理器基础频率
2.9 GHz
所有核心最大睿频
3.2 GHz
最大睿频
3.5 GHz(用于 c4.8xlarge 上)
Intel® 睿频加速技术
2.0
Intel® vPro 技术
是
Intel® 超线程技术
是
Intel® 虚拟化技术 (VT-x)
是
Intel® 用于定向 I/O 的虚拟化技术 (VT-d)
是
Intel® 具扩展页表 (EPT) 的 VT-x
是
Intel® 64
是
空闲状态
是
增强的 Intel SpeedStep® 技术
是
热量监控技术
是
AES 新指令
是
安全密钥
是
执行禁用位
是
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
C4 实例功能
以下是 C4 实例功能的摘要:
128
Amazon Elastic Compute Cloud Linux 实例用户指南
C4 实例
• 默认情况下,C4 实例为 EBS 优化实例,可为 Amazon EBS 提供从 500 Mbps 到 4,000 Mbps 的专用
数据块存储吞吐量,无需其他费用。通过 EBS 优化的实例,您可以消除 Amazon EBS I/O 与 C4 实例
的其他网络流量之间的争用,从而使 EBS 卷持续获得高性能。有关更多信息,请参阅 Amazon EBS 优
化实例 (p. 629)。
• 您可以启用增强联网功能。通过增强联网功能,您可以显著提高每秒数据包数 (PPS) 性能,降低网络
抖动,并减少延迟。有关更多信息,请参阅 对 VPC 中的 Linux 实例启用增强联网 (p. 572)。
• 您可以在置放群组中集中放置 C4 实例。置放群组可在单个可用区域内实现实例间的低延迟和高带宽连
接。有关更多信息,请参阅 置放群组 (p. 566)。
• c4.8xlarge 实例类型提供了在 Linux 上控制处理器 C 状态和 P 状态的功能。C 状态控制当核心处理
非活动状态时可以进入的睡眠级别,而 P 状态控制核心的所需性能(以 CPU 频率的形式)。有关更多
信息,请参阅 您的 EC2 实例的处理器状态控制 (p. 272)。
C4 实例要求
以下是 C4 实例的要求:
• C4 实例需要 64 位 HVM AMI。它们具有大容量内存(RAM 最高可达 60 GiB),需要 64 位操作系统
才能充分利用该容量。与内存增强型实例类型上的半虚拟化 (PV) AMI 相比,HVM AMI 可提供卓越的
性能。此外,您必须使用 HVM AMI 才能利用增强联网功能。
• 必须在 Virtual Private Cloud (VPC) 中启动 C4 实例;EC2-Classic 平台不支持 C4 实例。Amazon VPC
允许您在已经定义的虚拟网络内启动 AWS 资源。有关 EC2-Classic 和 EC2-VPC 的更多信息,请参阅
支持的平台 (p. 518)。有关启动仅限 VPC 的实例的更多信息,请参阅实例类型仅在 VPC 中可用 (p. 518)。
• 在一个区域中可以启动的实例总数存在限制,某些 C4 实例类型还存在其他限制。有关更多信息,请参
阅我可以在 Amazon EC2 中运行多少个实例?
如果您需要更多 C4 实例,可以使用 Amazon EC2 实例请求表请求实例。
支持 36 个 vCPU
c4.8xlarge 实例类型提供了 36 个 vCPU,在某些 vCPU 数量限制为 32 个的 Linux 操作系统中可能会
导致启动问题。我们强烈建议您在启动 c4.8xlarge 实例时,使用最新的 AMI。
以下 Linux AMI 支持启动具有 36 个 vCPU 的 c4.8xlarge 实例:
•
•
•
•
Amazon Linux AMI 2016.03 (HVM)
Ubuntu Server 14.04 LTS (HVM)
Red Hat Enterprise Linux 7.1 (HVM)
SUSE Linux Enterprise Server 12 (HVM)
如果必须为您的应用程序使用其他 AMI,并且您的 c4.8xlarge 实例启动未成功完成(例如,如果您的
实例状态在启动过程中因 Client.InstanceInitiatedShutdown 状态转换原因而更改为 stopped),
则请修改您的实例(如以下过程所述)以支持 32 个以上的 vCPU,以便能够使用 c4.8xlarge 实例类
型。
更新实例以支持 32 个以上的 vCPU
1.
通过选择除 c4.8xlarge 以外的任何其他 C4 实例类型来使用您的 AMI 启动 C4 实例。
2.
3.
遵照特定于操作系统的说明,将内核更新到最新版本。例如,对于 RHEL 6,可使用 sudo yum update
-y kernel 命令。
停止实例。
4.
(可选)从可用于启动其他任何您将来所需的 c4.8xlarge 实例的实例创建 AMI。
129
Amazon Elastic Compute Cloud Linux 实例用户指南
GPU 实例
5.
将已停止实例的实例类型更改为 c4.8xlarge(依次选择 Actions、Instance Settings、Change
Instance Type,然后按照说明进行操作)。
6.
7.
启动实例。如果实例正确启动,则您已完成操作。如果实例仍未正确启动,请继续执行下一个步骤。
(可选)如果实例仍未正确启动,则实例上的内核可能不支持 32 个以上的 vCPU。但是,如果您限
制 vCPU 的数量,则可能可以启动实例。
a.
将已停止实例的实例类型更改为 c4.8xlarge 之外的任何 C4 实例类型(依次选择 Actions、
Instance Settings、Change Instance Type,然后按照说明进行操作)。
b.
遵照特定于操作系统的说明,将 maxcpus=32 选项添加到您的启动内核参数。例如,对于 RHEL
6,编辑 /boot/grub/menu.lst 文件,并将以下选项添加到最近处于活动状态的 kernel 条
目:
default=0
timeout=1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-504.3.3.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 maxcpus=32 console=ttyS0
ro root=UUID=9996863e-b964-47d3-a33b-3920974fdbd9 rd_NO_LUKS KEYBOARD
TYPE=pc KEYTABLE=us LANG=en_US.UTF-8 xen_blkfront.sda_is_xvda=1 con
sole=ttyS0,115200n8 console=tty0 rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto rd_NO_LVM rd_NO_DM
initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
c.
d.
停止实例。
(可选)从可用于启动其他任何您将来所需的 c4.8xlarge 实例的实例创建 AMI。
e.
将已停止实例的实例类型更改为 c4.8xlarge(依次选择 Actions、Instance Settings、Change
Instance Type,然后按照说明进行操作)。
启动实例。
f.
Linux GPU 实例
Abstract
GPU 实例专用于图形和一般用途的 GPU 计算应用程序。
如果您需要较高的并行处理能力,则使用 GPU 实例会使您受益,通过这些实例可以访问具有多达 1 536
个 CUDA 核心和 4 GB 视频内存的 NVIDIA GPU。可以通过 GPU 实例来利用统一计算设备架构 (CUDA)
或 OpenCL 并行计算框架,从而为很多科学、工程和绘制应用加速。还可以将这些实例用于图形应用程
序,包括游戏流式处理、3-D 应用流式处理和其他图形工作负载。
GPU 实例作为基于 HVM 的实例来运行。硬件虚拟机 (HVM) 虚拟化使用 AWS 平台提供的硬件辅助技术。
借助 HVM 虚拟化,客户虚拟机如同在本地硬件平台上运行一样,除了仍然使用半虚拟 (PV) 网络和存储
驱动程序提高性能之外。这使 Amazon EC2 可以在每个 GPU 实例中提供对一个或多个离散 GPU 的专用
访问。
您可以在群组中集群置放 GPU 实例。置放群组可在单个可用区域内实现实例间的低延迟和高带宽连接。
有关更多信息,请参阅 置放群组 (p. 566)。
内容
• 硬件规格 (p. 131)
130
Amazon Elastic Compute Cloud Linux 实例用户指南
GPU 实例
• GPU 实例限制 (p. 131)
• GPU 实例的 AMI (p. 131)
• 在 Linux 上安装 NVIDIA 驱动程序 (p. 131)
有关 Windows GPU 实例的信息,请参阅 Amazon EC2 用户指南(适用于 Microsoft Windows 实例) 中
的 Windows GPU 实例。
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
GPU 实例限制
GPU 实例具有以下限制:
• 您必须使用 HVM AMI 启动实例。
• 除非安装了 NVIDIA 驱动程序,否则它们无法访问 GPU。
• 您可运行的实例数存在限制。有关更多信息,请参阅 Amazon EC2 常见问题中的我可以在 Amazon EC2
中运行多少个实例?。要请求增大这些限制,请使用以下表格:增大 Amazon EC2 实例限制请求。
GPU 实例的 AMI
为了帮助您开始使用,NVIDIA 提供了适用于 GPU 实例的 AMI。这些参考 AMI 包含 NVIDIA 驱动程序,
可实现 NVIDIA GPU 的完整功能和性能。有关具有 NVIDIA 驱动程序的 AMI 的列表,请参阅 AWS
Marketplace (NVIDIA GRID)。
您可以使用任何 HVM AMI 启动 CG1 和 G2 实例。
在 Linux 上安装 NVIDIA 驱动程序
GPU 实例必须具有合适的 NVIDIA 驱动程序。必须针对您计划在实例上运行的内核编译您安装的 NVIDIA
驱动程序。
Amazon 在 AWS Marketplace 中针对每次官方内核升级向 AMI 提供 NVIDIA 内核驱动程序的兼容更新版
本。如果您决定使用与 Amazon 提供的版本不同的 NVIDIA 驱动程序,或决定使用非 Amazon 官方版本
的内核,则须从您的系统中卸载 Amazon 提供的 NVIDIA 软件包,以避免与您将要安装的驱动程序版本相
冲突。
使用此命令卸载 Amazon 提供的 NVIDIA 软件包:
[ec2-user ~]$ sudo yum erase nvidia cuda
Amazon 提供的 CUDA 工具包安装包对 NVIDIA 驱动程序有依赖性。卸载 NVIDIA 软件包也会删除 CUDA
工具包。必须在安装 NVIDIA 驱动程序之后重新安装 CUDA 工具包。
您可以从 http://www.nvidia.com/Download/Find.aspx 下载 NVIDIA 驱动程序。为实例选择适当的驱动程
序:
G2 实例
产品类型
GRID
产品系列
GRID 系列
131
Amazon Elastic Compute Cloud Linux 实例用户指南
GPU 实例
产品
GRID K520
操作系统
Linux 64 位
建议/测试
建议/认证
CG1 实例
产品类型
Tesla
产品系列
M-Class
产品
M2050
操作系统
Linux 64 位
建议/测试
建议/认证
有关安装和配置驱动程序的更多信息,请在 NVIDIA 网站上打开驱动程序下载页面上的 ADDITIONAL
INFORMATION (附加信息) 选项卡,然后单击“README (自述文件)”链接。
手动安装 NVIDIA 驱动程序
安装 Amazon Linux AMI 的驱动程序
1.
运行 yum update 命令以获取用于您实例的包的最新版本。
[ec2-user ~]$ sudo yum update -y
2.
重启实例以加载最新内核版本。
[ec2-user ~]$ sudo reboot
3.
4.
重启之后重新连接到实例。
安装“开发工具”包组。
[ec2-user ~]$ sudo yum groupinstall -y "Development tools"
5.
确保kernel-devel软件包已安装并与您当前运行的内核版本相匹配。
[ec2-user ~]$ sudo yum install kernel-devel-`uname -r`
6.
下载之前确定的驱动程序包。例如,以下命令下载 G2 实例驱动程序的 340.46 版本。
[ec2-user ~]$ wget http://us.download.nvidia.com/XFree86/Linuxx86_64/340.46/NVIDIA-Linux-x86_64-340.46.run
7.
运行自安装脚本以安装 NVIDIA 驱动程序。例如:
[ec2-user ~]$ sudo /bin/bash ./NVIDIA-Linux-x86_64-340.46.run
132
Amazon Elastic Compute Cloud Linux 实例用户指南
I2 实例
8.
9.
重启实例。有关更多信息,请参阅 重启您的实例 (p. 253)。
确认驱动程序正常运行。以下命令的响应会列出已安装的 NVIDIA 驱动程序版本和有关 GPU 的详细
信息。
[ec2-user ~]$ nvidia-smi -q | head
==============NVSMI LOG==============
Timestamp
Driver Version
: Thu Oct
: 340.46
Attached GPUs
GPU 0000:00:03.0
Product Name
Product Brand
: 1
2 17:28:29 2014
: GRID K520
: Grid
I2 实例
Abstract
I2 实例提供非常快速的 SSD 支持型实例存储,它经过优化,具有极高的随机 I/O 性能和较低的每 IOPS 成本。
I2 实例经过了优化,可以向应用程序提供每秒上万次低延迟性随机 I/O 操作 (IOPS)。它们非常适合用于
下列情况:
• NoSQL 数据库(例如,Cassandra 和 MongoDB)
• 集群化数据库
• 联机事务处理 (OLTP) 系统
内容
• 硬件规格 (p. 133)
• I2 实例功能 (p. 133)
• I2 实例要求 (p. 134)
• SSD I/O 性能 (p. 134)
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
I2 实例功能
以下是 I2 实例功能的摘要:
• 主要数据存储是基于 SSD 的实例存储。与所有实例存储一样,这些卷只在实例生命周期内存在。当您
停止或终止实例时,将擦除其实例存储中的应用程序和数据。我们建议您定期备份或复制您存储在实例
存储中的数据。有关更多信息,请参阅 SSD 实例存储卷 (p. 650)。
• 您可以启用增强联网功能。通过增强联网功能,您可以显著提高每秒数据包数 (PPS) 性能,降低网络
抖动,并减少延迟。有关更多信息,请参阅 对 VPC 中的 Linux 实例启用增强联网 (p. 572)。
• 您可以在置放群组中集中放置 I2 实例。置放群组可在单个可用区域内实现实例间的低延迟和高带宽连
接。有关更多信息,请参阅 置放群组 (p. 566)。
133
Amazon Elastic Compute Cloud Linux 实例用户指南
D2 实例
• 您可以启用 EBS 优化来为 Amazon EBS I/O 获取额外的专用容量。有关更多信息,请参阅 Amazon
EBS 优化实例 (p. 629)。
I2 实例要求
以下是 I2 实例的要求:
• 您必须使用 HVM AMI 启动 I2 实例。
• 为确保您的 Linux 上的 实例实现最佳 IOPS 性能,我们建议您使用 Amazon Linux AMI 的最新版本,或
者内核版本为 3.8 或更高版本的其他 Linux AMI。如果您使用的 Linux AMI 的内核版本不是 3.8 或更高
版本,则您的实例将无法实现此实例类型可获得的最大 IOPS 性能。有关更多信息,请参阅 SSD I/O
性能 (p. 134)。
• 在一个区域中可以启动的实例总数存在限制,某些 I2 实例类型还存在其他限制。有关更多信息,请参
阅我可以在 Amazon EC2 中运行多少个实例?
如果您需要更多 I2 实例,可以使用 Amazon EC2 实例请求表请求实例。
SSD I/O 性能
如果您使用内核版本为 3.8 或更高版本的 Linux AMI 并使用可用于该实例的、基于 SSD 的所有实例存储
卷,则您可以获取下表所列的最低随机 IOPS(4,096 字节的数据块大小)。否则,您获得的 IOPS 性能
将低于下表所示数值。
实例大小
读取 IOPS
首次写入 IOPS
i2.xlarge
35,000
35,000
i2.2xlarge
75,000
75,000
i2.4xlarge
175,000
155,000
i2.8xlarge
365,000
315,000
随着您不断在您的实例的基于 SSD 的实例存储中填充数据,您可以达到的写入 IOPS 将不断减少。这是
因为,SSD 控制器必须执行额外的工作,即查找可用空间、重写现有数据,以及擦除未使用的空间以使
之可供重写。这一垃圾回收过程将导致对 SSD 的内部写入放大影响,这以 SSD 写入操作数相对于用户
写入操作数的比率形式来表示。如果写入操作数并非 4,096 字节的倍数,或不在 4,096 字节这一边界上,
则性能的降低会更明显。如果您写入的字节数较少或不在边界上,则 SSD 控制器必须读取周围的数据并
在新位置存储结果。这种模式会大大增加写入放大的影响,加长延迟,并显著降低 I/O 性能。
SSD 控制器可以使用多种策略来减少写入放大的影响。其中的一个策略是在 SSD 实例存储中预订空间,
以便控制器更高效地管理可用于写入操作的空间。这称为超额配置。为 I2 实例提供的基于 SSD 的实例存
储卷不会为超额配置预留空间。要减少写入放大问题造成的影响,您应留出 10% 的卷空间不进行分区,
以便 SSD 控制器可使用这部分空间来进行超额配置。这会减少您可使用的存储空间,但会提升性能。
I2 实例存储支持的卷支持 TRIM。如果不再需要已写入的数据,可以使用 TRIM 命令通知 SSD 控制器。
这将为控制器提供更多可用空间,从而可以减少写入放大的影响并提高性能。有关更多信息,请参阅 实
例存储卷 TRIM 支持 (p. 650)。
D2 实例
Abstract
使用 D2 实例可提供高计算性能和高级优化功能。
134
Amazon Elastic Compute Cloud Linux 实例用户指南
D2 实例
D2 实例适用于需要对本地存储上的极大型数据集进行高性能顺序读写访问的工作负载。D2 实例也适用于
以下应用程序:
• 大规模并行处理 (MPP) 数据仓库
• MapReduce 和 Hadoop 分布式计算
• 日志或数据处理应用程序
内容
• 硬件规格 (p. 135)
• D2 实例功能 (p. 135)
• D2 实例要求 (p. 135)
• 支持 36 个 vCPU (p. 136)
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
D2 实例功能
以下是 D2 实例的功能的摘要:
• D2 实例的主要数据存储是基于 HDD 的实例存储。与所有实例存储一样,这些卷只在实例生命周期内
存在。有关实例存储卷的更多信息,请参阅 Amazon EC2 实例存储 (p. 645)。
• 默认情况下,D2 实例为 EBS 优化实例,可为 Amazon EBS 提供从 750 Mbps 到 4,000 Mbps 的专用
数据块存储吞吐量,无需其他费用。通过 EBS 优化的实例,您可以消除 Amazon EBS I/O 与 D2 实例
的其他网络流量之间的争用,从而使 EBS 卷持续获得高性能。有关更多信息,请参阅 Amazon EBS 优
化实例 (p. 629)。
• 您可以启用增强联网功能。通过增强联网功能,您可以显著提高每秒数据包数 (PPS) 性能,降低网络
抖动,并减少延迟。有关更多信息,请参阅 对 VPC 中的 Linux 实例启用增强联网 (p. 572)。
• 您可以在置放群组中集中群集 D2 实例。置放群组可在单个可用区域内实现实例间的低延迟和高带宽连
接。有关更多信息,请参阅 置放群组 (p. 566)。
• d2.8xlarge 实例类型提供了在 Linux 上控制处理器 C 状态和 P 状态的功能。C 状态控制当核心处理
非活动状态时可以进入的睡眠级别,而 P 状态控制核心的所需性能(以 CPU 频率的形式)。有关更多
信息,请参阅 您的 EC2 实例的处理器状态控制 (p. 272)。
D2 实例要求
以下是 D2 实例的要求:
• D2 实例需要 64 位 HVM AMI。它们具有大容量内存(RAM 最高可达 244 GiB),需要 64 位操作系统
才能充分利用该容量。与内存增强型实例类型上的半虚拟化 (PV) AMI 相比,HVM AMI 可提供卓越的
性能。此外,您必须使用 HVM AMI 才能利用增强联网功能。
• 在一个区域中可以启动的实例总数存在限制,某些 D2 实例类型还存在其他限制。有关更多信息,请参
阅我可以在 Amazon EC2 中运行多少个实例?
如果您需要更多 D2 实例,可以使用 Amazon EC2 实例请求表请求实例。
• 您的 d2.8xlarge 实例能够通过 2 MiB 的数据块大小实现 3.5 GB/s 的读性能和 3.1 GB/s 的写性能。
为确保 Linux 上的 D2 实例实现最佳磁盘吞吐量性能,建议使用 Amazon Linux AMI 的最新版本,或者
内核版本为 3.8 或更高版本的其他 Linux AMI。如果使用可支持持久授予(可显著提高磁盘吞吐量和可
扩展性的 Xen 数据块环协议的扩展)的 Linux 内核,D2 实例可提供最佳磁盘性能。有关持久授予的更
多信息,请参阅 Xen 项目博客中的文章。
135
Amazon Elastic Compute Cloud Linux 实例用户指南
D2 实例
• d2.8xlarge 实例类型具有 36 个 vCPU,在某些 vCPU 数量限制为 32 个的 Linux 操作系统中可能会
导致启动问题。有关更多信息,请参阅 支持 36 个 vCPU (p. 136)。
支持 36 个 vCPU
d2.8xlarge 实例类型提供了 36 个 vCPU,在某些 vCPU 数量限制为 32 个的 Linux 操作系统中可能会
导致启动问题。我们强烈建议您在启动 d2.8xlarge 实例时,使用最新的 AMI。
以下 Linux AMI 支持启动具有 36 个 vCPU 的 d2.8xlarge 实例:
• Amazon Linux AMI 2016.03 (HVM)
• Ubuntu Server 14.04 LTS (HVM)
• Red Hat Enterprise Linux 7.1 (HVM)
• SUSE Linux Enterprise Server 12 (HVM)
如果必须为您的应用程序使用其他 AMI,并且您的 d2.8xlarge 实例启动未成功完成(例如,如果您的
实例状态在启动过程中因 Client.InstanceInitiatedShutdown 状态转换原因而更改为 stopped),
则请修改您的实例(如以下过程所述)以支持 32 个以上的 vCPU,以便能够使用 d2.8xlarge 实例类
型。
更新实例以支持 32 个以上的 vCPU
1.
通过选择除 d2.8xlarge 以外的任何其他 D2 实例类型来使用您的 AMI 启动 D2 实例。
2.
遵照特定于操作系统的说明,将内核更新到最新版本。例如,对于 RHEL 6,可使用 sudo yum update
-y kernel 命令。
停止实例。
(可选)从可用于启动其他任何您将来所需的 d2.8xlarge 实例的实例创建 AMI。
3.
4.
5.
6.
7.
将已停止实例的实例类型更改为 d2.8xlarge(依次选择 Actions、Instance Settings、Change
Instance Type,然后按照说明进行操作)。
启动实例。如果实例正确启动,则您已完成操作。如果实例仍未正确启动,请继续执行下一个步骤。
(可选)如果实例仍未正确启动,则实例上的内核可能不支持 32 个以上的 vCPU。但是,如果您限
制 vCPU 的数量,则可能可以启动实例。
a.
b.
将已停止实例的实例类型更改为 d2.8xlarge 之外的任何 D2 实例类型(依次选择 Actions、
Instance Settings、Change Instance Type,然后按照说明进行操作)。
遵照特定于操作系统的说明,将 maxcpus=32 选项添加到您的启动内核参数。例如,对于 RHEL
6,编辑 /boot/grub/menu.lst 文件,并将以下选项添加到最近处于活动状态的 kernel 条
目:
default=0
timeout=1
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-504.3.3.el6.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-2.6.32-504.3.3.el6.x86_64 maxcpus=32 console=ttyS0
ro root=UUID=9996863e-b964-47d3-a33b-3920974fdbd9 rd_NO_LUKS KEYBOARD
TYPE=pc KEYTABLE=us LANG=en_US.UTF-8 xen_blkfront.sda_is_xvda=1 con
sole=ttyS0,115200n8 console=tty0 rd_NO_MD SYSFONT=latarcyrheb-sun16
crashkernel=auto rd_NO_LVM rd_NO_DM
initrd /boot/initramfs-2.6.32-504.3.3.el6.x86_64.img
c.
停止实例。
136
Amazon Elastic Compute Cloud Linux 实例用户指南
HI1 实例
d.
(可选)从可用于启动其他任何您将来所需的 d2.8xlarge 实例的实例创建 AMI。
e.
将已停止实例的实例类型更改为 d2.8xlarge(依次选择 Actions、Instance Settings、Change
Instance Type,然后按照说明进行操作)。
f.
启动实例。
HI1 实例
Abstract
HI1 实例提供非常快速的 SSD 支持型实例存储,它经过优化,具有极高的随机 I/O 性能和较低的每 IOPS 成本。
HI1 实例 (hi1.4xlarge) 可以向应用程序提供每秒上万次低延迟随机 I/O 操作 (IOPS)。它们非常适合用
于下列情况:
• NoSQL 数据库(例如,Cassandra 和 MongoDB)
• 集群化数据库
• 联机事务处理 (OLTP) 系统
您可以在置放群组中集中放置 HI1 实例。有关更多信息,请参阅 置放群组 (p. 566)。
默认情况下,您最多可运行两个 hi1.4xlarge 实例。如果您需要两个以上 hi1.4xlarge 实例,可以使
用 Amazon EC2 实例请求表请求更多实例。
内容
• 硬件规格 (p. 137)
• 磁盘 I/O 性能 (p. 137)
• SSD 存储 (p. 137)
硬件规格
hi1.4xlarge 实例类型是以固态硬盘 (SSD) 技术为基础的。
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
磁盘 I/O 性能
使用 Linux 半虚拟化 (PV) AMI 时,HI1 实例可以跨两个 SSD 数据卷向应用程序提供高于 120 000 4 KB
的随机读取 IOPS,以及介于 10 000 与 85 000 之间的 4 KB 随机写入 IOPS(具体取决于活动逻辑数据
块寻址范围)。使用硬件虚拟机 (HVM) AMI,性能大约是 90 000 4 KB 的随机读取 IOPS 和 9 000 到 75
000 4 KB 的随机写入 IOPS。
HI1 Windows 实例提供约 90 000 4 KB 的随机读取 IOPS,以及 9 000 到 75 000 4 KB 的随机写入 IOPS。
最大顺序吞吐量大约为每秒读取 2 GB,每秒写入 1.1 GB。
SSD 存储
在 HI1 实例上采用 SSD 存储:
• 原始数据源是采用 SSD 存储的实例存储。
• 读取性能始终如一,写入性能可能会有所波动。
137
Amazon Elastic Compute Cloud Linux 实例用户指南
HS1 实例
• 可能会发生写入放大问题。
• 目前不支持 TRIM 命令。
采用 SSD 存储的实例存储
hi1.4xlarge 实例使用由 Amazon EBS 支持的根设备。但是,它们的原始数据存储由实例存储中的 SSD
卷提供。像其他实例存储卷一样,这些实例存储卷只在实例生命周期内存在。由于 hi1.4xlarge 实例的
根设备由 Amazon EBS 支持,因此您仍然可以启动和停止实例。当您停止实例时,应用程序仍会存留,
但是实例存储中的生产数据则不会保留。有关实例存储卷的更多信息,请参阅 Amazon EC2 实例存
储 (p. 645)。
可变动的写入性能
写入性能受应用程序利用逻辑块寻址 (LBA) 空间的方式的影响。如果您的应用程序使用总 LBA 空间,则
写入性能可能会下降约 90%。测试您的应用程序并监控队列长度(卷的待处理 I/O 请求数量)和 I/O 大
小。
写入放大
写入放大是指与闪存和 SSD 相关的不良情况,在这种情况下,实际写入的物理信息量是计划写入的符合
逻辑的信息量的几倍。因为对闪存执行重新写入操作前,必须先执行擦除操作,而执行这些操作的过程会
导致用户数据和元数据遭到多次移动(或覆盖)。放大影响会在 SSD 的使用期限内增加必须写入次数,
而这会缩短稳定运行的时间。hi1.4xlarge 实例的设计自带调配模式,以用于最大程度上减少写入放大
问题的影响。
比起顺序写入操作,随机写入在写入放大方面的影响更为严重。如果您担心写入放大问题,可为您的应用
程序分配少于 1 TiB 的存储(也称为预留空间)。
TRIM 命令
TRIM 命令支持操作系统通知 SSD,之前保存的数据块被认为已废止。TRIM 限制写入放大的影响。
HI1 实例不提供 TRIM 支持。有关支持 TRIM 的实例的信息,请参阅 实例存储卷 TRIM 支持 (p. 650)。
HS1 实例
Abstract
HS1 实例具有很高的存储密度、较低的存储成本和较高的顺序 I/O 性能。
HS1 实例 (hs1.8xlarge) 为每个实例提供非常高的存储密度以及高连续读取和写入性能。它们非常适合
用于下列情况:
• 数据仓库
• Hadoop/MapReduce
• 并行文件系统
您可以在置放群组中集中放置 HS1 实例。有关更多信息,请参阅 置放群组 (p. 566)。
默认情况下,您最多可运行两个 HS1 实例。如果您需要两个以上的 HS1 实例,可以使用 Amazon EC2
实例请求表申请更多实例。
内容
• 硬件规格 (p. 139)
• 实例存储 (p. 139)
138
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
• 磁盘初始化 (p. 139)
• 设置内存限制 (p. 139)
• 设置用户限制 (ulimit) (p. 139)
硬件规格
HS1 实例同时支持由 Amazon Elastic Block Store (Amazon EBS) 支持的和由实例存储支持的Amazon 系
统映像 (AMI)。HS1 实例同时支持半虚拟化 (PV) 和硬件虚拟机 (HVM) AMI。
HS1 实例提供高带宽联网,也可用于 Provisioned IOPS 卷以提高一致性和性能。
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
实例存储
HS1 实例同时支持实例存储和 Amazon EBS 根设备卷。但是,即使在使用由 Amazon EBS 支持的实例
时,主要数据存储也是由实例存储中的硬盘驱动器提供的。像其他实例存储卷一样,这些实例存储卷只在
实例生命周期内存在。有关实例存储卷的更多信息,请参阅 Amazon EC2 实例存储 (p. 645)。
磁盘初始化
如果计划在稳定状态下长时间运行 HS1 实例,我们建议您首先对硬盘清零以提高性能。此过程需要长达
六小时的时间来完成。
设置内存限制
许多基于 Linux 的 AMI 的 CONFIG_XEN_MAX_DOMAIN_MEMORY 都设置为 70。我们建议您将其设置为适
合 117 GiB 的存储器。
设置用户限制 (ulimit)
许多基于 Linux 的 AMI 的 ulimit 都默认为 1024。我们建议您将 ulimit 增至 2048。
T1 微型实例
Abstract
T1 微型实例是一种低成本选择,可提供少量的计算资源。
T1 微型实例 (t1.micro) 提供了少量一致性 CPU 资源,可在存在更多周期时在短时间内突增 CPU 容
量。这种实例非常适合需要定期增加计算周期的低吞吐量应用程序和网站。
Note
t1.micro 是上一代实例,已被 t2.micro 取代,后者具有更好的性能配置。我们建议使用
t2.micro 实例类型而不是 t1.micro。有关更多信息,请参阅 T2 实例 (p. 124)。
t1.micro 实例只可作为 Amazon EBS 支持的实例使用。
本文档介绍了 t1.micro 实例的运行方式,以便您了解如何对其进行应用。我们的目的不在于指定确切
的行为,而是让您了解实例的工作行为,从而了解其性能。
主题
• 硬件规格 (p. 140)
139
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
• T1 微型实例的最佳应用程序 (p. 140)
• 峰值期间的可用 CPU 资源 (p. 142)
• 当实例用其分配到的资源时 (p. 142)
• 与 m1.small 实例类型的比较 (p. 144)
• 微型实例的 AMI 优化 (p. 146)
硬件规格
有关每种 Amazon EC2 实例类型的硬件规格的更多信息,请参阅 Amazon EC2 实例。
T1 微型实例的最佳应用程序
针对 CPU 占用状态与下图所示类似的工作负荷,t1.micro 实例可为其在短时间内突增 CPU 资源。
该实例设计为基本只在两个水平上用其 CPU 占用进行运行:普通的低背景水平和比背景水平高的简短峰
值水平。我们允许实例在最高为 2 个 EC2 计算单位 (ECU) 的情况下运行(一个 ECU 提供相当于一个
1.0-1.2 GHz 2007 Opteron 或 2007 Xeon 处理器的 CPU 容量)。最大层面与背景层面之间的比率被设定
为大值。我们对 t1.micro 实例的设计使其可以支持您的应用程序上每分钟产生的数十个请求。但是,
根据您的应用程序上的每个请求所需 CPU 资源量的不同,实际性能也会大有不同。
您的应用程序 CPU 占用状态可能会不同于前述章节中的描述。下图显示了一个不适合使用 t1.micro 实
例的应用程序的 CPU 占用状态。该应用程序针对每个请求都需要连续的数据处理 CPU 资源,从而带来
t1.micro 实例无法处理的 CPU 占用停滞期。
140
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
下图显示了另一个不适合使用 t1.micro 实例的 CPU 占用情况。此处的 CPU 占用峰值简短,但它们的
产生频率太高,以使微型实例不能处理。
下图显示了另一个不适合使用 t1.micro 实例的 CPU 占用情况。此图中峰值的产生频率不高,但峰值之
间的背景水平太高,导致 t1.micro 实例不能处理。
141
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
在上述每一个不适合使用 t1.micro 实例的工作负载案例中,我们建议您考虑使用其他实例类型。有关
实例类型的更多信息,请参阅 实例类型 (p. 121)。
峰值期间的可用 CPU 资源
当您的实例 bursts 按需调节峰值以计算资源时,该实例会使用主机上的未用资源。可用量的多少取决于
峰值产生时争用量的多少。无论主机上的其他实例是否处于峰值状态,实例的可用 CPU 资源永远不会为
零。
当实例用其分配到的资源时
我们希望您的应用程序在一段时间内只消耗一定量的 CPU 资源。如果应用程序消耗的资源超过您的实例
分配到的资源,则我们会暂时限制实例,以使其在较低的 CPU 水平下运行。如果您的实例继续使用其分
配到的所有资源,则其性能会下降。我们会增加对其 CPU 水平的限制时间,从而延长实例被允许再次进
行突增前的等待时间。
如果您针对您的 t1.micro 实例启用 CloudWatch 监控,则您可以使用 AWS 管理控制台中的“Avg CPU
Utilization (CPU 平均利用率)”图表来判断您的实例是否在定期使用其分配到的所有 CPU 资源。我们建议
您在每个给定的期间查看达到的最大值。如果最大值为 100%,我们建议您使用 Auto Scaling 来横向扩展
(使用其他 t1.micro 实例和负载均衡器),或迁移到更大的实例类型。有关更多信息,请参阅 Auto
Scaling 开发人员指南。
下图显示了前述章节中所述的三个非最优配置文件,以及它在实例消耗所分配到的资源且我们不得不限制
实例 CPU 水平时可能出现的样子。如果实例消耗了其分配到的资源,我们会将其限制到低背景水平。
下图显示了数据处理 CPU 占用长时间停滞的状况。CPU 达到最大允许水平,且在实例所分配到的资源在
此期间消耗完之前停留在此水平。此时,我们限制实例在低背景水平下运行,且在我们允许其在该水平之
上再次迸发之前都到在此水平运行。在分配到的资源被消耗完与我们再次对其限制之前,实例会再次停留
在此水平(图形中未予显示)。
142
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
下图显示了请求太频繁的状况。实例在仅有几个请求后使用其分配到的资源,所以我们对其进行了限制。
我们取消限制后,实例的 CPU 占用达到了最高限制并试图紧跟请求,我们对其再次进行了限制。
下图显示了背景水平太高的情况。请注意,实例不必在最大的 CPU 水平下运行,因为我们会对其进行限
制。当实例在正常背景水平之上运行且在给定期间消耗完了分配给其的资源时,我们会对实例进行限制。
在此情况下(与前述情况相同),实例无法跟进工作,所有我们会再次对其进行限制。
143
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
与 m1.small 实例类型的比较
t1.micro 实例在不同时间提供不同水平的 CPU 资源(最高为 2 个 ECU)。相比而言,m1.small 实例
类型始终提供 1 个 ECU 的 CPU 资源。下图阐明了两者间的不同。
下列各图所示为前述章节所讨论的各种情况中,t1.micro 实例与 m1.small 实例的 CPU 占用情况对
比。
以下第一幅图显示了对 t1.micro 实例而言的最佳情况(左图),并且显示了 m1.small 实例的可能情
况(右图)。在此情况下,我们不需要限制 t1.micro 实例。与 m1.small 实例相比,t1.micro 实例
对每次 CPU 需求峰值的处理时间要更长。
144
Amazon Elastic Compute Cloud Linux 实例用户指南
T1 微型实例
下一幅图所示为数据处理请求用尽了 t1.micro 实例所分配到的资源的情况,并且显示了使用 m1.small
实例时的可能情况。
下一幅图所示为频繁的请求用尽了 t1.micro 实例所分配到的资源的情况,并且显示了使用 m1.small
实例时的可能情况。
下一幅图所示为背景水平用尽了 t1.micro 实例分配到的资源的情况,并且显示了使用 m1.small 实例
时的可能情况。
145
Amazon Elastic Compute Cloud Linux 实例用户指南
调整实例大小
微型实例的 AMI 优化
在为 t1.micro 实例类型优化 AMI 时,我们建议您遵循以下最佳做法:
• 将 AMI 设计为在 600 MB 的 RAM 上运行
• 限制使用 CPU 时间的重复出现的进程(例如,Cron 作业、守护程序)的数量
您可以使用交换空间和虚拟内存优化性能(例如,通过在独立于根文件系统的分区内设置交换空间)。
调整您的实例大小
Abstract
调整您的实例的大小,使之与其工作负载相匹配。
随着您的需求变化,您可能会发现您的实例过度使用(实例类型过小)或利用不足(实例类型过大)。如
果出现这种情况,您可更改您的实例大小。例如,如果您的 t2.micro 实例对于其工作负载过小,您可
将其更改为 m3.medium 实例。
如果实例的根设备是 EBS 卷,您可以通过更改其实例类型来更改实例的大小,这称为调整大小。如果实
例的根设备是实例存储卷,则必须将应用程序迁移到实例类型为您所需的新实例。有关根设备卷的更多信
息,请参阅 根设备存储 (p. 64)。
在调整实例大小时,您必须选择与实例的配置兼容的实例类型。如果您所需的实例类型与您具有的实例配
置不兼容,则必须将应用程序迁移到实例类型为您所需的新实例。
Important
在调整实例大小时,已调整大小的实例通常具有您在启动原始实例时指定的相同实例存储卷数。
如果您要添加实例存储卷,则必须将应用程序迁移到实例类型和实例存储卷为您所需的全新实
例。此规则的一个例外是:调整为存储密集型的实例类型时,默认包含更多数量的卷。有关实例
存储卷的更多信息,请参阅 Amazon EC2 实例存储 (p. 645)。
内容
• 调整大小的实例的兼容性 (p. 147)
• 调整 Amazon EBS 支持实例的大小 (p. 147)
• 迁移实例存储支持的实例 (p. 148)
• 迁移到新的实例配置 (p. 149)
146
Amazon Elastic Compute Cloud Linux 实例用户指南
调整实例大小
调整大小的实例的兼容性
仅当实例的当前实例类型和您所需的新实例类型在下列方面兼容时,才能调整实例的大小:
• 虚拟化类型. Linux AMI 使用两种虚拟化之一:半虚拟化 (PV) 或硬件虚拟机 (HVM)。您不能将从 PV
AMI 启动到的实例的大小调整为仅限 HVM 的实例类型的大小。有关更多信息,请参阅 Linux AMI 虚拟
化类型 (p. 66)。
• 网络. EC2-Classic 中不支持某些实例类型,这些类型必须在 VPC 中启动。因此,您不能将 EC2-Classic
中的实例的大小调整为仅在 VPC 中可用的实例类型的大小,除非您有非默认 VPC。有关更多信息,请
参阅 实例类型仅在 VPC 中可用 (p. 518)。
• 平台. 所有 Amazon EC2 实例类型都支持 64 位 AMI,但只有以下实例类型支持 32 位 AMI:t2.nano、
t2.micro、t2.small、t2.medium、c3.large、t1.micro、m1.small、m1.medium和
c1.medium。如果您要调整 32 位实例的大小,将限于这些实例类型。
例如,EC2-Classic 中不支持 T2 实例,这些实例仅限 HVM。因此,您不能将 T1 实例的大小调整为 T2
实例的大小,因为 T1 实例不支持 HVM 且必须从 PV AMI 启动。如果您要将 T2 实例的大小调整到更大
的实例类型的大小,则可以选择任何当代实例类型(如 M3),因为所有当代实例类型都支持 HVM AMI。
有关更多信息,请参阅 可用实例类型 (p. 122)。
调整 Amazon EBS 支持实例的大小
您必须先停止 Amazon EBS 支持实例,然后才能更改其实例类型。当您停止和启动实例时,需要注意以
下事项:
• 我们将实例迁移到新硬件;但是,实例 ID 不会更改。
• 如果您的实例在 VPC 中运行并具有公有 IP 地址,则我们会释放该地址并向它提供新的公有 IP 地址。
实例会保留其私有 IP 地址以及任何弹性 IP 地址。
• 如果实例在 EC2-Classic 中运行,则我们会为其提供新的公有和私有 IP 地址,并取消该实例与任何弹
性 IP 地址的关联。因此,为确保您的用户可不间断地继续使用托管在您的实例上的应用程序,在重启
实例后,您必须重新关联所有弹性 IP 地址。
• 如果您的实例处于 Auto Scaling 组中,则 Auto Scaling 服务会将已停止的实例标记为运行状况不佳,
可能会终止它并启动替换实例。为防止出现此情况,您可以在调整实例大小时,为组暂停 Auto Scaling
流程。有关更多信息,请参阅 Auto Scaling 开发人员指南 中的暂停和恢复 Auto Scaling 流程。
有关更多信息,请参阅 停止和启动您的实例 (p. 250)。
使用 AWS 管理控制台,通过以下过程调整 Amazon EBS 支持实例的大小。
调整 Amazon EBS 支持实例的大小
1.
打开 Amazon EC2 控制台。
2.
3.
在导航窗格中,选择 Instances,然后选择实例。
[EC2-Classic] 如果实例具有关联的弹性 IP 地址,则记录下详细信息窗格中显示的弹性 IP 地址和实
例 ID。
依次选择 Actions、Instance State 和 Stop。
在确认对话框中,选择 Yes, Stop。停止实例可能需要几分钟时间。
4.
5.
6.
7.
[EC2-Classic] 当实例状态变为 stopped 时,详细信息窗格中的 Elastic IP (弹性 IP)、Public DNS (公
有 DNS)、Private DNS (私有 DNS) 和 Private IPs (私有 IP) 字段为空,表明旧值不再与实例关联。
在实例仍处于选中状态的情况下,依次选择 Actions、Instance Settings 和 Change Instance Type。
请注意,如果实例状态不是stopped,则禁用此操作。
在 Change Instance Type 对话框中,执行以下操作:
147
Amazon Elastic Compute Cloud Linux 实例用户指南
调整实例大小
a.
b.
c.
8.
9.
从 Instance Type 中,选择您所需的实例类型。如果列表中未显示您所需的实例类型,则说明它
与您的实例配置不兼容(例如,由于虚拟化类型)。
(可选)如果您选择的实例类型支持 EBS 优化,则选择 EBS-optimized 以启用 EBS 优化或取
消选择 EBS-optimized 以禁用 EBS 优化。请注意,如果您选择的实例类型默认情况下已经过
EBS 优化,则 EBS-optimized 已选中,您无法取消选择。
选择 Apply 以接受新设置。
要重启已停止的实例,请选择该实例,然后依次选择 Actions、Instance State 和 Start。
在确认对话框中,选择 Yes, Start。实例进入running状态可能需要几分钟时间。
10. [EC2-Classic] 当实例状态为 running 时,详细信息窗格中的 Public DNS (公有 DNS)、Private DNS
(私有 DNS) 和 Private IPs (私有 IP) 字段包含我们分配给实例的新值。如果您的实例具有关联的弹性
IP 地址,则必须按以下方式对其进行重新关联:
a.
在导航窗格中,选择 Elastic IPs。
b.
c.
选择您在停止实例前所记下的弹性 IP 地址。
依次选择 Actions 和 Associate Address。
d.
从 Instance 中,选择您在停止实例前所记下的实例 ID,然后选择 Associate。
迁移实例存储支持的实例
如果您要将应用程序从一个实例存储支持的实例移至另一个不同实例类型的实例存储支持的实例,则必须
通过从您的实例创建映像来迁移它,然后从此映像启动实例类型为您所需的新实例。要确保您的用户可不
间断地继续使用托管在您的实例上的应用程序,您必须使用已与您的原始实例关联的任何弹性 IP 地址,
并将其与新实例关联。之后您可以终止原始实例。
迁移实例存储支持的实例
1.
2.
3.
4.
[EC2-Classic] 如果您迁移的实例具有关联的弹性 IP 地址,请立即记录该弹性 IP 地址,以便之后可
将其与新实例关联。
备份实例存储卷上所有您需要保留在持久性存储中的数据。要迁移 EBS 卷上您需要保留的数据,请
拍摄这些卷的快照(请参阅 创建 Amazon EBS 快照 (p. 624))或从实例中分离卷,以便您之后可以将
其连接到新的实例(请参阅 从实例断开 Amazon EBS 卷 (p. 608))。
通过满足先决条件并按照创建由实例存储支持的 Linux AMI (p. 86)中的过程操作,从实例存储支持的
实例创建 AMI。当您通过您的实例创建完 AMI 后,请返回到此过程。
打开 Amazon EC2 控制台,在导航窗格中选择 AMIs。从筛选条件列表中,选择 Owned by me,然
后选择您在上一步中创建的映像。请注意,AMI Name (AMI 名称) 是您在注册映像时指定的名称,而
Source (源) 是您的 Amazon S3 存储桶。
Note
如果您没有看到在上一步中创建的 AMI,请确保您已选择在其中创建了 AMI 的区域。
5.
选择 Launch。在您为实例指定选项时,务必选择您所需的新实例类型。如果无法选择您所需的实例
类型,则说明它与您创建的 AMI 的配置不兼容(例如,由于虚拟化类型)。您还可以指定从原始实
例中分离的任何 EBS 卷。
请注意,实例进入 running 状态可能需要几分钟时间。
6.
[EC2-Classic] 如果您启动的实例具有关联的弹性 IP 地址,则必须将该地址与新实例关联,如下所
示:
a.
在导航窗格中,选择 Elastic IPs。
148
Amazon Elastic Compute Cloud Linux 实例用户指南
实例购买选项
b.
c.
d.
7.
选择您在此过程开始时记录的弹性 IP 地址。
依次选择 Actions 和 Associate Address。
从 Instance 中,选择新实例,然后选择 Associate。
(可选)如果不再需要用以创建映像的原有实例,则您可将其终止。选择实例并确认您将要终止原始
实例而不是新实例(例如,查看名称或启动时间)。依次选择 Actions、Instance State 和 Terminate。
迁移到新的实例配置
如果您的实例的当前配置与您所需的新实例类型不兼容,则不能将该实例的大小调整为新实例类型的大
小。您可以将应用程序迁移到其配置与您所需的新实例类型兼容的新实例。
如果您要将从 PV AMI 启动的实例变为仅限 HVM 的实例类型,一般过程如下:
1.
2.
备份实例存储卷上所有您需要保留在持久性存储中的数据。要迁移 EBS 卷上您需要保留的数据,请
创建这些卷的快照(请参阅 创建 Amazon EBS 快照 (p. 624))或从实例中分离卷,以便您之后可以将
其挂载到新实例(请参阅 从实例断开 Amazon EBS 卷 (p. 608))。
启动新实例,选择下列内容:
•
•
•
•
•
3.
4.
5.
在实例上安装应用程序和所有必需软件。
还原您在原始实例的实例存储卷中备份的所有数据。
如果您正在使用弹性 IP 地址,请按如下所示将其分配给新启动的实例:
a.
b.
c.
d.
6.
HVM AMI。
仅限 HVM 的实例类型。
[EC2-VPC] 如果您正在使用弹性 IP 地址,请选择原始实例当前正在其中运行的 VPC。
您从原始实例中分离并且要挂载到新实例的任何 EBS 卷,或者基于您创建的快照的新的 EBS 卷。
如果您要允许相同的流量到达新实例,请选择与原始实例关联的安全组。
在导航窗格中,选择 Elastic IPs。
选择与原始实例关联的弹性 IP 地址,然后依次选择 Actions 和 Disassociate Address。当系统
提示进行确认时,选择 Yes, Disassociate。
在弹性 IP 地址仍处于选中状态的情况下,依次选择 Actions 和 Associate Address。
从 Instance 中,选择新实例,然后选择 Associate。
(可选)如果不再需要原始实例,您可以将其终止。选择实例并确认您将要终止原始实例而不是新实
例(例如,查看名称或启动时间)。依次选择 Actions、Instance State 和 Terminate。
有关将应用程序从 EC2-Classic 中的实例迁移到 VPC 中的实例的信息,请参阅 从 EC2-Classic 中的 Linux
实例迁移到 VPC 中的 Linux 实例 (p. 529)。
实例购买选项
Abstract
Amazon EC2 提供了帮助您优化成本的各种购买选项。
Amazon EC2 提供了以下让您根据需求优化成本的购买选项:
149
Amazon Elastic Compute Cloud Linux 实例用户指南
实例生命周期
• 按需实例 - 按小时为您启动的实例付费。
• 预留实例 - 以大幅折扣购买在一个月到三年期限内始终可用的实例。
• 计划实例 - 以一年为期限购买按指定重复计划始终可用的实例。
• 竞价型实例 - 对未使用的实例竞价,只要这些实例可用且您的出价高于竞价价格,就可以以大幅折扣运
行这些实例。
• 专用主机 - 为完全专用于运行您的实例的物理主机付费,通过您现有的按套接字、按内核或按 VM 的软
件许可证来降低成本。
• 专用实例 - 按小时付费的在单一租户硬件上运行的实例。有关更多信息,请参阅 Amazon VPC 用户指
南 中的专用实例。
如果您需要容量预留,请考虑预留实例或计划实例。如果您能灵活控制应用程序的运行时间并且应用程序
可以中断,那么竞价型实例将是您的经济实惠之选。使用专用主机,既能在满足合规要求上助您一臂之
力,又能通过使用现有服务器端绑定软件许可来节省费用。有关更多信息,请参阅 Amazon EC2 实例购
买选项。
内容
• 实例生命周期 (p. 150)
• 预留实例 (p. 151)
• 计划的预留实例 (p. 170)
• 竞价型实例 (p. 174)
• 专用主机 (p. 217)
实例生命周期
实例的生命周在运行时开始,在停止时结束。您所选择的购买选项会影响实例的生命周期。例如,按需实
例,当您启动并结束,在您终止实例。只要竞价型实例的容量可用,并且您的出价高于竞价价格,便可运
行。在计划的时间周期内,您可以启动计划内的实例;Amazon EC2 会启动实例并在时间周期结束的前
三分钟终止它们。
使用以下程序来确定实例的生命周期。
使用控制台确定实例的生命周期
1.
2.
3.
4.
5.
6.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 Instances。
选择实例。
在描述选项卡上,查找租期。如果值为host,表示实例正在专用主机上运行。如果值为dedicated,
表示是实例专用实例。
在 Description 选项卡上,查找 生命周期。如果值为spot,表示实例是竞价型实例。如果值为
scheduled,表示实例是计划内的实例。如果值为normal,此实例或者是按需实例,或者是预留实
例。
(可选),如果您购买了预留实例并要验证它是应用,您就可以检查Amazon EC2的使用报告。有关更
多信息,请参阅 预留实例使用率报告 (p. 695)。
使用AWS CLI来确定实例的生命周期。
使用以下描述实例口令:
aws ec2 describe-instances --instance-ids i-1234567890abcdef0
如果实例在专用主机上运行,那么输出内容包含以下信息:
150
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
"Tenancy": "host"
如果实例为专用实例,那么输出内容包含以下信息:
"Tenancy": "dedicated"
如果实例为竞价型实例,那么输出内容包含以下信息:
"InstanceLifecycle": "spot"
如果实例为计划内的实例,那么输出内容包含以下信息:
"InstanceLifecycle": "scheduled"
否则,输出内容包含以下信息:
"InstanceLifecycle": "normal"
预留实例
Abstract
通过预留实例可为 EC2 实例预留容量并降低平均实例使用成本。
预留实例是应用于实例的账单折扣和容量预留,可降低每小时运行成本。预留实例不是物理实例。打折使
用价格在您拥有预留实例期间是固定的,使您可以预测预留期内的计算成本。与拥有您自己的硬件或仅运
行按需实例相比,预留实例的长期大量使用能够实现大幅的节约。有关更多信息,请参阅 选择预留实例
付款选项 (p. 153)。
当您购买预留实例时,预留会自动应用到与您指定的参数匹配的运行实例。或者,您也可以启动与所购预
订容量配置相同的按需 EC2 实例。无预付和部分预付的预留实例将根据使用情况按小时计费,无论这些
实例是否正在被使用。全部预付的预留实例无额外的按小时计算的费用。
预留实例不会自动更新;您可以继续使用 EC2 实例而不会中断,但要支付按需费率。新的预留实例可以
具有与过期实例相同的参数,或者,您也可以购买具有不同参数的预留实例。
您可以使用 Auto Scaling 或其他 AWS 服务来启动使用预留实例优惠的按需实例。有关启动按需实例的信
息,请参阅启动实例。有关使用 Auto Scaling 启动实例的信息,请参阅 Auto Scaling 开发人员指南。
有关产品定价信息,请参阅以下页面:
• AWS 服务定价概述
• Amazon EC2 按需实例定价
• Amazon EC2 预留实例定价
• 有关预留实例定价套餐的信息,请参阅了解预留实例折扣定价套餐 (p. 155)。
Note
低、中、高使用率预留实例无法再购买。有关预留实例定价模型变更对这些选项所产生的影响的
更多信息,请参阅预留实例常见问题。
主题
151
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
• 预留实例如何运行 (p. 152)
• 账单优惠和付款选项 (p. 153)
• 购买预留实例 (p. 157)
• 在预留实例市场中出售实例 (p. 160)
• 修改您的预留实例 (p. 165)
• 修改请求问题排查 (p. 170)
预留实例如何运行
Abstract
查看预留实例和预留实例市场的使用要求与限制核查表。
Amazon EC2 预留实例和预留实例市场可为您的业务运行提供强大且节省成本的战略。但是,在您使用
预留实例或预留实例市场之前,请确保满足购买和出售的要求。您还必须了解预留实例和预留实例市场中
某些元素的详细信息和限制 - 包括卖家注册、银行、使用 AWS 免费套餐、处理取消的实例等。使用本主
题作为购买和出售预留实例以及在预留实例市场中购买和出售的核对清单。
Note
要购买并修改预留实例,请确保您的账户具有适当的权限,例如描述可用区的能力。有关信息,
请参阅使用 AWS CLI、Amazon EC2 CLI 或 AWS SDK 的策略示例和用于 Amazon EC2 控制台
的策略示例.
入门
• AWS 账户 - 您需要拥有 AWS 账户才能购买预留实例。如果您没有 AWS 账户,请阅读Amazon EC2
的设置 (p. 19)中所述的说明(其中包含注册 Amazon EC2 账户和凭证的相关信息)并完成相应操作。
• AWS 免费套餐 - AWS 免费使用套餐可供新 AWS 账户使用。如果您正在用 AWS 免费使用套餐运行
Amazon EC2 实例,然后您购买了一个预留实例,那么您将按照标准定价指南付费。有关免费套餐、
适用服务及使用量的信息,请参阅 AWS 免费套餐。
购买预留实例
• 使用费 — 使用预留实例时,无论您是否使用,您都需为整个期限付费。
• 购买时的套餐折扣 – 预留实例定价套餐折扣仅适用于通过 AWS 进行的购买。这些折扣不适用于第三方
预留实例购买。有关信息,请参阅 了解预留实例折扣定价套餐 (p. 155)。
• 取消购买 – 在您确认购买前,请检查您计划购买的预留实例的详细信息,并确保所有参数都是准确的。
在您购买预留实例(无论是从预留实例市场中的第三方卖家购买还是从 AWS 购买)之后,将无法取消
您的购买。但是,如果您需要更改,则可出售预留实例。有关信息,请参阅 列示您的预留实例 (p. 162)。
预留实例出售与预留实例市场
• 卖方要求 – 要成为 预留实例市场 中的卖方,必须注册为卖方。有关信息,请参阅 列示您的预留实
例 (p. 162)。
• 银行要求 - 为了在您出售预留实例时支付收取的资金,AWS 必须获得您的银行信息。您指定的银行必
须有一个美国地址。有关更多信息,请参阅 银行账户 (p. 161)。
• 税务要求 – 出于税务原因,交易次数达到 50 次或以上的卖方或是计划出售价值 20 000 USD 或以上预
留实例的卖方必须提供关于他们业务的额外信息。有关信息,请参阅 税务信息 (p. 162)。
• 最低售价 - 预留实例市场中允许的最低价格为 $0.00。
152
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
• 何时可以出售预留实例 - 只有在 AWS 收到预付款款且预留实例已激活(您已拥有)达到 30 天之后,
预留实例才能出售。此外,您列出的预留实例的剩余期限必须至少为一个月。
• 修改您的列示 - 无法直接修改您在预留实例市场中的列示。然而,您可通过先取消它然后再用新参数创
建另一个列示来更改您的列示。有关信息,请参阅 给您的预留实例定价 (p. 165)。您也可在列出您的预
留实例之前更改它们。有关信息,请参阅 修改您的预留实例 (p. 165)。
• 出售折扣预留实例 - 通过某个套餐折扣以较低成本购买的 Amazon EC2 预留实例不能在预留实例市场
中出售。有关更多信息,请参阅 预留实例市场 (p. 153)。
• 服务费 - AWS 会向您收取您在预留实例市场中出售的每个预留实例的总预付价格 12% 的服务费。(预
付价格是卖方对预留实例收取的费用。)
• 其他 AWS 预留实例 - 只有 Amazon EC2 预留实例可在预留实例市场中出售。其他 AWS 预留实例(如
Amazon Relational Database Service (Amazon RDS) 和 Amazon ElastiCache 预留实例)不能在预留
实例市场中出售。
在 Amazon VPC 中使用预留实例
您可以将实例启动进入Amazon Virtual Private Cloud (Amazon VPC) 并从您的预留实例中获益。有关更
多信息,请参阅Amazon VPC 是什么?What is Amazon VPC?Amazon VPC 用户指南 部分。
如果您有 EC2 经典账户,则可购买预留实例,通过选择名称内含有 Amazon VPC 的平台将其应用于启动
进入非默认 VPC 的实例。有关更多信息,请参阅检测支持的平台以及是否具有默认 VPC。
如果您的账户仅限于 EC2-VPC,由于所有平台都有默认子网,因此可用平台列表的名称中不包含 Amazon
VPC。如果您启动与预留的容量具有相同配置的实例,则会在您的默认或非默认的 VPC 中启动该实例,
并且容量预留和账单优惠也会自动应用于该实例。有关默认 VPC 的信息,请参阅 Amazon VPC 用户指
南中的您的默认 VPC 和子网。
您还可以通过将专用 指定为实例租赁,选择购买在主机硬件级别被物理隔离的预留实例。有关专用实例
的更多信息,请参阅专用实例在Amazon VPC 用户指南。
预留实例市场
Note
仅 Amazon EC2 预留实例可在预留实例市场出售。其他类型实例,如 Amazon RDS 和 Amazon
ElastiCache 预留实例,不能在预留实例市场上出售。
预留实例市场是一个支持销售第三方和 AWS 客户的未使用的预留实例的平台,这些实例的期限时间和定
价选项各不相同。例如,某位 AWS 客户可能希望在将实例迁移到新的 AWS 区域、更换为新的实例类型
或结束项目之后,出售实例到期之前的容量。预留实例市场允许您满足您的特定业务需求并搜索与您理想
的实例类型、区域及持续时间组合最相匹配的预留实例,从而提供更多的选择和灵活性。Amazon EC2
实例(通过预留实例市场购买)与从AWS上直接购买的预留实例具有相同的容量预留。
账单优惠和付款选项
预留实例的账单优惠将自动应用于匹配的正在运行的实例。您也可购买预留实例,然后启动具有匹配规范
的按需实例 - 定价优惠将自动应用于这些实例。容量预留确保了您将始终能够启动具有这些规范的实例。
您也可以在 预留实例市场 中出售未使用的预留实例,只要您满足特定要求即可。
选择预留实例付款选项
Abstract
选择合适的预留实例付款选项。
预留实例有三种付款选项:
153
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
• 无预付 - 无论是否使用,您都将按照期限内的小时数,采用打折小时费率进行付费,无需任何预付款。
此选项仅用作一年期预留。
Note
在整个预留期限内,“无预付”预留实例需要根据合同义务每月支付费用。因此,在某个账户能
够购买“无预付”预留实例前,该账户需要具有成功的账单历史记录。
• 部分预付 - 必须预付部分费用,期限内剩余的小时数无论是否使用,都将按照打折小时费率计费。
• 全部预付 - 所有款项于期限开始时支付,无论使用了多少小时数,剩余期限不会再产生其他任何费用。
了解按小时计费
在您选择的预留实例期限内,预留实例将按小时进行计费,无论实例是否正在运行。
Important
预留和打折费率仅适用于每小时一个实例小时。如果实例在预留的第一个小时内重新启动并在停
止前运行了两个小时,则第一个实例小时将以折扣费率收费,而另三个实例小时将以按需费率收
费。如果实例在一个小时内重新启动并在下一个小时内运行剩余预留之前再次重新启动,则一个
实例小时将以按需费率收费,而折扣费率将应用于上一个实例小时和后两个实例小时。
预留实例使用率报告 (p. 695) 部分包括示例报告,说明了针对正在运行的按需实例的节省费用。预留实例
常见问题包括示例标价计算。
如何将预留实例应用于正在运行的实例
要将预留加入正在运行的实例,您可以修改现有预留实例,或者通过选择可用区(如 us-east-1b)、实例
类型(如 m3.large)、平台(如 Amazon Linux VPC)和租赁(如默认)购买预留实例,以便与正在运
行的实例的配置相匹配。
以下为客户已购买以下按需实例的示例方案:
• 可用区 us-east-1a 中的 4 个 m1.small 实例
• 可用区 us-east-1b 中的 4 个 c1.medium 实例
• 可用区 us-east-1b 中的 2 个 c1.xlarge 实例
然后,客户购买以下预留:
• 可用区 us-east-1a 中的 2 个 m1.small
• 可用区 us-east-1a 中的 3 个 c1.medium
• 可用区 us-east-1b 中的 1 个 c1.xlarge
采用以下方式应用定价优惠:
• 适用于两个 m1.small 预留的折扣将应用于可用区 us-east-1a 中四个正在运行的 m1.small 实例中的
两个。
可用区 us-east-1a 中的另外两个实例将继续按照当前的按需费率收费。
• 三个 c1.medium 预留与正在运行的 c1.medium 实例的可用区不匹配。四个正在运行的 c1.medium
实例将继续按照当前的按需费率收费。
如果客户在可用区 us-east-1a 中启动 c1.medium 实例,则打折使用费率将应用于该实例。
154
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
• 将适用于一个 c1.xlarge 预留的打折使用费率应用于可用区 us-east-1b 中的两个正在运行的 c1.xlarge
实例中的一个。
可用区 us-east-1b 中的另一个 c1.xlarge 实例将继续按照当前的按需费率收费。
在本示例中,立即将小时使用费折扣应用于已在运行的两个 m1.small 和一个 c1.xlarge 按需实例的小
时费用;同时确保客户拥有在需要剩余的四个实例时运行这些实例的容量。
了解预留实例折扣定价套餐
Abstract
了解 Amazon EC2 预留实例的定价套餐折扣。
如果您的账户有资格获得折扣定价套餐,那么自您取得该资格时起,您在该套餐等级内购买的所有预留实
例的预付费和每小时使用费均自动享受折扣。要取得折扣资格,您在该区域内的预留实例的标价必须达到
500,000 美元或更高。
主题
• 计算预留实例定价折扣 (p. 155)
• 定价套餐的整合账单 (p. 155)
• 以折扣套餐价格购买 (p. 156)
• 当前定价套餐限制 (p. 156)
• 跨越定价套餐 (p. 156)
计算预留实例定价折扣
通过计算您在区域中的所有预留实例的标价,可以确定您的账户所适用的定价套餐。将每个预留实例的每
小时费用乘以每个期限的剩余小时数,加上购买时 AWS 营销网站所列的未打折预付价格(称为固定价
格)。由于标价基于未打折(公开)定价,您是否有资格获得总量折扣或者您购买预留实例后是否降价均
不影响标价。
List value = fixed price + (undiscounted recurring hourly price * hours in term)
使用 AWS 管理控制台查看预留实例的固定价格
1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2. 通过选择右上角的 Show/Hide,打开 Fixed Price 列的显示。
使用命令行查看预留实例的固定价格
• 使用 AWS CLI,请参阅 describe-reserved-instances
• 使用 Amazon EC2 CLI,请参阅 ec2-describe-reserved-instances
• 使用 Amazon EC2 API,请参阅 DescribeReservedInstances
定价套餐的整合账单
整合账单账户汇总了某个区域内所有成员账户的标价。当整合账单账户的所有活动预留实例的标价达到折
扣定价套餐时,整合账单账户的任何账户成员在此后购买任何预留实例都将享受打折费率(前提是整合账
单账户的标价始终高于折扣定价套餐阈值)。有关更多信息,请参阅 预留实例和整合账单 (p. 156)。
155
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
以折扣套餐价格购买
当您购买预留实例时,Amazon EC2 会自动将所有折扣应用于购买中处于折扣定价套餐范围内的部分。
您无需执行任何其他操作,而且可以使用任何 Amazon EC2 工具进行购买。有关更多信息,请参阅 在预
留实例市场中购买 (p. 159)。
Note
预留实例购买是确定您的折扣定价套餐的唯一购买行为,这些折扣也仅适用于购买 Amazon EC2
预留实例。
您在某区域的活动预留实例的标价达到某一折扣定价套餐范围后,未来在该区域中购买任何预留实例都将
按打折费率收费。如果在某区域的预留实例单项购买额超过了折扣套餐阈值,那么此项购买超出价格阈值
的部分将按打折费率收费。有关在购买过程中创建的临时预留实例 ID 的更多信息,请参阅跨越定价套
餐 (p. 156)。
如果您的标价降至低于折扣定价套餐价格点(例如,如果部分预留实例到期),之后在该区域购买预留实
例将不享受折扣。但是,原来在折扣定价套餐范围内购买的所有预留实例都将继续享受折扣。
当您购买预留实例时,可能出现以下四种情况之一:
• 没有折扣 - 您在某区域内的购买仍然低于折扣阈值。
• 部分折扣 - 您在某区域内的购买跨越了第一折扣套餐的阈值。没有折扣将应用于一个或多个预留,而折
扣费率将应用于剩余的预留。
• 全部折扣 - 您在某区域内的购买全部在一个折扣套餐之内并且获得了相应的折扣。
• 两种折扣率 - 您在某区域内的购买从较低折扣套餐跨入较高的折扣套餐。您将按两种费率付费:一个或
多个预留采用较低的折扣费率,剩余的预留采用较高的折扣费率。
当前定价套餐限制
以下限制当前适用于预留实例定价套餐:
• 预留实例定价套餐和相关折扣仅适用于购买Amazon EC2预留实例。
• 预留实例定价套餐不适用于带有 SQL Server Standard 的 Windows 或带有 SQL Server Web 的 Windows
的预留实例。
• 作为套餐折扣的一部分购买的 预留实例无法在预留实例市场上出售。有关更多信息,请参阅预留实例
市场 (p. 153)页面。
跨越定价套餐
如果您的购买跨入某个折扣定价套餐范围,您将看到该项购买有多个条目:一个条目显示购买中将按常规
价格收费的部分,另一个条目显示购买中将按适用的打折费率收费的部分。
预留实例服务会生成多个预留实例 ID,因为您的购买从未打折套餐跨入到打折套餐,或从一个打折套餐
跨入到另一个打折套餐。套餐中的每组预留都有一个 ID。因此,由您的购买 CLI 命令或 API 操作返回的
ID 将不同于新预留实例的实际 ID。
预留实例和整合账单
Abstract
当购买账户属于一个整合账单付款人账户的一部分时,共享预留实例的定价优惠。
当购买账户属于在一个整合账单付款人账户之下开具账单的一套账户的一部分时,预留实例的定价优惠可
以共享。将所有子账户的小时使用量每月聚合到付款人账户。这通常对具有不同职能团队或团体的公司很
156
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
有用;然后,将应用正常的预留实例逻辑来计算账单。有关更多信息,请参阅 AWS Billing and Cost
Management 用户指南中的整合账单。
有关预留实例定价套餐的折扣如何应用于整合账单账户的更多信息,请参阅 Amazon EC2 预留实例。
阅读您的声明(发票)
Abstract
通过在 AWS 管理控制台中查看您的报表,查明您的账户的支出和费用状况。
您可通过查看 AWS 管理控制台中的 Billing & Cost Management 页面来查明您的账户的支出和费用状况。
选择账户名旁的箭头可访问它。
• Dashboard 页面将显示您的账户的所有支出 - 例如预付费用、一次性费用及周期性费用。您可获得关于
您的开支的汇总或详细清单。
• 您在预留实例市场中购买第三方预留实例而产生的预付费用将在 AWS Marketplace Charges 部分中列
出,并在旁边显示卖方名称。这些预留实例的所有经常性费用或使用费将在 AWS Service Charges 部
分列出。
• “Detail”部分包含关于预留实例的信息 — 例如可用区域、实例类型、成本及实例的数量。
您可在线上查看开支,而且您还能下载一个关于开支信息 PDF 文件。。
购买预留实例
Abstract
购买 Amazon EC2 预留实例(使用 AWS 管理控制台、 Amazon EC2 CLI 或 Amazon EC2 API 通过此程序从第三方
或 AWS 购买)。
您可搜索要购买的特定类型的预留实例,从而在找到您所寻找的完全匹配的实例之前调整参数。
购买任何预留实例时,一定要注意以下内容:
• 使用费 - 使用预留实例时,无论您是否实际使用了整个期限,都需要为该期限付费。
• 购买时的套餐折扣 - 定价套餐折扣仅适用于 AWS 购买。这些折扣不适用于第三方预留实例购买。有关
更多信息,请参阅 了解预留实例折扣定价套餐 (p. 155)。
• 取消购买 - 确认购买之后便无法取消。在确认之前,请检查您计划购买的预留实例的详细信息,并确保
所有参数都是准确的。但是,如果您的需求发生更改并且您符合相应要求,则可以出售预留实例。有关
更多信息,请参阅 在预留实例市场中出售实例 (p. 160)。
在选择要购买的预留实例后,您将收到一个关于您选择的实例的总成本报价。当您决定继续购买后, AWS
将自动对购买价格设定一个限定价格,这样您的预留实例的总成本将不会超过对您报价的金额。
如果价格因任何原因而上升或发生变化,您将会返回至前一屏幕,并且购买将不会完成。如果在购买之时
有与您的选择类似的低价位产品,AWS 将为您提供价格更低的产品。
使用 AWS 管理控制台 购买预留实例
使用 AWS 管理控制台购买预留实例
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在 Navigation 窗格中,选择 Reserved Instances。
在 Reserved Instances 页面上,选择 Purchase Reserved Instances。
为要购买的预留实例指定详细信息,然后选择 Search。
157
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
Note
搜索结果中的 Seller 列指示卖方是否是第三方。如果是,则 Term 列会显示非标准期限。
5.
选择您希望的预留实例,输入数量,然后选择 Add to Cart。
6.
7.
要查看已选择的预留实例的汇总,请选择 View Cart。
要完成订单,请选择 Purchase。
Note
如果在购买之时有与您的选择类似的低价位产品,AWS 将为您提供价格更低的产品。
要应用您的预留实例,请启动按需实例,确保匹配您已为您的预留实例指定的相同标准。AWS 将自动按
较低的小时价格对您收费。您不必重启您的实例。
使用 AWS 管理控制台查看交易状态
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
选择预留实例页面。您的购买状态将在 State 列中列出。当您的订单完成时,State 值将从
payment-pending 变为 active。
使用命令行界面或 API 购买预留实例
使用命令行或 API 购买预留实例
1. 使用 AWS CLI,请参阅 purchase-reserved-instances-offering
2. 使用 Amazon EC2 CLI,请参阅 ec2-describe-reserved-instances-offerings
3. 使用 Amazon EC2 API,请参阅 PurchaseReservedInstancesOffering
使用命令行或 API 查看交易状态
1. 使用 AWS CLI,请参阅 describe-reserved-instances
2. 使用 Amazon EC2 CLI,请参阅 ec2-describe-reserved-instances
3. 使用 Amazon EC2 API,请参阅 DescribeReservedInstances
应用预留实例
预留实例将自动应用于正在运行的或潜在的按需实例(前提是满足规范要求)。您可以使用 AWS 管理控
制台、Amazon EC2 CLI 工具或 Amazon EC2 API 来执行这些任务。
Note
要购买并修改预留实例,请确保您的账户具有适当的权限,例如描述可用区的能力。有关信息,
请参阅使用 AWS CLI、Amazon EC2 CLI 或 AWS SDK 的策略示例和用于 Amazon EC2 控制台
的策略示例.
购买 - 确定要预留的容量大小。指定以下条件:
• 平台(例如,Linux)。
158
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
Note
要在特定 Linux 平台上运行您的预留实例,您必须在购买预留容量时确定该平台。然后,当您
启动实例以使用购买的预留容量时,必须选择运行该特定 Linux 平台的 Amazon 系统映像 (AMI)
以及在购买时确定的任何其他规格。
• 实例类型(例如,m1.small)。
• 要在其中运行实例的可用区。
• 您希望预留容量的期限(时间段)。
• 租期. 您可为实例预留容量,以便在单租户硬件(dedicated 租户,与 shared 相反)中运行。您选
择的租期必须与正在或计划将预留实例应用于的按需实例的租期匹配。有关更多信息,请参阅专用实
例。
• 服务(无预付、部分预付、全部预付)。
使用 - 要使用您的预留实例,请启动具有与购买的预留相同的规格的按需实例。定价优惠和容量预留自动
适用于预留容量中尚未包含的所有匹配实例。
有关更多信息,请参阅 启动实例 (p. 229)。
预留实例状态
预留实例可以处于以下某种状态:
• active(已激活) – 预留实例可供使用。
• payment-pending - AWS 正在处理您的预留实例付款。当状态变为 active 时,您可以使用预留实例。
• retired - 预留实例由于以下任何原因而终止:
• AWS 没有收到您的付款。例如,信用卡交易没有完成。
• 预留实例超出期限。
请务必注意,Reserved Instance 页面中的 State 列显示的状态信息与 My Listings 选项卡中的 Listing
State 显示的状态信息不一致。
如果您是预留实例市场中的卖家,Listing State 将显示已在预留实例市场中列出的预留的状态。有关更多
信息,请参阅 预留实例列示状态 (p. 163)。
在预留实例市场中购买
Abstract
从 Amazon Web Services 购买预留实例或通过预留实例市场从第三方卖方进行购买。
您可以购买 Amazon EC2 预留实例(从 AWS 购买或从拥有其不再需要的预留实例的第三方卖方购买)。
作为买家,预留实例市场允许您搜索与您理想的实例类型、区域及持续时间组合最相匹配的预留实例,它
提供了增加的选择性和灵活性。
有关预留实例市场的更多信息,请参阅 在预留实例市场中出售实例 (p. 160)。
在预留实例市场中购买的预留实例与直接从 AWS 购买的预留实例有一些区别:
• 期限 - 从第三方卖方购买的预留实例拥有的剩余期限短于完整标准期限。从 AWS 获得的完整标准期限
为一年或三年。
• 预付价格 - 第三方预留实例可以不同的预付价格出售。使用费或周期性费用与最初从 AWS 购买预留实
例时设定的费用一致。
159
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
有关您的基本信息将与卖方进行共享,如您的邮政编码和国家/地区信息。
此信息使卖方能够计算他们必须汇给政府并且采用支付报告形式提供的任何必需的交易税(如销售税或增
值税)。在极少数情况下,AWS 可能必须向卖方提供您的电子邮件地址,这样卖方才能就与销售相关的
问题(例如税务问题)与您联系。
出于相似的原因,AWS 将在买方的购货发票上共享卖方的法律实体名称。如果您出于税务或相关原因需
要关于卖方的额外信息,则可以联系 AWS Support。
在预留实例市场中出售实例
Abstract
随着您的需求发生变化,在预留实例市场中出售剩余的预留实例。
在预留实例市场中出售未使用的预留为您提供了灵活性,以便您在您的业务需求发生改变时或当您拥有不
再需要的容量时迁移到新配置。
只要您在预留实例市场中列出您的预留实例,便可供潜在的买方找到。所有预留实例将会根据剩余期限及
小时价格进行分组。
要满足买方的请求,AWS 首先出售指定群组中预付价格最低的预留实例;然后再出售下一个最低价格的
预留实例,直到买方的整个订单完成为止。AWS 随后处理这些交易,并将预留实例的所有权转移给买方。
在您的预留实例出售之前,该实例将归您所有。出售之后,您便放弃了容量预留和打折的周期性费用。如
果继续使用您的实例,AWS 将从您的预留实例出售的时间开始以按需价格向您收费。您可购买更多预留
容量,或在您的容量预留出售之时终止您的实例。
内容
• 收款 (p. 160)
• 注册为卖家 (p. 161)
• 列示您的预留实例 (p. 162)
• 给您的预留实例定价 (p. 165)
收款
AWS 收到来自买家的资金后,系统便会立即向相应电子邮件地址(与注册为已售的预留实例的拥有者的
账户关联)发送一封电子邮件。
AWS 将自动清算所 (ACH) 电汇发送至您的指定银行账户。通常,此电汇在您的预留实例已售出后的一天
到三天内发生。您可通过查看预留实例支付报告来查看此支付的状态。支付每天只发生一次。请记住,在
AWS 从您的银行那里收到验证之前,您无法接收付款。此期间可能最多需要两个星期。
您售出的预留实例将继续出现在您的 DescribeReservedInstances 调用的结果中。
您将直接从您的银行账户通过电汇转账收到您的预留实例的现金付款。AWS 会向您收取您在预留实例市
场中出售的每个预留实例的总预付价格 12% 的服务费。
Note
仅 Amazon EC2 预留实例可在预留实例市场中出售。其他类型实例(如 Amazon RDS 和 Amazon
ElastiCache 预留实例)不能在预留实例市场中出售。
要注意以下重要限制:
• 预留实例可在 30 天之后出售 - 预留实例只能在您已拥有它们至少 30 天之后进行出售。此外,您列示
的预留实例的剩余期限至少为一个月。
160
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
• 无法修改列示 - 您无法在预留实例市场中修改您的列示。然而,您可通过先取消它然后再用新参数创建
另一个列示来更改您的列示。有关信息,请参阅 列示您的预留实例 (p. 162)。您也可以在列出预留实例
之前修改它们。有关信息,请参阅 修改您的预留实例 (p. 165)。
• 无法出售打折的预留实例 - 通过某个套餐折扣以较低价格购买的预留实例不能在预留实例市场中出售。
有关更多信息,请参阅 预留实例市场 (p. 153)。
注册为卖家
Abstract
作为卖方进行注册,以便您可在预留实例市场中出售预留实例。
为了能够在 预留实例市场 进行销售,您的第一个任务是注册为卖家。注册期间,您需要提供您的企业名
称、关于您的银行的信息以及企业的税务标识号。
在 AWS 收到您已完成的卖家注册后,您将收到对您的注册进行确认并告知您可以开始在预留实例市场中
出售实例的电子邮件。
主题
• 银行账户 (p. 161)
• 税务信息 (p. 162)
• 与买家共享信息 (p. 162)
银行账户
为了在您出售您的预存实例时支付收取的资金,AWS 必须获得您的银行信息。您指定的银行必须有一个
美国地址。
注册付款的默认银行账户
1. 在 预留实例市场 Seller Registration 页面上登录。如果尚未有 AWS 账户,您也可通过此页面创建一
个。
2. 在 Manage Bank Account (管理银行账户) 页面上,提供关于您用于接收付款的银行的以下信息:
• 银行账户持有人姓名
• 路由号码
• 账号
• 银行账户类型
Note
如果您正在使用一个公司银行账户,则系统将提示您通过传真 (1-206-765-3424) 发送关于该银
行账户的信息。
注册后,将提供的银行账户设置为默认账户,等待银行进行验证。验证新的银行账户可能需要两周时间,
在此期间,您将无法收到付款。对于已建立的账户,付款的完成通常需要两天左右的时间。
更改付款的默认银行账户
1. 在 预留实例市场 Seller Registration 页面上,使用您注册时所用的账户登录。
2. 在 Manage Bank Account 页面上,根据需要添加新的银行账户或修改默认银行账户。
161
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
税务信息
您出售预留实例可能需要交纳交易税,例如销售税或增值税。您应与您的企业的税务、法律、财务或会计
部门沟通,以确定是否适用于基于交易的税种。您负责向相关税务机构收集并交纳基于交易的税款。
作为卖家注册的一部分,您可选择完成税务会见。如果以下事项之任一适用,那么我们鼓励您完成此过
程:
• 您要 AWS 生成一个表 1099-K。
• 您期待在一个日历年内进行 50 次或更多次的交易,或者销售价值 20 000 USD 或更多的预留实例。一
项交易涉及一个或多个预留实例。如果您在注册时选择跳过此步骤,后来您的交易次数达到 49,那么
您将得到一条信息“ You have reached the transaction limit for pre-tax. 请在卖方注册门户中完成税务问
题表。
• 您是非美国卖家。在这种情况下,您必须以电子手段完成表 W-8BEN。
有关 IRS 要求和表 1099-K 的更多信息,请参阅 IRS 网站。
根据您的企业是美国法律实体还是非美国法律实体,您输入的作为税务会见的一部分的税务信息将有所不
同。当您填写税务会见时,请记住以下事项:
• AWS 提供的信息(包括本主题中的信息)不构成税务、法律或其他专业建议。查明 IRS 报告要求将如
何影响您的企业,或者如果您有其他问题,请联系您的税务、法律或其他专业顾问。
• 为了尽可能高效地满足 IRS 报告要求,在会见过程中回答所有的问题并输入所有要求的信息。
• 检查您的回答。避免拼写错误或输入了不正确的税务识别号。s. 它们会导致纳税申报表格无效。
在您完成税务注册过程后,AWS 将表 1099-K 归档。您将在您的税务账户达到阈值水平的年份的后一年
的 1 月 31 日收到通过美国邮政发来的 1099-K 副本。例如,如果您的税务账户于 2016 年达到阈值,则
您将于 2017 年收到该表。
与买家共享信息
当您在预留实例市场中出售时,AWS 将按照美国的规章在买方声明上分享您的公司法律名称。此外,如
果买家因发票或其他税务相关的原因需要联系您而呼叫 AWS 客户支持,那么 AWS 可能需要向买家提供
您的电子邮件地址,这样买家就能与您直接联系。
出于同样的原因,买方的邮政编码和国家/地区信息将在支付报告中提供给卖方。作为卖家,您可能需要
在汇给政府任何必要的交易税(例如销售税和增值税)时附带此信息。
AWS 不能提供税务建议,但如果您的税务专家确定您另外需要特定的信息,请联系 AWS Support。
列示您的预留实例
Abstract
在预留实例市场中列示和出售您的预留实例。
作为注册卖方,您可选择出售您的一个或多个预留实例,而且可选择将一个列示中的实例全部出售或部分
出售。此外,您可以列示任何类型的预留实例 - 包括实例类型、平台、区域和可用区的任何配置。
如果您决定取消您的列示,且列示的一部分已经售出,则取消不会在已售出的部分生效。只有列示中未售
出的部分在预留实例市场中将不再可用。
列示的生命周期
既然您已经创建了列示,那么我们就看看在您的列示出售时发生了什么。
162
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
当您的列示中的所有实例均已匹配并售出后,My Listings 选项卡将显示您的 Total instance count 与 Sold
下列出的计数相匹配,您的列示没有 Available 的实例,而且它的 Status 为 closed。
当您的列示中只有一部分售出时,AWS 将停用列示中的预留实例并创建与剩余预留实例数量相等的预留
实例。因此,列示 ID 及其代表的列示(现在具有较少的待售预留)仍处于激活状态。
以此方式处理此列示中任何未来预留实例销售。当列示中的所有预留实例售出后,AWS 会将列示标记为
closed。
例如,让我们假设您创建了一个所列数量为 5 的预留实例列示 ID
5ec28771-05ff-4b9b-aa31-9e57dexample。
您的 AWS 管理控制台的 Reserved Instance 页面中的 My Listings 选项卡将如此显示列示:
预留实例列示 ID 5ec28771-05ff-4b9b-aa31-9e57dexample
• 总预留计数= 5
• 已售 = 0
• 可用 = 5
• 状态 = 已激活
我们假设某个买家购买了其中两个预留,这使得三个预留的计数依然可供销售。此部分销售的结果是 AWS
创建了一个实例计数为 3 的新预留,以表示剩下的三个预留依然可供销售。
这是您的列示在您的“My Listings”标签中看起来的样子:
预留实例列示 ID 5ec28771-05ff-4b9b-aa31-9e57dexample
•
•
•
•
总预留计数= 5
已售 = 2
可用 = 3
状态 = 已激活
如果您决定取消您的列示,且列示的一部分已经售出,取消不会在已售出的部分生效。只有列示中未售出
的部分在预留实例市场中将不再可用。
在您的实例出售后
当您的预留实例售出后,AWS 将向您发送一个电子邮件通知。在有任何活动(例如您创建了一个列示;
您出售了一个列示或者 AWS 将资金发送到您的账户)的每一天,您将收到一个电子邮件通知,告知您当
天的活动。
您可查看 AWS 管理控制台中 Reserved Instance 页面上所选预留实例的 My Listings 选项卡,由此追踪
您的预留实例列示的状态。此选项卡包含 Listing State (列示状态)、期限信息、标价以及列示中可用、等
待、出售和取消的实例数量明细。您也可以使用 ec2-describe-reserved-instances-listings
CLI 命令或 DescribeReservedInstancesListings API 调用,借助合适的筛选器来获取有关您的列
示的信息。
预留实例列示状态
Listing State 显示您的列示的当前状态:
Listing State (列示状态) 显示的信息与您在预留实例市场中的列示的状态有关。它与“Reserved Instances”
页面中的 State 列显示的状态信息不同。此 State 信息是关于您的预留的。有关更多信息,请参阅 预留实
例状态 (p. 159)。
163
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
使用 Amazon EC2 CLI 列示您的预留实例
使用 Amazon EC2 CLI 在预留实例市场中列示预留实例
1. 通过调用ec2-describe-reserved-instances获得您的预留实例的列表。
2. 指定您要列示的预留实例的 ID 并调用 ec2-create-reserved-instances-listing。您必须指定
以下要求的参数:
• 预留实例 ID
• 实例计数
• 月份:价格
要查看您的列示
• 调用ec2-describe-reserved-instances-listings可得到关于您的列出的详细信息。
取消并更改您的列示
• 运行ec2-cancel-reserved-instances-listings可取消您的列示。
使用 Amazon EC2 API 列示您的预留实例
使用 Amazon EC2 API 在预留实例市场中列示预留实例
1. 通过调用DescribeReservedInstances获得您的预留实例的列表。记下您要在预留实例市场中列示
的预留实例的 ID。
2. 使用 CreateReservedInstancesListing 创建列示。
要查看您的列示
1. 调用DescribeReservedInstancesListings可得到关于您的列示的详细信息。
要取消你的列示
1. 运行 CancelReservedInstancesListing.
2. 确认已通过调用 DescribeReservedInstancesListings 取消列示。
使用 AWS 管理控制台 列示您的预留实例
您可通过使用 AWS 管理控制台 来列示希望在预留实例市场中出售的预留实例。
若要在预留实例市场中列出预留实例,可使用AWS 管理控制台
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中,选择 Reserved Instances。
选择要列示的预留实例,然后选择 Sell Reserved Instances。
在 Configure Your Reserved Instance Listing 页面上,在相关列中设置要出售的实例数并为剩余期限
设定预付价格。通过单击 Months Remaining 列旁边的箭头,您可看见您的预留的价值是如何随着剩
余期限的变化而变化的。
如果您是高级用户且想对定价进行自定义,那么您可为后续月输入一个不同的值。要返回默认的线性
价格降低,请选择 Reset。
当您完成配置您的列示后,请选择 Continue。
5.
6.
164
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
7.
在 Confirm Your Reserved Instance Listing 页面上确认您的列示的详细信息并且对此类信息感到满
意,请选择 List Reserved Instance。
Listing State 显示您的列示的当前状态:
• active - 列示可供购买。
• cancelled - 列示已取消而且不能在预留实例市场中购买。
• closed - 预留实例未列示。预留实例可能因列示实例的销售已完成而处于 closed 状态。
给您的预留实例定价
预付费用是您可为正在出售的预留实例指定的唯一费用。预付费用是买方在购买预留实例时支付的一次性
费用。您无法指定使用费或周期性费用;买方将支付与最初购买预留时设定的使用费或周期性费用相同的
费用。
要注意以下重要限制:
• 您每年可出售的预留实例价值最多为 50,000 美元。如需出售更多,请填写提高 Amazon EC2 预留实例
销售限制申请表单。
• 最低价格为 $0。预留实例市场中允许的最低价格为 $0.00。
您无法直接修改您的列示。然而,您可通过先取消它然后再用新参数创建另一个列示来更改您的列示。
只要您的列示处于 active 状态,您就可以随时将其取消。您无法取消已经匹配或正在为销售进行处理的
列示。如果您的列示中的某些实例已匹配且您取消了列示,则仅剩余的未匹配的实例将从列示中删除。
设置定价表
由于预留实例的价值随时间的推移而降低,因此,在默认情况下,AWS 可设定要以同样的变化量逐月降
低的价格。但是,您可根据预留实例出售的时间设置不同的预付价格。
例如,如果您的预留实例剩余期限为九个月,那么如果一个客户要购买这个剩余期限为九个月的预留实
例,您能指定您愿意接受的金额,当剩余期限为五个月时,您可设定另外一个价格,当剩余期限为一个月
时,再设定另一个价格。
修改您的预留实例
Abstract
当计算需求改变时,可修改预留实例,继续利用容量预留的优势。
当计算需求改变时,可以修改预留实例,继续利用容量预留。修改不会更改预留实例的剩余期限;预留实
例的结束日期将保持不变。不会产生任何费用,因此您不会收到任何新账单或发票。修改与购买无关,不
会对您使用、购买或出售预留实例产生任何影响。您可通过以下一种或多种方式修改您的整个预留或预留
的一部分:
• 在相同区域内切换可用区
• 在 EC2-VPC 和 EC2-Classic 之间切换
• 在同一实例类型内更改实例的大小
对于所有产品平台类型均支持可用区和网络平台修改。仅 Linux 平台类型支持实例类型修改。但是,由于
许可差异,无法将 Linux 预留实例修改为 RedHat 或 SUSE Linux 预留实例。有关 RedHat 和 SUSE 定价
的更多信息,请参阅 Amazon EC2 预留实例定价。
165
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
修改之后,预留实例的定价权益仅适用于与新参数匹配的实例。除非您的账户有其他适用的预留,否则将
按照按需费率收费对不再符合新参数的实例收费。
Note
修改预留的一部分时,Amazon EC2 会将您的原始预留实例分为两个或更多的新预留实例。例
如,如果您在 us-east-1a 中有 10 个实例的预留,并决定将其中 5 个实例移动至 us-east-1b,则
修改请求会生成两个新的预留实例 - 一个用于 us-east-1a(原始可用区)中的 5 个实例,另一个
用于 us-east-1b 中的 5 个实例。
以下主题将引导您完成修改过程:
主题
• 修改的要求 (p. 166)
• 更改预留的实例大小 (p. 167)
• 提交修改请求 (p. 168)
修改的要求
Amazon EC2 处理您的修改请求的前提是,对于您的目标配置,有足够的容量,同时满足以下条件。
修改后的预留实例必须:
•
•
•
•
活跃
没有其他等待处理的修改请求
预留实例市场中未列示
在同一小时(不是分钟或秒)内终止
您的修改请求必须:
• 是可用区、实例类型和网络平台属性的唯一组合
• 原始预留的实例大小占用空间与目标配置匹配
如果您的预留实例不处于活动状态或无法修改,则 API 调用将返回错误,并且 AWS 管理控制台中的
Modify Reserved Instances 按钮将处于禁用状态。如果您选择多个预留实例进行修改,而其中一个或多
个预留实例用于不允许修改实例类型的产品平台,则 Modify Reserved Instances 页面不会显示用于更改
任何所选预留实例的实例类型的选项。有关更多信息,请参阅 更改预留的实例大小 (p. 167)。
您可以随时修改您的预留;但是,对于未完成上次修改请求的预留,您不能提交修改请求。在提交修改请
求后,您也无法更改或取消等待处理的修改请求。修改成功完成后,您可以提交另一个修改请求,以回滚
您所做的任何更改。有关更多信息,请参阅 确定修改的状态 (p. 169)。
要修改预留实例市场中列出的预留实例,请取消列表,请求修改预留实例,然后再次列出这些实例。此
外,您无法在购买前或购买时修改产品。有关更多信息,请参阅 预留实例市场 (p. 153)。
Note
要购买并修改预留实例,请确保您的账户具有适当的权限,例如描述可用区的能力。有关信息,
请参阅使用 AWS CLI、Amazon EC2 CLI 或 AWS SDK 的策略示例和用于 Amazon EC2 控制台
的策略示例.
166
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
更改预留的实例大小
Abstract
更改预留的实例大小,如占用空间中的大小分配或是产品平台。
如果您在具有多个实例大小的实例类型中有 Amazon Linux 预留,则可调整预留实例的实例大小。请记
住,仅当其他属性(如区域、使用类型、租期、产品、结束日期和小时)匹配并且容量可用时,才允许修
改实例大小。
Note
实例按照系列(依据存储或 CPU 容量)、类型(为特定的使用案例而设计)和大小分组。例如,
c4 实例类型属于计算优化型的实例系列,并且有多个大小可用。当 c3 实例属于同一系列时,您
无法将 c4 实例修改进入 c3 实例,因为它们的硬件规格不同。有关更多信息,请参阅 Amazon
EC2 实例类型。
以下实例无法进行修改,因为没有其他大小:
• t1.micro
• cc1.4xlarge
• cc2.8xlarge
• cg1.8xlarge
• cr1.8xlarge
• hi1.4xlarge
• hs1.8xlarge
• g2.2xlarge
如果容量存在,并且修改未更改预留实例的实例大小占用空间,则会成功执行请求。实例大小占用空间由
预留中实例类型的标准化因子和实例数确定。例如,您可以将一个 m1.large 实例的预留划分为四个
m1.small 实例,也可以将四个 m1.small 实例的预留合并为一个 m1.large 实例。无论哪种情况下,
都不会更改预留的实例大小占用空间。但是,您不能将两个 m1.small 实例的预留更改为一个 m1.large
实例,因为当前预留的现有实例大小占用空间小于计划的预留空间。
了解实例大小占用空间
每个预留实例都有实例大小占用空间,占用空间由预留中实例类型的标准化因子和实例数量决定。如果目
标配置的占用空间与原始配置的大小不匹配,则不会处理修改请求。在 Amazon EC2 控制台中,占用空
间是用单位计量的。
标准化因子基于实例类型(例如,m1实例系列)中的大小,并且只在相同实例类型内有意义;无法将实
例类型从一个类型修改为另一个类型。下表说明在实例类型中应用的标准化因子。
实例大小
标准化因子
微型
0.5
small
1
medium
2
large
4
xlarge
8
2xlarge
16
167
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
实例大小
标准化因子
4xlarge
32
8xlarge
64
10xlarge
80
要计算预留实例的实例占用空间大小,请将实例数量乘以标准化因子。例如,m1.medium 的标准化因子
为 2,因此四个 m1.medium 实例的预留相当于 8 个单位的占用空间。
只要预留的实例大小占用空间保持不变,您就可以将预留分配给相同实例类型中的不同实例大小。如果您
有包含四个 m1.medium 实例的预留 (4 x 2),则可以将其变为八个 m1.small 实例的预留 (8 x 1)。但是,
无法将一个 m1.small 实例的预留 (1 x 1) 转换为一个 m1.large 实例的预留 (1 x 4)。两个占用空间不相
等。
有关 Amazon EC2 实例类型的更多信息,请参阅 Instance Types。
提交修改请求
Abstract
使用 AWS 管理控制台 Amazon EC2 CLI 或 Amazon EC2 API 提交修改您的预留实例的请求。
AWS 提供多种查看和处理修改请求的方法:您可以使用 AWS 管理控制台直接与 Amazon EC2 API 交
互,也可以使用命令行界面。
主题
• AWS 管理控制台 (p. 168)
• 命令行界面 (p. 169)
• Amazon EC2 API (p. 169)
• 确定修改的状态 (p. 169)
AWS 管理控制台
Modify Reserved Instances 页面上的每个目标配置行都记录了当前实例类型的实例数量 (Count),以及您
的预留相对于其实例类型的实例大小占用空间 (Units)。有关更多信息,请参阅 了解实例大小占用空
间 (p. 167)。
如果您指定的预留实例数多于或少于可修改的数量,则分配的总额显示为红色。在您为可修改的所有预留
实例指定更改之后,总数变为绿色,然后您可以选择 Continue。
使用 AWS 管理控制台修改预留实例
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
在 Reserved Instances 页面上,选择一个或多个要修改的预留实例,然后选择 Modify Reserved
Instances。
Note
修改表中的第一个条目是原始的未修改预留。要修改所有预留的属性,请从菜单中选择新规
格。要仅修改或拆分某些预留,请为每个更改添加一行。
3.
对于每个附加属性更改选择 Add,并在 Count 字段中输入要修改的预留的数量。
•
要更改可用区,请在 Availability Zone 列表中选择值。
168
Amazon Elastic Compute Cloud Linux 实例用户指南
预留实例
4.
•
要更改网络平台,请在 Network 列表中选择值。
•
要更改实例类型,请在 Instance Type 列表中选择值。
要删除某个指定的属性,请选择相应行的 X。
Note
如果 Modify Reserved Instances 页面仅包含一个属性更改行,则不能删除该行。要修改多
个预留实例属性,请先为新规格添加一行,然后删除原始行。
5.
6.
选择 Continue (继续)。
指定好目标配置之后,若要确认您的修改选择,请选择 Submit Modifications。如果您在任何时候改
变了主意,请选择 Cancel 退出向导。
命令行界面
您也可以使用 AWS CLI (modify-reserved-instances)、Amazon EC2 CLI (ec2-modify-reserved-instances)、
Amazon EC2 API (ModifyReservedInstances) 以及适用于 Java 的 AWS 开发工具包以编程方式完成这些
修改任务。
Amazon EC2 API
您可以使用 ModifyReservedInstances 操作来修改预留实例。有关更多信息,请参阅 Amazon EC2 API
参考。
确定修改的状态
您可以通过查看所修改的预留实例的状态 来确定修改请求的状态。返回的状态将请求显示为
in-progress、fulfilled 或 failed。使用以下资源可获取这些信息:
• AWS 管理控制台中的 State 字段
• DescribeReservedInstancesModifications API 操作
• ec2-describe-reserved -instances-modifications CLI 命令
下表说明了 AWS 管理控制台中可能的 State 值。
状态
描述
活动(等待修改)
原始预留实例的转换状态。
retired (pending modification)
创建新预留实例时原始预留实例的转换状态。
停用
已成功修改和替换预留实例。
活动
从成功的修改请求创建的新预留实例。
-或者修改请求失败后的原始预留实例。
Note
(如果您使用 DescribeReservedInstancesModifications API 操作,则修改请求的状态应显示为
processing、fulfilled 或 failed。
169
Amazon Elastic Compute Cloud Linux 实例用户指南
计划实例
如果您的修改请求成功:
• 修改的预留会立即生效,并且定价优惠将于进行修改请求时这一小时的开始应用于新实例。例如,如果
您在晚上 9:15 成功修改了预留,则定价优惠将在晚上 9:00 转移到新实例。(您可以使用
DescribeReservedInstances API 操作或 ec2-describe- reserved-instances CLI 命令获取所修改的预留
实例的 effective date。)
• 原始预留将停用。其结束日期是新预留的开始日期,而新预留的结束日期与原始预留实例的结束日期相
同。如果您修改一个剩余期限为 16 个月的三年期预留,则修改后得到的预留是为期 16 个月的预留,
其结束日期与原始预留相同。
• 已修改的预留将列出 0 美元固定价格,而不是原始预留的固定价格。
Note
已修改的预留实例的固定价格不影响您的账户的折扣定价套餐计算,后者基于原始预留的固定价
格。
如果您的修改请求失败:
• 您的预留实例将保持原始配置。
• 您的预留实例可立即用于另一个修改请求。
有关无法修改某些预留实例的原因的更多信息,请参阅修改的要求 (p. 166)。
修改请求问题排查
如果您请求的目标配置设置是唯一的,则您会收到正在处理该请求的消息。此时,Amazon EC2 仅确定
了修改请求的参数有效。在处理过程中,您的修改请求仍然可能因无可用容量而失败。
在某些情况下,您可能会收到一个指示修改请求未完成或失败的消息而不是确认。使用此类消息中的信息
作为重新提交另一个更改请求的起点。
不是所有选择的预留实例都可以进行修改处理
Amazon EC2 会确定并列出无法修改的预留实例。如果收到与此类似的消息,请转到 AWS 管理控制台中
的 Reserved Instances 页面,查看有关这些容量预留的详细信息。
处理修改请求时出错
您提交了一个或多个预留实例进行修改,而且不能处理您的处理请求。根据您修改的预留数量,您可以获
取不同版本的消息。
Amazon EC2 会显示无法处理请求的原因。举例来说,您可能已经为正在修改的预留实例的一个或更多
子集指定了相同的目标配置 – 可用区和平台的组合。尝试重新提交这些修改请求,但确保预留的实例详细
信息是匹配的,并确保修改的所有子集的目标配置是唯一的。
计划的预留实例
Abstract
购买按指定的计划重复的容量预留。
利用计划的预留实例(计划实例),您可以以一年为期限购买具有指定的开始时间和持续时间,并且每
日、每周或每月重复一次的容量预留。您应提前预留容量,以确定其在需要时可用。您需要为计划的实例
时间付费,即使您未使用它们也是如此。
170
Amazon Elastic Compute Cloud Linux 实例用户指南
计划实例
对于不持续运行,而是按固定的计划运行的工作负载,计划实例是一个很好的选择。例如,您可以为在工
作时间运行的应用程序,或为在周末运行的批处理作业使用计划实例。
如果您需要持续的容量预留,预留实例可能符合您的需求并且可以降低成本。有关更多信息,请参阅 预
留实例 (p. 151)。如果您的实例运行时间比较灵活,竞价型实例可能符合您的需求并且可以降低成本。有
关更多信息,请参阅 竞价型实例 (p. 174)。
内容
• 计划实例如何运行 (p. 171)
• 购买计划实例 (p. 171)
• 启动计划实例 (p. 172)
• 计划实例限制 (p. 173)
计划实例如何运行
Amazon EC2 在每个可用区内都留下了一些 EC2 实例池以用作计划实例。每个池都支持实例类型、操作
系统和网络(EC2-Classic 或 EC2-VPC)的一个特定组合。
首先,您必须搜索可用的计划。您可在多个池或单个池中进行搜索。在找到合适的计划后,您购买该计
划。
必须在计划实例的计划时间段内启动该实例。当您执行此操作时,Amazon EC2 将根据指定的启动说明
代表您启动 EC2 实例。Amazon EC2 必须确保 EC2 实例在当前计划时间段结束时终止,以使容量可用
于其为之预留的任何其他计划实例。因此,Amazon EC2 在当前计划时间段结束前三分钟终止 EC2 实
例。
您无法停止或重启计划实例,但可以根据需要手动终止它们。如果您在计划实例的当前计划时间段结束前
将其终止,可以在几分钟后再次启动它。否则,您必须等到下一个计划时间段。
下图说明了计划实例的生命周期。
购买计划实例
要购买计划实例,可使用计划预留实例预留向导。
Warning
购买计划实例后,您无法取消、修改或转售该购买。
171
Amazon Elastic Compute Cloud Linux 实例用户指南
计划实例
购买计划实例使用控制台
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中的 INSTANCES 下,选择 Scheduled Instances。
选择 Purchase Scheduled Instances。
在 Find available schedules 页面中,执行以下操作:
a.
在 Create a schedule 下,从 Starting on 中选择启动日期、从 Recurring 中选择计划重复周期
(每日、每周或每月),并从 for duration 中选择最短持续时间。请注意,控制台可确保您为达
到计划实例所需的最低利用率(每年 1,200 个小时)的最短持续时间指定一个值。
b.
在 Instance details 下,从 Platform 中选择操作系统和网络。要缩小结果范围,请从 Instance
type 中选择一个或多个实例类型,或从 Availability Zone 中选择一个或多个可用区。
c.
d.
选择 Find schedules。
在 Available schedules 下,选择一个或多个计划。对于您选择的每个计划,设置实例的数量,
然后选择 Add to Cart。
您的购物车显示在页面底部。在购物车中添加或删除完计划以后,选择 Review and purchase。
e.
5.
在 Review and purchase 页面上,验证您的选择并根据需要对其进行编辑。完成后,选择 Purchase。
使用 AWS CLI 购买计划实例
使用 describe-scheduled-instance-availability 命令列出满足您需求的可用计划,然后使用
purchase-scheduled-instances 命令完成购买。
启动计划实例
在购买计划实例后,可在计划实例的计划时间段内启动该实例。
使用控制台启动计划实例
1.
2.
3.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中的 INSTANCES 下,选择 Scheduled Instances。
选择计划实例,然后选择 Launch Scheduled Instances。
4.
5.
在 Configure 页面上,完成您的计划实例的启动说明,然后选择 Review。
在 Review 页面上,验证启动配置并根据需要修改它。完成后,选择 Launch。
使用 AWS CLI 启动计划实例
172
Amazon Elastic Compute Cloud Linux 实例用户指南
计划实例
使用 describe-scheduled-instances 命令列出计划实例,然后使用 run-scheduled-instances 命令在每个
计划实例的计划时间段内启动实例。
计划实例限制
计划实例受以下限制的约束:
• 以下是仅有的几个受支持的实例类型:C4、 C3、M4 和 R3。
• 所需的期限为 365 天(一年)。
• 所需的最低利用率为每年 1,200 个小时。
• 您最多可以提前三个月购买计划实例。
173
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价型实例
Abstract
了解如何使用竞价型实例降低 Amazon EC2 成本。
竞价型实例使您可以对未使用的 EC2 实例出价,这可以大幅降低您的 Amazon EC2 成本。(每个可用区
中的每种实例类型的)竞价型实例的每小时价格由 Amazon EC2 设置,并根据竞价型实例的供求波动。
只要您的出价超过当前市场价格,您的竞价型实例就会运行。
如果您能灵活控制应用程序的运行时间并且应用程序可以中断,那么竞价型实例将是您的经济实惠之选。
例如,竞价型实例非常适合数据分析、批处理作业、后台处理和可选的任务。有关更多信息,请参阅
Amazon EC2 竞价型实例。
竞价型实例和按需实例的主要差别在于,竞价型实例可能无法立即启动,竞价型实例每小时价格会根据需
求变动,并且 Amazon EC2 可以根据竞价型实例每小时价格或可用情况的变化终止单个竞价型实例。可
以采取的一种策略是启动一组核心按需实例,以便为应用程序维护最低级别的保障计算资源,再适机通过
竞价型实例来进行补充。
另一项策略是,启动具有要求的时长的竞价型实例(也被称为竞价型限制),这些实例不会因竞价价格更
改而中断。有关更多信息,请参阅 指定竞价型实例的持续时间 (p. 187)。
概念
在开始使用竞价型实例之前,您应该熟悉以下概念:
• 竞价型实例池 - 一组未使用的 EC2 实例,具有相同的实例类型、操作系统、可用区和网络平台
(EC2-Classic 或 EC2-VPC)。
• 竞价价格 – 竞价型实例当前的每小时市场价格,该价格由 Amazon EC2 根据执行的最后出价设置。您
还可以检索竞价价格历史记录。
• 竞价型实例请求(或竞价出价)– 提供您希望为每个竞价型实例每小时支付的最高价(出价)。当您的
出价超过竞价价格时,Amazon EC2 会满足您的请求。请注意,竞价型实例请求可以是一次性 或持久
性 请求。Amazon EC2 会在与持久性竞价请求关联的竞价型实例终止之后自动重新提交该请求。您的
竞价型实例请求可选择性地为竞价型实例指定一个持续时间。
• 竞价型队列 – 一组基于指定条件启动的竞价型实例。竞价型队列会选择满足您的需要的竞价型实例池,
并启动竞价型实例以满足队列的目标容量。竞价型队列还通过在队列中的竞价型实例终止之后启动替换
实例,长时间维持队列的目标容量。
• 竞价型实例中断 – 当竞价价格超过您的出价时,或者不再有任何未使用的 EC2 实例时,Amazon EC2
将终止您的竞价型实例。Amazon EC2 将竞价型实例标记为终止并提供竞价型实例终止通知,这将在
实例终止前为其提供两分钟时间的警告。
• 出价状态 – 提供有关您的竞价出价最新状态的详细信息。
174
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
怎样开始使用
您需要做的第一件事是为使用 Amazon EC2 进行设置。在启动竞价型实例之前,若拥有启动按需实例的
经验也会有所帮助。
设置和运行
• Amazon EC2 的设置 (p. 19)
• Amazon EC2 Linux 实例入门 (p. 26)
竞价基本知识
• 竞价型实例运行方式 (p. 176)
• 竞价型队列的工作方式 (p. 179)
使用竞价型实例
• 准备中断 (p. 212)
• 创建竞价型实例请求 (p. 185)
• 获取出价状态信息 (p. 210)
使用竞价型队列
• 竞价型队列先决条件 (p. 192)
• 创建竞价型队列请求 (p. 194)
相关服务
您可以直接使用 Amazon EC2 预配竞价型实例。您也可以使用 AWS 中的其他服务预置竞价型实例。有
关更多信息,请参阅以下文档。
Auto Scaling 和竞价型实例
您可以通过出价创建启动配置,这样 Auto Scaling 可以启动竞价型实例。有关更多信息,请参阅 Auto
Scaling 开发人员指南 中的在 Auto Scaling 组中启动竞价型实例。
Amazon EMR 和竞价型实例
有时候,在 Amazon EMR 集群中运行竞价型实例会非常有帮助。有关更多信息,请参阅 Amazon
Elastic MapReduce 开发人员指南 中的 通过竞价型实例降低成本。
AWS CloudFormation 模板
AWS CloudFormation 使您能够使用 JSON 格式的模板来创建和管理 AWS 资源集合。AWS
CloudFormation 模板可以包含竞价价格。有关更多信息,请参阅 EC2 竞价型实例更新 — Auto Scaling
和 CloudFormation 集成。
AWS SDK for Java
您可以使用 Java 编程语言来管理竞价型实例。有关更多信息,请参阅教程:Amazon EC2 竞价型实
例和教程:高级 Amazon EC2 竞价请求管理。
适用于 .NET 的 AWS 开发工具包
您可以使用 .NET 编程环境来管理竞价型实例。有关更多信息,请参阅教程:Amazon EC2 竞价型实
例。
175
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
定价
您为竞价型实例支付竞价价格,竞价价格由 Amazon EC2 设置,并根据竞价型实例的供求周期性波动。
如果您的出价超出当前的竞价价格,则 Amazon EC2 会满足您的请求,您的竞价型实例将会运行,直到
您选择终止它们或竞价价格增长到高于您的出价。
在该期间内,每个人支付的竞价价格相同,无论他们的出价是否更高。您每小时支付的金额绝不会超过您
的出价,并且常常会低于出价。例如,如果您的出价是每小时 0.25 USD,竞价价格是每小时 0.20 USD,
您只需支付每小时 0.20 USD 即可。如果竞价价格下降,您将支付更低的新价格。如果竞价价格提高,在
竞价价格等于或低于您的出价时,您将按照新价格支付。如果竞价价格提高并超过您的出价,则会中断您
的竞价型实例。
在每一小时实例使用时间开始时,将按照竞价价格计费。若因竞价价格超过您的出价,导致您的竞价型实
例在一小时的实例使用时间内被中断,则您无需为不足一小时的部分付费。如果您自己在一小时的实例使
用时间内终止了竞价型实例,则需要为不足一小时的部分付费。
请注意,具有预定义的持续时间的竞价型实例使用的小时固定价格在该实例运行时仍有效。
要查看各个区域和实例类型的当前(每 5 分钟更新一次)最低竞价价格,请参阅竞价型实例定价页面。
要查看过去三个月的竞价价格历史记录,请使用 Amazon EC2 控制台或者 describe-spot-price-history 命
令 (AWS CLI)。有关更多信息,请参阅 竞价型实例定价历史记录 (p. 183)。
要查看您的账单,请转至“AWS 账户活动”页面。您的账单中包含了提供您的账单详情的使用情况报告的
链接。有关更多信息,请参阅 AWS Account Billing。
如果您有关于 AWS 账单、账户和事件的问题,请联系 AWS Support。
竞价型实例运行方式
Abstract
了解竞价型实例的工作方式。
要使用竞价型实例,请创建一个竞价型实例请求或竞价型队列请求。该请求包括您愿意为每个实例每小时
支付的最高价(您的出价)以及其他约束(例如,实例类型和可用区)。如果您的出价超过了指定实例当
前的竞价价格,并且指定的实例可用,将立即满足您的请求。否则,只要竞价价格低于您的出价或者指定
的实例可用,就会完成您的请求。在您终止竞价型实例或者 Amazon EC2 必须终止竞价型实例(也称为
竞价型实例中断)之前,竞价型实例将保持运行。
当您使用竞价型实例时,您必须做好应对中断的准备。随着对竞价型实例需求的增长,或者竞价型实例供
应的减少,在竞价价格上涨超过了您的出价时,Amazon EC2 可以中断您的竞价型实例。当 Amazon EC2
将竞价型实例标记为终止时,它会提供一个竞价型实例终止通知,这将在实例终止前为其提供两分钟时间
的警告。请注意,您无法为竞价型实例启用终止保护。有关更多信息,请参阅 竞价型实例中断 (p. 212)。
请注意,如果 Amazon EBS 支持的实例是竞价型实例,那么您无法停止和启动该实例,但可以重新启动
或终止它。
内容
• 竞价市场上供应和需求 (p. 177)
• 在启动组中启动竞价型实例 (p. 178)
• 在可用区组中启动竞价型实例 (p. 178)
• 在 VPC 中启动竞价型实例 (p. 178)
176
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价市场上供应和需求
AWS 持续评估每个竞价型实例池中有多少竞价型实例可用,监视已经为每个池出了什么价,然后将可用
竞价型实例预置给最高出价者。池的竞价价格设置为该池中执行的最低出价。因此,您的出价必须高于竞
价价格,才会立即执行针对单个竞价型实例的竞价请求。
例如,假设您创建了竞价型实例请求,对应的竞价型实例池只有五个竞价型实例可供销售。您的出价为
0.10 USD,这也是当前竞价价格。下表按照降序排名显示了当前出价。将执行出价 1-5。出价 5(最后执
行的出价)将竞价价格设置在 0.10 USD。出价 6 未执行。0.10 USD 这一相同出价的出价 3-5 按随机顺
序排列。
出价
出价
当前竞价价格
备注
1
1.00 USD
0.10 USD
2
1.00 USD
0.10 USD
3
0.10 USD
0.10 USD
4
0.10 USD
0.10 USD
您的出价
5
0.10 USD
0.10 USD
最后执行的出价(设置竞
价价格)。每个人在相应
时段内都会支付相同的竞
价价格。
———
———
6
$0.05
竞价容量截止
现在,假设此池的大小下降为 3。将执行出价 1-3。出价 3(最后执行的出价)将竞价价格设置在 0.10
USD。出价 4-5(也就是 0.10 USD)未执行。如您所见,尽管竞价价格没有变化,但由于竞价供应减少,
包括您的出价在内的两个竞价将不再执行。
出价
出价
当前竞价价格
备注
1
1.00 USD
0.10 USD
2
1.00 USD
0.10 USD
3
0.10 USD
0.10 USD
———
———
竞价容量截止
4
0.10 USD
您的出价
5
0.10 USD
6
$0.05
最后执行的出价(设置竞
价价格)。每个人在相应
时段内都会支付相同的竞
价价格。
要执行此池中单个实例的竞价请求,您的出价必须超过当前的竞价价格 0.10 USD。如果您出价 0.101
USD,则将执行您的请求,出价 3 的竞价型实例将中断,竞价价格成为 0.101 USD。如果您出价 2.00
USD,则出价 3 的竞价型实例将中断,竞价价格成为 1.00 USD(出价 2 的价格)。
请记住,不论您出价多高,您获得的竞价型实例数都不会超过竞价型实例池中可用的竞价型实例数。如果
池的大小下降为零,则该池中的所有竞价型实例都将中断。
177
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
在启动组中启动竞价型实例
在竞价型实例请求中指定启动组,可以通知 Amazon EC2 只有在可以全部启动一组竞价型实例时才启动。
此外,如果竞价型服务必须终止启动组中的一个实例(例如,如果竞价价格提高并超过您的出价),则必
须终止该组中的所有实例。不过,如果由您终止启动组中的一个或多个实例,Amazon EC2 不会终止该
启动组中的剩余实例。
请注意,虽然此选项非常有用,但添加此约束会减少完成您的竞价型实例请求的几率。这还会增加您的竞
价型实例被终止的几率。
如果您创建了另一个成功的竞价型实例请求并指定与之前成功请求相同(现有)的启动组,则新实例将添
加到该启动组中。以后,在该启动组的一个实例终止时,启动组中的所有实例均会终止,这包括第一次请
求和第二次请求启动的实例。
在可用区组中启动竞价型实例
在竞价型实例请求中指定可用区组,可以通知竞价服务在同一可用区中启动一组竞价型实例。请注意,
Amazon EC2 不必同时终止某个可用区组中的所有实例。如果 Amazon EC2 必须终止可用区组中的某个
实例,剩余的实例仍保持运行。
请注意,虽然此选项非常有用,但添加此约束会减少完成您的竞价型实例请求的几率。
如果您在竞价型实例请求中指定了可用区组,但没有指定可用区,则竞价服务所采取的操作将取决于您指
定的是 EC2-Classic 网络、默认 VPC 还是非默认 VPC。有关 EC2-Classic 和 EC2-VPC 的更多信息,请
参阅 支持的平台 (p. 518)。
EC2-Classic
Amazon EC2 查找区域中最低价格的可用区,如果该组的最低出价高于该可用区中当前的竞价价格,则
在该可用区中启动您的竞价型实例。只要竞价价格保持低于该组的最低出价,Amazon EC2 就将等待,
直至有足够的容量来同时启动您的竞价型实例。
默认 VPC
Amazon EC2 使用指定子网的可用区,如果您没有指定子网,则竞价服务将选择一个可用区及其默认子
网,但这可能不是最低价格的可用区。如果您删除了可用区的默认子网,则必须指定其他子网。
非默认 VPC
Amazon EC2 使用指定子网的可用区。
在 VPC 中启动竞价型实例
如果您想在使用竞价型实例时利用 EC2-VPC 的功能,请在您的竞价请求中将您的竞价型实例指定为在
VPC 中启动。按照您为按需实例指定子网的相同方法,为您的竞价型实例指定子网。
对于在 VPC 中启动竞价型实例的竞价型实例请求,其提交过程与在 EC2-Classic 中启动竞价型实例的竞
价型实例请求基本相同,但有以下区别:
• 您应该基于 VPC 中竞价型实例的竞价价格历史记录来确定您的出价。
• [默认 VPC] 如果希望在特定的低价格可用区中启动您的竞价型实例,您必须在竞价型实例请求中指定
对应的子网。如果您没有指定子网,则 Amazon EC2 将为您选择一个子网,而该子网的可用区中的竞
价价格不一定是最低的。
• [非默认 VPC] 您必须为您的竞价型实例指定子网。
178
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价型队列的工作方式
Abstract
使用单个竞价型队列请求启动几十个、几百个或几千个竞价型实例。
竞价型队列是竞价型实例的集合或队列。竞价型队列会尝试启动适当数量的竞价型实例,以满足在竞价型
队列请求中指定的目标容量要求。如果您的竞价型实例由于竞价价格或可用容量的变化而中断,则竞价型
队列还会尝试维持其目标容量队列。
竞价型实例池 是一组未使用的 EC2 实例,具有相同的实例类型、操作系统、可用区和网络平台
(EC2-Classic 或 EC2-VPC)。在您发出竞价型队列请求时,您可以指定多个启动说明(因实例类型、
AMI、可用区或子网而异)。竞价型队列会基于竞价型队列请求中包含的启动说明以及竞价型队列请求的
配置来选择用于执行请求的竞价型实例池。竞价型实例来自所选池。
内容
• 竞价型队列分配策略 (p. 179)
• 竞价价格覆盖 (p. 179)
• 竞价型队列实例权重 (p. 180)
• 演练:将竞价型队列与实例权重结合使用 (p. 181)
竞价型队列分配策略
竞价型队列的分配策略决定了如何根据启动说明从可能的竞价型实例池执行竞价型队列请求。以下是您在
竞价型队列请求中可以指定的分配策略:
lowestPrice
竞价型实例来自具有最低价格的池。这是默认策略。
diversified
竞价型实例分布在所有池中。
选择分配策略
您可以基于您的使用案例来优化竞价型队列。
如果您的队列较小或只是短时间运行,则您的竞价型实例中断的可能性较低(即使所有实例都在同一个竞
价型实例池中)。因此,lowestPrice 策略可能会满足您的需求,同时提供最低的成本。
如果您的队列较大或长时间运行,则您可以通过在多个池间分配竞价型实例来提高队列的可用性。例如,
如果您的竞价型队列请求指定 10 个池,且目标容量为 100 个实例,则竞价型队列会在每个池中启动 10
个竞价型实例。如果一个池的竞价价格上涨到超过您对该池的出价,则只有队列的 10% 受到影响。使用
此策略还可降低您的队列对单个池的竞价价格随时间上涨的敏感度。
请注意,使用 diversified 策略时,竞价型队列不在竞价价格高于按需价格的任何池中启动竞价型实
例。
维持目标容量
在竞价型实例由于竞价型实例池的竞价价格或可用容量发生变化而终止之后,竞价型队列会启动替换竞价
型实例。如果分配策略是 lowestPrice,则竞价型队列在当前具有最低竞价价格的池中启动替换实例。
如果分配策略是 diversified,则竞价型队列在其余池间分配替换竞价型实例。
竞价价格覆盖
每个竞价型队列请求必须包含一个全局竞价价格。默认情况下,竞价型队列使用此价格作为每个启动说明
的出价。
179
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
您可以选择在一个或多个启动说明中指定竞价价格。此出价特定于启动说明。如果启动说明包含特定竞价
价格,则竞价型队列使用此价格作为该启动说明的出价(覆盖全局竞价价格)。请注意,不包含特定竞价
价格的任何其他启动说明仍使用全局竞价价格。
竞价型队列实例权重
当请求竞价型实例队列时,您可以使用实例权重 定义每种实例类型对应用程序性能贡献的容量单位,并
相应地为每个竞价型实例池调整出价。
默认情况下,您指定的竞价价格表示每实例小时 的出价。使用实例权重功能时,您指定的竞价价格表示
每单位小时 的出价。您可以通过将实例类型出价除以它表示的单位数来计算每单位小时出价。竞价型队
列通过将目标容量除以实例权重来计算要启动的竞价型实例数。如果结果不是整数,则竞价型队列会将其
向上舍入到下一个整数,以便队列的大小不低于其目标容量。
下表中提供了用于为目标容量是 10 的竞价型队列请求确定每单位出价的计算示例。
实例类型
实例权重
每实例小时竞
价价格
每单位小时竞价 启动的实例数
价格
r3.xlarge
2
$0.05
0.025
5
(0.05 除以 2) (10 除以 2)
r3.8xlarge
8
0.10 USD
0.0125
2
(0.10 除以 8) (10 除以 8,结果向上舍入)
按如下所示使用竞价型队列实例权重,在执行时具有每单位最低价格的池中预置所需的目标容量:
1.
2.
3.
采用实例(默认设置)或采用所选单位(如虚拟 CPU、内存、存储或吞吐量)为竞价型队列设置目
标容量。
设置每单位出价。
对于每个启动配置,指定权重,这是实例类型向目标容量提供的单位数。
实例权重示例
考虑一个具有以下配置的竞价型队列请求:
• 目标容量为 24
• 一个实例类型为 r3.2xlarge 且权重为 6 的启动说明
• 一个实例类型为 c3.xlarge 且权重为 5 的启动说明
每个权重表示相应实例类型向目标容量提供的单位数。如果第一个启动说明提供了最低的每单位竞价价格
(r3.2xlarge 每实例小时竞价价格除以 6),则竞价型队列会启动四个这样的实例(24 除以 6)。
如果第二个启动说明提供了最低的每单位竞价价格(c3.xlarge 每实例小时竞价价格除以 5),则竞价
型队列会启动五个这样的实例(24 除以 5,结果向上舍入)。
实例权重和分配策略
考虑一个具有以下配置的竞价型队列请求:
• 目标容量为 30
• 一个实例类型为 c3.2xlarge 且权重为 8 的启动说明
• 一个实例类型为 m3.xlarge 且权重为 8 的启动说明
180
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
• 一个实例类型为 r3.xlarge 且权重为 8 的启动说明
竞价型队列会启动四个实例(30 除以 8,结果向上舍入)。使用 lowestPrice 策略时,所有四个实例
都来自提供最低每单位竞价价格的池。使用 diversified 策略时,竞价型队列会在所有三个池中各启动
1 个实例,并在三个池中提供最低每单位竞价价格的那个池中启动第四个实例。
演练:将竞价型队列与实例权重结合使用
此演练使用一个名为 Example Corp 的虚构公司演示使用实例权重为竞价型队列出价的过程。
目标
Example Corp 是一家医药公司,该公司想要利用 Amazon EC2 的计算功能来筛查可能用于对抗癌症的化
学成分。
计划
Example Corp 首先查看竞价最佳实践。然后,Example Corp 确定了他们的竞价型队列的以下要求。
实例类型
Example Corp 有一个计算和内存密集型应用程序,该应用程序在至少 60 GB 内存和八个虚拟 CPU (vCPU)
的情况下性能最佳。他们希望以尽可能低的价格为该应用程序提供尽可能多的这些资源。Example Corp
认定以下任意 EC2 实例类型都能满足其需求:
实例类型
内存 (GiB)
vCPU
r3.2xlarge
61
8
r3.4xlarge
122
16
r3.8xlarge
244
32
以单位数表示的目标容量
采用实例权重,目标容量可以等于几个实例(默认)或一些因素(如内核 (vCPU)、内存 (GiB) 和存储
(GB))的组合。将其应用程序的基本要求(60 GB RAM 和八个 vCPU)作为 1 个单位,Example Corp
决定 20 倍此数量可满足其需求。因此该公司将其竞价型队列请求的目标容量设置为 20。
实例权重
确定目标容量后,Example Corp 计算了实例权重。为了计算每个实例类型的实例权重,他们按如下所示
确定每个实例类型需要多少单位才能达到目标容量:
• r3.2xlarge (61.0 GB, 8 vCPUs) = 1 个 20 单位
• r3.4xlarge (122.0 GB, 16 vCPUs) = 2 个 20 单位
• r3.8xlarge (244.0 GB, 32 vCPUs) = 4 个 20 单位
因此,Example Corp 在其竞价型队列请求中将实例权重 1、2 和 4 分配给相应的启动配置。
每单位小时出价
Example Corp 使用每实例小时按需定价作为其出价的起点。他们也可以使用最近的竞价价格或两者的组
合。为了计算每单位小时出价,他们用每实例小时的起始出价除以权重。例如:
181
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
实例类型
按需价格
实例权重
每单位小时价格
r3.2xLarge
$0.7
1
$0.7
r3.4xLarge
1.4 USD
2
$0.7
r3.8xLarge
$2.8
4
$0.7
Example Corp 可以输入一个每单位小时 0.7 USD 的全局出价来对全部三个实例类型竞价。他们还可以输
入一个每单位小时 0.7 USD 的全局出价并在 r3.8xlarge 启动说明中输入每单位小时 0.9 USD 的特定出
价。根据其竞价型队列的预置策略,Example Corp 可以出较低的价格以便进一步降低成本,也可以出较
高的价格以便减少可能的中断。
验证权限
在创建竞价型队列请求之前,Example Corp 验证它是否拥有具备所需权限的 IAM 角色。有关更多信息,
请参阅 竞价型队列先决条件 (p. 192)。
创建请求
Example Corp 为其竞价型队列请求创建一个具有以下配置的文件 config.json:
{
"SpotPrice": "0.70",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-482e4972",
"WeightedCapacity": 1
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.4xlarge",
"SubnetId": "subnet-482e4972",
"WeightedCapacity": 2
}
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.8xlarge",
"SubnetId": "subnet-482e4972",
"SpotPrice": "0.90",
"WeightedCapacity": 4
}
]
}
Example Corp 使用以下 request-spot-fleet 命令创建竞价型队列请求:
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
有关更多信息,请参阅 竞价型队列请求 (p. 191)。
182
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
执行
分配策略确定竞价型实例来自哪个竞价型实例池。
使用 lowestPrice 策略(这是默认策略)时,竞价型实例来自在执行时具有最低每单位竞价价格的池。
为了提供 20 个单位的容量,竞价型队列有三种做法:启动 20 个 r3.2xlarge 实例(20 除以 1)、10
个 r3.4xlarge 实例(20 除以 2)或 5 个 r3.8xlarge 实例(20 除以 4)。
如果 Example Corp 使用 diversified 策略,则竞价型实例会来自所有三个池。竞价型队列会启动 6 个
r3.2xlarge 实例(提供 6 个单位)、3 个 r3.4xlarge 实例(提供 6 个单位)和 2 个 r3.8xlarge
实例(提供 8 个单位),总共 20 个单位。
竞价型实例定价历史记录
Abstract
查看竞价型实例的定价历史记录。
您的出价需要高于竞价价格以确保单个竞价请求能够完成。当您的出价超过竞价价格时,Amazon EC2
会启动您的竞价型实例,当竞价价格上涨到超出您的出价,Amazon EC2 会终止您的竞价型实例。您可
以出价超过当前竞价价格,以便快速完成竞价请求。不过,在您为竞价型实例指定出价前,我们建议您查
看竞价价格历史记录。您可以查看最近 90 天的竞价价格历史记录,并按照实例类型、操作系统和可用区
筛选。
以竞价价格历史记录为指导,您可以选择在之前能够满足您的需求的出价。例如,您可以确定什么出价在
您查看的时间范围内提供了 75% 的正常运行时间。但请注意,历史趋势不能确保以后的结果。竞价价格
因实时供需情况而异,过去产生特定竞价价格模式的情况可能在未来不会出现。
使用控制台查看竞价价格历史记录
1.
2.
3.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,单击 Spot Requests (竞价请求)。
单击 Pricing History (定价历史记录)。默认情况下,页面显示过去一天中所有可用区中的 Linux
t1.micro 实例的数据图。将鼠标移动到图形上可在图形下方的表中显示特定时间的价格。
4.
(可选)要查看特定可用区的竞价价格历史记录,请从列表中选择一个可用区。您还可以选择其他产
品、实例类型或日期范围。
183
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
使用命令行查看竞价价格历史记录
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-spot-price-history (AWS CLI)
• ec2-describe-spot-price-history (Amazon EC2 CLI)
• Get-EC2SpotPriceHistory (适用于 Windows PowerShell 的 AWS 工具)
竞价型实例请求
Abstract
创建竞价型实例请求,指定您的竞价型实例,包括您愿意支付的每小时实例使用时间的价格。
要使用竞价型实例,您需要创建竞价型实例请求,其中包括实例数量、实例类型、可用区以及您愿意为每
小时实例使用时间支付的最高价格(您的出价)。如果您的出价超过当前竞价价格,则 Amazon EC2 将
立即执行您的请求。否则,Amazon EC2 将等待直至可以执行您的请求,或者直至您取消请求。
以下演示了竞价请求的运行方式。请注意,为竞价型实例中断采取的操作取决于请求类型(一次性还是持
久性)。如果请求是持久性请求,则在竞价型实例终止之后将重新打开请求。
内容
• 竞价型实例请求状态 (p. 184)
• 创建竞价型实例请求 (p. 185)
• 指定竞价型实例的持续时间 (p. 187)
• 查找正在运行的竞价型实例 (p. 187)
• 标记竞价型实例请求 (p. 188)
• 取消竞价型实例请求 (p. 189)
• 竞价请求示例启动说明 (p. 190)
竞价型实例请求状态
竞价型实例请求可以处于以下某种状态:
• open — 请求正在等待执行。
• active – 请求已执行并有关联的竞价型实例。
• failed — 请求的一个或多个参数错误。
• closed — 竞价型实例被中断或终止。
• cancelled — 您取消了请求或者请求已过期。
以下显示了请求状态之间的转换。请注意,转换取决于请求类型(一次性还是持久性)。
184
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
一次性竞价型实例请求在 Amazon EC2 启动竞价型实例、请求过期前或者您取消请求前保持有效。如果
竞价价格提高并超过您的出价,您的竞价型实例会终止,竞价型实例请求关闭。
持久性竞价型实例请求在过期或您取消它之前保持有效,即使该请求已完成也如此。例如,如果您在竞价
价格为 0.25 USD 时为一个实例创建持久性竞价型实例请求,当您的出价超过 0.25 USD 时,Amazon
EC2 启动您的竞价型实例。如果竞价价格上涨超过了您的出价,您的竞价型实例将终止;不过,竞价型
实例请求重新打开,Amazon EC2 将在竞价价格低于您的出价时启动新的竞价型实例。
您可以通过出价状态跟踪您的竞价型实例请求状态以及启动的竞价型实例状态。有关更多信息,请参阅
竞价出价状态 (p. 207)。
创建竞价型实例请求
请求竞价型实例的过程与启动按需实例的过程相似。请注意,提交请求之后,您无法更改竞价请求的参
数,包括出价。
如果您一次请求了多个竞价型实例,Amazon EC2 将创建单独的竞价型实例请求,这样您可以分别跟踪
各个请求的状态。有关跟踪竞价请求的更多信息,请参阅竞价出价状态 (p. 207)。
先决条件
在开始之前,请确定您的出价、需要多少个竞价型实例以及要使用的实例类型。
使用控制台创建竞价型实例请求
1.
2.
3.
4.
5.
6.
7.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,单击 Spot Requests (竞价请求)。
(可选)要查看竞价价格趋势,请单击 Pricing History。有关更多信息,请参阅 竞价型实例定价历史
记录 (p. 183)。
单击 Request Spot Instances。
在 Choose an Amazon Machine Image (选择一个 Amazon 系统映像) 页面上,选择一个 AMI。
在 Choose an Instance Type (选择一个实例类型) 页面上,选择实例类型,然后单击 Next: Configure
Instance Details (下一步: 配置实例详细信息)。
在 Configure Instance Details (配置实例详细信息) 页面中,执行以下操作:
a.
b.
c.
(可选)默认情况下,该请求将启动一个竞价型实例。要启动多个竞价型实例,请使用要启动的
竞价型实例数更新 Number of instances。
默认情况下选择购买选项 Request Spot Instances。要创建竞价请求,请保留选中此选项。
在 Maximum price 中,指定您愿意为这些竞价型实例支付的价格。如果您的出价超过竞价价格,
则竞价请求将立即启动竞价型实例。
请注意,区域中每个可用区的当前竞价价格都会列出,以便您掌握信息。
d.
(可选)默认情况下,请求在执行或您取消它之前保持有效。要创建仅在特定时段内有效的请
求,请指定 Request valid from (请求有效起始时间) 和 Request valid to (请求有效截止时间)。
185
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
e.
f.
(可选)默认情况下,请求是一次性请求。要创建持久性竞价请求,请选择 Persistent request
(持久性请求)。
您的账户可能支持 EC2-Classic 和 EC2-VPC 平台,或者仅支持 EC2-VPC。要查明您的账户支
持的平台,请参阅 支持的平台 (p. 518)。如果您的账户仅支持 EC2-VPC,则可以在默认 VPC 或
非默认 VPC 中启动实例。否则,您可以在 EC2-Classic 或非默认 VPC 中启动实例。
在 EC2-Classic 中启动:
• Network (网络):选择 Launch into EC2-Classic (在 EC2-Classic 中启动)。
• Availability Zone (可用区):选择您想使用的可用区。要使 AWS 为您选择可用区,请选择 No
preference (无首选项)。
在 VPC 中启动:
• Network (网络):选择 VPC,若要创建新 VPC,请单击 Create new VPC (创建新 VPC) 转到
Amazon VPC 控制台。完成后,返回到向导并单击 Refresh (刷新) 按钮,以便将您的 VPC 加
载到列表中。
• Subnet (子网):选择您要将实例启动到其中的子网。如果您的账户仅为 EC2-VPC,请选择 No
preference (无首选项) 让 AWS 在任何可用区中选择默认子网。要创建新子网,请单击 Create
new subnet (创建新子网) 转到 Amazon VPC 控制台。完成此操作后,返回到向导并单击
Refresh (刷新) 按钮,以便将您的子网加载到列表中。
• Auto-assign Public IP (自动分配公有 IP):指定您的实例是否接收公有 IP 地址。默认情况下,
默认子网中的实例接收公有 IP 地址,非默认子网中的实例则不接收。可以选择 Enable (启用)
或 Disable (禁用) 以覆盖子网的默认设置。
g.
您可以按照为按需实例指定选项的方法指定剩余选项,然后单击 Review and Launch (查看和启
动)。如果系统提示您指定根卷类型,请进行选择,然后单击 Next (下一步)。
8.
在 Review Instance Launch (查看实例启动) 页面上,单击 Edit security groups (编辑安全组)。在
Configure Security Group (配置安全组) 页上,单击 Select an existing security group (选择现有安全
组),选择或创建安全组,然后单击 Review and Launch (查看和启动)。
9. 在 Review Instance Launch (查看实例启动) 页面上,单击 Launch (启动)。
10. 在 Select an existing key pair or create a new key pair (选择现有密钥对或创建新密钥对) 对话框中,
选择 Choose an existing key pair (选择现有密钥对),然后选择或创建密钥对。单击确认复选框,然
后单击 Request Spot Instances (请求竞价型实例)。
11. 在确认页面上,单击 View Spot Requests (查看竞价请求)。在 Description (描述) 选项卡中,注意请
求的状态为 open,请求状况为 pending-evaluation 等待启动。执行请求后,请求状态将为
active,请求状况为 fulfilled。
使用 AWS CLI 创建竞价型实例请求
使用以下 request-spot-instances 命令可创建一次性请求:
aws ec2 request-spot-instances --spot-price "0.05" --instance-count 5 --type
"one-time" --launch-specification file://specification.json
使用以下 request-spot-instances 命令可创建持久性请求:
aws ec2 request-spot-instances --spot-price "0.05" --instance-count 5 --type
"persistent" --launch-specification file://specification.json
例如,启动规范文件,请参阅竞价请求示例启动说明 (p. 190)。
186
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
当竞价价格低于您的出价时,Amazon EC2 将启动您的竞价型实例。竞价型实例将运行,直到它被中断
或您自行将它终止。使用以下 describe-spot-instance-requests 命令可监控您的竞价型实例请求:
aws ec2 describe-spot-instance-requests --spot-instance-request-ids sir-08b93456
指定竞价型实例的持续时间
当竞价价格发生更改时,Amazon EC2 不会终止带有指定持续时间的竞价型实例(也被称作竞价型限
制)。这使得此实例非常适合需在有限时间内完成的任务,如批处理、编码和渲染、建模和分析以及连续
集成。
您可将持续时间指定为 1、2、3、4、5 或 6 小时。您支付的价格取决于指定的持续时间。要查看 1 小时
持续时间或 6 小时持续时间的当前价格,请参阅竞价型实例价格。您可使用这些价格来估计 2、3、4 和
5 小时持续时间的费用。在完成带持续时间的请求时,您的竞价型实例的价格是固定的,而且此价格在实
例终止前保持有效。
在您的竞价请求中指定持续时间时,每个竞价型实例的持续时间段将在该实例收到其实例 ID 后立即开始。
竞价型实例将运行,直到您终止它或其持续时间段结束。在持续时间段结束后,Amazon EC2 将竞价型
实例标记为终止并提供一个竞价型实例终止通知,这将在实例终止前为其提供两分钟时间的警告。
使用 AWS CLI 启动带持续时间的竞价型实例
要为您的竞价型实例指定持续时间,请将 --block-duration-minutes 选项与 request-spot-instances
命令包含在一起。例如,以下命令可创建一个竞价请求,启动运行时间为两小时的竞价型实例:
aws ec2 request-spot-instances --spot-price "0.050" --instance-count 5 --blockduration-minutes 120 --type "one-time" --launch-specification file://specifica
tion.json
使用 AWS CLI 检索带指定的持续时间的竞价型实例的费用
使用 describe-spot-instance-requests 命令可检索带指定持续时间的竞价型实例的固定费用。该信息位于
actualBlockHourlyPrice 字段中。
查找正在运行的竞价型实例
当竞价价格低于您的出价时,Amazon EC2 将启动竞价型实例。竞价型实例将会运行,直到出价不再高
于竞价价格或您自己终止了它。(如果您的出价与竞价价格完全一致,那么根据需求情况,您的竞价型实
例有机会保持运行。)
使用控制台查找正在运行的竞价型实例
1.
2.
打开 Amazon EC2 控制台。
在导航窗格中,单击 Spot Requests (竞价请求),然后选择请求。如果请求已完成,则 Instance 列的
值将为竞价型实例的 ID。
3.
此外,在导航窗格中,单击 Instances (实例)。在右上角,单击 Show/Hide (显示/隐藏) 图标,然后选
择 Lifecycle (生命周期)。每个实例的 Lifecycle (生命周期) 列的值将为 normal 或 spot。
使用 AWS CLI 查找正在运行的竞价型实例
要枚举您的竞价型实例,请结合使用 describe-spot-instance-requests 命令和 --query 选项,如下所示:
aws ec2 describe-spot-instance-requests --query SpotInstanceRequests[*].{ID:In
stanceId}
187
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
下面是示例输出:
[
{
"ID": "i-1234567890abcdef0"
},
{
"ID": "i-0598c7d356eba48d7"
}
]
或者,您可结合使用 describe-instances 命令和 --filters 选项来枚举您的竞价型实例,如下所示:
aws ec2 describe-instances --filters "Name=instance-lifecycle,Values=spot"
标记竞价型实例请求
要对您的竞价型实例请求进行分类和管理,您使用您选择的元数据为它们做标记。您可以使用标记任何其
他 Amazon EC2 资源的同样方法来标记您的竞价型实例请求。有关更多信息,请参阅 标记 Amazon EC2
资源 (p. 679)。
您可以在首次创建竞价型实例请求时为它创建标签,也可以在创建请求之后为它分配标签。
您为竞价型实例请求创建的标签只适用于该请求。这些标签不会自动添加到竞价服务为完成请求所启动的
竞价型实例中。在您创建竞价型实例请求或者启动竞价型实例之后,您必须自己将标签添加到竞价型实
例。
在创建竞价型实例请求时添加标签使用控制台
1.
创建竞价型实例请求时,请在 Review 页面上,单击 Edit tags。您还可以通过为竞价型实例请求添加
名称作为值,使用键 Name 来完成标签。
2.
在 Tag Spot Request (标记竞价请求) 页面中,单击 Create Tag (创建标签),然后输入标签密钥和标
签值。
3.
单击 Review and Launch (审核和启动)。
使用控制台将标签添加到现有竞价型实例请求
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中,单击 Spot Requests (竞价请求),然后选择竞价请求。
在 Tags (标签) 选项卡中,单击 Add/Edit Tags (添加/编辑标签)。
在 Add/Edit Tags (添加/编辑标签) 对话框中,单击 Create Tag (创建标签),为每个标签指定密钥和
值,然后单击 Save (保存)。
188
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
5.
(可选)您可以将标签添加到从竞价请求启动的竞价型实例。在 Spot Requests 页面上,单击该竞价
请求 Instance 列中竞价型实例的 ID。在底部窗格中,选择 Tags (标签) 选项卡,然后重复用于将标
签添加到竞价请求的过程。
使用 AWS CLI 向您的竞价型实例请求或竞价型实例添加标签
使用以下 create-tags 命令标记您的资源:
aws ec2 create-tags --resources sir-08b93456 i-1234567890abcdef0 --tags
Key=purpose,Value=test
取消竞价型实例请求
如果您不再需要竞价请求,您可以将其取消。您只能取消处于 open 或 active 状态的竞价型实例请求。
当您的请求未执行,且实例没有启动时,您的竞价请求处于 open 状态。当您的请求完成,且竞价型实例
已启动时,您的竞价请求处于 active 状态。如果您的竞价请求处于 active 状态并且具有关联的运行中
竞价型实例,则取消此请求不会终止该实例;您必须手动终止该运行的竞价型实例。
如果竞价请求是持久性竞价请求,则会返回 open 状态,这样就可以启动新的竞价型实例。要取消持久性
竞价请求并终止其竞价型实例,您必须先取消竞价请求,然后终止竞价型实例。否则,竞价请求可以启动
新实例。
使用控制台取消竞价型实例请求
1.
2.
3.
4.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,单击 Spot Requests (竞价请求),然后选择竞价请求。
单击 Cancel (取消)。
(可选)如果您使用完关联的竞价型实例,则可以终止这些实例。在导航窗格中,单击 Instances (实
例),选择实例,单击 Actions (操作),选择 Instance State (实例状态),然后单击 Terminate (终止)。
使用 AWS CLI 取消竞价型实例请求
使用以下 cancel-spot-instance-requests 命令可取消指定的竞价请求:
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456
如果您已完成关联的竞价型实例,则可使用以下 terminate-instances 命令手动终止这些实例:
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i0598c7d356eba48d7
189
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价请求示例启动说明
Abstract
了解如何创建用于 AWS CLI 的启动说明。
以下示例显示了可与 request-spot-instances 命令结合使用来创建竞价型实例请求的启动配置。有关更多
信息,请参阅 创建竞价型实例请求 (p. 185)。
1. 启动竞价型实例 (p. 190)
2. 在指定的可用区中启动竞价型实例 (p. 190)
3. 在指定的子网中启动竞价型实例 (p. 190)
示例 1:启动竞价型实例
以下示例不包括可用区或子网。Amazon EC2 为您选择可用区。如果您的账户仅支持 EC2-VPC,则
Amazon EC2 将在所选可用区的默认子网中启动实例。如果您的账户支持 EC2-Classic,则 Amazon EC2
将在所选可用区的 EC2-Classic 中启动实例。
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroupIds": [ "sg-1a2b3c4d" ],
"InstanceType": "m3.medium",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
请注意,您可按 ID 或名称为 EC2-Classic 指定安全组(使用 SecurityGroups 字段)。您必须按 ID 为
EC2-VPC 指定安全组。
示例 2:在指定的可用区中启动竞价型实例
以下示例包括一个可用区。如果您的账户仅支持 EC2-VPC,则 Amazon EC2 将在指定可用区的默认子网
中启动实例。如果您的账户支持 EC2-Classic,则 Amazon EC2 将在指定可用区的 EC2-Classic 中启动
实例。
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroupIds": [ "sg-1a2b3c4d" ],
"InstanceType": "m3.medium",
"Placement": {
"AvailabilityZone": "us-west-2a"
},
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
示例 3:在指定的子网中启动竞价型实例
以下示例包括一个子网。Amazon EC2 在指定的子网中启动实例。如果 VPC 是一个非默认 VPC,则默认
情况下该实例不接收公有 IP 地址。
190
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroupIds": [ "sg-1a2b3c4d" ],
"InstanceType": "m3.medium",
"SubnetId": "subnet-1a2b3c4d",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
要将公有 IP 地址分配给非默认 VPC 中的实例,请指定 AssociatePublicIpAddress 字段,如以下示
例所示。请注意,在指定一个网络接口时,必须使用该网络接口(而不是使用示例 3 中所示的 SubnetId
和 SecurityGroupIds 字段)包含子网 ID 和安全组 ID。
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"InstanceType": "m3.medium",
"NetworkInterfaces": [
{
"DeviceIndex": 0,
"SubnetId": "subnet-1a2b3c4d",
"Groups": [ "sg-1a2b3c4d" ],
"AssociatePublicIpAddress": true
}
],
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
竞价型队列请求
Abstract
创建竞价型队列请求,为您的竞价型实例指定启动配置,包括您愿意支付的每单位小时的价格。
要使用竞价型队列,您需要创建一个竞价型队列请求,该请求包括目标容量、实例的一个或多个启动说明
以及您的出价。当出价发生更改时,Amazon EC2 将尝试维护您的竞价型队列的目标容量。有关更多信
息,请参阅 竞价型队列的工作方式 (p. 179)。
每个启动说明包括 Amazon EC2 启动实例所需的信息 – 例如 AMI、实例类型、子网或可用区、一个或多
个安全组。
竞价型队列请求在过期或您取消它之前保持有效。取消竞价型队列请求时,您必须指定取消竞价型队列请
求会终止竞价型队列中的竞价型实例。
内容
• 竞价型队列请求状态 (p. 192)
• 竞价型队列先决条件 (p. 192)
• 规划竞价型队列请求 (p. 193)
• 创建竞价型队列请求 (p. 194)
• 监控您的竞价型队列 (p. 195)
• 修改竞价型队列请求 (p. 195)
• 取消竞价型队列请求 (p. 196)
191
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
• 竞价型队列示例配置 (p. 197)
竞价型队列请求状态
竞价型队列请求可以处于以下某种状态:
• submitted — 正在评估竞价型队列请求,并且 Amazon EC2 正准备启动目标数量的竞价型实例。
• active — 已验证竞价型队列,并且 Amazon EC2 正在尝试维持目标数量的正在运行的竞价型实例。
请求会保持此状态,直到修改或取消它。
• modifying – 正在修改竞价型队列请求。请求会保持此状态,直到修改处理完成或取消了竞价型队列。
• cancelled_running – 竞价型队列已取消且不会启动更多竞价型实例,但其现有的竞价型实例将继续
运行直至被中断或终止。请求会保持此状态,直到所有实例都已中断或终止。
• cancelled_terminating — 竞价型队列已取消,并且正在终止其竞价型实例。请求会保持此状态,
直到所有实例都已终止。
• cancelled — 竞价型队列已取消且没有正在运行的竞价型实例。竞价型队列请求将在其实例终止两天
后被删除。
以下显示了请求状态之间的转换。请注意,如果您超过竞价型队列限制,则请求会立即取消。
竞价型队列先决条件
开始之前,请完成以下操作:
1.
2.
创建一个 IAM 角色,该角色将代表您向竞价型队列授予出价、启动和终止实例的权限。创建竞价型
队列请求时,您会通过 Amazon 资源名称 (ARN) 指定此角色。
a.
b.
打开 https://console.amazonaws.cn/iam/ 上的 Identity and Access Management (IAM) 控制台。
在导航窗格中选择 Roles,然后选择 Create New Role。
c.
d.
在 Set Role Name 页面上,输入角色的名称,然后选择 Next Step。
在 Select Role Type 页面上,选择 Amazon EC2 Spot Fleet Role 旁的 Select。
e.
在 Attach Policy 页面上,选择 AmazonEC2SpotFleetRole 策略,然后选择 Next Step。
f.
在 Review 页面上,选择 Create Role。
确认您将用来创建竞价型队列请求的用户账户具有所需的 Amazon EC2 权限:
a.
打开 https://console.amazonaws.cn/iam/ 上的 Identity and Access Management (IAM) 控制台。
192
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
b.
c.
d.
在导航窗格中选择 Policies,然后选择 Create Policy。
在 Create Policy 页上,选择 Create Your Own Policy 旁的 Select。
在 Review Policy 页上,输入策略名称并将以下文本复制到 Policy Document 部分。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:*"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"iam:PassRole",
"iam:ListRoles",
"iam:ListInstanceProfiles"
],
"Resource": "*"
}
]
}
ec2:* 使 IAM 用户能够调用所有 Amazon EC2 API 操作。要将用户限制到特定 API 操作,请改
为指定这些操作。
iam:PassRole 操作使用户能够在竞价型队列请求中指定竞价型实例角色。iam:ListRoles
操作使用户能够枚举现有角色。iam:ListInstanceProfiles 操作使用户能够枚举现有实例
配置文件。Amazon EC2 控制台使用 iam:ListRoles 填充 IAM role 列表,使用
iam:ListInstanceProfiles 填充 IAM instance profile 列表。要使用户能够通过控制台来创
建角色或实例配置文件,您必须添加以下操作:iam:CreateRole、
iam:CreateInstanceProfile 和 iam:AddRoleToInstanceProfile。
e.
f.
g.
h.
选择 Create Policy。
在导航窗格中选择 Users,然后选择将提交竞价型队列请求的用户。
在 Permissions 选项卡上,选择 Attach Policy。
在 Attach Policy 页上,选择您在上面创建的策略,然后选择 Attach Policy。
规划竞价型队列请求
在创建竞价型队列请求前,请查看竞价最佳实践。使用这些最佳实践规划您的竞价型队列请求,以便以可
能的最低价格配置需要的实例类型。还建议执行以下操作:
• 确定满足您的应用程序要求的实例类型。
• 确定您的竞价型队列请求的目标容量。您可以采用实例或自定义单位设置目标容量。有关更多信息,请
参阅 竞价型队列实例权重 (p. 180)。
• 确定每实例小时出价。出价较低能够进一步降低成本,而出价较高则可以降低中断发生的可能性。
• 如果您在使用实例权重,请确定您的每单位竞价价格。要计算每单位出价,请将每实例小时出价除以该
实例表示的单位数(或权重)。(如果不使用实例权重,则默认的每单位出价是每实例小时出价。)
193
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
• 查看用于您的竞价型队列请求的可能选项。关于更多信息,请参阅 AWS Command Line Interface
Reference 中的 request-spot-fleet 命令。有关其他示例,请参阅 竞价型队列示例配置 (p. 197)。
创建竞价型队列请求
创建竞价型队列请求时,您必须指定有关要启动的竞价型实例的信息(例如实例类型和竞价价格)。
使用控制台创建竞价型队列请求
1.
2.
在 https://console.amazonaws.cn/ec2spot 处打开竞价控制台。
如果您是初次使用竞价,则会看到一个欢迎页面;请单击 Get started。否则,请单击 Request Spot
Instances。
3.
在 Find instance types 页面中,执行以下操作:
a.
对于 AMI,选择 AWS 提供的一个基本 Amazon 系统映像 (AMI),或选择 Use custom AMI 以指
定您自己的 AMI。
b.
对于 Capacity unit,选择您的队列的单位。您可以选择实例或是对应用程序工作负载十分重要的
性能特征(如 vCPU、内存和存储)。
对于 Target capacity,输入要请求的单位数量。
对于 Bid price,输入您的出价。您可以指定每单位小时出价或指定为按需实例价格的百分比。
如果您的出价超过实例的竞价价格,则竞价型队列会启动请求的实例。
在 Select instance types 下,选择一种或多种实例类型。如果未显示您需要的实例类型,请单击
view more。随后您可以筛选列表以显示具有所需最低硬件规格(vCPU、内存和存储)的实例
类型。
c.
d.
e.
默认情况下,每种实例类型的竞价价格取决于竞价型队列请求的出价。如果您对特定实例类型的
出价过低,则将显示一条警告。如果需要,您可以覆盖您选择的每种实例类型的出价。
f.
4.
Weighted capacity 列表示每个实例类型将对队列贡献的容量单位。表中的默认值基于您所选的
容量单位。例如,如果您的容量单位是实例,则每个实例类型的默认权重为 1。如果您的容量单
位是 vCPU,则每个实例类型的默认权重为其 vCPU 数。如果您更喜欢特定的实例类型,则可更
改其权重。有关更多信息,请参阅 竞价型队列实例权重 (p. 180)。
单击 Next (下一步)。
在 Configure (配置实例详细信息) 页面中,执行以下操作:
a.
b.
c.
d.
e.
f.
g.
h.
对于 IAM role,指定您创建的 IAM 角色以代表您向竞价型队列授予出价、启动和终止实例的权
限。
对于 Allocation strategy,选择满足您的需求的策略。有关更多信息,请参阅 竞价型队列分配策
略 (p. 179)。
对于 Network,从列表中选择 VPC,或选择 Create new VPC 以转到 Amazon VPC 控制台并创
建一个 VPC。完成后,返回到向导并单击 Refresh (刷新) 按钮,以便将您的 VPC 加载到列表
中。如果您选择非默认 VPC,请从 Public IP 选择 auto-assign at launch 以向您的实例分配公有
IP 地址。
对于 Security groups,选择一个或多个安全组。
(可选)如果您对于实例的可用区有具体的选择偏好,请从 Availability Zones 中选择 Select,
然后选择可用区。如果您的 VPC 是非默认 VPC,则必须为每个可用区选择一个子网。如果您的
VPC 是默认 VPC,则我们为可用区选择默认子网。
(可选)如果您需要连接到您的实例,请在 Key pair 中指定您的密钥对。
(可选)默认情况下,竞价型队列请求在执行或您取消它之前保持有效。要创建仅在特定时段内
有效的请求,请在 Advanced 下,在 Request timeframe 下指定 Valid from 和 Valid to。
指定您需要的其余选项,然后选择 Review。
194
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
5.
在 Review 页面上,验证您的竞价型队列请求的配置。要进行更改,请单击 Previous。要下载启动配
置的副本以便与 AWS CLI 结合使用,请单击 JSON config。要创建竞价型队列请求,请单击 Launch。
使用 AWS CLI 创建竞价型队列请求
使用以下 request-spot-fleet 命令可创建竞价型队列请求:
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
有关示例配置文件,请参阅竞价型队列示例配置 (p. 197)。
下面是示例输出:
{
"SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
}
监控您的竞价型队列
当竞价价格低于您的出价时,竞价型队列会启动竞价型实例。竞价型实例将会运行,直到出价不再高于竞
价价格或您自己终止了它们。
使用控制台监控您的竞价型队列
1.
2.
3.
4.
在 https://console.amazonaws.cn/ec2spot/home/fleet 处打开竞价控制台。
选择您的竞价型队列请求。配置详细信息在 Description 选项卡中提供。
要列出竞价型队列的竞价型实例,请选择 Instances 选项卡。
要查看竞价型队列的历史记录,请选择 History 选项卡。
使用 AWS CLI 监控您的竞价型队列
使用以下 describe-spot-fleet-requests 命令可描述竞价型队列请求:
aws ec2 describe-spot-fleet-requests
使用以下 describe-spot-fleet-instances 命令可描述指定竞价型队列的竞价型实例:
aws ec2 describe-spot-fleet-instances --spot-fleet-request-id sfr-73fbd2ce-aa30494c-8788-1cee4EXAMPLE
使用以下 describe-spot-fleet-request-history 命令可描述指定竞价型队列请求的历史记录:
aws ec2 describe-spot-fleet-request-history --spot-fleet-request-id sfr-73fbd2ceaa30-494c-8788-1cee4EXAMPLE --start-time 2015-05-18T00:00:00Z
修改竞价型队列请求
您可以修改活跃的竞价型队列请求以完成以下任务:
• 提升目标容量
• 减少目标容量
195
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
当您提升目标容量时,竞价型队列会根据其竞价型队列请求的分配策略来启动额外的竞价型实例。如果分
配策略是 lowestPrice,则竞价型队列从竞价型队列请求中价格最低的竞价型实例池启动实例。如果分
配策略是 diversified,则竞价型队列在竞价型队列请求中的池间分配实例。
当您减少目标容量时,竞价型队列会取消任何超过新目标容量的开放出价。您可以请求竞价型队列终止竞
价型实例,直到队列的大小达到新目标容量。如果分配策略是 lowestPrice,则竞价型队列会终止每单
位价格最高的实例。如果分配策略是 diversified,则竞价型队列会在池间终止实例。或者,您可以请
求竞价型队列保持当前的队列大小,而不替换已中断或您手动终止的任何竞价型实例。
使用控制台修改竞价型队列请求
1.
在 https://console.amazonaws.cn/ec2spot/home/fleet 处打开竞价控制台。
2.
3.
4.
选择您的竞价型队列请求。
单击 Actions,然后单击 Modify target capacity。
在 Modify target capacity 中,执行以下操作:
a.
b.
c.
输入新的目标容量。
(可选)如果您要减少目标容量,但是要使队列保持其当前大小,请取消选择 Terminate
instances。
单击 Submit (提交)。
使用 AWS CLI 修改竞价型队列请求
使用以下 modify-spot-fleet-request 命令可更新指定竞价型队列请求的目标容量:
aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-73fbd2ce-aa30494c-8788-1cee4EXAMPLE --target-capacity 20
您可以按如下所示修改前面的命令,以减少指定竞价型队列的目标容量而不因此终止任何竞价型实例:
aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-73fbd2ce-aa30494c-8788-1cee4EXAMPLE --target-capacity 10 --excess-capacity-termination-policy
NoTermination
取消竞价型队列请求
在使用完竞价型队列后,可以取消竞价型队列请求。这将取消与竞价型队列关联的所有竞价请求,从而不
会为您的竞价型队列启动任何新的竞价型实例。您必须指定竞价型队列是否应终止其竞价型实例。如果您
终止实例,则竞价型队列请求会进入 cancelled_terminating 状态。否则,竞价型队列请求会进入
cancelled_running 状态,并且实例会继续运行,直到它们中断或您手动终止它们。
使用控制台取消竞价型队列请求
1.
2.
在 https://console.amazonaws.cn/ec2spot/home/fleet 处打开竞价控制台。
选择您的竞价型队列请求。
3.
4.
单击 Actions,然后单击 Cancel spot request。
在 Cancel spot request 中,确认是否要取消竞价型队列。要使队列保持其当前大小,请取消选择
Terminate instances。如果准备就绪,请单击 Confirm。
使用 AWS CLI 取消竞价型队列请求
使用以下 cancel-spot-fleet-requests 命令可取消指定的竞价型队列请求并终止实例:
196
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
aws ec2 cancel-spot-fleet-requests --spot-fleet-request-ids sfr-73fbd2ce-aa30494c-8788-1cee4EXAMPLE --terminate-instances
下面是示例输出:
{
"SuccessfulFleetRequests": [
{
"SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
"CurrentSpotFleetRequestState": "cancelled_terminating",
"PreviousSpotFleetRequestState": "active"
}
],
"UnsuccessfulFleetRequests": []
}
可以按如下所示修改前面的命令,以取消指定的竞价型队列请求而不终止实例:
aws ec2 cancel-spot-fleet-requests --spot-fleet-request-ids sfr-73fbd2ce-aa30494c-8788-1cee4EXAMPLE --no-terminate-instances
下面是示例输出:
{
"SuccessfulFleetRequests": [
{
"SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
"CurrentSpotFleetRequestState": "cancelled_running",
"PreviousSpotFleetRequestState": "active"
}
],
"UnsuccessfulFleetRequests": []
}
竞价型队列示例配置
Abstract
了解如何为您的竞价型队列请求创建启动配置。
下列示例显示了可与 request-spot-fleet 命令结合使用以创建竞价型队列请求的启动配置。有关更多信息,
请参阅 创建竞价型队列请求 (p. 194)。
1. 使用区域中价格最低的可用区或子网启动竞价型实例 (p. 198)
2. 使用指定列表中价格最低的可用区或子网启动竞价型实例 (p. 198)
3. 使用指定列表中价格最低的实例类型启动竞价型实例 (p. 200)
4. 覆盖请求的竞价价格 (p. 201)
5. 使用多样化分配策略启动竞价型队列 (p. 202)
6. 使用实例权重启动竞价型队列 (p. 203)
197
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
示例 1:使用区域中价格最低的可用区或子网启动竞价型实例
以下示例指定一个没有可用区或子网的启动说明。如果您的账户仅支持 EC2-VPC,则竞价型队列会在具
有默认子网的价格最低的可用区中启动实例。如果您的账户支持 EC2-Classic,则竞价型队列会在价格最
低的可用区的 EC2-Classic 中启动实例。请注意,您支付的价格不会超过为请求指定的竞价价格。
{
"SpotPrice": "0.07",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
]
}
示例 2:使用指定列表中价格最低的可用区或子网启动竞价型实例
以下示例指定具有的可用区或子网不同但实例类型和 AMI 相同的两种启动说明。
可用区
如果您的账户仅支持 EC2-VPC,则竞价型队列会在您指定的价格最低的可用区的默认子网中启动实例。
如果您的账户支持 EC2-Classic,则竞价型队列会在您指定的价格最低的可用区中启动实例。
{
"SpotPrice": "0.07",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"Placement": {
"AvailabilityZone": "us-west-2a, us-west-2b"
},
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
198
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
]
}
Subnets
您可以指定默认子网或非默认子网,并且非默认子网可来自默认 VPC 或非默认 VPC。竞价服务会在位于
价格最低的可用区的子网中启动实例。
请注意,您无法在竞价型队列请求中指定来自相同可用区的不同子网。
{
"SpotPrice": "0.07",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"SubnetId": "subnet-a61dafcf, subnet-65ea5f08",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
]
}
如果在默认 VPC 中启动实例,则默认情况下它们会收到一个公有 IP 地址。如果在非默认 VPC 中启动实
例,则默认情况下它们不会收到一个公有 IP 地址。在启动说明中使用网络接口来将一个公有 IP 地址分配
给在非默认 VPC 中启动的实例。请注意,在指定一个网络接口时,您必须使用该网络接口包含子网 ID
和安全组 ID。
...
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"InstanceType": "m3.medium",
"NetworkInterfaces": [
{
"DeviceIndex": 0,
"SubnetId": "subnet-1a2b3c4d",
"Groups": [ "sg-1a2b3c4d" ],
"AssociatePublicIpAddress": true
}
],
"IamInstanceProfile": {
"Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role"
}
}
...
199
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
示例 3:使用指定列表中价格最低的实例类型启动竞价型实例
以下示例指定实例类型不同、但 AMI 和可用区或子网相同的两种启动配置。竞价型队列使用价格最低的
指定实例类型启动实例。
可用区域
{
"SpotPrice": "2.80",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "cc2.8xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "r3.8xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
]
}
子网
{
"SpotPrice": "2.80",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "cc2.8xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
200
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "r3.8xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
示例 4. 覆盖请求的竞价价格
通过为单个启动说明指定竞价价格的功能,您可对出价过程进行更多控制。以下示例使用三个启动说明中
的两个启动说明单独使用的竞价价格来覆盖请求的竞价价格 (0.070)。请注意,请求的竞价价格用于未单
独指定竞价价格的任何启动说明。竞价型队列使用价格最低的实例类型启动实例。
可用区域
{
"SpotPrice": "1.68",
"TargetCapacity": 30,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"SpotPrice": "0.04"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.4xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"SpotPrice": "0.06"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.8xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
]
}
子网
{
"SpotPrice": "1.68",
"TargetCapacity": 30,
201
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
"SubnetId": "subnet-1a2b3c4d",
"SpotPrice": "0.04"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.4xlarge",
"SubnetId": "subnet-1a2b3c4d",
"SpotPrice": "0.06"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.8xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
示例 5:使用多样化分配策略启动竞价型队列
以下示例使用 diversified 分配策略。启动说明具有不同的实例类型,但具有相同的 AMI 和可用区或
子网。竞价型队列在 3 个启动说明间分配 30 个实例,每种类型 10 个实例。有关更多信息,请参阅 竞价
型队列分配策略 (p. 179)。
可用区域
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
202
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
]
}
子网
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
示例 6:使用实例权重启动竞价型队列
以下示例使用实例权重,这意味着出价是每单位小时出价而不是每实例小时出价。每个启动配置列出不同
的实例类型和不同的权重。竞价型队列选择每单位小时价格最低的实例类型。竞价型队列通过将目标容量
除以实例权重来计算要启动的竞价型实例数。如果结果不是整数,则竞价型队列会将其向上舍入到下一个
整数,以便队列的大小不低于其目标容量。
如果 r3.2xlarge 出价成功,竞价将预置 4 个这类实例。(将 20 除以 6 可得到总共 3.33 个实例,然后
向上舍入为 4 个实例。)
如果 c3.xlarge 出价成功,竞价将预置 7 个这类实例。(将 20 除以 3 可得到总共 6.66 个实例,然后
向上舍入为 7 个实例。)
有关更多信息,请参阅 竞价型队列实例权重 (p. 180)。
可用区域
{
"SpotPrice": "0.70",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
203
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
},
"WeightedCapacity": 6
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"WeightedCapacity": 3
}
]
}
子网
{
"SpotPrice": "0.70",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-1a2b3c4d",
"WeightedCapacity": 6
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.xlarge",
"SubnetId": "subnet-1a2b3c4d",
"WeightedCapacity": 3
}
]
}
优先级
您也可以使用实例权重为可用区或子网指定优先级。例如,以下启动说明几乎完全相同,只是指定了不同
的子网和权重。竞价型队列会查找具有最高 WeightedCapacity 值的说明,并尝试在相应子网中价格最
低的竞价型实例池中为请求预置资源。(请注意,第二个启动说明不包含权重,因此其默认为 1。)
{
"SpotPrice": "0.42",
"TargetCapacity": 40,
"IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
"SubnetId": "subnet-482e4972",
"WeightedCapacity": 2
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
204
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
"SubnetId": "subnet-bb3337d"
}
]
}
竞价型队列的 CloudWatch 指标
Abstract
了解 Amazon EC2 为竞价型队列提供的 CloudWatch 指标。
Amazon EC2 提供了可用来监控竞价型队列的 Amazon CloudWatch 指标。
Important
为确保准确性,我们建议您在使用这些指标时启用详细监控。有关更多信息,请参阅 对您的实例
启用或禁用详细监控 (p. 381)。
有关 Amazon EC2 提供的 CloudWatch 指标的详细信息,请参阅 使用 CloudWatch 监控您的实例 (p. 381)。
竞价型队列指标
AWS/EC2Spot 命名空间包含以下指标以及针对队列中的竞价型实例的 CloudWatch 指标。有关更多信
息,请参阅 实例指标 (p. 383)。
指标
说明
AvailableInstancePoolsCount
竞价型队列请求中指定的竞价型实例池。
单位:计数
BidsSubmittedForCapacity Amazon EC2 已提交竞价的容量。
单位:计数
EligibleInstancePoolCount 在 Amazon EC2 可以完成出价的竞价型队列请求中指定的竞价型实
例池。在您的出价低于现货价格或者现货价格高于按需实例价格的池
中,Amazon EC2 不会完成出价。
单位:计数
FulfilledCapacity
Amazon EC2 已执行的容量。
单位:计数
MaxPercentCapacityAlloca- 在竞价型队列请求中指定的所有竞价实例池中的 PercentCapation
cityAllocation 最大值。
单位:百分比
PendingCapacity
TargetCapacity 与 FulfilledCapacity 之间的区别。
单位:计数
PercentCapacityAllocation 针对所指定维度的竞价型实例池分配的容量。要获取所有竞价型实例
池中记录的最大值,请使用 MaxPercentCapacityAllocation。
单位:百分比
205
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
指标
说明
TargetCapacity
竞价型队列请求的目标容量。
单位:计数
TerminatingCapacity
由于竞价型实例中断而正终止使用的容量。
单位:计数
如果指标的度量单位是 Count,则最有用的统计信息是 Average。
竞价型队列维度
要筛选竞价型队列的数据,可使用以下维度。
维度
描述
AvailabilityZone
按照可用区筛选数据。
FleetRequestId
按照竞价型队列请求筛选数据。
InstanceType
按实例类型筛选数据。
查看竞价型队列的 CloudWatch 指标
可使用 Amazon CloudWatch 控制台查看竞价型队列的 CloudWatch 指标。这些指标显示为监控图表。如
果竞价型队列处于活动状态,这些图表会显示数据点。
指标首先按命名空间进行分组,然后按各命名空间内的各种维度组合进行分组。例如,您可以按竞价型队
列请求 ID、实例类型或可用区来查看所有竞价型队列指标或竞价型队列指标组。
查看竞价型队列指标
1.
2.
3.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
在导航窗格中,在 Metrics 下,选择 EC2 Spot 命名空间。
(可选)要按维度筛选指标,请选择下列选项之一:
•
•
•
•
4.
Fleet Request Metrics - 按竞价型队列请求分组
By Availability Zone - 按竞价型队列请求和可用区分组
By Instance Type - 按竞价型队列请求和实例类型分组
By Availability Zone/Instance Type - 按竞价型队列请求、可用区和实例类型分组
要查看指标的数据,请选中指标旁边的复选框。
206
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价出价状态
Abstract
使用出价状态来跟踪您的竞价型实例请求。
为帮助您跟踪竞价型实例请求、计划对竞价型实例的使用,以及有策略地进行出价,Amazon EC2 提供
了出价状态。例如,出价状态会帮助您了解竞价请求尚未完成的原因或列出会阻碍竞价请求完成的限制。
在此过程(也称为竞价请求生命周期)中的每一步,都有特定的事件确定连续的请求状态。
内容
• 竞价请求的生命周期 (p. 207)
• 获取出价状态信息 (p. 210)
• 竞价出价状态代码 (p. 210)
竞价请求的生命周期
以下图表显示您的竞价请求在其整个生命周期中从提交到终止所遵循的路径。每个步骤用节点表示,每个
节点状态代码描述您的竞价请求和竞价型实例的状态。
207
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
待评估
当您提交竞价型实例请求之后,除非一个或多个请求参数无效 (bad-parameters),否则就会进入
pending-evaluation 状态。
状态代码
请求状态
实例状态
pending-evaluation
open
无
bad-parameters
closed
无
备用
如果一个或多个请求约束有效但目前无法满足,或者如果没有足够的容量,那么请求将进入备用状态,等
待满足约束。请求选项影响请求完成的可能性。例如,如果您指定的出价低于当前竞价价格,您的请求将
保持为备用状态,直至竞价价格低于您的出价。如果您指定了可用区组,则该请求将保持为备用状态,直
至满足可用区的约束。
状态代码
请求状态
实例状态
capacity-not-available
open
无
capacity-oversubscribed
open
无
price-too-low
open
无
not-scheduled-yet
open
无
launch-group-constraint
open
无
az-group-constraint
open
无
placement-group-constraint
open
无
208
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
状态代码
请求状态
实例状态
constraint-not-fulfillable
open
无
等待评估/最终执行
您的竞价型实例在以下几种情况下可能进入 terminal 状态:您创建的请求仅在特定时段内有效,但该
时段在您的请求到达等待执行阶段之前过期;您取消了请求;或者,出现系统错误。
状态代码
请求状态
实例状态
schedule-expired
closed
无
canceled-before-fulfill- cancelled
ment*
无
bad-parameters
failed
无
system-error
closed
无
* 如果您取消请求。
等待履行
当您指定的约束(如果有)得到满足且您的出价等于或高于当前竞价价格时,您的竞价请求会进入
pending-fulfillment 状态。
此时,Amazon EC2 已经准备好为您预置您请求的实例。如果该过程在此时停止,则可能是由于用户在
竞价型实例启动之前取消了请求,或者是由于出现了意外的系统错误。
状态代码
请求状态
实例状态
pending-fulfillment
open
无
已完成
当您的竞价型实例的所有规格都得到满足时,您的竞价请求将会执行。Amazon EC2 会启动竞价型实例,
这可能需要几分钟时间。
状态代码
请求状态
实例状态
fulfilled
active
pending → running
执行的最终
只要您的出价等于或高于竞价价格,您的实例类型拥有备用竞价容量,且您没有终止您的竞价型实例,实
例就会继续运行。如果竞价价格或可用容量的变化要求 Amazon EC2 终止您的竞价型实例,竞价请求将
转入最终状态。例如,如果您的出价等于竞价价格,但是在该价格对竞价型实例的订阅过多,那么状态代
码为 instance-terminated-capacity-oversubscribed。如果您取消竞价请求或终止竞价型实例,
请求也将进入最终状态。
209
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
状态代码
请求状态
实例状态
request-canceled-and-in- cancelled
stance-running
running
marked-for-termination
closed
running
instance-terminated-byprice
closed(一次性),open(持
久性)
terminated
instance-terminated-byuser
closed 或者 cancelled *
terminated
instance-terminated-nocapacity
closed(一次性),open(持
久性)
terminated
instance-terminated-capa- closed(一次性),open(持
city-oversubscribed
久性)
terminated
closed(一次性),open(持
久性)
terminated
instance-terminatedlaunch-group-constraint
* 如果您终止实例但未取消出价,则请求状态为 closed。如果您终止实例并取消出价,则请求状态为
cancelled。请注意,即使您在取消实例请求之前终止了竞价型实例,在 Amazon EC2 检测到您的竞价
型实例已终止之前仍可能存在延迟。在这种情况下,请求状态可能是 closed 或 cancelled。
持久性请求:
当您的竞价型实例终止时(由您或由 Amazon EC2),如果竞价请求为持久性请求,则该请求返回
pending-evaluation 状态,并且在满足约束时,Amazon EC2 可以启动新的竞价型实例。
获取出价状态信息
您可以使用 AWS 管理控制台 或命令行工具获取出价状态信息。
使用控制台获取出价状态信息
1.
2.
3.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,单击 Spot Requests (竞价请求),然后选择竞价请求。
在 Description (描述) 选项卡中检查 Status (状态) 的值。
使用命令行获取出价状态信息
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-spot-instance-requests (AWS CLI)
• ec2-describe-spot-instance-requests (Amazon EC2 CLI)
• Get-EC2SpotInstanceRequest (适用于 Windows PowerShell 的 AWS 工具)
竞价出价状态代码
竞价出价状态信息包括出价状态代码、更新时间和状态消息。同时,它们还帮助您决定竞价请求的处置。
以下列表描述了竞价出价状态代码:
210
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
az-group-constraint
Amazon EC2 无法在同一可用区中启动您请求的所有实例。
bad-parameters
您的竞价请求的一个或多个参数无效(例如,您指定的 AMI 不存在)。出价状态消息指示哪个参数
无效。
canceled-before-fulfillment
在完成前,用户取消了竞价请求。
capacity-not-available
您请求的实例没有足够的容量可用。
capacity-oversubscribed
竞价价格等于或高于您出价的竞价请求数量超过了此竞价型实例池的可用容量。
constraint-not-fulfillable
由于一个或多个约束无效(例如,可用区不存在),竞价请求无法完成。出价状态消息指示哪个约束
无效。
fulfilled
竞价请求处于 active 状态,Amazon EC2 正在启动您的竞价型实例。
instance-terminated-by-price
竞价价格超过您的出价。如果请求是一个持久性出价,过程会重新启动,因此,您的出价等待评估。
instance-terminated-by-user 或者 spot-instance-terminated-by-user
您终止了已完成的竞价型实例,因此出价状态会变成 closed(持久性出价除外),实例状态为
terminated。
instance-terminated-capacity-oversubscribed
因为竞价价格等于或高于您的出价的竞价请求数量已超出此竞价型实例池的可用容量,您的实例已被
终止。(请注意,竞价价格可能未更改。)竞价服务随机选择要终止的实例。
instance-terminated-launch-group-constraint
您的启动组中的一个或多个实例已终止,因此不再满足启动组的约束。
instance-terminated-no-capacity
此实例不再有足够的竞价容量可用。
launch-group-constraint
Amazon EC2 无法同时启动您请求的所有实例。启动组内的所有实例都一起启动和终止。
marked-for-termination
您的竞价型实例被标记为终止。
not-scheduled-yet
您的竞价请求在指定日期之前不会被评估。
pending-evaluation
当您提交竞价型实例请求之后,该请求会进入 pending-evaluation 状态,同时系统会评估您的请
求中的参数。
pending-fulfillment
Amazon EC2 尝试预置您的竞价型实例。
placement-group-constraint
因为竞价型实例目前不能添加到置放群组中,因此尚无法完成竞价请求。
price-too-low
由于出价低于竞价价格,尚无法执行出价请求。在这种情况下,没有实例启动且您的出价保持 open。
request-canceled-and-instance-running
在竞价型实例仍在运行时,您取消了竞价请求。请求为 cancelled,但是,实例保持为 running。
schedule-expired
由于没有在指定日期前完成,竞价请求已过期。
system-error
出现意外系统错误。如果这是反复出现的问题,请联系客户支持获得帮助。
211
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
竞价型实例中断
Abstract
了解如何准备您的应用程序来处理 Amazon EC2 终止您的竞价型实例的情况。
对竞价型实例的需求在不同时间可能有显著的差异,竞价型实例的可用性也会因为未使用 EC2 实例的数
量而差别巨大。此外,不论您的出价有多高,您的竞价型实例仍有可能会中断。因此,必须确保应用程序
针对竞价型实例中断做好准备。我们强烈建议您不要为不能中断的应用程序使用竞价型实例。
下面列出了 Amazon EC2 终止您的竞价型实例的可能原因:
• 价格 – 竞价价格高于您的出价。
• 容量 – 如果没有足够的未用 EC2 实例来满足对竞价型实例的需求,Amazon EC2 将从出价最低的实例
开始终止竞价型实例。如果多个竞价型实例的出价相同,则随机确定实例的终止顺序。
• 约束 — 如果您的请求包含约束,例如启动组或可用区组,那么,当不再满足约束条件时,这些竞价型
实例将成组终止。
准备中断
下面提供了在您使用竞价型实例时可以遵循的最佳实践:
• 选择一个合理的出价。您的出价应该足够高,这样您的请求才有机会完成,但又不能高于您愿意支付的
价格。这非常重要,因为在长时间供应不足的情况下,竞价价格可能会在这段时间内居高不下,因为此
时价格依据的是最高出价。我们强烈建议您的出价高于按需实例的价格。
• 使用包含所需软件配置的 Amazon 系统映像 (AMI),确保您的实例在请求完成时随时可以启动。您还可
以使用用户数据在启动时运行命令。
• 在不会受竞价型实例终止影响的位置例行存储重要数据。例如,您可以使用 Amazon S3、Amazon EBS
或 DynamoDB。
• 将工作拆分为小的任务(使用网格、Hadoop 或基于队列的架构)或者使用检查点,以便您经常保存工
作。
• 使用竞价型实例终止通知监控您的竞价型实例的状态。
• 测试您的应用程序,确保它很好地处理了意外终止的实例。您可以使用按需实例来运行应用程序,然后
自行终止该按需实例,以便确认这一点。
竞价型实例终止通知
防范竞价型实例中断的最佳方法是为应用程序设计容错能力。此外,您还可以利用竞价型实例终止通知,
该通知可在 Amazon EC2 必须终止您的竞价型实例时,提前两分钟发出警告。
此警告使用实例元数据中的项目,提供给在您的竞价型实例上运行的应用程序。例如,您可以使用以下查
询定期检查实例元数据中的此警告(建议每 5 秒检查一次):
$ if curl -s http://169.254.169.254/latest/meta-data/spot/termination-time |
grep -q .*T.*Z; then echo terminated; fi
有关检索实例元数据的其他方式的信息,请参阅 检索实例元数据 (p. 288)。
如果 Amazon EC2 将您的竞价型实例标记为终止,将存在 termination-time 项目,该项目以 UTC 时
间指定实例将收到关闭信号的大致时间。例如:
2015-01-05T18:02:00Z
212
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
如果 Amazon EC2 未准备终止实例,或者,如果您自己终止了竞价型实例,则 termination-time 项
目或者不存在(这样您会收到 HTTP 404 错误),或者包含并非时间值的值。
请注意,虽然我们会尽力在 Amazon EC2 将您的竞价型实例标记为终止时提供此警告,您的竞价型实例
仍可能会在 Amazon EC2 提供此警告之前终止。因此,您必须确保应用程序已经准备好处理意外的竞价
型实例中断,即使您在监视竞价型实例终止通知的情况下也应如此。
如果 Amazon EC2 未能终止实例,则竞价出价状态将设置为 fulfilled。请注意,termination-time
会将实例元数据保持原始大致时间(现已成为过去时间)。
竞价型实例数据源
Abstract
订阅数据源以记录您的竞价型实例使用情况。
为了帮助您了解您的竞价型实例费用情况,Amazon EC2 通过提供的数据元说明您的竞价型实例的使用
情况和定价。此数据源会发送到您在订阅数据源时指定的 Amazon S3 存储桶。
数据源文件一般一小时到达您的存储桶一次,且每小时使用量一般都包含在单个数据文件中。这些文件在
传送到您的存储桶前要进行压缩 (gzip)。当文件很大时(例如,当一小时的文件内容在压缩前超过 50 MB
时),Amazon EC2 可以将给定小时的使用情况写入多个文件。
Note
如果在特定小时中没有竞价型实例运行,则您不会收到该小时的数据源文件。
内容
• 数据源文件名和格式 (p. 213)
• Amazon S3 存储桶权限 (p. 214)
• 订阅您的竞价型实例数据源 (p. 214)
• 删除您的竞价型实例数据源 (p. 215)
数据源文件名和格式
竞价型实例数据源的文件名采用以下格式(用 UTC 日期和时间):
bucket-name.s3.amazonaws.com/{optional prefix}/aws-account-id.YYYY-MM-DDHH.n.unique-id.gz
例如,如果您的存储桶名称为 myawsbucket 并且前缀为 myprefix,则您的文件名类似如下:
myawsbucket.s3.amazonaws.com/myprefix/111122223333.2014-03-17-20.001.pwBdGTJG.gz
竞价型实例数据源文件采用制表符分隔格式。数据文件的每一行都对应一小时实例使用时间,并且包含在
下表中列出的字段。
字段
说明
Timestamp
使用时间戳来确定针对此一小时实例使用时间收取的费用。
UsageType
指示使用类型和被收取费用的实例类型。对于 m1.small 竞价型实例,此字段设置
为 SpotUsage。对于所有其他实例类型,此字段设置为 SpotUsage:{instancetype}。例如:SpotUsage:c1.medium。
213
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
字段
说明
Operation
指示被收取费用的产品。对于 Linux 竞价型实例,此字段设置为 RunInstances。
对于 Microsoft Windows 竞价型实例,此字段设置为 RunInstances:0002。竞价
使用情况按照可用区分组。
InstanceID
生成此一小时实例使用时间的竞价型实例的 ID。
MyBidID
生成此一小时实例使用时间的竞价型实例请求的 ID。
MyMaxPrice
为此竞价型实例请求指定的最高价。
MarketPrice
在 Timestamp 字段中指定的时刻的竞价价格。
Charge
此一小时实例使用时间的价格。
Version
此记录的数据源文件名中包含的版本。
Amazon S3 存储桶权限
在您订阅数据源时,必须指定 Amazon S3 存储桶来存储数据源文件。在为数据源选择 Amazon S3 存储
桶之前,请考虑以下内容:
• 您必须拥有存储桶的 FULL_CONTROL 权限。
如果您是存储桶所有者,根据默认情况,您有此权限。或者,存储桶拥有者必须授予您的 AWS 账户此
权限。
• 当您创建您的数据源订阅时,Amazon S3 更新指定存储桶的 ACL,向 AWS 数据源账户提供读取和写
入权限。
• 撤销数据源账户的权限不会禁用该数据源。如果您撤销这些权限但不禁用数据源,我们将在数据源账户
下次需要写入存储桶时恢复这些权限。
• 每一个数据源文件都有其自己的 ACL(不同于存储桶的 ACL)。存储桶拥有者具有数据文件的
FULL_CONTROL 权限。数据源账户具有读取和写入权限。
• 如果您删除您的数据源订阅,Amazon EC2 不会撤销数据源账户在存储桶或数据文件上的读取和写入
权限。您必须自行撤销这些权限。
订阅您的竞价型实例数据源
您可以使用命令行或 API 订阅您的竞价型实例数据源。
使用 AWS CLI 订阅
要订阅您的数据源,请使用以下 create-spot-datafeed-subscription 命令:
$ aws ec2 create-spot-datafeed-subscription --bucket myawsbucket [--prefix
myprefix]
下面是示例输出:
{
"SpotDatafeedSubscription": {
"OwnerId": "111122223333",
"Prefix": "myprefix",
"Bucket": "myawsbucket",
"State": "Active"
214
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
}
}
使用 Amazon EC2 CLI 订阅
要订阅您的数据源,请使用以下 ec2-create-spot-datafeed-subscription 命令:
$ ec2-create-spot-datafeed-subscription --bucket myawsbucket [--prefix myprefix]
下面是示例输出:
SPOTDATAFEEDSUBSCRIPTION
Active
111122223333
myawsbucket
删除您的竞价型实例数据源
您可以使用命令行或 API 删除您的竞价型实例数据源。
使用 AWS CLI 删除
要删除数据源,请使用以下 delete-spot-datafeed-subscription 命令:
$ aws ec2 delete-spot-datafeed-subscription
使用 Amazon EC2 CLI 删除
要删除数据源,请使用以下 ec2-delete-spot-datafeed-subscription 命令:
$ ec2-delete-spot-datafeed-subscription
竞价型实例限量
Abstract
了解竞价型实例的限制。
竞价型实例请求受以下限制的约束:
限制
• 不支持的实例类型 (p. 215)
• 竞价请求限制 (p. 216)
• 竞价出价限制 (p. 216)
• 竞价型队列限制 (p. 216)
• 不支持的 Amazon EBS 加密 (p. 216)
不支持的实例类型
竞价不支持以下实例类型:
• T2
• HS1
215
myprefix
Amazon Elastic Compute Cloud Linux 实例用户指南
竞价型实例
一些竞价型实例类型并非在所有区域均可用。要查看某个区域支持的实例类型,请转至竞价型实例定价并
选择区域。
竞价请求限制
您请求使用竞价型实例的次数是有限制的。有一个总体限制,并且对每种实例类型也有限制。
整体限制适用于处于活动状态或已打开的竞价型实例请求。如果您终止了竞价型实例,但没有取消请求,
那么您请求的次数会算在总体限制内,直到Amazon EC2检测到终止情况并关闭您的请求为止。
下表列出了对竞价型实例请求的整体限制。请注意,对新 AWS 账户的限制可能更低。
资源
限制
竞价型实例请求总数
每区域 20 个
MaxSpotInstanceCountExceeded 错误
如果您提交竞价型实例请求并收到了错误 Max spot instance count exceeded,说明您的账户要么
已超出该区域对竞价型实例请求的总体限制,要么已超出该区域的特定实例类型的竞价型实例请求限制。
要提交提高限制请求,请转到 AWS Support Center 并完成请求表单。在 Use Case Description 字段中,
指定您请求提高竞价型实例的限制。
竞价出价限制
出价限制旨在保护您免于产生额外费用。
下表列出了竞价型实例的出价限制。
资源
限制
出价
按需价格的十倍
竞价型队列限制
通用 Amazon EC2 限制(例如,竞价出价限制、实例限制和卷限制)适用于竞价型队列所启动的实例。
此外,以下限制将适用:
• 每个区域的活动竞价型队列数:1,000
• 每个队列的启动说明数:50
• 启动说明中的用户数据大小:16 KB
• 每个竞价型队列的目标容量:3,000
• 跨区域中所有竞价型队列的目标容量:5,000
• 竞价型队列请求不能跨区域。
• 竞价型队列请求不能跨同一可用区内的不同子网。
不支持的 Amazon EBS 加密
您可以在竞价型实例的启动说明中指定加密的 EBS 卷,但这些卷未加密。
216
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
专用主机
Abstract
专用主机是被物理隔离的 Amazon EC2 服务器,支持自带许可和合规性使用案例。
Amazon EC2 专用主机是指 EC2 实例容量完全供您专用的物理服务器。专用主机允许您使用现有的按套
接字、按内核或按 VM 软件授权的许可证,包括 Microsoft Windows Server、Microsoft SQL Server、
SUSE、Linux Enterprise Server 等。
内容
• 专用主机与专用实例之间的区别 (p. 217)
• 定价和记账 (p. 217)
• 专用主机的限制 (p. 219)
• 专用主机配置 (p. 219)
• 支持的实例类型 (p. 219)
• 如何使用专用主机 (p. 219)
• 监控专用主机 (p. 226)
专用主机与专用实例之间的区别
Abstract
比较专用主机和专用实例。
专用主机和专用实例均可用于在专供您使用的物理服务器上启动 Amazon EC2 实例。
专用实例与专用主机上的实例在性能、安全性或物理方面没有区别。但是,专用主机可让您更清楚地了解
和更有力地控制在物理服务器上放置实例的方式。
有关专用主机与专用实例之间的区别的更多信息,请参阅 Amazon EC2 专用主机。
有关使用专用主机和专用实例的更多信息,请参阅修改实例租赁 (p. 223)。
定价和记账
按需专用主机
按需计费在您将专用主机分配到您的账户时自动激活。
系统将以按需费率每小时对您计费一次。费率因专用主机支持的实例类型和运行专用主机的区域而异。实
例类型大小和/或在专用主机上运行的实例的数量不会影响该主机的费用。
要终止按需计费,您必须先停止在专用主机上运行的实例,然后将其释放。有关更多信息,请参阅 管理
和释放专用主机 (p. 224)。
专用预留主机
对比运行按需专用主机,专用预留主机提供账单折扣。预留提供三种付款选项:
• 无费用预付—无费用预付预留为某个期限内的专用主机使用提供折扣,并且不需要预付款。仅提供一年
期限。
• 预付部分费用—必须支付一部分预留费用,期限内的剩余时间享受折扣。可以选择一年或三年期限。
• 预付全费—提供最低的有效价格。提供一年和三年期限,覆盖整个前期费用,无需额外付费。
217
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
您的账户中必须有活动的专用主机才能购买预留。在您的账户中,每个预留包含一个特定的专用主机。预
留的实例系列和区域必须与您希望包括的专用主机匹配。
Note
当专用主机包括在预留中后,其将无法释放,直到期限结束。但是,可将预留重新分配到您账户
中的另一个专用主机,只要其区域和实例系列与预留匹配。有关信息,请联系支持人员或者您的
客户经理。
购买专用预留主机
您可以通过向您的客户经理发送电子邮件或记录支持请求来购买预留。在两个实例中,您都需要提供包含
以下信息的 CSV 或 XLS 文件:
• 账户 ID—该账户的 ID。
• 主机 ID -预留包括的专用主机。您可以在 AWS 管理控制台 中获取主机 ID,或使用 DescribeHosts API
操作获取。
•
•
•
•
区域—专用主机运行的区域。
实例类型—专用主机的实例类型。
期限—一年或三年。(无费用预付专用主机预留只提供一年期限。)
付款选项—预留付款选项(无费用预付、预付部分费用或预付全费)。
下表为请求格式的示例。
账户 ID
主机 ID
区域
实例类型
术语
付
款
选
项
12345768
h-068984f7c97
us-east-1
C4
3岁
预
付
全
费
使用支持控制台购买预留
1.
打开支持服务单。
2.
选择账户和账单支持,输入以下值:
• 服务—账单
• 类别—其他账单问题
• 主题—专用主机预留购买
3.
提供上表中所列的信息。
4.
选择 Submit。
当您的订单处理完毕时,支持人员或您的客户经理将会联系您。降低的小时费率最多需要 24 小时显示在
AWS 管理控制台中的 Billing & Cost Management 页。
其他专用主机预留支持要求,请联系支持人员或您的客户经理。
有关更多信息,请参阅专用主机定价。
218
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
专用主机的限制
• 由 AWS 提供的或者在 AWS Marketplace 中提供的非 BYOL RHEL、SUSE Linux 或 Windows AMI 均
无法用于专用主机。
• 可为每个区域的每个实例系列分配最多两个按需专用主机。要提高您的限制,请请求提高限制:请求提
高 Amazon EC2 专用主机上的分配限制。
• 在专用主机上运行的实例只能在 VPC 中启动。
• 主机限制独立于实例限制。正在专用主机上运行的实例不会计入您的实例限制。
• 不支持 Auto Scaling 组。
• 不支持 RDS 实例。
• AWS 免费使用套餐不适用于专用主机。
• 实例放置控制是指管理专用主机中的实例启动。专用主机不支持置放群组。
专用主机配置
专用主机被配置为支持单个实例类型容量。您可在专用主机上启动的实例的数量取决于专用主机配置所支
持的实例类型。例如,如果您分配了一个 c3.xlarge 专用主机,则您将有权在该专用主机上启动多达 8 个
c3.xlarge 实例。要确定您可在特定专用主机上运行的实例类型大小的数量,请参阅支持的实例类型 (p. 219)。
支持的实例类型
每个专用主机支持一个实例类型(例如,c3.xlarge)。可将正在运行的实例的租赁修改为 host,但它必
须是支持的实例类型。
实例类
型
套接字
物理内
核
medium
large
xlarge
2xlarge
4xlarge
8xlarge
10xlarge
C3
2
20
-
16
8
4
2
1
–
C4
2
20
-
16
8
4
2
1
–
G2
2
20
-
–
–
4
–
1
–
M3
2
20
32
16
8
4
–
–
–
D2
2
24
-
–
8
4
2
1
–
R3
2
20
-
16
8
4
2
1
–
M4
2
24
-
22
11
5
2
–
1
I2
2
20
-
–
8
4
2
1
–
如何使用专用主机
Abstract
分配、启动、使用和释放专用主机。
要使用专用主机,首先在您的账户中分配 要使用的主机。然后通过为实例指定一个 host 租赁来在主机
上启动 实例。实例自动放置 设置可让您控制某个实例是否可在特定主机上启动。当某个实例停止并重新
启动时,affinity 设置将确定该实例是在同一主机上还是在另一个主机上重新启动。如果您不再需要某个
主机,则可以停止在该主机上运行的实例,指示它们在另一个主机上启动,然后释放 该主机。
内容
219
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
• 自带许可 (p. 220)
• 分配专用主机 (p. 220)
• 在专用主机上启动实例 (p. 221)
• 了解实例放置 (p. 222)
• 修改实例租赁 (p. 223)
• 管理和释放专用主机 (p. 224)
• API 和 CLI 命令概览 (p. 225)
• 使用 AWS Config 跟踪配置更改 (p. 225)
自带许可
您可以在专用主机上使用自己的软件许可证。为了将您自己的卷许可的虚拟机镜像引入 Amazon EC2,
您需要遵循以下常规步骤。
1. 验证控制您的虚拟机镜像 (AMI) 使用的许可证条款是否允许在虚拟化的云环境中使用虚拟机镜像。有
关 Microsoft 许可的更多信息,请参阅 Amazon Web Services 和 Microsoft 许可。
2. 在确认您的虚拟机镜像可在 Amazon EC2 内使用后,使用由 VM Import/Export 工具实现的 ImportImage
API 操作导入您的虚拟机镜像。有关限制的更多信息,请参阅 VM Import/Export 的先决条件。有关如
何使用 ImportImage 导入 VM 的信息,请参阅使用 ImportImage 将 VM 导入 Amazon EC2。
3. 如果您需要用于跟踪您的镜像在 AWS 中使用的方式的机制,请在 AWS Config 服务中启用主机记录。
您可以使用 AWS Config 来记录专用主机的配置更改并将输出用作许可证报告的数据源。有关更多信
息,请参阅 使用 AWS Config 跟踪配置更改 (p. 225)。
4. 在导入虚拟机镜像后,您可以在专用主机上从此镜像启动实例。
5. 在运行这些实例时,根据操作系统,您可能需要针对自己的 KMS 服务器(例如,Windows Server 或
Windows SQL Server)激活这些实例。您无法针对 Amazon Windows KMS 服务器激活已导入的
Windows AMI。
分配专用主机
Abstract
将专用主机分配到您的账户。
要开始使用专用主机,则需要将它们分配到您的账户。您可以使用 AWS 管理控制台、直接与 API 进行交
互或使用命令行界面来执行这些任务。每次分配专用主机时可遵循这些步骤。
分配专用主机
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在专用主机页面上,选择 分配专用主机。
使用提供的选项配置主机:
a.
b.
实例类型—可在专用主机使用的实例类型。
可用区—专用主机的可用区。
c.
Allow instance auto-placement - 默认设置为 off。专用主机只接受定向的 host 租赁实例启动
(假设容量可用)。当实例自动设置为 on 时,租赁为 host 并且与专用主机的配置匹配的任何
实例都可以启动到该主机。
Quantity - 您希望使用这些设置分配的主机的数量。
d.
4.
选择 Allocate host。
220
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
专用主机容量可立即在您的账户中使用。
如果您启动了带有租赁 host 的实例,但您的账户中没有任何活动的专用主机,您将收到一个错误。
在专用主机上启动实例
Abstract
启动在专用主机上使用的实例。
在分配一个专用主机后,您可以在该主机上启动实例。带有租赁 host 的实例可在特定专用主机上启动
(定向启动),或者可让 Amazon EC2 为您选择专用主机(自动放置)。如果您的账户中的活动专用主
机没有与要启动的实例的实例类型配置相符的可用容量,则您无法启动带有租赁 host 的实例。
Note
在专用主机上启动的实例只能在 VPC 中启动。有关使用 VPC 的更多信息,请参阅 VPC 简介。
在启动实例之前,请注意 专用主机的限制 (p. 219)。
从专用主机页面的定向放置启动
1.
2.
3.
4.
5.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Dedicated Hosts 屏幕上,依次选择一个主机、Actions 和 Launch Instance(s) onto Host。
选择要使用的 AMI。如果您导入了自己的 AMI(如 BYOL AMI),请选择左侧边栏上的 My AMIs,
然后选择相关的 AMI。
为专用主机选择实例类型;这是您可在该主机上启动的唯一实例类型。
在 Configure Instance Details 页面上,系统预先选择了 Tenancy 和 Host 选项。您可以将 Affinity 设
置切换到 On 或 Off。
• On—实例将始终在该特定主机上重新启动。
• Off—实例将在特定主机上启动,但可能不会在该主机上重新启动。
6.
完成剩余步骤并选择 Launch Instances。
实例将会自动分配到您指定的专用主机。要在专用主机上查看实例,请转至专用主机页面,然后选择您在
启动该实例时指定的专用主机。
从实例页面的定向放置启动
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Instances 页面上,选择 Launch Instance。
3.
4.
从列表中选择一个 AMI。如果您已导入自己的 AMI,则选择 My AMIs,然后选择导入的镜像。并非
所有 AMI 均可用于专用主机。
选择要启动的实例的类型。并非所实例类型均可与专用主机结合使用。
5.
在配置实例详细信息页面中,专用主机的设置为:
• Tenancy - Dedicated host - 在专用主机上启动此实例.
• 主机—从下拉列表选择主机。如果您无法选择专用主机,请检查所选子网是否在主机的其他可用区
内。
• 关联—默认设置是 Off。实例将启动到指定的主机上,但如果停止则可能不会在该主机上重新启动。
221
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
6.
7.
如果您选择了不兼容的 AMI 或实例类型,您将无法在专用主机上启动实例。如果您无法看到这些设
置,请检查是否在 Network 菜单中选择了一个 VPC。
完成剩余的配置步骤。选择 Review and Launch。
选择 Launch 以启动您的实例。
8.
选择现有密钥对或创建新密钥对。然后选择 Launch Instances。
从实例页面的非定向放置启动
1.
2.
3.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Instances 页面上,选择 Launch Instance。
从列表中选择一个 AMI。如果您已导入自己的 AMI,则选择 My AMIs,然后选择导入的镜像。并非
所有 AMI 均可用于专用主机。
4.
5.
选择要启动的实例的类型。并非所实例类型均可与专用主机结合使用。
在配置实例详细信息页面中,专用主机的设置为:
• Tenancy - Dedicated host - 在专用主机上启动此实例.
• 主机—默认设置是自动放置。不要从下拉菜单中选择一个主机,否则 Amazon EC2 会尝试在该主
机上启动。
• 关联—默认设置是 Off。实例将启动到指定的主机上,但如果停止则可能不会在该主机上重新启动。
6.
7.
8.
如果您选择了不兼容的 AMI 或实例类型,您将无法在专用主机上启动实例。如果您无法看到这些设
置,请检查是否在 Network 菜单中选择了一个 VPC。
完成剩余的配置步骤。选择 Review and Launch。
选择 Launch 以启动您的实例。
选择现有密钥对或创建新密钥对。然后选择 Launch Instances。
了解实例放置
Abstract
选择您的实例在特定或可用专用主机上启动的方式。
实例放置是指控制运行实例的物理服务器的功能。根据专用主机的放置设置,您可以让 Amazon EC2 自
动管理实例在专用主机上的放置(自动放置),或者也可以手动选择要使用的专用主机(定向放置)。
内容
• 自动置放 (p. 222)
• 定向放置 (p. 222)
• 关联 (p. 223)
• 使用实例放置控制 (p. 223)
自动置放
自动放置是在您分配专用主机时启用的默认放置设置。此设置意味着 AWS 可自动在您的专用主机(前提
是您有主机容量)上放置您启动的带有租赁 host 的实例,无需指定的主机 ID,(也称为“非定向启动”)。
定向放置
每个专用主机都分配有一个全局唯一的主机 ID。您可以通过指定主机 ID 来在某个特定专用主机上启动实
例。此操作也称为“定向放置”。默认情况下,以这种方法启动的实例将继承与主机的关联。请务必记住,
如果专用主机禁用了自动放置功能,它将仅接受定向放置启动(包括启动与主机有关联的实例)。您也可
在专用主机上定向一个启动,即使它已打开自动放置功能。
222
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
关联
关联是带有租赁 host 的实例的实例属性。它在实例和主机之间建立了启动关系,从而确保在特定主机上
启动的实例始终在同一主机上重新启动(如果已停止)。这在自带许可的情景下很有用,因为您在此时需
要最大程度地减少在任何时间点获得许可的物理服务器的数量。
您可以设置与 host 的实例关联,无论您是要指定定向启动还是只希望实例与其所在的主机之间存在永久
性关系。
如果将关联设置为 default,并且您停止并重新启动了某个实例,则该实例可在任何启用了自动放置的
可用主机上重新启动,但它将尝试回到其上次运行的专用主机上启动(尽力)。
您可以通过将关联从 host 更改为 default 来修改专用主机与实例之间的关系。有关更多信息,请参阅
修改实例租赁 (p. 223)。
使用实例放置控制
您可以使用 Amazon EC2 控制台、API 或 CLI 管理实例放置控制。
修改运行实例的实例放置设置
您可修改您的现有实例的实例放置设置,以便可在特定主机上重新启动已停止的实例或删除实例与主机之
间的关联。
1.
2.
3.
4.
5.
6.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Instances 页面上,选择要编辑的实例。
选择 Actions,然后选择 Instance State 和 Stop。
依次选择 Actions、Instance Settings 和 Modify Instance Placement。
将实例租赁更改为 Launch this instance on a Dedicated host。
选择所需的 Affinity 设置。
a.
b.
7.
如果您选择了此实例可以在任一主机上运行,该实例将在任何启用了自动放置的专用主机上启
动。选择 Save 以继续。
如果您选择了此实例只能在选定的主机上运行,则选择 Target Host,然后选择您要将实例放置
在任何可用主机上还是某个特定主机上。选择 Save 以继续。
右键单击实例,选择 Instance State,然后选择 Start。
如果您选择在任何可用的专用主机上启动实例,则该实例将在您的账户中的任何可用主机上登录。如果实
例被停止并重新启动,则无法保证在同一主机上重新启动它。
如果您选择了一个目标主机,则将在指定的专用主机上启动实例,并设置该实例与该专用主机之间的关
联。如果实例被停止并重新启动,它将在同一专用主机上重新启动。如果您不再希望实例与主机之间存在
关联,您可停止实例,并将其关联更改为 default。尽管这会消除实例与主机之间的关联性,但当您重
新启动实例时,它可能会回到同一专用主机上启动(具体取决于您的账户中的专用主机可用性)- 但如果
实例再次被停止,它将不会在该主机上重新启动。
修改实例租赁
Abstract
将专用实例移至专用主机。
如果某个专用实例的租赁未使用由 Amazon EC2 提供的 Windows、SUSE 或 RHEL AMI,您可以将该租
赁从 dedicated 更改为 host。要执行此操作,您需要停止您的专用实例。带有 shared 租赁的实例无
法修改为 host 租赁。
223
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
更改实例租赁
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
选择 Instances,然后选择要移动到专用主机上的专用实例。
选择 Actions,然后选择 Instance State 和 Stop。
右键单击实例,选择 Instance Settings,然后选择 Modify Instance Placement。
5.
在 Modify Instance Placement 屏幕,选择:
• 租期—从下拉菜单在专用主机上启动此实例。
• 关联—此实例可以在任一主机上运行或此实例只能在选定的主机上运行。
如果您选择了 This instance can run on any one of my Hosts,该实例将在任何自动放置为 On 的
专用主机上启动。在实例下次启动时这将被视为非定向放置。
如果您选择此实例只能在选定的主机上运行,从下拉菜单选择目标主机。
6.
7.
选择 Save。
当您重新启动您的实例时,Amazon EC2 会将您的实例放置在您账户内的可用专用主机上。
管理和释放专用主机
您可以使用控制台,与 API 直接交互,或使用命令行界面来查看主机上单个实例的详细信息并释放按需
专用主机。
查看实例详细信息
1.
2.
3.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Dedicated Hosts 页面上,选择要详细了解的主机。
选择 Description 选项卡以获取有关该主机的信息。选择 Instances 选项卡以获取有关您的主机上运
行的实例的信息。
释放专用主机
需要先停止在专用主机上运行的任何实例,然后才能释放主机。这些实例可以迁移至您账户的其他专用主
机,这样您就可以继续使用它们。请参阅使用实例放置控制 (p. 223)。这些步骤只适用于按需专用主机。
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在专用主机页面上,选择要释放的专用主机。
3.
4.
选择 Actions 和 Release Hosts。
通过选择 Release 确认您的选择。
在释放某个专用主机后,您无法再次重用同一主机或主机 ID。
在释放专用主机后,将不再向您收取它产生的按需费用。专用主机状态将更改为 released,您无法在该
主机上启动任何实例。
如果您最近释放了专用主机,则它们可能要过一段时间才会停止计入您的限制。您可能会遇到
LimitExceeded 错误。如果出现这种情况,请在几分钟后再次尝试分配新的主机。
已停止的实例仍可以使用和列在 Instances 页面上。这些实例将保留其 host 租赁设置。您可以更改这些
实例的实例放置设置以便在重新启动这些实例时在特定主机上启动它们,也可以使用任何可用主机。
224
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
API 和 CLI 命令概览
您可以使用 API 或命令行执行本节中所述的任务。
将专用主机分配到您的账户
• allocate-hosts (AWS CLI)
• AllocateHosts(Amazon EC2 查询 API)
• New-EC2Hosts (适用于 Windows PowerShell 的 AWS 工具)
描述您的专用主机
• describe-hosts (AWS CLI)
• DescribeHosts(Amazon EC2 查询 API)
• Get-EC2Hosts (适用于 Windows PowerShell 的 AWS 工具)
修改您的专用主机
• modify-hosts (AWS CLI)
• ModifyHosts(Amazon EC2 查询 API)
• Edit-EC2Hosts (适用于 Windows PowerShell 的 AWS 工具)
修改在您的专用主机上的实例放置
• modify-instance-placement (AWS CLI)
• ModifyInstancePlacement(Amazon EC2 查询 API)
• Edit-EC2InstancePlacement (适用于 Windows PowerShell 的 AWS 工具)
释放您的专用主机
• release-hosts (AWS CLI)
• ReleaseHosts(Amazon EC2 查询 API)
• Remove-EC2Hosts (适用于 Windows PowerShell 的 AWS 工具)
使用 AWS Config 跟踪配置更改
您可以使用 AWS Config 记录专用主机的配置更改以及在这些主机上启动、停止或终止的实例的配置更
改。然后,您可以将由 AWS Config 捕获的信息用作许可证报告的数据源。
AWS Config 分别记录专用主机和实例的配置信息并通过关系将这类信息配对。存在三种报告条件。
• AWS Config 记录状态 - 当其状态为 On 时,AWS Config 将记录一个或多个 AWS 资源类型,其中可包
含专用主机和实例。要捕获许可证报告所需的信息,请验证是否使用了以下字段记录专用主机和实例。
• 主机记录状态 - 当其状态为 Enabled 时,将记录专用主机的配置信息
• Instance recording status - 当其的状态为 Enabled 时,将记录实例的配置信息。
如果禁用这三个条件中的任意一个,则 Edit Config Recording 按钮中的图标为红色。要发挥此工具的所
有优点,请确保这三种记录方法都已启用。当这三种方法全部启用时,图标为绿色。要编辑设置,请选择
Edit Config Recording。您将被定向到 AWS Config 控制台中的 Set up AWS Config 页面,在该页面中,
您可以设置 AWS Config 并启动对您的主机、实例和其他支持的资源类型的记录。有关使用此页面的说
明,请参阅 AWS Config 开发人员指南 中的使用控制台设置 AWS Config。
225
Amazon Elastic Compute Cloud Linux 实例用户指南
专用主机
Note
AWS Config 将在发现您的资源后记录它们,此过程可能需要几分钟。
在 AWS Config 开始记录对您的主机和实例的配置更改后,您可以获取已分配或已释放的任何主机以及已
启动、已停止或已终止的任何实例的配置历史记录。例如,在专用主机的配置历史记录中的任何时间点
上,您均可以查看在该主机上启动的实例的数量以及该主机上的套接字和内核的数量。对于任何这些实
例,您还可以查看其 Amazon 系统映像 (AMI) 的 ID。您可以使用此信息来报告您拥有的服务器端绑定软
件(按套接字或按内核授予许可)的许可。
您可以采用以下任一方法查看配置历史记录。
• 通过使用 AWS Config 控制台。对于每个已记录的资源,您可以查看一个时间线页面,该页面提供了配
置详细信息的历史记录。要查看此页面,请选择 Dedicated Hosts 页面的 Config Timeline 列中的灰色
图标。有关更多信息,请参阅 AWS Config 开发人员指南 中的在 AWS Config 控制台中查看配置详细
信息。
• 通过运行 AWS CLI 命令。首先,您可以使用 list-discovered-resources 命令获取一个包含所有主机和
实例的列表。然后,您可以使用 get-resource-config-history 命令获取特定时间间隔内某个主机或实例
的配置详细信息。有关更多信息,请参阅 AWS Config 开发人员指南 中的使用 CLI 查看配置详细信息。
• 通过在您的应用程序中使用 AWS Config API。首先,您可以使用 ListDiscoveredResources 操作获取
一个包含所有主机和实例的列表。然后,您可以使用 GetResourceConfigHistory 操作获取特定时间间
隔内某个主机或实例的配置详细信息。
例如,要从 AWS Config 中获取包含您的所有专用主机的列表,您应该运行 CLI 命令,例如下面的命令:
aws configservice list-discovered-resources --resource-type
AWS::EC2::Host
要从 AWS Config 中获取某个专用主机的配置历史记录,您应该运行 CLI 命令,例如下面的命令:
aws configservice get-resource-config-history --resource type
AWS::EC2::Instance --resource-id i-36a47fdf
使用 AWS 管理控制台管理 AWS Config 设置
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Dedicated Hosts 页面上,选择 Edit Config Recording 按钮。
3.
在 AWS Config 控制台中,按照提供的步骤来启用记录。有关更多信息,请参阅使用控制台设置 AWS
Config。
有关 AWS Config 控制台的更多信息,请参阅在 AWS Config 控制台中查看配置详细信息。
使用命令行或 API 激活 AWS Config
• 要使用 AWS CLI,请参阅 AWS Config 开发人员指南 中的在 AWS Config 控制台中查看配置详细信息。
• 要使用 Amazon EC2 API,请参阅 GetResourceConfigHistory。
监控专用主机
Amazon EC2 持续监控您的专用主机的状态;更新内容将在 Amazon EC2 控制台上传送。您还可以使用
CLI 或 API 来获取有关您的专用主机的信息。
226
Amazon Elastic Compute Cloud Linux 实例用户指南
实例生命周期
下表说明了控制台中可能的 State 值。
州
说明
可用
AWS 未在专用主机上检测到问题;没有制定维护
或修复计划。实例可在此专用主机上启动。
released
已释放专用主机。主机 ID 不再使用。无法重新使
用已释放的主机。
under-assessment
AWS 正在寻找专用主机可能存在的问题。如果需
要采取措施,系统将通过 AWS 管理控制台或电子
邮件通知您。实例无法在处于此状态的专用主机上
启动。
permanent-failure
检测到了一个不可恢复的故障。您将通过您的实例
或通过电子邮件接收到一个移出通知。您的实例可
能会继续运行。如果在处于此状态的专用主机上停
止或终止所有实例,AWS 将重试该主机。实例无
法在处于此状态的专用主机上启动。
released-permanent-failure
AWS 一直释放已发生故障的专用主机并且不再在
这些主机上运行实例。专用主机 ID 不再可供使用。
实例生命周期
Abstract
描述 Amazon EC2 实例从启动到终止的生命周期。
通过使用 Amazon EC2 从启动到终止期间对实例进行管理,可确保您的客户对其上托管的应用程序或站
点尽可能获得最佳体验。
下图显示实例状态之间的转换。请注意,您无法停止和启动实例存储支持的实例。有关实例存储支持实例
的更多信息,请参阅根设备存储 (p. 64)。
实例启动
当您启动实例时,实例进入 pending 状态。启动时指定的实例类型将决定您实例的主机硬件。我们使用
您在启动时指定的Amazon 系统映像 (AMI) 来启动实例。当实例准备就绪后,其进入 running 状态。您
可以连接到正在运行的实例,然后像使用您面前的计算机一样来使用它。
227
Amazon Elastic Compute Cloud Linux 实例用户指南
停止和启动实例(仅限 Amazon EBS 支持的实例)
只要您的实例转换为 running 状态,实例保持运行的每个小时或不足一小时都会计费;即使实例处于闲
置状态并且您并未连接到该实例。
有关更多信息,请参阅启动实例 (p. 229)和连接到您的 Linux 实例 (p. 239)。
停止和启动实例(仅限 Amazon EBS 支持的实例)
如果您的实例未能通过状态检查或未按预期运行应用程序,并且实例的根卷为 Amazon EBS 卷,则您可
以先停止该实例再启动,以尝试解决该问题。
当您停止实例时,它会进入 stopping 状态,然后进入 stopped 状态。我们不对已停止的示例收取小时
使用费或数据传输费,但会对所有 Amazon EBS 卷的存储收费。当实例处于 stopped 状态时,您可以
修改实例的某些属性,包括实例类型。
当您启动实例时,它会进入 pending 状态,此时我们会将该实例移动到新主机。因此,当您停止实例再
启动时,您会丢失先前主机的实例存储卷上的所有数据。
如果您的实例在 EC2-Classic 中运行,它会收到一个新的私有 IP 地址,这意味着与私有 IP 地址关联的弹
性 IP 地址 (EIP) 不再与您的实例关联。如果您的实例在 EC2-VPC 中运行,它会保留其私有 IP 地址,这
意味着与该私有 IP 地址或网络接口关联的 EIP 仍与您的实例关联。
您每次将实例从 stopped 状态转换到 running 状态时,我们都按一个完整实例小时收费,即使这些转
换在一小时内发生多次也一样。
有关更多信息,请参阅 停止和启动您的实例 (p. 250)。
实例重启
您可以使用 Amazon EC2 控制台、Amazon EC2 CLI 和 Amazon EC2 API 来重新启动实例。我们建议您
使用 Amazon EC2 来重启实例,而非在实例中运行操作系统重启命令。
重启实例等同于重启操作系统;实例位于同一主机上并保留其公有 DNS 名称、私有 IP 地址以及其实例
存储卷上的所有数据。完成重启通常需要花费几分钟的时间,该时间具体取决于实例配置。
重启实例不会启动新的实例计费小时。
有关更多信息,请参阅 重启您的实例 (p. 253)。
实例停用
实例计划在 AWS 检测到托管实例的底层硬件发生无法弥补的故障时停用。当实例到达其计划的停用日期
时,AWS 会将其停止或终止。如果实例的根设备是 Amazon EBS 卷,将停止实例,您可随时重新启动
它。如果实例的根设备是实例存储卷,实例将终止,且无法再次使用。
有关更多信息,请参阅 实例停用 (p. 253)。
实例终止
当您决定不再需要实例时,可以终止该实例。实例的状态一旦变为 shutting-down 或 terminated,
就不再产生与该实例相关的费用。
请注意,如果您启用终止保护,则无法使用控制台、CLI 或 API 来终止实例。
在您终止实例之后,短时间内仍可在控制台中看见该实例,然后该条目将被删除。您还可以使用 CLI 和
API 来描述已终止的实例。您无法连接至或恢复已终止的实例。
228
Amazon Elastic Compute Cloud Linux 实例用户指南
重启、停止与终止之间的区别
每个由 Amazon EBS 支持的实例都支持 InstanceInitiatedShutdownBehavior 属性,该属性决定
当从实例内部启动关闭命令时(例如,在 Linux 中使用 shutdown 命令)实例是停止还是终止。默认行为
是停止实例。您可以在实例运行或停止时修改此属性的设置。
每个 Amazon EBS 卷都支持 DeleteOnTermination 属性,该属性控制当您终止卷所连接的实例时是
删除还是保留该卷。默认为删除根设备卷并保留所有其他 EBS 卷。
有关更多信息,请参阅 终止您的实例 (p. 255)。
重启、停止与终止之间的区别
下表总结重启、停止与终止实例之间的主要区别。
性能
重启
停止/启动(仅限 Amazon
EBS 支持的实例)
终止
主机
实例保持在同一主机上运行
实例在新主机上运行
无
私有和公有
IP 地址
这些地址保持不变
EC2-Classic:实例获得新
的私有和公有 IP 地址
无
EC2-VPC:实例保留其私有
IP 地址。实例获取新的公有
IP 地址,除非它具有弹性
IP 地址 (EIP)(该地址在停
止/启动过程中不更改)。
弹性 IP 地址 EIP 保持与实例关联
(EIP)
EC2-Classic:EIP 不再与实 EIP 不再与实例关联
例关联
EC2-VPC:EIP 保持与实例
关联
实例存储卷
数据保留
数据将擦除
数据将擦除
根设备卷
卷将保留
卷将保留
默认情况下将删除卷
记账功能
实例计费小时不更改。
实例的状态一旦变为 stop- 实例的状态一旦变为 shutping,就不再产生与该实例 ting-down,就不再产生与
相关的费用。每次实例从
该实例相关的费用。
stopped 转换为 pending
时,我们都会启动新的实例
计费小时。
请注意,操作系统的 shutdown 命令始终会终止实例存储支持实例。您可以控制操作系统 shutdown 命令
是停止还是终止 Amazon EBS 支持的实例。有关更多信息,请参阅更改实例的启动关闭操作 (p. 257)。
启动实例
Abstract
启动一个作为 AWS 云中虚拟服务器的实例。
实例是 AWS 云中的虚拟服务器。您可以从Amazon 系统映像 (AMI) 中启动实例。AMI 为实例提供操作系
统、应用程序服务器和应用程序。
229
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
注册 AWS 后,您可以通过 AWS 免费套餐开始免费使用 Amazon EC2。您可以利用免费套餐来免费启动
和使用微型实例,免费时间为 12 个月。如果您启动不在免费套餐范围内的实例,则需要为该实例支付标
准 Amazon EC2 使用费。有关更多信息,请参阅 Amazon EC2 定价。
您可以使用以下方法启动实例。
方法
文档
将 Amazon EC2 控制台与您选择的 AMI 一起使用
启动实例 (p. 230)
使用 Amazon EC2 控制台,通过将现有实例用作
模板来启动实例
使用现有实例作为模板来启动实例 (p. 235)
将 Amazon EC2 控制台与您创建的 Amazon EBS
快照一起使用
从备份启动 Linux 实例 (p. 236)
将 Amazon EC2 控制台与您从 AWS Marketplace
购买的 AMI 一起使用
启动 AWS Marketplace 实例 (p. 237)
将 AWS CLI 与您选择的 AMI 一起使用
通过 AWS CLI 使用 Amazon EC2
将 Amazon EC2 CLI 与您选择的 AMI 一起使用
使用 Amazon EC2 CLI 启动实例
将 适用于 Windows PowerShell 的 AWS 工具 与所 适用于 Windows PowerShell 的 AWS 工具 中的
选的 AMI 结合使用
Amazon EC2
启动实例之后,您可以连接并使用该实例。开始时,实例的状态为 pending。当实例状态为 running
时,实例已经开始启动。可能要过一小段时间才能连接到实例。实例会获得一个公有 DNS 名称,可用于
从 Internet 与该实例通信。实例还会获得一个私有 DNS 名称,相同 Amazon EC2 网络(EC2-Classic 或
EC2-VPC)内的其他实例可以用其与该实例通信。有关连接到实例的更多信息,请参阅连接到您的 Linux
实例 (p. 239)。
当您完成实例时,请确保终止该实例。有关更多信息,请参阅终止您的实例 (p. 255)。
启动实例
Abstract
使用 Amazon EC2 控制台从 AMI 启动实例。
在启动实例之前,请确保您已进行了相应设置。有关更多信息,请参阅 Amazon EC2 的设置 (p. 19)。
根据您创建账户的时间以及您使用的区域,您的 AWS 账户可能同时支持 EC2-Classic 和 EC2-VPC 平
台。要查明您的账户支持的平台,请参阅 支持的平台 (p. 518)。如果您的账户支持 EC2-Classic,则可以
在任一平台中启动实例。如果您的账户仅支持 EC2-VPC,则只能在 VPC 中启动实例。
Important
当您启动不在 AWS 免费套餐范围内的实例时,即使该实例处于闲置状态,您也需为该实例运行
的时间付费。
从 AMI 启动实例
启动实例时,您必须选择配置(称为亚马逊系统映像 (AMI))。AMI 包含创建新实例所需的信息。例如,
AMI 可能包含用作 Web 服务器所需的软件:例如 Linux、Apache 和您的网站。
230
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
Tip
为确保更快地启动实例,请将大量请求分成较小的批次。例如,创建五个独立的请求批次,每个
批次包含 100 个实例启动请求,而不要创建一个包含 500 个实例的启动请求。
启动实例
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
在屏幕顶部的导航栏中,会显示当前区域。选择实例的区域。该选择很重要,这是因为有些 Amazon
EC2 资源可以在区域间共享,另一些却不能。请选择能满足您的需求的区域。有关更多信息,请参
阅 资源位置 (p. 672)。
3.
4.
从 Amazon EC2 控制台控制面板中,选择 Launch Instance。
在 Choose an Amazon Machine Image (AMI) (选择亚马逊系统映像 (AMI)) 页上,选择某个 AMI,如
下所示:
a.
在左侧窗格中选择要使用的 AMI 类型:
快速启动
一组精选的常用 AMI 可帮助您快速开始。要确保选择符合免费套餐条件的 AMI,请在左侧
窗格中选择 Free tier only。(请注意,这些 AMI 标记为 Free tier eligible (符合条件的免费
套餐)。)
我的 AMI
您拥有的私有 AMI,或与您共享的私有 AMI。
AWS Marketplace
一个在线商店,您可以从中购买在 AWS 上运行的软件(包括 AMI)。有关从 AWS
Marketplace 启动实例的更多信息,请参阅启动 AWS Marketplace 实例 (p. 237)。
社区 AMI
AWS 社区成员提供给其他人使用的 AMI。要按操作系统筛选 AMI 列表,请在 Operating
system 下选中相应复选框。还可以按架构和根设备类型进行筛选。
231
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
5.
b.
检查对每个 AMI 列出的 Root device type (根设备类型)。请注意哪些 AMI 是您需要的类型,即
ebs(由 Amazon EBS 支持)或 instance-store(由实例存储支持)。有关更多信息,请参
阅 根设备存储 (p. 64)。
c.
检查对每个 AMI 列出的 Virtualization type (虚拟化类型)。注意哪些 AMI 类型是您需要的类型,
即 hvm 或 paravirtual。例如,一些实例类型需要 HVM。有关详细信息,请参阅 Linux AMI
虚拟化类型 (p. 66)。
d.
选择满足您的需求的 AMI,然后选择 Select。
在 Choose an Instance Type (选择一个实例类型) 页面上,选择要启动的实例的硬件配置和大小。更
大的实例类型拥有更多的 CPU 和内存。有关更多信息,请参阅 实例类型 (p. 121)。
要保持符合免费套餐条件,请选择 t2.micro 实例类型。有关更多信息,请参阅 T2 实例 (p. 124)。
默认情况下,向导显示当前一代实例类型,并根据您选择的 AMI 选择第一可用实例类型。要查看上
一代实例类型,请从筛选列表中选择 All generations。
Note
如果您刚刚接触 AWS 并希望快速设置实例以进行测试,那么目前可以选择 Review and
Launch 以接受默认配置设置,然后启动您的实例。否则,若要进一步配置实例,请选择
Next: Configure Instance Details。
6.
在 Configure Instance Details 页面上,根据需要更改以下设置(展开 Advanced Details 查看所有设
置),然后选择 Next: Add Storage:
• Number of instances (实例的数量):输入要启动的实例的数量。
Note
为帮助确保保持正确数量的实例来处理应用程序,您可选择 Launch into Auto Scaling
Group 以创建启动配置和 Auto Scaling 组。Auto Scaling 将根据您的规格来扩展组中的实
例数。有关更多信息,请参阅 Auto Scaling 开发人员指南。
• Purchasing option:选择 Request Spot Instances 可启动竞价型实例。有关更多信息,请参阅 竞
价型实例 (p. 174)。
• 您的账户可能支持 EC2-Classic 和 EC2-VPC 平台,或者仅支持 EC2-VPC。要查明您的账户支持
的平台,请参阅 支持的平台 (p. 518)。如果您的账户仅支持 EC2-VPC,则可以在默认 VPC 或非默
认 VPC 中启动实例。否则,您可以在 EC2-Classic 或非默认 VPC 中启动实例。
Note
必须在 VPC 中启动 T2 实例。如果您没有 VPC,可以让向导为您创建一个。
在 EC2-Classic 中启动:
• Network (网络):选择 Launch into EC2-Classic (在 EC2-Classic 中启动)。
• Availability Zone (可用区):选择您想使用的可用区。要使 AWS 为您选择可用区,请选择 No
preference (无首选项)。
在 VPC 中启动:
• Network:选择 VPC,若要创建新 VPC,请选择 Create new VPC 转到 Amazon VPC 控制台。
完成后,返回到向导并选择 Refresh 按钮,以便将您的 VPC 加载到列表中。
• Subnet (子网):选择您要将实例启动到其中的子网。如果您的账户仅为 EC2-VPC,请选择 No
preference (无首选项) 让 AWS 在任何可用区中选择默认子网。要创建新子网,请选择 Create
232
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
new subnet 转到 Amazon VPC 控制台。完成此操作后,返回到向导并选择 Refresh 按钮,以便
将您的子网加载到列表中。
• Auto-assign Public IP (自动分配公有 IP):指定您的实例是否接收公有 IP 地址。默认情况下,
默认子网中的实例接收公有 IP 地址,非默认子网中的实例则不接收。可以选择 Enable (启用) 或
Disable (禁用) 以覆盖子网的默认设置。有关更多信息,请参阅 公有 IP 地址和外部 DNS 主机
名 (p. 539)。
• IAM role (IAM 角色):如果适用,请选择 AWS Identity and Access Management (IAM) 角色以便
与实例关联。有关更多信息,请参阅 适用于 Amazon EC2 的 IAM 角色; (p. 506)。
• Shutdown behavior (关闭行为):选择关闭时实例应该停止还是终止。有关更多信息,请参阅 更改
实例的启动关闭操作 (p. 257)。
• Enable termination protection (启用终止保护):选中此复选框可防止意外终止。有关更多信息,请
参阅 为实例启用终止保护 (p. 256)。
• 监控:请选中此复选框,以使用 Amazon CloudWatch 来启动对您的实例的详细的监控。将收取额
外费用。有关更多信息,请参阅 使用 CloudWatch 监控您的实例 (p. 381)。
• EBS-Optimized instance (EBS 优化实例):Amazon EBS 优化实例使用优化的配置堆栈,为 Amazon
EBS I/O 提供附加专用容量。如果实例类型支持此功能,请选中此复选框将其启用。将收取额外费
用。有关更多信息,请参阅 Amazon EBS 优化实例 (p. 629)。
• Tenancy:如果您要将实例启动到 VPC,则可选择在独立的专用硬件 (Dedicated) 或专用主机
(Dedicated host) 上运行实例。可能收取额外费用. 有关更多信息,请参阅 Amazon VPC 用户指南
中的专用实例以及专用主机 (p. 217)。
• Network interfaces (网络接口):如果要在 VPC 中启动实例,并且没有为子网选择 No Preference
(无首选项),则可以在向导中指定最多两个网络接口。选择 Add IP 以向所选接口分配多个 IP 地
址。有关网络接口的更多信息,请参阅 弹性网络接口 (ENI) (p. 554)。如果您选中了上述 Public IP
(公有 IP) 复选框,则只能向设备索引为 eth0 的单个新网络接口分配一个公有 IP 地址。有关更多
信息,请参阅 分配公有 IP 地址 (p. 542)。
• Kernel ID (内核 ID):(仅对半虚拟化 (PV) AMI 有效)除非您想使用某个特定内核,否则选择 Use
default (使用默认值)。
• RAM disk ID (RAM 磁盘 ID):(仅对半虚拟化 (PV) AMI 有效)除非您想使用某个特定 RAM 磁盘,
否则选择 Use default (使用默认值)。如果您选择了一个内核,则您可能需要选择带有可支持该内
核的驱动程序的某个特定 RAM 磁盘。
• Placement group (置放群组):置放群组是对您的集群实例加以组织的逻辑分组。选择现有置放群
组或创建新群组。仅当您选择了支持置放群组的实例类型时,此选项才可用。有关更多信息,请参
阅 置放群组 (p. 566)。
• User data (用户数据):您可以指定用户数据在启动时配置实例或运行配置脚本。要附加文件,请
选择 As file (以文件形式) 选项并浏览到要附加的文件。
7.
在 Add Storage (添加存储) 页面上,除 AMI 指定的卷之外(例如根设备卷),您还可以指定要附加
到实例的卷。您可以更改以下选项,然后在完成时选择 Next: Tag Instance:
• Type (类型):选择实例存储或 Amazon EBS 卷以便与实例关联。列表中可用的卷类型取决于您选
择的实例类型。有关更多信息,请参阅 Amazon EC2 实例存储 (p. 645) 和 Amazon EBS 卷 (p. 585)。
• Device (设备):从卷的可用设备名称列表中进行选择。
• Snapshot (快照):输入要从其中还原卷的快照的名称或 ID。您还可以通过在 Snapshot (快照) 字
段中键入文本来搜索公有快照。快照描述区分大小写。
• Size (大小):对于 Amazon EBS 支持的卷,您可以指定存储大小。请注意,即使您选择了有资格
享用免费套餐的 AMI 和实例,仍需保持总存储大小低于 30 GiB,以便保持在免费套餐限制之内。
Note
Linux AMI 需要将 GPT 分区表和 GRUB 2 用于 2 TiB (2048 GiB) 或更大的引导卷。现在
的许多 Linux AMI 都使用 MBR 分区方案,此方案仅支持最高 2047 GiB 的引导卷。如果
您的实例不通过 2 TiB 或更大的引导卷启动,您要使用的 AMI 会限制为 2047 GiB 引导卷
大小。非引导卷对 Linux 实例没有这种限制。
233
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
Note
如果此时增加根卷(或从快照创建的任何其他卷)的大小,则需要扩展该卷上的文件系统
以使用额外空间。有关在实例启动之后扩展文件系统的更多信息,请参阅在 Linux 上扩展
EBS 卷的存储空间 (p. 610)。
• Volume Type (卷类型):对于 Amazon EBS 卷,请选择 通用型 SSD、Provisioned IOPS或磁介质
卷。有关更多信息,请参阅 Amazon EBS 卷类型 (p. 587)。
Note
如果选择 磁介质 启动卷,则在您完成向导时,系统会提示您将 通用型 SSD 卷设为此实例
和将来的控制台启动的默认启动卷。(此首选项保留在浏览器会话中,不会影响具有
Provisioned IOPS 启动卷的 AMI。)我们建议您将 通用型 SSD 卷设为默认卷,因为它们
可提供更快的体验,是大多数工作负载的最佳卷类型。有关更多信息,请参阅 Amazon
EBS 卷类型 (p. 587)。
Note
2012 年之前创建的某些 AWS 账户可能能够访问 us-east-1、us-west-1 或 ap-northeast-1
中的可用区,这些可用区不支持 provisioned IOPS (io1) 卷。如果您无法在其中一个区域
中创建 io1 卷(或在其块储存设备映射中启动具有 io1 卷的实例),请尝试该区域中的
其他可用区。您可以通过在某可用区创建 4 GiB io1 卷来验证该可用区是否支持io1 卷。
• IOPS:如果选择了Provisioned IOPS 卷类型,则可以输入卷支持的每秒 I/O 操作数。
• Delete on Termination (终止时删除):对于 Amazon EBS 卷,请选中此复选框以在实例终止时删
除卷。有关更多信息,请参阅 在实例终止时保留 Amazon EBS 卷 (p. 258)。
• Encrypted (加密):选中此复选框可加密新的 Amazon EBS 卷。从加密快照还原的 Amazon EBS
卷会自动加密。加密卷只能连接到支持的实例类型 (p. 632)。
8.
9.
在 Tag Instance (标签实例) 页面上,通过提供密钥和值组合为实例指定标签 (p. 679)。选择 Create
Tag 以向您的资源添加多个标签。完成时选择 Next: Configure Security Group。
在 Configure Security Group (配置安全组) 页面上,使用安全组为实例定义防火墙规则。这些规则指
定哪些传入的网络流量可传输到您的实例。所有其他的流量将被忽略。(有关安全组的更多信息,请
参阅 Amazon EC2 个安全组(对于 Linux 实例) (p. 456)。)按如下所示选择或创建安全组,然后选
择 Review and Launch。
选择现有安全组:
1.
选择 Select an existing security group。会显示您的安全组。(如果您要在 EC2-Classic 中启
动,则这些是用于 EC2-Classic 的安全组。如果您要在某个 VPC 中启动,则这些是用于该 VPC
的安全组。)
2.
3.
从列表中选择安全组。
(可选)您无法编辑现有安全组的规则,但是可以通过单击 Copy to new (复制到新项目) 将它们
复制到新组。随后您可以按下一过程所述添加规则。
创建新安全组:
1.
2.
选择 Create a new security group。向导会自动定义 launch-wizard-x 安全组。
(可选)您可以编辑安全组的名称和描述。
3.
向导会自动定义入站规则以允许您通过适用于 Linux 的 SSH(端口 22)或适用于 Windows 的
RDP(端口 3389)连接到实例。
234
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
Caution
此规则使所有 IP 地址 (0.0.0.0/0) 都可以通过指定端口访问您的实例。您可以在本次
简短练习中使用此方法,但是在生产环境中使用时,其安全性有所欠缺。您应该仅授权
特定 IP 地址或特定范围内的 IP 地址访问您的实例。
4.
您可以根据需要添加规则。例如,如果您的实例是 Web 服务器,则打开端口 80 (HTTP) 和 443
(HTTPS) 以允许 Internet 流量。
要添加规则,请选择 Add Rule,选择用于打开网络流量的协议,然后指定源。从 Source (源) 列
表中选择 My IP (我的 IP),让向导添加您计算机的公有 IP 地址。但是,如果您在没有静态 IP 地
址的情况下通过 ISP 或从防火墙后面进行连接,则您需要了解客户端计算机使用的 IP 地址范
围。
10. 在 Review Instance Launch (查看实例启动) 页面上,检查您的实例的详细信息,然后单击相应的 Edit
(编辑) 链接进行任何必要更改。
如果准备就绪,请选择 Launch。
11. 在 Select an existing key pair or create a new key pair (选择现有密钥对或创建新密钥对) 对话框中,
您可以选择现有密钥对,也可以创建新的密钥对。例如,选择 Choose an existing key pair (选择现
有密钥对),然后选择您在进行设置时创建的密钥对。
要启动您的实例,请选中确认复选框,然后选择 Launch Instances。
Important
如果您选择 Proceed without key pair 选项,则将无法连接到此实例,除非您选择配置为允
许用户以其他方式登录的 AMI。
12. (可选)您可以为实例创建一个状态检查警报(可能需要额外付费)。(如果您不确定,您可以随时
在以后添加。)在确认屏幕上,选择 Create status check alarms 并按照指示操作。有关更多信息,
请参阅 创建和编辑状态检查警报 (p. 375)。
13. 如果实例状态立即变为 terminated,而不是 running,您可以获取有关实例无法启动的相关原因
的信息。有关更多信息,请参阅 如果实例立即终止,怎么办? (p. 700)。
使用现有实例作为模板来启动实例
Abstract
使用 Amazon EC2 控制台中的“Launch More Like This (启动更多类似项)”功能可基于现有实例启动实例。
Amazon EC2 控制台提供启动更多类似项向导选项,通过该选项可以将当前实例用作启动其他实例的模
板。此选项自动使用所选实例中的特定配置详细信息来填充 Amazon EC2 启动向导。
Note
启动更多类似项向导选项不克隆所选实例;仅复制某些配置详细信息。要创建实例的副本,请先
从它创建 AMI,然后从 AMI 启动更多实例。
以下配置详细信息会从所选实例复制到启动向导中:
• AMI ID
• 实例类型
235
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
• 可用区,或所选实例所在的 VPC 和子网
• 公有 IP 地址. 如果所选实例当前具有公有 IP 地址,则无论所选实例的默认公有 IP 地址设置如何,新实
例都会接收公有 IP 地址。有关公有 IP 地址的更多信息,请参阅公有 IP 地址和外部 DNS 主机名 (p. 539)。
• 置放群组,如果适用
• 与实例关联的 IAM 角色(如果适用)
• 关闭操作设置(停止或中止)
• 终止保护设置(true 或 false)
• CloudWatch 监控(启用或禁用)
• Amazon EBS 优化的设置(true 或 false)
• 租期设置(如果在 VPC(共享或专用)中启动)
• 内核 ID 和 RAM 磁盘 ID(如果适用)
• 用户数据,如果指定
• 与实例关联的标签(如果适用)
• 与实例关联的安全组
以下配置详细信息不会从所选实例进行复制;而是由向导应用默认设置或行为:
• (仅限 VPC)网络接口数量:默认为一个网络接口,即主网络接口 (eth0)。
• Storage (存储):默认存储配置由 AMI 和实例类型确定。
将当前实例用作模板
1.
2.
3.
在“实例”页面上,选择要使用的实例。
选择 Actions,然后选择 Launch More Like This。
启动向导会在 Review Instance Launch (查看实例启动) 页面上打开。您可以查看实例的详细信息,
然后通过单击相应的 Edit (编辑) 链接进行任何所需更改。
准备就绪时,请选择 Launch 以选择密钥对并启动实例。
从备份启动 Linux 实例
Abstract
从 Amazon EBS 快照启动实例。
对于 Amazon EBS 支持的 Linux 实例,您可以通过创建快照备份实例的根设备卷。如果您有某个实例的
根设备卷快照,则您可以终止该实例并在稍后从该快照启动一个新的实例。如果您没有从其中启动实例的
原始 AMI,但是需要能够使用同一映像启动实例,这将会很有用。
Important
某些 Linux 分配(如 Red Hat Enterprise Linux (RHEL) 和 SUSE Linux Enterprise Server (SLES))
使用与 AMI 关联的 EC2 billingProduct 代码来验证程序包更新的订阅状态。从 EBS 快照创
建 AMI 不会保留此账单代码,并且从此类 AMI 启动的后续实例不能连接到程序包更新基础设施。
同样,虽然您可以从快照中创建一个 Windows AMI,但是您不能从该 AMI 中成功启动实例。
要创建 Windows AMI 或创建必须保持 AMI 账单代码正常工作的适用于 Linux 操作系统的 AMI,
请参阅创建 Amazon EBS 支持的 Linux AMI (p. 83) 或创建由实例存储支持的 Linux AMI (p. 86)。
按照以下过程,使用控制台从实例的根卷创建 AMI。如果您愿意,可以改用 register-image (AWS CLI) 或
ec2-register (Amazon EC2 CLI) 命令。
236
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
使用控制台从根卷创建 AMI
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中的 Elastic Block Store 下,选择 Snapshots。
选择 Create Snapshot。
在 Volumes (卷) 字段中,开始键入根卷的名称或 ID,然后从选项列表中选择它。
5.
6.
选择刚才创建的快照,从 Actions 列表中选择 Create Image。
在 Create Image from EBS Snapshot 对话框中,填写与创建 AMI 相关的字段,然后选择 Create。
如果要重新创建父实例,请选择与父实例相同的选项。
• Architecture:对 32 位选择 i386,对 64 位选择 x86_64。
• Root device name:输入相应的根卷名称。有关更多信息,请参阅 Linux 实例上的设备命名 (p. 657)。
• Virtualization type:选择是从此 AMI 使用半虚拟化 (PV) 还是硬件虚拟机 (HVM) 虚拟化启动实例。
有关更多信息,请参阅 Linux AMI 虚拟化类型 (p. 66)。
• (仅限 PV 虚拟化类型)Kernel ID 和 RAM disk ID:从列表中选择 AKI 和 ARI。如果选择默认 AKI
或不选择 AKI,则每次使用此 AMI 启动实例时系统都会要求您指定 AKI。此外,如果默认 AKI 与
实例不兼容,对您的实例进行的运行状况检查可能会失败。
• (可选)Block Device Mappings:添加卷或扩展 AMI 根卷的默认大小。有关调整实例上的文件系
统大小以扩展卷的更多信息,请参阅扩展 Linux 文件系统 (p. 612)。
7.
8.
在导航窗格中,选择 AMIs。
选择您刚刚创建的 AMI,然后选择 Launch。按照向导启动您的实例。有关如何在向导的每个步骤进
行配置的更多信息,请参阅启动实例 (p. 230)。
启动 AWS Marketplace 实例
Abstract
订阅 AWS Marketplace 产品,并使用 Amazon EC2 启动向导从 AMI 启动实例。
您可以订阅 AWS Marketplace 产品,可以使用 Amazon EC2 启动向导从产品的 AMI 启动实例。有关付
费 AMI 的更多信息,请参阅付费 AMI (p. 79)。要在启动之后取消订阅,必须先停止从订阅运行的所有实
例。有关更多信息,请参阅 管理 AWS Marketplace 订阅 (p. 82)。
使用启动向导从 AWS Marketplace 启动实例
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在 Amazon EC2 控制面板中,单击 Launch Instance (启动实例)。
3.
在 Choose an Amazon Machine Image (AMI) (选择一个Amazon 系统映像(AMI)) 页面上,选择左侧
的 AWS Marketplace 类别。通过浏览类别或使用搜索功能查找合适的 AMI。单击 Select (选择) 以选
择产品。
对话框中会显示所选产品的概览。您可以查看定价信息,以及供应商提供的任何其他信息。准备就绪
时,单击 Continue (继续)。
4.
Note
在使用 AMI 启动实例之前,您无需为使用产品付费。记下每种支持的实例类型的定价,向导
的下一页会提示您选择实例类型。
5.
在 Choose an Instance Type (选择一个实例类型) 页面上,选择要启动的实例的硬件配置和大小。完
成时请单击 Next: Configure Instance Details (下一步:配置实例详细信息)。
237
Amazon Elastic Compute Cloud Linux 实例用户指南
启动
6.
在向导的后续页面上,可以配置实例、添加存储和添加标签。有关可以配置的不同选项的更多信息,
请参阅启动实例 (p. 230)。单击 Next (下一步),直至到达 Configure Security Group (配置安全组) 页
面。
向导会根据产品的供应商规格来创建新的安全组。安全组可能包括允许通过 Linux 上的 SSH(端口
22)或 Windows 上的 RDP(端口 3389)进行所有 IP 地址 (0.0.0.0/0) 访问的规则。我们建议您
调整这些规则,以仅允许特定地址或地址范围通过这些端口访问您的实例。
准备就绪时,单击 Review and Launch (查看和启动)。
7.
在 Review Instance Launch (查看实例启动) 页面上,检查要通过其启动实例的 AMI 的详细信息,以
及向导中设置的其他配置详细信息。准备就绪时,单击 Launch (启动) 以选择或创建密钥对,然后启
动实例。
8.
根据订阅的产品,实例可能需要几分钟或更多时间来启动。您需要先订阅产品,然后才可启动实例。
如果存在与信用卡详细信息有关的任何问题,会提示您更新账户详细信息。启动确认页面显示时,单
击 View Instances (查看实例) 转到“Instances (实例)”页面。
Note
只要实例在运行(即使处于空闲状态),就会收取订阅费用。如果实例停止,仍会收取存储
费。
9.
当实例处于正在运行状态时,可以连接到实例。为此,请在列表中选择实例并单击 Connect (连接)。
按照对话框中的说明执行。有关连接到实例的更多信息,请参阅连接到您的 Linux 实例 (p. 239)。
Important
仔细查看供应商的使用说明,因为您可能需要使用特定用户名称登录实例。有关访问订阅详
细信息的更多信息,请参阅管理 AWS Marketplace 订阅 (p. 82)。
使用 API 和 CLI 启动 AWS Marketplace AMI 实例
要使用 API 或命令行工具从 AWS Marketplace 产品启动实例,请首先确保订阅了产品。然后您可使用以
下方法通过该产品的 AMI ID 启动一个实例:
方法
文档
AWS CLI
使用 run-instances 命令或参阅以下主题以了解更多信息:启动实例。
Amazon EC2 CLI
使用 ec2-run-instances 命令,或参阅以下主题了解更多信息:使用
Amazon EC2 CLI 启动实例。
适用于 Windows PowerShell
的 AWS 工具
使用 New-EC2Instance 命令,或参阅以下主题了解更多信息:使用
Windows PowerShell 启动 Amazon EC2 实例
查询 API
使用 RunInstances 请求。
238
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
连接到您的 Linux 实例
Abstract
连接到实例并在实例与本地计算机之间传输文件。
了解如何连接到您启动的 Linux 实例,以及如何在您的本地计算机与实例之间传输文件。
如需连接到 Windows 实例,请参阅 Amazon EC2 用户指南(适用于 Microsoft Windows 实例) 中的连
接到您的 Windows 实例。
您的计算机
主题
Linux
使用 SSH 连接到 Linux 实例 (p. 239)
Windows
使用 PuTTY 从 Windows 连接到 Linux 实例 (p. 243)
全部
使用 MindTerm 连接到 Linux 实例 (p. 248)
连接到您的实例后,可以尝试其中一个教程,例如教程:安装 LAMP Web 服务器(在 Amazon Linux
上) (p. 33) 或教程:使用 Amazon Linux 托管 WordPress 博客 (p. 41)。
使用 SSH 连接到 Linux 实例
Abstract
使用 SSH 客户端连接到 Linux 实例。
启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。
Note
启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查
- 您可以在 Instances (实例) 页上的 Status Checks (状态检查) 列中查看此信息。
以下说明介绍如何使用 SSH 客户端连接到您的实例。如果您在尝试连接到您的实例时收到错误消息,请
参阅排查实例的连接问题。
先决条件
在连接到 Linux 实例之前,请先完成以下先决条件:
• 安装 SSH 客户端
默认情况下,您的 Linux 计算机最可能包括 SSH 客户端。您可以通过在命令行键入 ssh 来检查 SSH
客户端。如果您的计算机不能识别该命令,OpenSSH 项目提供了整套 SSH 工具免费使用的功能。有
关更多信息,请参阅 http://www.openssh.org。
• 安装 Amazon EC2 CLI 工具
(可选)如果您使用的是来自第三方的公用 AMI,请使用命令行工具验证指纹。有关安装 AWS CLI 的
更多信息,请参阅 AWS Command Line Interface 用户指南 中的开始设置。有关安装 Amazon EC2 CLI
的更多信息,请参阅 Amazon EC2 命令行参考 中的设置工具。
• 获得实例的 ID
您可以通过使用 Amazon EC2 控制台(位于 Instance ID (实例 ID) 列中)获得您的实例的 ID。如果您
愿意,您可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 获得实例的公有 DNS 名称
239
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
您可以使用 Amazon EC2 控制台获取实例的公有 DNS(勾选 Public DNS (公有 DNS) 列;如果此列处
于隐藏状态,请单击 Show/Hide (显示/隐藏) 图标并选择 Public DNS (公有 DNS))。如果您愿意,您
可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 查找私有密钥
您需要使用您在启动实例时指定的密钥对的 .pem 文件的完全限定路径。
• 允许从您的 IP 地址到您的实例的入站 SSH 流量
确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。有关更多信息,请参阅授权网络
访问您的实例。
Important
默认情况下,您的默认安全组不允许传入 SSH 流量。
连接到 Linux 实例
通过以下过程使用 SSH 客户端连接到您的 Linux 实例。如果您在尝试连接到您的实例时收到错误消息,
请参阅排查实例的连接问题。
使用 SSH 连接到您的实例
1.
(可选)您可以在本地系统(而不是实例)上使用以下命令之一验证正在运行的实例上的 RSA 密钥
指纹。如果您从第三方的公用 AMI 启动了实例,则可能需要这样做。找到 SSH HOST KEY
FINGERPRINTS 部分,记下 RSA 指纹(例如
1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f)并将它与实例的指纹进行比较。
• get-console-output (AWS CLI)
aws ec2 get-console-output --instance-id instance_id
• ec2-get-console-output (Amazon EC2 CLI)
ec2-get-console-output instance_id
Note
确保实例处于 running 状态,而不是 pending 状态。SSH HOST KEY FINGERPRINTS 部
分仅在实例首次启动之后可用。
2.
3.
在命令行界面中,将目录更改至您创建实例时所创建的私有密钥的位置。
使用 chmod 命令确保您的私有密钥不是公开可见的。例如,如果您的私有密钥文件的名称是
my-key-pair.pem,请使用以下命令:
chmod 400 /path/my-key-pair.pem
4.
使用 ssh 命令连接到实例。您将指定私有密钥 (.pem) 文件和 [email protected]_dns_name。 对于
Amazon Linux,用户名称是 ec2-user。对于 RHEL5,用户名称是 root 或 ec2-user。对于
Ubuntu,用户名称是 ubuntu。对于 Fedora,用户名称是 fedora 或 ec2-user。对于 SUSE Linux,
用户名称是 root 或 ec2-user。另外,如果 ec2-user 和 root 无法使用,请与您的 AMI 供应商
核实。
240
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
ssh -i /path/my-key-pair.pem [email protected]
您将看到如下响应。
The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com
(10.254.142.33)'
can't be established.
RSA key fingerprint is
1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
Are you sure you want to continue connecting (yes/no)?
5.
(可选)验证安全警报中的指纹是否与在步骤 1 中获取的指纹匹配。如果这些指纹不匹配,则表示有
人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。
6.
Enter yes.
您将看到如下响应。
Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA)
to the list of known hosts.
使用 SCP 将文件从 Linux 传输到 Linux 实例
在您的本地计算机与 Linux 实例之间传输文件的一种方法是使用安全复制 (SCP)。本节介绍了如何使用
SCP 传输文件。这个程序和使用 SSH 连接到实例的程序非常相似。
先决条件
• 安装 SCP 客户端
默认情况下,大多数 Linux、Unix 和 Apple 计算机都包含 SCP 客户端。如果您的计算机不含 SSH 客
户端,OpenSSH 项目提供了整套 SSH 工具免费使用的功能,包括 SCP 客户端。更多信息,请参阅
http://www.openssh.org.
• 获得实例的 ID
您可以通过使用 Amazon EC2 控制台(位于 Instance ID (实例 ID) 列中)获得您的实例的 ID。如果您
愿意,您可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 获得实例的公有 DNS 名称
您可以使用 Amazon EC2 控制台获取实例的公有 DNS(勾选 Public DNS (公有 DNS) 列;如果此列处
于隐藏状态,请单击 Show/Hide (显示/隐藏) 图标并选择 Public DNS (公有 DNS))。如果您愿意,您
可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 查找私有密钥
您需要使用您在启动实例时指定的密钥对的 .pem 文件的完全限定路径。
• 允许从您的 IP 地址到您的实例的入站 SSH 流量
确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。有关更多信息,请参阅授权网络
访问您的实例。
Important
默认情况下,您的默认安全组不允许传入 SSH 流量。
241
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
以下步骤将引导您使用 SCP 来传输文件。如果您已经使用 SSH 连接到实例,且已确认实例指纹,您可
以从包含 SCP 命令的步骤(步骤 4)开始。
使用 SCP 来传输文件
1.
(可选)您可以在本地系统(而不是实例)上使用以下命令之一验证实例上的 RSA 密钥指纹。如果
您从第三方的公用 AMI 启动了实例,则可能需要这样做。找到 SSH HOST KEY FINGERPRINTS 部
分,记下 RSA 指纹(例如 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f)并将它与实
例的指纹进行比较。
• get-console-output (AWS CLI)
aws ec2 get-console-output --instance-id instance_id
• ec2-get-console-output (Amazon EC2 CLI)
ec2-get-console-output instance_id
Note
SSH HOST KEY FINGERPRINTS 部分仅在实例首次启动之后可用。
2.
3.
在命令 shell 中,将目录更改为您启动实例时所指定的私有密钥文件的位置。
使用 chmod 命令确保您的私有密钥不是公开可见的。例如,如果您的私有密钥文件的名称是
my-key-pair.pem,请使用以下命令:
chmod 400 /path/my-key-pair.pem
4.
使用实例的公有 DNS 名称将文件传输到您的实例。举例来说,如果私有密钥文件的名称是
my-key-pair、要传输的文件是 SampleFile.txt、实例的公有 DNS 名称是
ec2-198-51-100-1.compute-1.amazonaws.com,则可以使用以下命令将文件复制到 ec2-user
主目录。
scp -i /path/my-key-pair.pem SampleFile.txt [email protected]:~
Tip
对于 Amazon Linux,用户名称是 ec2-user。对于 RHEL5,用户名称是 root 或
ec2-user。对于 Ubuntu,用户名称是 ubuntu。对于 Fedora,用户名称是 fedora 或
ec2-user。对于 SUSE Linux,用户名称是 root 或 ec2-user。另外,如果 ec2-user
和 root 无法使用,请与您的 AMI 供应商核实。
您将看到如下响应。
The authenticity of host 'ec2-198-51-100-1.compute-1.amazonaws.com
(10.254.142.33)'
can't be established.
RSA key fingerprint is
242
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f.
Are you sure you want to continue connecting (yes/no)?
5.
6.
(可选)验证安全警报中的指纹是否与在步骤 1 中获取的指纹匹配。如果这些指纹不匹配,则表示有
人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。
输入“Yes”。
您将看到如下响应。
Warning: Permanently added 'ec2-198-51-100-1.compute-1.amazonaws.com' (RSA)
to the list of known hosts.
Sending file modes: C0644 20 SampleFile.txt
Sink: C0644 20 SampleFile.txt
SampleFile.txt
100%
20
0.0KB/s
00:00
Note
如果您收到一条“bash: scp: command not found”错误,则必须先在您的 Linux 实例上
安装 scp。对于某些操作系统,此命令会位于 openssh-clients 程序包中。对于 Amazon
Linux 变体(如经 Amazon ECS 优化的 AMI),使用以下命令安装 scp.
[ec2-user ~]$ sudo yum install -y openssh-clients
若要反方向传输文件(从 Amazon EC2 实例中传输到本地计算机),则只需要简单地颠倒主机参数的顺
序。例如,要将 SampleFile.txt 文件从您的 EC2 实例传回到您的本地计算机上的主目录,并且另存为
SampleFile2.txt,则可在您的本地计算机上使用以下命令。
scp -i /path/my-key-pair.pem [email protected]
aws.com:~/SampleFile.txt ~/SampleFile2.txt
使用 PuTTY 从 Windows 连接到 Linux 实例
Abstract
使用用于 Windows 的免费 SSH 客户端 PuTTY,从 Windows 连接到您的 Linux 实例。
启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。
Note
启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查
- 您可以在 Instances (实例) 页上的 Status Checks (状态检查) 列中查看此信息。
以下说明介绍如何使用 PuTTY(适用于 Windows 的免费 SSH 客户端)连接到您的实例。如果您在尝试
连接到您的实例时收到错误消息,请参阅排查实例的连接问题。
先决条件
使用 PuTTY 连接到您的 Linux 实例之前,请先完成以下先决条件:
243
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
• 安装 PuTTY
从 PuTTY 下载页面下载并安装 PuTTY。如果您安装的是旧版本的 PuTTY,建议您下载最新版本。确
保安装整个套件。
• 获得实例的 ID
您可以通过使用 Amazon EC2 控制台(位于 Instance ID (实例 ID) 列中)获得您的实例的 ID。如果您
愿意,您可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 获得实例的公有 DNS 名称
您可以使用 Amazon EC2 控制台获取实例的公有 DNS(勾选 Public DNS (公有 DNS) 列;如果此列处
于隐藏状态,请单击 Show/Hide (显示/隐藏) 图标并选择 Public DNS (公有 DNS))。如果您愿意,您
可以使用 describe-instances (AWS CLI) 或 ec2-describe-instances (Amazon EC2 CLI) 命令。
• 查找私有密钥
您需要使用您在启动实例时指定的密钥对的 .pem 文件的完全限定路径。
• 允许从您的 IP 地址到您的实例的入站 SSH 流量
确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。有关更多信息,请参阅授权网络
访问您的实例。
Important
默认情况下,您的默认安全组不允许传入 SSH 流量。
使用 PuTTYgen 转换您的私有密钥
PuTTY 本身不支持 Amazon EC2 生成的私有密钥格式 (.pem)。PuTTY 有一个名为 PuTTYgen 的工具,
可将密钥转换成所需的 PuTTY 格式 (.ppk)。您必须将私有密钥转换为此格式 (.ppk),然后才能尝试使用
PuTTY 连接到您的实例。
转换您的私有密钥
1.
2.
启动 PuTTYgen(例如,在“Start”菜单中,依次单击“All Programs > PuTTY > PuTTYgen ”)。
在 Type of key to generate (要生成的密钥类型) 下,选择 SSH-2 RSA。
3.
单击“Load”。在默认情况下,PuTTYgen 仅显示扩展名为 .ppk 的文件。要找到您的 .pem 文件,请
选择显示所有类型的文件的选项。
4.
为启动实例时指定的密钥对选择 .pem 文件,然后单击 Open。单击 OK (确定) 关闭确认对话框。
5.
单击 Save private key (保存私有密钥),以 PuTTY 可用的格式保存密钥。PuTTYgen 显示一条关于
在没有口令的情况下保存密钥的警告。单击 Yes (是)。
Note
私有密钥的口令是一层额外保护,因此,即使您的私有密钥被泄露,在没有口令的情况下,
该密钥仍不可用。使用口令的缺点是让自动化变得更难,因为登录到实例或复制文件到实例
需要进行人为干预。
244
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
6.
为该密钥指定与密钥对相同的名称(如,my-key-pair)。PuTTY 自动添加 .ppk 文件扩展名。
您的私有密钥格式现在是正确的 PuTTY 使用格式了。您现在可以使用 PuTTY 的 SSH 客户端连接到实
例。
启动 PuTTY 会话
通过以下过程使用 PuTTY 连接到您的 Linux 实例。您将需要已为私钥创建的 .ppk 文件。如果您在尝试
连接到您的实例时收到错误消息,请参阅排查实例的连接问题。
启动 PuTTY 会话
1.
(可选)您可以在本地系统(而不是实例)上使用以下命令之一验证实例上的 RSA 密钥指纹。如果
您从第三方的公用 AMI 启动了实例,则可能需要这样做。找到 SSH HOST KEY FINGERPRINTS 部
分,记下 RSA 指纹(例如 1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f)并将它与实
例的指纹进行比较。
• get-console-output (AWS CLI)
aws ec2 get-console-output --instance-id instance_id
• ec2-get-console-output (Amazon EC2 CLI)
ec2-get-console-output instance_id
Note
SSH HOST KEY FINGERPRINTS 部分仅在实例首次启动之后可用。
2.
3.
启动 PuTTY(在“Start”菜单中,单击“All Programs > PuTTY > PuTTY”)。
在“Category (类别)”窗格中,选择 Session (会话) 并填写以下字段:
a.
在 Host Name (主机名) 框中,输入 [email protected]_dns_name。确保为您的 AMI 指定
相应的用户名。例如:
• 对于 Amazon Linux AMI,用户名称是 ec2-user。
• 对于 RHEL5 AMI,用户名称为 root 或 ec2-user。
• 对于 Ubuntu AMI,用户名称是 ubuntu。
• 对于 Fedora AMI,用户名称为 fedora 或 ec2-user。
• 对于 SUSE Linux,用户名称是 root 或 ec2-user。
• 另外,如果 ec2-user 和 root 无法使用,请与 AMI 供应商核实。
b.
c.
在 Connection type (连接类型) 下,选择 SSH。
确保 Port (端口) 为 22。
245
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
4.
在 Category (类别) 窗格中,展开 Connection (连接),再展开 SSH,然后选择 Auth (身份验证)。完
成以下操作:
a.
b.
单击 Browse (浏览)。
选择您为密钥对生成的 .ppk 文件,然后单击 Open (打开)。
c.
(可选)如果打算稍后重新启动此会话,则可以保存此会话信息以便日后使用。在 Category (类
别) 树中选择 Session (会话),为 Saved Sessions (已存会话) 中的会话输入一个名称,然后单击
Save (保存)。
单击 Open (打开) 开始 PuTTY 会话。
d.
5.
如果这是您第一次连接到此实例,PuTTY 会显示安全警告对话框,询问您是否信任您要连接到的主
机。
6.
(可选)验证安全警报中的指纹是否与在步骤 1 中获取的指纹匹配。如果这些指纹不匹配,则表示有
人可能在试图实施“中间人”攻击。如果匹配,请继续到下一步。
单击 Yes (是)。此时会打开一个窗口并且您连接到了您的实例。
7.
246
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
Note
如果您在将私有密钥转换成 PuTTY 格式时指定了口令,当您登录到实例时,您必须提供该
口令。
如果您在尝试连接到您的实例时收到错误消息,请参阅排查实例的连接问题。
使用 PuTTY 安全复制客户端将文件传输到您的 Linux 实例
PuTTY 安全复制客户端 (PSCP) 是一个命令行工具,您可以用它在 Windows 计算机与 Linux 实例之间传
输文件。如果您更喜欢图形用户界面(GUI),您可以使用一种叫作“WinSCP”的开源 GUI 工具。有关更
多信息,请参阅 使用 WinSCP 将文件传输到您的 Linux 实例 (p. 247)。
要使用 PSCP,您将需要在使用 PuTTYgen 转换您的私有密钥 (p. 244)中生成的私有密钥。您还需要 Linux
实例的公有 DNS 地址。
以下示例将文件 Sample_file.txt 从 Windows 计算机传输到 Linux 实例中的 /usr/local 目录:
C:\> pscp -i C:\Keys\my-key-pair.ppk C:\Sample_file.txt [email protected]
lic_dns:/usr/local/Sample_file.txt
使用 WinSCP 将文件传输到您的 Linux 实例
WinSCP 是适用于 Windows 的基于 GUI 的文件管理器,您可以通过它来使用 SFTP、SCP、FTP 和 FTPS
协议将文件上传并传输到远程计算机。通过 WinSCP,您可以将 Windows 计算机中的文件拖放到 Linux
实例或同步这两个系统之间的所有目录结构。
要使用 WinSCP,您将需要在 使用 PuTTYgen 转换您的私有密钥 (p. 244) 中生成的私有密钥。您还需要
Linux 实例的公有 DNS 地址。
1.
2.
3.
4.
5.
从 http://winscp.net/eng/download.php 上下载并安装 WinSCP。对于大多数用户而言,采用默认安
装选项就可以了。
启动 WinSCP。
在 WinSCP login (WinSCP 登录) 屏幕中,对于 Host name (主机名),请输入实例的公有 DNS 地址。
对于 User name (用户名),请输入默认的 AMI 用户名。对于 Amazon Linux AMI,用户名是
ec2-user。对于 Red Hat AMI,用户名是 root,而对于 Ubuntu AMI,用户名则是 ubuntu。
为您的实例指定私有密钥。对于 Private key (私有密钥),请输入私有密钥的路径或单击“…”按钮以浏
览文件。有关更新的 WinSCP 版本,您需要单击 Advanced (高级) 打开高级网站设置,然后在 SSH
下单击 Authentication (身份验证) 以查找 Private key file (私有密钥文件) 设置。
Note
WinSCP 需要 PuTTY 私有密钥文件 (.ppk)。您可以使用 PuTTYgen 将 .pem 安全密钥文件
转换成 .ppk 格式。有关更多信息,请参阅 使用 PuTTYgen 转换您的私有密钥 (p. 244)。
6.
7.
(可选)在左侧面板中,单击 Remote directory (目录),然后,对于 Directories (远程目录),输入要
将文件添加到其中的目录路径。有关更新版本的 WinSCP,您需要单击 Advanced (高级) 打开高级网
站设置,然后在 Environment (环境) 下单击 Directories (目录) 查找 Remote directory (远程目录) 设
置。
单击 Login (登录) 进行连接,然后单击 Yes (是) 将主机指纹添加到主机缓存。
247
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
8.
建立连接后,在连接窗口中,您的 Linux 实例显示在右侧,本地计算机显示在左侧。您可以直接将文
件从本地计算机拖放到远程文件系统。有关 WinSCP 的更多信息,请参阅 http://winscp.net/eng/docs/
start 中的项目文档。
Note
如果您收到一条“Cannot execute SCP to start transfer”错误,则必须先在您的
Linux 实例上安装 scp。对于某些操作系统,此命令会位于 openssh-clients 程序包中。
对于 Amazon Linux 变体(如经 Amazon ECS 优化的 AMI),使用以下命令安装 scp.
[ec2-user ~]$ sudo yum install -y openssh-clients
使用 MindTerm 连接到 Linux 实例
Abstract
使用 MindTerm 从 Web 浏览器连接到您的实例。
启动您的实例之后,您可以连接到该实例,然后像使用您面前的计算机一样来使用它。
Note
启动实例后,需要几分钟准备好实例,以便您能连接到实例。检查您的实例是否通过了状态检查
- 您可以在 Instances (实例) 页上的 Status Checks (状态检查) 列中查看此信息。
以下说明介绍如何使用 MindTerm 通过 Amazon EC2 控制台连接到您的实例。如果您在尝试连接到您的
实例时收到错误消息,请参阅排查实例的连接问题。
248
Amazon Elastic Compute Cloud Linux 实例用户指南
连接
Important
Chrome 浏览器不支持 NPAPI 插件,这会阻止加载 MindTerm 客户端。有关更多信息,请参阅
Chromium NPAPI 弃用文章。您可以使用 Firefox、Safari,或者 Internet Explorer 9 或更高版本。
先决条件
• 安装 Java
您的 Linux 计算机很可能已经包含有 Java。如果未包含,请参阅如何在 Web 浏览器中启用 Java?在
Windows 或 Mac 客户端上,您必须使用管理员证书运行浏览器。对于 Linux 客户端,如果您不是作为
root 用户登录,则可能还需执行其他步骤。
• 在 浏览器中启用 Java
有关说明,请参阅 https://java.com/en/download/help/enable_browser.xml。
• 查找私有密钥
您需要使用您在启动实例时指定的密钥对的 .pem 文件的完全限定路径。
• 允许从您的 IP 地址到您的实例的入站 SSH 流量
确保与您的实例关联的安全组允许来自您的 IP 地址的传入 SSH 流量。有关更多信息,请参阅授权网络
访问您的实例。
Important
默认情况下,您的默认安全组不允许传入 SSH 流量。
启动 MindTerm
使用含有 MindTerm 的 Web 浏览器连接到您的实例
1.
2.
3.
4.
在 Amazon EC2 控制台的导航窗格中,单击 Instances (实例)。
选择该实例并单击 Connect (连接)。
单击 A Java SSH client directly from my browser (Java required) (直接从我的浏览器连接 Java SSH
客户端 (需要安装 Java))。
Amazon EC2 自动检测您实例的公有 DNS 名称并为您将名称填充到 Public DNS (公有 DNS)。它还
会检测您启动实例时指定的密钥对名称。完成以下步骤,然后单击 Launch SSH Client (启动 SSH 客
户端)。
a.
在 User name (用户名) 中,输入用户名以登录您的实例。
Tip
对于 Amazon Linux,用户名称是 ec2-user。对于 RHEL5,用户名称是 root 或
ec2-user。对于 Ubuntu,用户名称是 ubuntu。对于 Fedora,用户名称是 fedora
或 ec2-user。对于 SUSE Linux,用户名称是 root 或 ec2-user。另外,如果
ec2-user 和 root 无法使用,请与您的 AMI 供应商核实。
b.
在 Private key path (私有密钥路径) 中,输入私有密钥 (.pem) 文件的完全限定路径,包括密钥
对名称;例如:
C:\KeyPairs\my-key-pair.pem
c.
(可选)单击 Store in browser cache (存储在浏览器缓存中) 将私有密钥的位置存储在您的浏览
器缓存中。这使得 Amazon EC2 可在后续的浏览器会话中检测私有密钥的位置,直到您清除浏
览器缓存。
249
Amazon Elastic Compute Cloud Linux 实例用户指南
停止和启动
5.
6.
7.
8.
如有必要,请单击 Yes (是) 以信任证书,然后单击 Run (运行) 以运行 MindTerm 客户端。
如果这是您第一次运行 MindTerm,则会出现一系列对话框,要求您接受许可协议、确认主目录的设
置以及确认已知主机目录的设置。确认这些设置。
一个对话框会提示您向已知主机集添加主机。如果您不想在本地计算机上存储主机密钥信息,请单击
No (否)。
此时会打开一个窗口并且您连接到了您的实例。
Note
如果您在上一步中单击了 No (否),则将看到以下消息,内容应如下:
Verification of server key disabled in this session.
停止和启动您的实例
Abstract
停止和启动将 Amazon EBS 卷作为根设备的任何实例。
您可以停止和重启将 Amazon EBS 卷作为其根设备的实例。实例会保留其实例 ID,但是可以按照“概述”
部分所述的方式进行修改。
当您终止一个实例时,我们会将其关闭。我们不对已停止的示例收取小时使用费或数据传输费,但我们会
对所有 Amazon EBS 卷的存储收费。您每次启动一个已停止的实例,我们都会计为一个实例小时,即使
这些转换在一小时内发生多次也是如此。
当实例停止时,您可以像对待所有其他卷一样修改根卷(例如,修复文件系统问题或更新软件)。您只需
从停止的实例断开卷,将其连接到运行中的实例并进行修改,然后将其断开,再次连接到该已停止实例即
可。请确保您已使用设备名称被指定为实例块储存设备映射中的根设备对其进行了重新连接。
当您决定不再需要实例时,可以终止该实例。实例的状态一旦变为 shutting-down 或 terminated,
我们就会停止收取与该实例相关的费用。有关更多信息,请参阅 终止您的实例 (p. 255)。
内容
• 概述 (p. 250)
• 停止和启动您的实例 (p. 251)
• 修改已停止的实例 (p. 252)
• 故障排除 (p. 252)
概述
您只能停止由 Amazon EBS 支持的实例。要验证您的实例的根设备类型,请描述实例并检查其根卷的设
备类型是 ebs(由 Amazon EBS 支持的实例)还是 instance store(由实例存储支持的实例)。有关
更多信息,请参阅 确定 AMI 的根设备类型 (p. 65)。
当您停止运行实例时,将出现以下情况:
• 实例正常关闭并停止运行;其状态变为 stopping,然后变为 stopped。
• 所有 Amazon EBS 卷保持连接至实例,而且其数据将保留下来。
• 存储在主机 RAM 或主机实例存储卷中的所有数据都不复存在。
250
Amazon Elastic Compute Cloud Linux 实例用户指南
停止和启动
• 实例会在启动时迁移到新的底层主机。
• EC2-Classic:当您停止实例时,我们会释放该实例的公有和私有 IP 地址,并在重启实例时为其分配新
的 IP 地址。
EC2-VPC:实例在停止和重启时会保留其私有 IP 地址。我们会在您重启它时释放公有 IP 地址并分配
新地址。
• EC2-Classic:对于与该实例关联的所有弹性 IP 地址,我们会取消其关联。您需要对未与该实例关联的
弹性 IP 地址支付费用。当您重启实例时,必须将弹性 IP 地址与该实例关联;我们不自动执行此操作。
EC2-VPC:实例会保留其关联的弹性 IP 地址. 您需要对所有与已停止实例关联的弹性 IP 地址付费。
• 当您停止和启动 Windows 实例时,EC2Config 服务会对该实例执行任务,例如,更改所有附加的
Amazon EBS 卷的驱动器号。有关这些默认值以及如何更改它们的更多信息,请参阅 Amazon EC2 用
户指南(适用于 Microsoft Windows 实例) 中的使用 EC2Config 服务配置 Windows 实例。
• 如果您在负载均衡器上注册该实例,那么当您停止并重启该实例后,负载均衡器很可能不能向您的实例
传输数据流量。停止实例后,您必须从该负载均衡器取消注册,然后在启动后重新注册。有关更多信
息,请参阅 Elastic Load Balancing 开发人员指南 中的利用负载均衡器注销和注册 EC2 实例。
• 如果您的实例处于 Auto Scaling 组中,则 Auto Scaling 服务会将已停止的实例标记为运行状况不佳,
可能会终止它并启动替换实例。有关更多信息,请参阅 Auto Scaling 开发人员指南 中的 Auto Scaling
实例的健康检查。
• 当您停止 ClassicLink 实例时,它会从链接的 VPC 取消链接。您必须在重新启动之后将实例再次链接
到 VPC。有关 ClassicLink 的更多信息,请参阅ClassicLink (p. 520)。
有关更多信息,请参阅 重启、停止与终止之间的区别 (p. 229)。
只有在实例停止时,您才能修改以下实例属性:
• 实例类型
• 用户数据
• 内核
• RAM 磁盘
如果您在实例运行时尝试修改这些属性,Amazon EC2 会返回 IncorrectInstanceState 错误。
停止和启动您的实例
您可以使用控制台或命令行启动和停止由 Amazon EBS 支持的实例。
在默认情况下,当您通过由 Amazon EBS 支持的实例启动关闭(使用 shutdown、halt 或 poweroff 命令)
时,该实例会停止。您可以更改此行为,以便使其终止。有关更多信息,请参阅 更改实例的启动关闭操
作 (p. 257)。
使用控制台停止和启动由 Amazon EBS 支持的实例
1.
2.
3.
在导航窗格中,选择 Instances,然后选择实例。
[EC2-Classic] 如果实例具有关联的弹性 IP 地址,则写下详细信息窗格中显示的弹性 IP 地址和实例
ID。
依次选择 Actions、Instance State 和 Stop。如果 Stop (停止) 处于禁用状态,则表示要么实例已停
止,要么其根设备是一个实例存储卷。
Warning
当您停止某个实例时,任何实例存储卷上的数据都将被擦除。因此,如果实例存储卷上有任
何您要保留的数据,请确保将其备份到持久性存储。
251
Amazon Elastic Compute Cloud Linux 实例用户指南
停止和启动
4.
在确认对话框中,选择 Yes, Stop。停止实例可能需要几分钟时间。
5.
[EC2-Classic] 当实例状态变为stopped时,详细信息窗格中的 Elastic IP (弹性 IP)、Public DNS (公
有 DNS)、Private DNS (私有 DNS) 和 Private IPs (私有 IP) 字段为空,表明旧值不再与实例关联。
当实例停止时,您可以修改特定的实例属性。有关更多信息,请参阅 修改已停止的实例 (p. 252)。
6.
7.
要重启已停止的实例,请选择该实例,然后依次选择 Actions、Instance State 和 Start。
在确认对话框中,选择 Yes, Start。实例进入running状态可能需要几分钟时间。
8.
[EC2-Classic] 当实例状态为 running 时,详细信息窗格中的 Public DNS (公有 DNS)、Private DNS
(私有 DNS) 和 Private IPs (私有 IP) 字段包含我们指定给实例的新值。
[EC2-Classic] 如果您的实例具有关联的弹性 IP 地址,则您必须按以下方式对其进行重新关联:
a.
b.
在导航窗格中,选择 Elastic IPs。
选择您在停止实例前所记下的弹性 IP 地址。
c.
d.
选择 Actions,然后选择 Associate Address。
选择您在停止实例前所记下的实例 ID,然后选择 Associate。
使用命令行停止和启动由 Amazon EBS 支持的实例
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• stop-instances 和 start-instances (AWS CLI)
• ec2-stop-instances 和 ec2-start-instances (Amazon EC2 CLI)
• Stop-EC2Instance 和 Start-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)
修改已停止的实例
您可以使用 AWS 管理控制台或命令行界面来更改已停止实例的实例类型、用户数据或 EBS 优化属性。
您无法使用 AWS 管理控制台修改 DeleteOnTermination、内核或 RAM 磁盘属性。
修改实例属性
• 要更改实例类型,请参阅调整您的实例大小 (p. 146)。
• 要更改您的实例的用户数据,请参阅添加用户数据 (p. 290)。
• 要为您的实例启用或禁用 EBS 优化,请参阅修改 EBS 优化 (p. 631)。
• 要更改您的实例的根卷的 DeleteOnTermination 属性,请参阅更新正在运行的实例的块储存设备映
射 (p. 666)。
使用命令行修改实例属性
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• modify-instance-attribute (AWS CLI)
• ec2-modify-instance-attribute (Amazon EC2 CLI)
• Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)
故障排除
如果停止了 Amazon EBS 支持的实例,该实例“卡在”了 stopping 状态,则可以强制停止它。有关更多
信息,请参阅 排查实例的停止问题 (p. 706)。
252
Amazon Elastic Compute Cloud Linux 实例用户指南
重启
重启您的实例
Abstract
使用 Amazon EC2 重启实例以便进行所需维护。
实例重启相当于操作系统重启。在许多情况下,只需要几分钟时间即可重启您的实例。重启实例时,其仍
驻留在相同的物理主机上,因此您的实例将保留其公有 DNS 名称、私有 IP 地址及其实例存储卷上的任
何数据。
重启实例不会启动新的实例计费时间,这与停止并重新启动您的实例不同。
为进行必要的维护(例如,为了应用需要重启的升级),我们可能会为您的实例预定一次重启。您无需进
行任何操作;我们建议您在其预定重启窗口期间等待重启完成。有关更多信息,请参阅 实例的计划事
件 (p. 377)。
我们建议您使用 Amazon EC2 来重启实例,而非在实例中运行操作系统重启命令。如果您使用 Amazon
EC2 重启实例,而实例在 4 分钟内未完全关闭,我们会执行硬重启。如果您使用 AWS CloudTrail,则使
用 Amazon EC2 重启实例还会创建一条关于实例重启时间的 API 记录。
使用控制台重启实例
1.
2.
3.
4.
打开 Amazon EC2 控制台。
在导航窗格中,单击 Instances (实例)。
选择实例,单击 Actions (操作),选择 Instance State (实例状态),然后单击 Reboot (重启)。
当系统提示进行确认时,单击 Yes, Reboot (是,重启)。
使用命令行重启实例
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• reboot-instances (AWS CLI)
• ec2-reboot-instances (Amazon EC2 CLI)
• Restart-EC2Instance(适用于 Windows PowerShell 的 AWS 工具)
实例停用
Abstract
确定计划停用的实例,以及要用于管理停用的操作。
实例计划在 AWS 检测到托管实例的底层硬件发生无法弥补的故障时停用。当实例到达其计划的停用日期
时,AWS 会将其停止或终止。如果实例的根设备是 Amazon EBS 卷,将停止实例,您可随时重新启动
它。启动停止的实例会将其迁移到新的硬件。如果实例的根设备是实例存储卷,实例将终止,且无法再次
使用。
主题
• 确认计划停用的实例 (p. 254)
• 使用计划停用的实例 (p. 254)
有关实例事件类型的更多信息,请参阅实例的计划事件 (p. 377)。
253
Amazon Elastic Compute Cloud Linux 实例用户指南
停用
确认计划停用的实例
如果实例已计划停用,您将在事件发生之前收到包含实例 ID 和停用日期的电子邮件。该电子邮件将发送
至与您账户关联的地址,也就是您用于登录 AWS 管理控制台 的电子邮件地址。如果您使用的是并不定期
检查的电子邮件账户,则可以使用 Amazon EC2 控制台或命令行确定是否有计划停用的实例。要更新您
账户的联系人信息,请转到 Account Settings (账户设置) 页面。
使用控制台确认计划停用的实例
1.
2.
打开 Amazon EC2 控制台。
在导航窗格中,单击 EC2 Dashboard (EC2 控制面板)。在 Scheduled Events (计划的事件) 下方,您
可以看到与您的 Amazon EC2 实例和卷相关的事件,这些事件按区域划分。
3.
4.
如果某个实例列有计划的事件,请单击区域名称下方的链接访问 Events (事件) 页面。
Events (事件) 页面会列出与事件相关的所有资源。要查看计划停用的实例,请从第一个筛选列表中
选择实例资源,然后从第二个筛选列表中选择实例停用。
如果筛选结果显示有实例被计划停用,请选择该实例,并注意详细信息窗格中开始时间字段中的日期
和时间。这就是您的实例停用的日期。
5.
使用命令行确认计划停用的实例
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• describe-instance-status (AWS CLI)
• ec2-describe-instance-status (Amazon EC2 CLI)
• Get-EC2InstanceStatus (适用于 Windows PowerShell 的 AWS 工具)
使用计划停用的实例
当您的实例已计划停用时,有多种可使用的操作。您所采取的操作取决于您的实例根设备是 Amazon EBS
卷还是实例存储卷。如果不知道实例根设备的类型,可使用 Amazon EC2 控制台或命令行进行查看。
确定您的实例根设备的类型
使用控制台确定您的实例根设备的类型
1.
2.
3.
在导航窗格中,单击 Events (事件)。按上述确认计划停用的实例 (p. 254)步骤所示,使用筛选列表确
认停用实例。
在 Resource ID (资源 ID) 列中,单击实例 ID 转到 Instances (实例) 页面。
选择实例并找到 Description (描述) 选项卡中的 Root device type (根设备类型) 字段。如果值为 ebs,
则说明您的实例是由 EBS 提供支持。如果值为 instance-store,则说明您的实例是由实例存储提
供支持。
使用命令行确定您的实例根设备的类型
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
254
Amazon Elastic Compute Cloud Linux 实例用户指南
终止
• describe-instances (AWS CLI)
• ec2-describe-instances (Amazon EC2 CLI)
• Get-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)
管理计划停用的实例
您可以执行下列操作中的一种,以保存将要停用的实例上的数据。务必要在实例停止日期前采取此操作,
以防止意外的停机和数据丢失。
Warning
如果超过停用日期,由实例存储提供支持的实例就会停止,且无法恢复实例或存储在该实例上的
任何数据。无论您的实例根设备是哪种类型,存储在实例存储卷上的数据都会在停用实例后丢
失,即使它们附加到由 EBS 提供支持的实例也是如此。
实例根设备类型
操作
EBS
等到计划的停用日期(实例停止的日期),或在停用日期之前自行停止实例。
您可随时重新启动实例。有关停止和启动实例以及停止实例后的预期情况(例
如对与实例关联的公有、私有和弹性 IP 地址的影响)的更多信息,请参阅停
止和启动您的实例 (p. 250)。
EBS
从实例创建由 EBS 提供支持的 AMI,并启动替代实例。有关更多信息,请参
阅 创建 Amazon EBS 支持的 Linux AMI (p. 83)。
实例存储
从使用 AMI 工具的实例创建由实例存储提供支持的 AMI,并启动替换实例。
有关更多信息,请参阅 创建由实例存储支持的 Linux AMI (p. 86)。
实例存储
将数据传输到 EBS 卷,拍摄卷快照,然后从该快照创建 AMI,从而将您的实
例转换为由 EBS 提供支持的实例。您可以从新 AMI 启动替换实例。有关更
多信息,请参阅 将实例存储支持的 AMI 转换为 Amazon EBS 支持的
AMI (p. 97)。
终止您的实例
Abstract
终止不再需要的实例并停止该实例产生的费用。
当您决定不再需要实例时,可以终止该实例。实例的状态一旦变为 shutting-down 或 terminated,
就不再产生与该实例相关的费用。
在您终止之后,您将无法连接至或重新启动实例。但是您可以使用同一 AMI 启动其他实例。如果您宁愿
停止并重启您的实例,请参阅停止和启动您的实例 (p. 250)。有关更多信息,请参阅重启、停止与终止之
间的区别 (p. 229)。
主题
• 实例终止 (p. 256)
•
•
•
•
终止实例 (p. 256)
为实例启用终止保护 (p. 256)
更改实例的启动关闭操作 (p. 257)
在实例终止时保留 Amazon EBS 卷 (p. 258)
• 故障排除 (p. 260)
255
Amazon Elastic Compute Cloud Linux 实例用户指南
终止
实例终止
在您终止实例之后,短时间内仍可在控制台中看见该实例,然后该条目将自动被删除。您无法自行删除已
终止的实例条目。
当实例终止时,与该实例关联的所有实例存储卷上的数据都会被删除。
默认情况下,当实例终止时,Amazon EBS 根设备卷将自动删除。但是,在默认情况下,即使在实例终
止后,您在启动时挂载的所有额外 EBS 卷或您挂载到现有实例的所有 EBS 卷也会保留。这一操作是由卷
的 DeleteOnTermination 属性控制的,您可以对其进行修改。有关更多信息,请参阅 在实例终止时保
留 Amazon EBS 卷 (p. 258)。
您可以使用 AWS 管理控制台、CLI 和 API 防止实例被别人意外终止。此功能对 Amazon EC2 实例存储
支持的实例和 Amazon EBS 支持的实例都适用。每个实例的 DisableApiTermination 属性默认值均
为 false(可以通过 Amazon EC2 终止实例)。您可以在实例运行或停止时修改此实例属性(如果是由
Amazon EBS 支持的实例)。有关更多信息,请参阅 为实例启用终止保护 (p. 256)。
当使用操作系统中的系统关闭命令从实例启动关闭时,您可以控制是否应该关闭或终止实例。有关更多信
息,请参阅 更改实例的启动关闭操作 (p. 257)。
如果您在实例终止时运行脚本,您的实例可能会出现异常终止的情况,因为我们无法确保关闭脚本运行。
Amazon EC2 会尝试彻底关闭实例,并运行任一系统关闭脚本;但某些事件(如硬件故障)可能会妨碍
这些系统关闭脚本的运行。
终止实例
您可以使用 AWS 管理控制台 或命令行终止实例。
使用控制台终止实例
1.
2.
3.
4.
5.
在终止实例前,请验证您不会丢失任何数据,方法是确认您的 Amazon EBS 卷不会在终止时被删除,
并且您已将所需数据从实例存储卷复制到 Amazon EBS 或 Amazon S3。
打开 Amazon EC2 控制台。
在导航窗格中,单击 Instances (实例)。
选择实例,单击 Actions (操作),选择 Instance State (实例状态),然后单击 Terminate (终止)。
当系统提示进行确认时,单击 Yes, Terminate (是,终止)。
使用命令行终止实例
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• terminate-instances (AWS CLI)
• ec2-terminate-instances (Amazon EC2 CLI)
• Stop-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)
为实例启用终止保护
默认情况下,您可以使用 Amazon EC2 控制台、命令行界面或 API 终止您的实例。如果您希望使用
Amazon EC2 防止实例意外终止,可以启用实例终止保护。DisableApiTermination 属性可控制是否
可以使用控制台、CLI 或 API 终止实例。在默认情况下,终止保护处于禁用状态。您可以在实例启动、运
行或已停止时设置该属性值(针对由 Amazon EBS 支持的实例)。
当设置 InstanceInitiatedShutdownBehavior 属性时,DisableApiTermination 属性不会阻止
您通过从实例启动关闭来终止实例(使用操作系统的系统关闭命令)。有关更多信息,请参阅 更改实例
的启动关闭操作 (p. 257)。
256
Amazon Elastic Compute Cloud Linux 实例用户指南
终止
您无法使用终止保护来阻止属于 Auto Scaling 组一部分的实例终止。不过,您可以指定首先应终止哪些
实例。有关更多信息,请参阅 Auto Scaling 开发人员指南 中的选择终止策略。
您不能为竞价型实例启用终止保护 – 当竞价价格超过您的出价时,竞价型实例将终止。不过,您可以准备
应用程序来处理竞价型实例中断。有关更多信息,请参阅 竞价型实例中断 (p. 212)。
您可以使用 AWS 管理控制台 或命令行启用或禁用终止保护。
要在实例启动时启用终止保护
1.
2.
在 Amazon EC2 控制台的控制面板中,单击 Launch Instance (启动实例) 并按照向导中的说明操作。
在 Configure Instance Details (配置实例详细信息) 页面上,选中 Enable termination protection (启用
终止保护) 复选框。
启用正在运行或已停止的实例的终止保护
1.
选择实例,单击 Actions (操作),然后单击 Change Termination Protection (更改终止保护)。
2.
单击 Yes, Enable (是,启用)。
禁用正在运行或已停止的实例的终止保护
1.
选择实例,单击 Actions (操作),选择 Instance Settings (实例设置),然后单击 Change Termination
Protection (更改终止保护)。
2.
单击 Yes, Disable (是,禁用)。
使用命令行启用或禁用终止保护
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• modify-instance-attribute (AWS CLI)
• ec2-modify-instance-attribute (Amazon EC2 CLI)
• Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)
更改实例的启动关闭操作
在默认情况下,当通过由 Amazon EBS 支持实例使用关闭命令启动关闭(使用 shutdown、halt 或 poweroff
等命令)时,该实例会停止。您可以使用实例的 InstanceInitiatedShutdownBehavior 属性更改此
操作,以便终止实例。您可以在实例运行或停止时更新此属性。
您可以使用 AWS 管理控制台 或命令行更新 InstanceInitiatedShutdownBehavior 属性。
使用控制台更改实例的关闭行为
1.
2.
3.
4.
打开 Amazon EC2 控制台。
在导航窗格中,单击 Instances (实例)。
选择实例,单击 Actions (操作),选择 Instance Settings (实例设置),然后单击 Change Shutdown
Behavior (更改关闭操作)。已选定当前操作。
要更改该操作,请从 Shutdown behavior (关闭操作) 列表中选择一个选项,然后单击 Apply (应用)。
257
Amazon Elastic Compute Cloud Linux 实例用户指南
终止
使用命令行更改实例的关闭行为
您可以使用以下任一命令。有关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• modify-instance-attribute (AWS CLI)
• ec2-modify-instance-attribute (Amazon EC2 CLI)
• Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)
在实例终止时保留 Amazon EBS 卷
当实例终止时,Amazon EC2 会使用每个挂载的 Amazon EBS 卷的 DeleteOnTermination 属性的值
来确定是保留还是删除该卷。
默认情况下,实例的根卷的 DeletionOnTermination 属性将设置为 true。因此,当某个实例终止时,
默认为删除该实例的根卷。
默认情况下,当您将 EBS 卷挂载到某个实例时,其 DeleteOnTermination 属性将设置为 false。因
此,默认为保留这些卷。在该实例终止后,您可以为保留的卷拍摄快照,或将其挂载到另一个实例。
要验证使用中的 EBS 卷的 DeleteOnTermination 属性的值,请查看该实例的块储存设备映射。有关
更多信息,请参阅 查看实例块储存设备映射中的 EBS 卷 (p. 666)。
在启动该实例或在该实例正在运行时,您可以更改卷的 DeleteOnTermination 属性的值。
示例
• 使用控制台将根卷更改为在启动时持久保留 (p. 258)
• 使用命令行将根卷更改为在启动时持久保留 (p. 259)
• 使用命令行更改要持久保留正在运行的实例的根卷 (p. 259)
使用控制台将根卷更改为在启动时持久保留
当您启动实例时,可以使用控制台更改 DeleteOnTermination 属性。要对正在运行的实例更改此属
性,您必须使用命令行。
使用控制台在启动时更改实例要持久保留的根卷
1.
打开 Amazon EC2 控制台。
2.
3.
从控制台控制面板中,单击 Launch Instance (启动实例)。
在 Choose an Amazon Machine Image (AMI) (选择一个Amazon 系统映像(AMI)) 页上,选择某个
AMI,然后单击 Select (选择)。
4.
遵循向导完成 Choose an Instance Type (选择一个实例类型) 和 Configure Instance Details (配置实
例详细信息) 页面。
258
Amazon Elastic Compute Cloud Linux 实例用户指南
终止
5.
6.
在 Add Storage (添加存储) 页面上,取消选中根卷的 Delete On Termination (终止时删除) 复选框。
完成其余向导页面,然后单击 Launch (启动)。
您可以通过实例的详细信息窗格查看根设备卷的详细信息以验证设置。在 Block devices (块储存设备) 旁,
单击根设备卷的条目。默认情况下,Delete on termination (终止时删除) 为 True。如果您更改默认行为,
Delete on termination (终止时删除) 将为 False。
使用命令行将根卷更改为在启动时持久保留
当您启动实例时,您可以使用下列命令之一将根设备卷更改为持久保留。根设备通常是 /dev/sda1。有
关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• run-instances (AWS CLI)
• ec2-run-instances (Amazon EC2 CLI)
• New-EC2Instance (适用于 Windows PowerShell 的 AWS 工具)
例如,将以下选项添加到 run-instances 命令:
--block-device-mappings file://mapping.json
在 mapping.json 中指定以下内容:
[
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": false,
"SnapshotId": "snap-b047276d",
"VolumeType": "gp2"
}
}
]
使用命令行更改要持久保留正在运行的实例的根卷
您可以使用下列命令之一将正在运行的实例的根设备卷更改为持久保留。根设备通常是 /dev/sda1。有
关这些命令行界面的更多信息,请参阅 访问 Amazon EC2 (p. 3)。
• modify-instance-attribute (AWS CLI)
• ec2-modify-instance-attribute (Amazon EC2 CLI)
• Edit-EC2InstanceAttribute (适用于 Windows PowerShell 的 AWS 工具)
例如,使用以下 命令:
$ aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --blockdevice-mappings file://mapping.json
在 mapping.json 中指定以下内容:
[
{
259
Amazon Elastic Compute Cloud Linux 实例用户指南
恢复
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": false
}
}
]
故障排除
如果您的实例处于 shutting-down 状态的时间超出正常范围,Amazon EC2 服务中的自动进程最终将
对其进行清理(终止)。有关更多信息,请参阅 排查实例的终止(关闭)问题 (p. 707)。
恢复您的实例
Abstract
如果您的 Amazon EC2 实例因底层硬件故障而受损,您可以通过创建可恢复实例的 Amazon CloudWatch 警报来恢
复该实例。
您可以创建 Amazon CloudWatch 警报用于监控 Amazon EC2 实例,并且在实例受损(由于发生底层硬
件故障或需要 AWS 参与才能修复的问题)时自动恢复实例。恢复的实例与原始实例相同,包括实例 ID、
私有 IP 地址、弹性 IP 地址以及所有实例元数据。有关使用 Amazon CloudWatch 警报恢复实例的更多信
息,请参阅创建停止、终止、重启或恢复实例的警报 (p. 413)。要对实例恢复故障进行故障排除,请参阅
Amazon EC2 用户指南(适用于 Linux 实例) 中的排除实例恢复故障。
当 StatusCheckFailed_System 警报触发且恢复操作启动时,您在创建警报及相关恢复操作时所选择
的 Amazon SNS 主题将向您发出通知。在实例恢复过程中,实例将在重启时迁移,并且内存中的所有数
据都将丢失。该过程完成后,您将收到一封电子邮件通知,其中包括恢复尝试的状态以及任何进一步的指
示。您会注意到,实例在已恢复的实例上重启。
导致系统状态检查出现故障的问题示例包括:
•
•
•
•
网络连接丢失
系统电源损耗
物理主机上的软件问题
物理主机上的硬件问题
Important
恢复操作仅受到以下项支持:
• C3、C4、M3、M4、R3 和 T2 实例类型。
• 亚太区域(新加坡)、亚太地区(悉尼)、亚太地区(东京)地区、欧洲(爱尔兰)、欧洲
(法兰克福)、南美洲(圣保罗)、美国东部(弗吉尼亚北部)、美国西部(加利福尼亚北
部)、美国西部(俄勒冈) 和 亚太区域 (首尔) 区域中的实例。
• VPC 中的实例。
Note
如果您的实例有公有 IP 地址,它会在恢复后保留相同的公有 IP 地址。
• 使用共享租赁的实例(实例的租赁属性设置为 default)。
• 完全使用 Amazon EBS 存储的实例。
260
Amazon Elastic Compute Cloud Linux 实例用户指南
配置实例
目前,EC2-Classic 实例、专用租赁实例、在专用主机上运行的实例以及使用任何实例存储卷的
实例(包括使用实例存储卷的块储存设备映射启动的实例)不支持恢复操作。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果您使用的是 IAM 角色(如 Amazon EC2 实例配置文件),那么无法使用警报操作停止或终
止实例。但是,您仍然可以查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto
Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全证书,则无法使用
警报操作来停止或终止 Amazon EC2 实例。
配置您的 Amazon Linux 实例
Abstract
自定义您的 Amazon Linux 实例。
在成功启动和登录您的 Amazon Linux 实例之后,您可以对其进行修改。可以通过许多不同方式配置实例
以满足特定应用程序的需求。下面是一些可帮助您入门的常见任务。
内容
• 常见配置方案 (p. 262)
• 在 Linux 实例上管理软件 (p. 262)
• 在 Linux 实例上管理用户账户 (p. 270)
• 您的 EC2 实例的处理器状态控制 (p. 272)
• 为 Linux 实例设置时间 (p. 276)
• 更改 Linux 实例的主机名 (p. 280)
• 在 Linux 实例上设置动态 DNS (p. 282)
• 启动时在 Linux 实例上运行命令 (p. 284)
• 实例元数据和用户数据 (p. 287)
261
Amazon Elastic Compute Cloud Linux 实例用户指南
常见配置方案
常见配置方案
Amazon Linux 的基本发布版包含基本服务器操作所需的许多软件包和实用工具。但是,各种软件存储库
还提供许多软件包,还有更多软件包可供您从源代码进行构建。有关从这些位置安装和构建软件的更多信
息,请参阅在 Linux 实例上管理软件 (p. 262)。
Amazon Linux 实例预配置有 ec2-user 账户,但是,您可能需要添加没有超级用户权限的其他用户账
户。有关添加和删除用户账户的更多信息,请参阅在 Linux 实例上管理用户账户 (p. 270)。
Amazon Linux 实例的默认时间配置使用网络时间协议在实例上设置系统时间。默认时区为 UTC。有关设
置实例的时区或使用自有时间服务器的更多信息,请参阅为 Linux 实例设置时间 (p. 276)。
如果您自己有注册了域名的网络,则可以更改实例的主机名,将它自身标识为该域名的一部分。您还可以
在不更改主机名设置的情况下更改系统提示,以显示更有意义的名称。有关更多信息,请参阅 更改 Linux
实例的主机名 (p. 280)。您可以将实例配置成使用动态 DNS 服务提供商。有关更多信息,请参阅 在 Linux
实例上设置动态 DNS (p. 282)。
当您在 Amazon EC2 中启动实例时,可以选择将用户数据传递到可用于执行常见配置任务甚至在实例启
动后运行脚本的实例。您可以将两类用户数据传递到 Amazon EC2,cloud-init 指令和 Shell 脚本。有
关更多信息,请参阅 启动时在 Linux 实例上运行命令 (p. 284)。
在 Linux 实例上管理软件
Abstract
在 Amazon Linux 实例上管理软件。
Amazon Linux 的基本发布版包含基本服务器操作所需的许多软件包和实用工具。但是,各种软件存储库
还提供许多软件包,还有更多软件包可供您从源代码进行构建。
内容
• 更新实例软件 (p. 263)
• 添加存储库 (p. 266)
• 查找软件包 (p. 267)
• 安装软件包 (p. 268)
• 准备编译软件 (p. 269)
使软件保持最新非常重要。Linux 发布版中的许多程序包会经常更新,以修复错误、添加功能,以及防止
安全漏洞。有关更多信息,请参阅 更新实例软件 (p. 263)。
默认情况下,Amazon Linux 实例启动时启用两个存储库:amzn-main 和 amzn-updates。尽管在 Amazon
Web Services 更新的这些存储库中有许多程序包,但是您需要安装的程序包可能在其他存储库中。有关
更多信息,请参阅 添加存储库 (p. 266)。有关在启用的存储库中查找程序包的帮助,请参阅查找软件
包 (p. 267)。有关在 Amazon Linux 实例上安装软件的信息,请参阅安装软件包 (p. 268)。
并非所有软件均可在存储库中存储的软件包中获得;有些软件必须在实例上从其源代码进行编译。有关更
多信息,请参阅 准备编译软件 (p. 269)。
Amazon Linux 实例使用 yum 程序包管理器管理其软件。yum 程序包管理器可安装、删除和更新软件,
以及管理每个包的所有依赖关系。基于 Debian 的 Linux 分发版本(如 Ubuntu)使用 apt-get 命令和 dpkg
程序包管理器,因此,下面几节中的 yum 示例不适用于这些分发版本。
262
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
更新实例软件
Abstract
更新 Amazon Linux 实例中的单个软件包或所有软件包。
使软件保持最新非常重要。Linux 发布版中的许多程序包会经常更新,以修复错误、添加功能,以及防止
安全漏洞。当您首次启动并连接到 Amazon Linux 实例时,您可能会看到出于安全目的要求您更新软件包
的消息。本节介绍如何更新整个系统或仅更新单个程序包。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
__| __|_ )
_| (
/
___|\___|___|
Amazon Linux AMI
https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/
There are 12 security update(s) out of 25 total update(s) available
Run "sudo yum update" to apply all updates.
[ec2-user ~]$
更新 Amazon Linux 实例上的所有程序包
1.
(可选)启动 Shell 窗口中的 screen 会话。有时您可能会遇到网络中断,这样会断开到实例的 SSH
连接。如果在较长的软件更新期间发生这种情况,实例处于混乱、但可恢复的状态。即使连接中断,
通过 screen 会话也可继续运行更新,您稍后可重新连接到此会话,不会有问题。
a.
执行 screen 命令开始会话。
[ec2-user ~]$ screen
b.
如果会话中断,请再次登录实例并列出可用屏幕。
[ec2-user ~]$ screen -ls
There is a screen on:
17793.pts-0.ip-12-34-56-78 (Detached)
1 Socket in /var/run/screen/S-ec2-user.
c.
使用 screen -r 命令和前一命令的进程 ID 重新连接到 screen。
[ec2-user ~]$ screen -r 17793
d.
使用完 screen 后,使用 exit 命令关闭会话。
[ec2-user ~]$ exit
[screen is terminating]
2.
运行 yum update 命令。您可以选择添加 --security 标记,这样仅应用安全更新。
263
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
[ec2-user ~]$ sudo yum update
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main
| 2.1 kB
00:00
amzn-updates
| 2.3 kB
00:00
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package aws-apitools-ec2.noarch 0:1.6.8.1-1.0.amzn1 will be updated
---> Package aws-apitools-ec2.noarch 0:1.6.10.0-1.0.amzn1 will be an update
---> Package gnupg2.x86_64 0:2.0.18-1.16.amzn1 will be updated
---> Package gnupg2.x86_64 0:2.0.19-8.21.amzn1 will be an update
---> Package libgcrypt.i686 0:1.4.5-9.10.amzn1 will be updated
---> Package libgcrypt.x86_64 0:1.4.5-9.10.amzn1 will be updated
---> Package libgcrypt.i686 0:1.4.5-9.12.amzn1 will be an update
---> Package libgcrypt.x86_64 0:1.4.5-9.12.amzn1 will be an update
---> Package openssl.x86_64 1:1.0.1e-4.53.amzn1 will be updated
---> Package openssl.x86_64 1:1.0.1e-4.54.amzn1 will be an update
---> Package python-boto.noarch 0:2.9.9-1.0.amzn1 will be updated
---> Package python-boto.noarch 0:2.13.3-1.0.amzn1 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
Package
Arch
Version
Repository
Size
================================================================================
Updating:
aws-apitools-ec2
noarch
1.6.10.0-1.0.amzn1
amzn-updates
14 M
gnupg2
x86_64
2.0.19-8.21.amzn1
amzn-updates
2.4 M
libgcrypt
i686
1.4.5-9.12.amzn1
amzn-updates
248 k
libgcrypt
x86_64
1.4.5-9.12.amzn1
amzn-updates
262 k
openssl
x86_64
1:1.0.1e-4.54.amzn1
amzn-updates
1.7 M
python-boto
noarch
2.13.3-1.0.amzn1
amzn-updates
1.6 M
Transaction Summary
================================================================================
Upgrade
6 Package(s)
Total download size: 20 M
Is this ok [y/N]:
3.
查看所列的程序包,键入 y 和 Enter 接受更新。更新系统上的所有程序包可能需要几分钟。yum 输
出显示更新运行状态。
Downloading Packages:
(1/6): aws-apitools-ec2-1.6.10.0-1.0.amzn1.noarch.rpm
(2/6): gnupg2-2.0.19-8.21.amzn1.x86_64.rpm
(3/6): libgcrypt-1.4.5-9.12.amzn1.i686.rpm
264
| 14 MB
| 2.4 MB
| 248 kB
00:00
00:00
00:00
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
(4/6): libgcrypt-1.4.5-9.12.amzn1.x86_64.rpm
| 262 kB
00:00
(5/6): openssl-1.0.1e-4.54.amzn1.x86_64.rpm
| 1.7 MB
00:00
(6/6): python-boto-2.13.3-1.0.amzn1.noarch.rpm
| 1.6 MB
00:00
------------------------------------------------------------------------------Total
28 MB/s | 20 MB
00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating
: libgcrypt-1.4.5-9.12.amzn1.x86_64
1/12
Updating
: gnupg2-2.0.19-8.21.amzn1.x86_64
2/12
Updating
: aws-apitools-ec2-1.6.10.0-1.0.amzn1.noarch
3/12
Updating
: 1:openssl-1.0.1e-4.54.amzn1.x86_64
4/12
...
Complete!
4.
(可选)重启实例以确保您使用的是来自更新的最新程序包和库;重启发生前不会加载内核更新。更
新任何 glibc 库后也应进行重启。对于用来控制服务的程序包的更新,重新启动服务便足以使更新
生效,但系统重启可确保所有之前的程序包和库更新都是完整的。
更新 Amazon Linux 实例上的单个程序包
使用此过程可更新单个程序包(及其依赖关系),而非整个系统。
1.
使用要更新的程序包的名称运行 yum update 命令。
[ec2-user ~]$ sudo yum update openssl
Loaded plugins: priorities, security, update-motd, upgrade-helper
amzn-main
| 2.1 kB
amzn-updates
| 2.3 kB
Setting up Update Process
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-4.53.amzn1 will be updated
---> Package openssl.x86_64 1:1.0.1e-4.54.amzn1 will be an update
--> Finished Dependency Resolution
00:00
00:00
Dependencies Resolved
================================================================================
Package
Arch
Version
Repository
Size
================================================================================
Updating:
openssl
x86_64
1:1.0.1e-4.54.amzn1
amzn-updates
1.7 M
Transaction Summary
================================================================================
265
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
Upgrade
1 Package(s)
Total download size: 1.7 M
Is this ok [y/N]:
2.
查看所列的程序包信息,键入 y 和 Enter 接受更新。如果存在必须解析的程序包依赖关系,有时会列
出多个数据包。yum 输出显示更新运行状态。
Downloading Packages:
openssl-1.0.1e-4.54.amzn1.x86_64.rpm
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Updating
: 1:openssl-1.0.1e-4.54.amzn1.x86_64
1/2
Cleanup
: 1:openssl-1.0.1e-4.53.amzn1.x86_64
2/2
Verifying : 1:openssl-1.0.1e-4.54.amzn1.x86_64
1/2
Verifying : 1:openssl-1.0.1e-4.53.amzn1.x86_64
2/2
| 1.7 MB
00:00
Updated:
openssl.x86_64 1:1.0.1e-4.54.amzn1
Complete!
3.
(可选)重启实例以确保您使用的是来自更新的最新程序包和库;重启发生前不会加载内核更新。更
新任何 glibc 库后也应进行重启。对于用来控制服务的程序包的更新,重新启动服务便足以使更新
生效,但系统重启可确保所有之前的程序包和库更新都是完整的。
添加存储库
Abstract
将其他软件存储库添加到 Amazon Linux 实例。
默认情况下,Amazon Linux 实例启动时启用两个存储库:amzn-main 和 amzn-updates。尽管在 Amazon
Web Services 更新的这些存储库中有许多程序包,但是您需要安装的程序包可能在其他存储库中。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
要使用 yum 从不同存储库安装程序包,您需要将存储库信息添加到 /etc/yum.conf 文件中,或者添加
到 /etc/yum.repos.d 目录中它自己的 repository.repo 文件中。您可以手动执行该操作,但大多
数 yum 存储库在其存储库 URL 提供各自的 repository.repo 文件。
要将 yum 存储库添加到 /etc/yum.repos.d
1.
找到 .repo 文件的位置。这随要添加的存储库而异。在该示例中,.repo 文件位于
https://www.example.com/repository.repo。
2.
使用 yum-config-manager 命令添加存储库。
266
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
[ec2-user ~]$ sudo yum-config-manager --add-repo https://www.example.com/re
pository.repo
Loaded plugins: priorities, update-motd, upgrade-helper
adding repo from: https://www.example.com/repository.repo
grabbing file https://www.example.com/repository.repo to /etc/yum.repos.d/re
pository.repo
repository.repo
| 4.0 kB
00:00
repo saved to /etc/yum.repos.d/repository.repo
要在 /etc/yum.repos.d 中启用 yum 存储库
•
使用 --enable repository 标志执行 yum-config-manager 命令。以下命令从 Fedora 项目启用
Extra Packages for Enterprise Linux (EPEL) 存储库。在默认情况下,该存储库出现在 Amazon Linux
实例上的 /etc/yum.repos.d 中,但未予启用。
[ec2-user ~]$ sudo yum-config-manager --enable epel
Note
有关在其他发行版(如 Red Hat 和 CentOS)上启用 EPEL 存储库的信息,请参阅 https://
fedoraproject.org/wiki/EPEL 上的 EPEL 文档。
查找软件包
Abstract
使用 yum search 命令在您配置的存储库中查找可用软件包。
您可以使用 yum search 命令搜索在您配置的存储库中可用的程序包的描述。如果不知道要安装的程序包
的确切名称,这尤其有帮助。只需将关键字搜索附加到此命令;对于多字词搜索,请使用引号括起搜索查
询。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
引号中的多个字词搜索查询仅返回符合确切查询的结果。如果您没有看到需要的程序包,请将搜索简化为
一个关键字,然后扫描结果。您还可以尝试使用关键字同义词来扩大搜索范围。
[ec2-user ~]$ sudo yum search "find"
Loaded plugins: priorities, security, update-motd, upgrade-helper
============================== N/S Matched: find ===============================
findutils.x86_64 : The GNU versions of find utilities (find and xargs)
perl-File-Find-Rule.noarch : Perl module implementing an alternative interface
: to File::Find
perl-Module-Find.noarch : Find and use installed modules in a (sub)category
libpuzzle.i686 : Library to quickly find visually similar images (gif, png,
jpg)
libpuzzle.x86_64 : Library to quickly find visually similar images (gif, png,
267
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
: jpg)
mlocate.x86_64 : An utility for finding files by name
yum 程序包管理器还将多个程序包组合到组中,通过一个命令组就可以执行特定任务(如安装 Web 服务
器或构建软件编译工具)。要列出系统上已安装的组和可安装的可用组,请使用 yum grouplist 命令。
[ec2-user ~]$ sudo yum grouplist
Loaded plugins: priorities, security, update-motd, upgrade-helper
Setting up Group Process
Installed Groups:
Development Libraries
Development tools
Editors
Legacy UNIX compatibility
Mail Server
MySQL Database
Network Servers
Networking Tools
PHP Support
Perl Support
System Tools
Web Server
Available Groups:
Console internet tools
DNS Name Server
FTP Server
Java Development
MySQL Database client
NFS file server
Performance Tools
PostgreSQL Database client (version 8)
PostgreSQL Database server (version 8)
Scientific support
TeX support
Technical Writing
Web Servlet Engine
Done
通过使用 yum groupinfo "Group Name" 命令,可以看到组中的不同程序包,将 Group Name 替换为组
名称可获取相关信息。此命令列出可随组安装的所有必需、默认和可选程序包。
如果在默认 amzn-main 和 amzn-updates 存储库中找不到所需的软件,您可以添加更多存储库,例如
Extra Packages for Enterprise Linux (EPEL) 存储库。有关更多信息,请参阅 添加存储库 (p. 266)。
安装软件包
Abstract
使用 yum 程序包管理器在 Amazon Linux 实例上安装程序包。
yum 程序包管理器是出色的安装软件工具,因为它可以搜索您针对不同软件包启用的所有存储库,还可
以处理软件安装过程中的任何依赖关系。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
268
Amazon Elastic Compute Cloud Linux 实例用户指南
管理软件
要从存储库安装程序包,请使用 yum install package 命令,将 package 替换为要安装的软件的名称。
举例来说,若要安装 links 基于文本的 Web 浏览器,请输入以下命令。
[ec2-user ~]$ sudo yum install links
要安装程序包组,请使用 yum groupinstall Group Name 命令,将 Group Name 替换为要安装的组的名
称。例如,若要安装“Performance Tools (性能工具)”组,请输入以下命令。
[[email protected] ~]$ sudo yum groupinstall "Performance Tools"
默认情况下,yum 仅安装组列表中的必需和默认程序包。如果还要安装组中的可选程序包,在执行添加
可选程序包的命令时,可以在命令中设置 group_package_types 配置参数。
[ec2-user ~]$ sudo yum --setopt=group_package_types=mandatory,default,optional
groupinstall "Performance Tools"
您还可使用 yum install 安装您已经从 Internet 下载的 RPM 程序包文件。为此,只需将 RPM 文件的路径
名称而不是存储库程序包名称附加到安装命令。
[ec2-user ~]$ sudo yum install my-package.rpm
准备编译软件
Abstract
安装用于编译软件的开发工具。
Internet 上有大量开源软件,这些软件尚未预编译,可从程序包存储库下载。您可能最终会发现需要您亲
自从源代码编译的软件包。要使系统能够编译软件,您需要安装几个开发工具,如 make、gcc 和 autoconf。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
因为软件编译不是每个 Amazon EC2 实例都需要的任务,所以在默认情况下不安装这些工具,不过,称
为“开发工具”的程序包组中提供了这些工具,而这个程序包组可通过 yum groupinstall 命令方便地添加到
实例。
[ec2-user ~]$ sudo yum groupinstall "Development Tools"
软件源代码包通常以压缩存档文件(称为 tarball)的形式提供下载(从 https://github.com/ 和 http://
sourceforge.net/ 等网站)。这些 tarball 的文件扩展名通常为 .tar.gz。您可以使用 tar 命令来解压缩这
些存档。
[ec2-user ~]$ tar -xzf software.tar.gz
将源代码包解压并解档后,应在源代码目录中查找 README 或 INSTALL 文件,这些文件包含有关编译和
安装源代码的进一步说明。
269
Amazon Elastic Compute Cloud Linux 实例用户指南
管理用户
检索 Amazon Linux 程序包的源代码
Amazon Web Services 提供所维护的程序包的源代码。您可以使用 get_reference_source 命令下载已安
装的任何程序包的源代码。
•
运行 get_reference_source -p package 命令可下载 package 的源代码。例如,若要下载 htop 程
序包的源代码,请输入以下命令。
[ec2-user ~]$ get_reference_source -p htop
Requested package: htop
Found package from local RPM database: htop-1.0.1-2.3.amzn1.x86_64
Corresponding source RPM to found package : htop-1.0.1-2.3.amzn1.src.rpm
Are these parameters correct? Please type 'yes' to continue: yes
Source RPM downloaded to: /usr/src/srpm/debug/htop-1.0.1-2.3.amzn1.src.rpm
该命令输出列出源 RPM 的位置,在本示例中,为
/usr/src/srpm/debug/htop-1.0.1-2.3.amzn1.src.rpm。
在 Linux 实例上管理用户账户
Abstract
添加或删除 Amazon Linux 实例上的用户。
每个 Linux 实例类型均使用默认 Linux 系统用户账户启动。 对于 Amazon Linux,用户名称是 ec2-user。
对于 RHEL5,用户名称是 root 或 ec2-user。对于 Ubuntu,用户名称是 ubuntu。对于 Fedora,用户
名称是 fedora 或 ec2-user。对于 SUSE Linux,用户名称是 root 或 ec2-user。另外,如果 ec2-user
和 root 无法使用,请与您的 AMI 供应商核实。
Note
Linux 系统用户不应与 AWS Identity and Access Management (IAM) 用户混淆。有关更多信息,
请参阅 IAM 用户指南 中的 IAM 用户和组。
对于许多应用程序来说,使用默认用户账户就足够了,不过您可选择添加用户账户,以便个人有自己的文
件和工作区。为新用户创建用户账户比授予多个(可能缺乏经验的)用户对 ec2-user 的访问权限更安
全,因为如果使用不当,该账户可能对系统造成严重破坏。
将新用户添加到系统
要有效地将用户添加到 Linux 实例涉及两个基本操作:将用户添加到系统和为该用户提供远程登录的方
式。
1.
要将新用户添加到系统,请使用 adduser 命令,后跟所有相关选项和要创建的用户的名称。
Important
如果您将一名用户添加到 Ubuntu 系统,应添加 --disabled-password 选项以免向该账
户添加密码。
[ec2-user ~]$ sudo adduser newuser
270
Amazon Elastic Compute Cloud Linux 实例用户指南
管理用户
此命令将 newuser 账户添加到系统(/etc/passwd 文件中会有一个条目),创建 newuser 组,并
在 /home/newuser 中为该账户创建主目录。
2.
要提供对此账户的远程访问,您必须在 .sshnewuser 目录,并在其中创建一个包含公
钥的名为“authorized_keys”的文件。
a.
切换到新账户,以便使新建的文件具有正确的所有权。
[ec2-user ~]$ sudo su - newuser
[newuser ~]$
注意,现在提示 newuser,而不是 ec2-user;您已将 Shell 会话切换到新账户。
b.
为 authorized_keys 文件创建一个 .ssh 目录。
[newuser ~]$ mkdir .ssh
c.
将 .ssh 目录的文件权限更改为 700(这意味着只有文件所有者能够读取、写入或打开此目录)。
Important
这一步非常重要;如果没有这些确切的文件权限,您将无法使用 SSH 登录此账户。
[newuser ~]$ chmod 700 .ssh
d.
在 authorized_keys.ssh “”的文件。
[newuser ~]$ touch .ssh/authorized_keys
e.
将 authorized_keys 文件的文件权限更改为 600(这意味着只有文件所有者能够读取或写入
此文件)。
Important
这一步非常重要;如果没有这些确切的文件权限,您将无法使用 SSH 登录此账户。
[newuser ~]$ chmod 600 .ssh/authorized_keys
f.
使用您常用的文本编辑器编辑 authorized_keys 文件,将您的密钥对的公有密钥添加到该文
件中,例如:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhD
FcvBS7O6V
hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJh
JOI0iBXr
lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8Se
JtjnV3iAoG/cQk+0FzZ
qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXP
kX4rWi+z7wB3Rb
BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE
271
Amazon Elastic Compute Cloud Linux 实例用户指南
处理器状态控制
Note
有关创建密钥对的更多信息,请参阅使用 Amazon EC2 创建密钥对 (p. 448)。有关从现
有密钥对中检索公钥的更多信息,请参阅在 Linux 上检索密钥对的公有密钥 (p. 450)。
您现在应该能够使用与来自 newuser 的公钥相匹配的私钥通过 SSH 登录实例上的 Step 2.f (p. 271) 账户。
从系统中删除用户
如果不再需要某个用户账户,可以将其删除,使它不再可用。
•
要删除用户账户、用户的主目录和用户的邮件后台打印,请执行 userdel -r 命令,后跟要删除的用户
名称。
[ec2-user ~]$ sudo userdel -r olduser
Note
要保留用户的主目录和邮件后台打印,请省略 -r 选项。
您的 EC2 实例的处理器状态控制
Abstract
一些 EC2 实例类型为操作系统提供了控制处理器 C 状态和 P 状态的功能。
C 状态控制当核心处于空闲状态时可以进入的睡眠级别。C 状态从 C0(最浅空闲状态,此时核心完全唤
醒并在执行指令)开始编号,一直增进到 C6(最深空闲状态,此时核心关闭)。P 状态控制核心的所需
性能(以 CPU 频率的形式)。P 状态从 P0(最高性能设置,此时核心可在可能时使用 Intel® 睿频加速
技术提高频率)开始编号,从 P1(请求最大基准频率的 P 状态)一直增进到 P15(可能的最低频率)。
以下实例类型为操作系统提供了控制处理器 C 状态和 P 状态的功能:
• c4.8xlarge
• d2.8xlarge
• m4.10xlarge
改变 C 状态或 P 状态设置可以增加处理器性能一致性,减少延迟,还可以针对特定工作负载对实例进行
调校。默认 C 状态和 P 状态设置可提供最大性能,是大多数工作负载的最佳选择。但是,如果您的应用
程序更适合以牺牲较高的单核或双核频率的方式来降低延迟,或需要在较低频率下保持稳定性能(而不适
合使用突发式睿频加速频率),那么可以考虑运用对这些实例可用的 C 状态或 P 状态设置。
以下部分介绍了不同的处理器状态配置以及如何监控配置效果。这些步骤专为 Amazon Linux 编写并供其
使用,但也适用于搭载 Linux 内核版本 3.9 及更高版本的其他 Linux 分发版。有关其他 Linux 分发版和处
理器状态控制的更多信息,请参阅您系统的特定文档。
272
Amazon Elastic Compute Cloud Linux 实例用户指南
处理器状态控制
Note
此页面中的示例使用 turbostat 实用工具(默认情况下可在 Amazon Linux 上获得)来显示处理器
频率和 C 状态信息,并使用 stress 命令(可通过运行 sudo yum install -y stress 进行安装)来模
拟工作负载。
内容
• 具有最大睿频加速频率的最高性能 (p. 273)
• 通过限制深层 C 状态实现高性能和低延迟 (p. 274)
• 变化最少的基准性能 (p. 275)
具有最大睿频加速频率的最高性能
这是 Amazon Linux AMI 的默认处理器状态控制配置,推荐大多数工作负载使用。此配置可提供最高性
能,且变化更少。允许非活动核心进入深层睡眠状态可提供单核或双核进程所需的热空间,以达到最大睿
频加速潜能。
以下示例显示了具有两个有效执行工作且达到其最大处理器睿频加速频率的核心的 c4.8xlarge 实例。
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [30680] dispatching hogs: 2 cpu,
stress: info: [30680] successful run completed
pk cor CPU
%c0 GHz TSC SMI
%c1
%c3
%pc6
%pc7 Pkg_W RAM_W PKG_% RAM_%
5.54 3.44 2.90
0
9.18
0.00
0.00
0.00 94.04 32.70 54.18 0.00
0
0
0
0.12 3.26 2.90
0
3.61
0.00
0.00
0.00 48.12 18.88 26.02 0.00
0
0 18
0.12 3.26 2.90
0
3.61
0
1
1
0.12 3.26 2.90
0
4.11
0.00
0
1 19
0.13 3.27 2.90
0
4.11
0
2
2
0.13 3.28 2.90
0
4.45
0.00
0
2 20
0.11 3.27 2.90
0
4.47
0
3
3
0.05 3.42 2.90
0 99.91
0.00
0
3 21 97.84 3.45 2.90
0
2.11
...
1
1 10
0.06 3.33 2.90
0 99.88
0.01
1
1 28 97.61 3.44 2.90
0
2.32
...
10.002556 sec
0 io, 0 vm, 0 hdd
in 10s
%c6
%c7
%pc2
%pc3
85.28
0.00
0.00
0.00
96.27
0.00
0.00
0.00
95.77
0.00
95.42
0.00
0.05
0.00
0.06
0.00
在此示例中,vCPU 21 和 vCPU 28 均以其最大睿频加速频率运行,因为其他核心已进入 C6 睡眠状态以
节省性能,并为正在工作的核心提供性能和热空间。vCPU 3 和 vCPU 10(分别与 vCPU 21 和 vCPU 28
共享一个处理器)均处于等待指令的 C1 状态。
在以下示例中,所有 18 个核心均在有效执行工作,因此没有达到最大睿频加速频率的空间,但这些核心
都在以 3.2 GHz 的“所有核心睿频加速”速度运行。
[ec2-user ~]$ sudo turbostat stress -c 36 -t 10
stress: info: [30685] dispatching hogs: 36 cpu, 0 io, 0 vm, 0 hdd
stress: info: [30685] successful run completed in 10s
pk cor CPU
%c0 GHz TSC SMI
%c1
%c3
%c6
%c7
%pc2
%pc6
%pc7 Pkg_W RAM_W PKG_% RAM_%
99.27 3.20 2.90
0
0.26
0.00
0.47
0.00
0.00
273
%pc3
0.00
Amazon Elastic Compute Cloud Linux 实例用户指南
处理器状态控制
0.00
0
0.00
0
0
0
0
0
0
0
0
0
0
0
0
0
...
0
0
1
1
2
2
3
3
4
4
5
5
6
6
0.00
0
0.00
18
1
19
2
20
3
21
4
22
5
23
6
24
228.59 31.33 199.26 0.00
99.08 3.20 2.90
0
0.27
114.69 18.55 99.32 0.00
98.74 3.20 2.90
0
0.62
99.14 3.20 2.90
0
0.09
98.75 3.20 2.90
0
0.49
99.07 3.20 2.90
0
0.10
98.73 3.20 2.90
0
0.44
99.02 3.20 2.90
0
0.24
99.13 3.20 2.90
0
0.13
99.26 3.20 2.90
0
0.09
98.68 3.20 2.90
0
0.67
99.19 3.20 2.90
0
0.08
98.58 3.20 2.90
0
0.69
99.01 3.20 2.90
0
0.11
98.72 3.20 2.90
0
0.39
0.01
0.64
0.00
0.00
0.76
0.00
0.02
0.81
0.00
0.00
0.74
0.00
0.00
0.65
0.00
0.00
0.73
0.00
0.00
0.89
0.00
0.00
0.00
通过限制深层 C 状态实现高性能和低延迟
C 状态控制当核心处于非活动状态时可能进入的睡眠级别。您可能需要控制 C 状态来调校系统的延迟与
性能。将核心置于睡眠状态需要时间,尽管睡眠中的核心可为其他核心提供更多空间以加速至更高频率,
但该睡眠中的核心也需要时间来重新唤醒并执行工作。例如,如果某个负责处理网络数据包中断的核心处
于睡眠状态,那么在处理此类中断时可能会出现延迟。您可以将系统配置为不使用深层 C 状态,这可以
降低处理器的反应延迟,但反过来也会减少其他核心达到睿频加速频率可用的空间。
禁用深层睡眠状态的常见情形是 Redis 数据库应用程序,该应用程序将数据库存储在系统内存中,以实现
最快速的查询响应。
限制 Amazon Linux 上的深层睡眠状态
1.
使用您选择的编辑器打开 /boot/grub/grub.conf 文件。
[ec2-user ~]$ sudo vim /boot/grub/grub.conf
2.
编辑第一个条目的 kernel 行并添加 intel_idle.max_cstate=1 选项,将 C1 设为空闲核心的最
深层 C 状态。
# created by imagebuilder
default=0
timeout=1
hiddenmenu
title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
root (hd0,0)
kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0
intel_idle.max_cstate=1
initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
3.
4.
保存文件并退出您的编辑器。
重启实例以启用新的内核选项。
[ec2-user ~]$ sudo reboot
274
Amazon Elastic Compute Cloud Linux 实例用户指南
处理器状态控制
以下示例显示的 c4.8xlarge 实例具有两个以“所有核心睿频加速”核心频率有效执行工作的核心。
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5322] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5322] successful run completed in 10s
pk cor CPU
%c0 GHz TSC SMI
%c1
%c3
%c6
%c7
%pc2
%pc6
%pc7 Pkg_W RAM_W PKG_% RAM_%
5.56 3.20 2.90
0 94.44
0.00
0.00
0.00
0.00
0.00
0.00 131.90 31.11 199.47 0.00
0
0
0
0.03 2.08 2.90
0 99.97
0.00
0.00
0.00
0.00
0.00
0.00 67.23 17.11 99.76 0.00
0
0 18
0.01 1.93 2.90
0 99.99
0
1
1
0.02 1.96 2.90
0 99.98
0.00
0.00
0.00
0
1 19 99.70 3.20 2.90
0
0.30
...
1
1 10
0.02 1.97 2.90
0 99.98
0.00
0.00
0.00
1
1 28 99.67 3.20 2.90
0
0.33
1
2 11
0.04 2.63 2.90
0 99.96
0.00
0.00
0.00
1
2 29
0.02 2.11 2.90
0 99.98
...
%pc3
0.00
0.00
在此示例中,vCPU 19 和 vCPU 28 的核心均以 3.2 GHz 的频率运行,而其他核心处于等待指令的 C1 C
状态。虽然运行中的核心没有达到其最大睿频加速频率,但非活动核心对新请求的响应速度将比其处于深
层 C6 C 状态时快得多。
变化最少的基准性能
您可以通过 P 状态减少处理器频率的变化。P 状态控制核心的所需性能(以 CPU 频率的形式)。大多数
工作负载在 P0 状态下性能更好,该状态要求采用睿频加速频率。但是,您可能需要调校系统以获得稳定
性能而非突发式性能,而突发式性能可能会在启用睿频加速频率后出现。
Intel 高级矢量扩展(AVX 或 AVX2)工作负载能够以较低的频率较好地运行,而 AVX 指令也可以使用更
多性能。通过禁用睿频加速来以较低的频率运行处理器,可以降低所使用的性能并保持更稳定的速度。有
关优化您的实例配置和 AVX 工作负载的更多信息,请参阅 http://www.intel.com/content/dam/www/public/
us/en/documents/white-papers/performance-xeon-e5-v3-advanced-vector-extensions-paper.pdf。
此部分介绍了如何限制深层睡眠状态以及禁用睿频加速(通过请求 P1 P 状态),从而为这些类型的工作
负载提供低延迟和最少的处理器速度变化。
限制 Amazon Linux 上的深层睡眠状态并禁用睿频加速
1.
使用您选择的编辑器打开 /boot/grub/grub.conf 文件。
[ec2-user ~]$ sudo vim /boot/grub/grub.conf
2.
编辑第一个条目的 kernel 行并添加 intel_idle.max_cstate=1 选项,将 C1 设为空闲核心的最
深层 C 状态。
# created by imagebuilder
default=0
timeout=1
hiddenmenu
title Amazon Linux 2014.09 (3.14.26-24.46.amzn1.x86_64)
root (hd0,0)
275
Amazon Elastic Compute Cloud Linux 实例用户指南
设置时间
kernel /boot/vmlinuz-3.14.26-24.46.amzn1.x86_64 root=LABEL=/ console=ttyS0
intel_idle.max_cstate=1
initrd /boot/initramfs-3.14.26-24.46.amzn1.x86_64.img
3.
保存文件并退出您的编辑器。
4.
重启实例以启用新的内核选项。
[ec2-user ~]$ sudo reboot
5.
如果您需要 P1 P 状态提供的较少的处理器速度变化,请执行以下命令禁用睿频加速。
[ec2-user ~]$ sudo sh -c "echo 1 > /sys/devices/system/cpu/in
tel_pstate/no_turbo"
6.
在工作负载完成后,您可以使用以下命令重新启用睿频加速。
[ec2-user ~]$ sudo sh -c "echo 0 > /sys/devices/system/cpu/in
tel_pstate/no_turbo"
以下示例显示的 c4.8xlarge 实例具有两个以基准核心频率有效执行工作的 vCPU,这两个 vCPU 均没
有启用睿频加速。
[ec2-user ~]$ sudo turbostat stress -c 2 -t 10
stress: info: [5389] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
stress: info: [5389] successful run completed in 10s
pk cor CPU
%c0 GHz TSC SMI
%c1
%c3
%c6
%c7
%pc2
%pc6
%pc7 Pkg_W RAM_W PKG_% RAM_%
5.59 2.90 2.90
0 94.41
0.00
0.00
0.00
0.00
0.00
0.00 128.48 33.54 200.00 0.00
0
0
0
0.04 2.90 2.90
0 99.96
0.00
0.00
0.00
0.00
0.00
0.00 65.33 19.02 100.00 0.00
0
0 18
0.04 2.90 2.90
0 99.96
0
1
1
0.05 2.90 2.90
0 99.95
0.00
0.00
0.00
0
1 19
0.04 2.90 2.90
0 99.96
0
2
2
0.04 2.90 2.90
0 99.96
0.00
0.00
0.00
0
2 20
0.04 2.90 2.90
0 99.96
0
3
3
0.05 2.90 2.90
0 99.95
0.00
0.00
0.00
0
3 21 99.95 2.90 2.90
0
0.05
...
1
1 28 99.92 2.90 2.90
0
0.08
1
2 11
0.06 2.90 2.90
0 99.94
0.00
0.00
0.00
1
2 29
0.05 2.90 2.90
0 99.95
%pc3
0.00
0.00
vCPU 21 和 vCPU 28 的核心以 2.9 GHz 的基准处理器速度有效执行工作,而所有非活动核心也在 C1 C
状态下以基准速度运行,准备接受指令。
为 Linux 实例设置时间
Abstract
设置 Amazon Linux 实例的时间或更改其时区。
276
Amazon Elastic Compute Cloud Linux 实例用户指南
设置时间
对于许多服务器任务和进程来说,准确一致的时间参考是非常重要的。大多数系统日志包含时间戳,您可
以用来确定问题发生的时间以及事件发生的顺序。如果您使用 AWS CLI、EC2 CLI 或 AWS 软件开发工
具包从您的实例创建请求,这些工具会以您的名义签署请求。如果您的实例的日期和时间设置不正确,签
名中的日期可能与请求的日期不匹配,进而导致 AWS 拒绝请求。默认情况下,Amazon Linux 实例配置
网络时间协议 (NTP),系统时间与 Internet 上公用服务器的负载均衡池进行同步,设置为 UTC 时区。有
关 NTP 的更多信息,请访问 http://www.ntp.org/。
任务
• 更改时区 (p. 277)
• 配置网络时间协议 (NTP) (p. 278)
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
更改时区
默认情况下,Amazon Linux 实例设置为 UTC(协调世界时)时区,但是您可能想将实例上的时间更改为
本地时间或网络中的其他时区。
更改实例上的时区
1.
确定将在实例上使用的时区。/usr/share/zoneinfo 目录包含时区数据文件的层次结构。浏览该
位置的目录结构,查找针对您的时区的文件。
[ec2-user ~]$ ls /usr/share/zoneinfo
Africa
Chile
GB
Indian
America
CST6CDT GB-Eire
Iran
Antarctica Cuba
GMT
iso3166.tab
Arctic
EET
GMT0
Israel
...
Mideast
MST
MST7MDT
Navajo
posixrules
PRC
PST8PDT
right
US
UTC
WET
W-SU
该位置的部分条目是目录(如 America),这些目录包含针对特定城市的时区文件。查找要用于实
例的城市(或时区中的一个城市)。在该示例中,您可以使用洛杉矶的时区文件
/usr/share/zoneinfo/America/Los_Angeles。
2.
使用新时区更新 /etc/sysconfig/clock 文件。
a.
使用您常用的文本编辑器(如 vim 或 nano)打开 /etc/sysconfig/clock 文件。您需要在编
辑器命令中使用 sudo,因为 /etc/sysconfig/clock 归 root 所有。
b.
查找 ZONE 条目,将其更改为时区文件(省略路径的 /usr/share/zoneinfo 部分)。例如,
若要更改为洛杉矶时区,请将 ZONE 条目更改为以下内容。
ZONE="America/Los_Angeles"
c.
3.
保存文件,退出文本编辑器。
在 /etc/localtime 与时区文件之间创建一个符号链接,以便实例在引用本地时间信息时找到此时
区文件。
[ec2-user ~]$ sudo ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/loc
altime
277
Amazon Elastic Compute Cloud Linux 实例用户指南
设置时间
4.
重启系统,以便所有服务和应用程序接受新时区信息。
[ec2-user ~]$ sudo reboot
配置网络时间协议 (NTP)
Abstract
使用 NTP 在您的 Amazon Linux 实例上保持准确时间。
默认情况下,Amazon Linux 实例上配置网络时间协议 (NTP);但是,实例需要访问 Internet 才能使标准
NTP 配置工作。您的实例的安全组还必须允许端口 123 (NTP) 上的出站 UDP 流量。本部分中的过程介绍
如何验证默认 NTP 配置是否正常工作。如果您的实例无法访问 Internet,您需要将 NTP 配置为在您的私
有网络中查询其他服务器,以便保持准确时间。
验证 NTP 是否正常运行
1.
使用 ntpstat 命令,查看实例上 NTP 服务的状态。
[ec2-user ~]$ ntpstat
如果输出类似于以下输出,则 NTP 在实例上正常运行。
synchronised to NTP server (12.34.56.78) at stratum 3
time correct to within 399 ms
polling server every 64 s
如果输出状态为“unsynchronised”,请等待一分钟,然后再试。首次同步可能需要一分钟才能完
成。
2.
如果输出状态为“Unable to talk to NTP daemon. Is it running?”,您可能需要启动 NTP
服务,使它在启动时自动启动。
(可选)您可以使用 ntpq -p 命令查看 NTP 服务器已知的对等方的列表及其状态的摘要。
[ec2-user ~]$ ntpq -p
remote
refid
st t when poll reach
delay
offset
jitter
==============================================================================
+lttleman.deekay 204.9.54.119
2 u
15 128 377
88.649
5.946
6.876
-bittorrent.tomh 91.189.94.4
3 u 133 128 377 182.673
8.001
1.278
*ntp3.junkemailf 216.218.254.202 2 u
68 128 377
29.377
4.726
11.887
+tesla.selinc.co 149.20.64.28
2 u
31 128 377
28.586
-1.215
1.435
如果此命令的输出未显示任何活动,请检查您的安全组、网络 ACL 或防火墙是否已阻止对 NTP 端口
的访问。
278
Amazon Elastic Compute Cloud Linux 实例用户指南
设置时间
启动和启用 NTP
1.
使用以下命令启动 NTP 服务。
[ec2-user ~]$ sudo service ntpd start
Starting ntpd:
2.
[
OK
]
利用 chkconfig 命令,启用 NTP,以便在系统启动时启动。
[ec2-user ~]$ sudo chkconfig ntpd on
3.
使用以下命令验证是否启用了 NTP。
[ec2-user ~]$ sudo chkconfig --list ntpd
ntpd
0:off 1:off 2:on 3:on 4:on 5:on 6:off
在这里,ntpd 在运行级别 2、3、4 和 5 上为启用状态,这是正确的。
更改 NTP 服务器
您可以决定不使用标准 NTP 服务器,或者您可能需要在自己的私有网络中将自己的 NTP 服务器用于无法
访问 Internet 的实例。
1.
打开常用文本编辑器(如 vim 或 nano)中的 /etc/ntp.conf 文件。您需要在编辑器命令中使用
sudo,因为 /etc/ntp.conf 由 root 拥有。
2.
查找 server 部分,这里定义了将针对 NTP 配置进行轮询的服务器。
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.amazon.pool.ntp.org iburst
server 1.amazon.pool.ntp.org iburst
server 2.amazon.pool.ntp.org iburst
server 3.amazon.pool.ntp.org iburst
Note
n.amazon.pool.ntp.org DNS 记录旨在对来自 AWS NTP 流量进行负载均衡。但是,这
些公有 NTP 服务器位于 pool.ntp.org 项目中,不归 AWS 所有和管理。我们不能保证这
些服务器位于您的实例附近的地理位置,甚至不能保证它们位于 AWS 网络中。有关更多信
息,请参阅 http://www.pool.ntp.org/en/。
3.
通过将“#”字符添加到您不需要使用的服务器定义的开头,注释掉这些服务器。
# Use public servers from the
# Please consider joining the
#server 0.amazon.pool.ntp.org
#server 1.amazon.pool.ntp.org
#server 2.amazon.pool.ntp.org
#server 3.amazon.pool.ntp.org
4.
pool.ntp.org project.
pool (http://www.pool.ntp.org/join.html).
iburst
iburst
iburst
iburst
为每个要进行时间同步轮询的服务器添加一个条目。您可以对此条目使用 DNS 名称,或者点分四节
IP 地址(如 10.0.0.254)。
279
Amazon Elastic Compute Cloud Linux 实例用户指南
更改主机名
server my-ntp-server.my-domain.com iburst
5.
重新启动 NTP 服务,以接受这些新服务器。
[ec2-user ~]$ sudo service ntpd start
Starting ntpd:
6.
[
OK
]
验证新设置是否工作,以及 NTP 是否功能正常。
[ec2-user ~]$ ntpstat
synchronised to NTP server (64.246.132.14) at stratum 2
time correct to within 99 ms
更改 Linux 实例的主机名
Abstract
使用动态 DNS 提供商设置 Amazon Linux 实例的主机名。
当您启动实例时,会向实例分配主机名,其形式为专用内部 IP 地址。典型的 Amazon EC2 专用 DNS 名
称如下所示:ip-12-34-56-78.us-west-2.compute.internal-2.,其中名称由内部域、服务(在
此示例中为 compute)、区域和私有 IP 地址的某种形式构成。当您登录实例时,Shell 提示符处显示此
主机名的一部分(例如,ip-12-34-56-78)。每次停止和重新启动 Amazon EC2 实例时(除非您使用
的是弹性 IP 地址),公有 IP 地址都会改变,公有 DNS 名称、系统主机名和 Shell 提示符也会改变。启
动到 EC2-Classic 中的实例在停止和重新启动时也会接收新的私有 IP 地址、私有 DNS 主机名和系统主
机名;而启动到 VPC 中的实例则不会接收这些内容。
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
更改系统主机名
如果为实例的 IP 地址注册了公用 DNS 名称(如 webserver.mydomain.com),则可以设置系统主机
名,以便实例将自己标识为该域的一部分。这还会更改 Shell 提示符,以便它显示此名称的第一部分,而
不是 AWS 提供的主机名(例如,ip-12-34-56-78)。如果没有注册公用 DNS 名,还是可以更改主机
名,但过程略有差异。
将系统主机名更改为公用 DNS 名称
如果已注册了公用 DNS 名称,请执行此过程。
1.
在您常用的文本编辑器中打开 /etc/sysconfig/network 配置文件,更改 HOSTNAME 条目以反映
完全限定域名(例如 webserver.mydomain.com)。
HOSTNAME=webserver.mydomain.com
2.
重启实例以接受新主机名。
[ec2-user ~]$ sudo reboot
280
Amazon Elastic Compute Cloud Linux 实例用户指南
更改主机名
3.
登录实例,验证主机名是否已更新。您的提示应显示新主机名(显示第一个“.”之前的部分)。并且
hostname 命令应显示完全限定域名。
[[email protected] ~]$ hostname
webserver.mydomain.com
在无公用 DNS 名称的情况下更改系统主机名
1.
在您常用的文本编辑器中打开 /etc/sysconfig/network 配置文件,更改 HOSTNAME 条目以反映
所需的系统主机名(例如 webserver)。
HOSTNAME=webserver.localdomain
2.
在您常用的文本编辑器中打开 /etc/hosts 文件,更改以 127.0.0.1 开始的条目,以匹配以下示
例,替换为您自己的主机名。
127.0.0.1 webserver.localdomain webserver localhost localhost.localdomain
3.
重启实例以接受新主机名。
[ec2-user ~]$ sudo reboot
4.
登录实例,验证主机名是否已更新。您的提示应显示新主机名(显示第一个“.”之前的部分)。并且
hostname 命令应显示完全限定域名。
[[email protected] ~]$ hostname
webserver.localdomain
在不影响主机名的情况下更改 Shell 提示符
如果不需要修改实例的主机名,但是希望显示比 AWS 提供的专用名称(例如 webserver)更有用的系
统名称(如 ip-12-34-56-78),您可以编辑 Shell 提示符配置文件,以显示系统别名,而不是主机名。
将 Shell 提示符更改为主机别名
1.
在 /etc/profile.d 中创建一个文件,将名为 NICKNAME 的环境变量设置为要在 Shell 提示符中显
示的值。例如,若要将系统别名设置为 webserver,请执行以下命令。
[ec2-user ~]$ sudo sh -c 'echo "export NICKNAME=webserver" > /etc/pro
file.d/prompt.sh'
2.
在您的常用文本编辑器(如 vim 或 nano)中打开 /etc/bashrc 文件。您需要在编辑器命令中使用
sudo,因为 /etc/bashrc 由 root 拥有。
3.
编辑文件,将 Shell 提示符变量 (PS1) 更改为显示别名而不是主机名。在 /etc/bashrc 中找到以下
设置 Shell 提示符的行(为了上下文需要,下面多显示了几行;查找以 [ "$PS1" 开头的行):
281
Amazon Elastic Compute Cloud Linux 实例用户指南
设置动态 DNS
# Turn on checkwinsize
shopt -s checkwinsize
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\[email protected]\h \W]\\$ "
# You might want to have e.g. tty in prompt (e.g. more virtual machines)
# and console windows
将该行中的 \h(hostname 的符号)更改为 NICKNAME 变量的值。
# Turn on checkwinsize
shopt -s checkwinsize
[ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\[email protected]$NICKNAME \W]\\$ "
# You might want to have e.g. tty in prompt (e.g. more virtual machines)
# and console windows
4.
(可选)要将 Shell 窗口上的标题设置为新别名,请完成以下步骤。
a.
创建名为 /etc/sysconfig/bash-prompt-xterm 的文件。
[ec2-user ~]$ sudo touch /etc/sysconfig/bash-prompt-xterm
b.
使用以下命令使该文件可执行。
[ec2-user ~]$ sudo chmod +x /etc/sysconfig/bash-prompt-xterm
c.
d.
在您常用的文本编辑器(如 vim 或 nano)中打开 /etc/sysconfig/bash-prompt-xterm 文
件。您需要在编辑器命令中使用 sudo,因为 /etc/sysconfig/bash-prompt-xterm 归 root
所有。
将以下行添加到该文件。
echo -ne "\033]0;${USER}@${NICKNAME}:${PWD/#$HOME/~}\007"
5.
注销,再重新登录,以接受新别名值。
在 Linux 实例上设置动态 DNS
Abstract
对 Amazon EC2 使用动态 DNS 提供商,并将实例配置为每次启动时都更新与公有 DNS 名称关联的 IP 地址。
当您启动 EC2 实例时,系统会为它分配公有 IP 地址和公有 DNS(域名系统)名称,可以用来从 Internet
访问它。因为 Amazon Web Services 域中有非常多主机,所以这些公用名称必须足够长才能使每个名称
保持唯一。典型的 Amazon EC2 公用 DNS 名称如下所示:
ec2-12-34-56-78.us-west-2.compute.amazonaws.com,其中名称由 Amazon Web Services 域、
服务(在此示例中为 compute)、区域和公有 IP 地址的形式组成。
动态 DNS 服务在其域区域中提供自定义主机名,这些主机名便于记忆,也与主机的使用案例更为相关;
其中一些服务是免费的。您可以对 Amazon EC2 使用动态 DNS 提供商,可以将实例配置为每次实例启动
时都更新与公用 DNS 名称关联的 IP 地址。有许多不同的提供商可以选择,本指南不介绍有关如何选择
提供商以及如何向它们注册名称的具体详细信息。
282
Amazon Elastic Compute Cloud Linux 实例用户指南
设置动态 DNS
Important
这些过程适用于 Amazon Linux。有关其他发布版本的更多信息,请参阅其具体文档。
对 Amazon EC2 使用动态 DNS
1.
向动态 DNS 服务提供商注册并利用其服务注册公用 DNS 名称。这个过程使用来自 noip.com/free 的
免费服务作为示例。
2.
配置动态 DNS 更新客户端。有了动态 DNS 服务提供商并且使用其服务注册了公用 DNS 名称后,将
DNS 名称指向实例的 IP 地址。很多提供商(包括 noip.com)允许您从您在其网站上的账户页手动
执行此操作,不过很多也支持软件更新客户端。如果您在 EC2 实例上有更新客户端运行,则每次 IP
地址更改(如关机和重启后)都会更新动态 DNS 记录。在本例中,将安装 noip2 客户端,该客户
端利用 noip.com 提供的服务。
a.
启用 Extra Packages for Enterprise Linux (EPEL) 存储库,以获取对 noip2 客户端的访问权。
Note
默认情况下,Amazon Linux 实例安装有 EPEL 存储库的 GPG 密钥和存储库信息;但
是,Red Hat 和 CentOS 实例必须先安装 epel-release 软件包,然后您才能启用
EPEL 存储库。有关更多信息以及要下载此软件包的最新版本,请参阅 https://
fedoraproject.org/wiki/EPEL。
[ec2-user ~]$ sudo yum-config-manager --enable epel
b.
安装 noip 软件包。
[ec2-user ~]$ sudo yum install -y noip
c.
创建 noip2 配置文件。在提示时输入登录名和密码信息,并回答后续问题以配置客户端。
[ec2-user ~]$ sudo noip2 -C
3.
使用 noipchkconfig 命令启用 服务。
[ec2-user ~]$ sudo chkconfig noip on
您可以使用 chkconfig --list 命令验证此服务是否已启用。
[ec2-user ~]$ chkconfig --list noip
noip
0:off 1:off 2:on 3:on 4:on 5:on 6:off
在这里,noip 在运行级别 2、3、4 和 5 为 on(这是正确的)。现在,每次启动时,更新客户端都会
启动并更新公用 DNS 记录,以便指向实例的 IP 地址。
4.
启动 noip 服务。
[ec2-user ~]$ sudo service noip start
Starting noip2:
283
[
OK
]
Amazon Elastic Compute Cloud Linux 实例用户指南
启动时运行命令
该命令启动客户端,读取先前创建的配置文件 (/etc/no-ip2.conf),并且更新您选择的公用 DNS
名称的 IP 地址。
5.
验证更新客户端是否已为动态 DNS 名称设置了正确的 IP 地址。等待几分钟使 DNS 记录进行更新,
然后尝试使用您在此过程中配置的公有 DNS 名称通过 SSH 连接到实例。
启动时在 Linux 实例上运行命令
Abstract
在启动时将用户数据传递到 Amazon Linux 实例。
当您在 Amazon EC2 中启动实例时,您可以选择将用户数据传递到可用于执行常见自动配置任务甚至在
实例启动后运行脚本的实例。您可以将两类用户数据传递到 Amazon EC2:Shell 脚本和 cloud-init 指
令。您还可以将这些数据以纯文本、文件(这非常适合通过命令行工具启动实例)或者 base64 编码文本
(用于 API 调用)的形式传递到启动向导中。
如果您对更复杂的自动方案感兴趣,可以考虑使用 AWS CloudFormation 和 AWS OpsWorks。有关更多
信息,请参阅 AWS CloudFormation 用户指南和 AWS OpsWorks 用户指南。
有关在启动时在 Windows 实例上运行命令的信息,请参阅 Amazon EC2 用户指南(适用于 Microsoft
Windows 实例) 中的执行用户数据和管理 Windows 实例配置。
在以下示例中,安装 LAMP Web 服务器教程 (p. 33) 中的命令转换成了 Shell 脚本和一组 cloud-init
指令,在实例启动时执行。在每个示例中,以下任务都根据用户数据执行:
• 更新发布版软件包。
• 安装必要的 Web 服务器、php 和 mysql 程序包。
• 通过 httpdchkconfig 启动和打开 服务。
• 添加 www 组,将 ec2-user 添加到该组。
• 为 Web 目录以及其中的文件设置适当的所有权和文件权限。
• 创建简单网页来测试 Web 服务器和 php 引擎。
内容
• 先决条件 (p. 284)
• 用户数据和 Shell 脚本 (p. 284)
• 用户数据和 cloud-init 指令 (p. 286)
• API 和 CLI 概述 (p. 287)
先决条件
以下示例假设实例具有可从 Internet 访问的公用 DNS 名称。有关更多信息,请参阅 步骤 1:启动实
例 (p. 27)。您还必须将安全组配置为允许 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)连
接。有关这些先决条件的更多信息,请参阅 Amazon EC2 的设置 (p. 19)。
此外,这些指令适用于 Amazon Linux,这些命令和指令可能不适用于其他 Linux 发布版。有关其他发布
版的更多信息,如它们对 cloud-init 的支持,请参阅其具体文档。
用户数据和 Shell 脚本
如果您熟悉 Shell 脚本编写,要在启动时将指令发送到实例,这是最简单、最完整的方式,cloud-init
输出日志文件 (/var/log/cloud-init-output.log) 捕获控制台输出,因此,如果实例出现意外行
为,可在启动后方便地调试脚本。
284
Amazon Elastic Compute Cloud Linux 实例用户指南
启动时运行命令
Important
启动实例后,用户数据脚本和 cloud-init 指令仅在首次启动循环过程中运行。
用户数据 Shell 脚本必须以 #! 字符以及指向要读取脚本的解释器的路径(通常为 /bin/bash)开头。有关
Shell 脚本的精彩介绍,请参阅 Linux 文档项目 (tldp.org) 的 BASH 编程方法。
作为用户数据输入的脚本是作为 root 用户加以执行的,因此在脚本中不使用 sudo 命令。请注意,您创
建的任何文件都将归 root 所有;如果您需要非 root 用户具有文件访问权,应在脚本中相应地修改权
限。此外,这是因为脚本不交互运行,所以无法包含要求用户反馈的命令(如 yum update,无 -y 标
志)。
在启动时添加这些任务会增加启动实例所需的时间。您应多等待几分钟让这些任务完成,然后测试用户脚
本是否已成功完成。
将 Shell 脚本传递到具有用户数据的实例
1.
根据从 AMI 启动实例 (p. 230)的实例启动过程操作,但是,到达Step 6 (p. 232)时,将用户数据脚本文
本粘贴到 User data (用户数据) 字段中,然后完成启动过程。对于以下示例,脚本创建并配置我们的
Web 服务器。
#!/bin/bash
yum update -y
yum install -y httpd24 php56 mysql55-server php56-mysqlnd
service httpd start
chkconfig httpd on
groupadd www
usermod -a -G www ec2-user
chown -R root:www /var/www
chmod 2775 /var/www
find /var/www -type d -exec chmod 2775 {} +
find /var/www -type f -exec chmod 0664 {} +
echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php
2.
让实例有足够的时间启动和执行脚本中的命令,然后查看脚本是否完成了预期的任务。对于我们的示
例,在 Web 浏览器中输入脚本创建的 PHP 测试文件的 URL。此 URL 是实例的公用 DNS 地址,后
接正斜杠和文件名。
http://my.public.dns.amazonaws.com/phpinfo.php
您应该可以看到 PHP 信息页面。
Tip
如果您未能看到 PHP 信息页,请检查所用的安全组是否包含允许 HTTP(端口 80)通信的
规则。有关将 HTTP 规则添加到您安全组的信息,请参阅 向安全组添加规则 (p. 461)。
3.
(可选)如果脚本没有完成预期执行的任务,或者您要验证脚本是否正确完成,请检查
/var/log/cloud-init-output.log 上的 cloud-init 输出日志文件,在输出中查找错误消息。
对于其他调试信息,您可以使用以下指令创建包含 cloud-init 数据部分的 Mime 分段存档:
output : { all : '| tee -a /var/log/cloud-init-output.log' }
285
Amazon Elastic Compute Cloud Linux 实例用户指南
启动时运行命令
此指令将您脚本的命令输出发送到 /var/log/cloud-init-output.log。有关 cloud-init 数
据格式以及创建 Mime 分段存档的更多信息,请参阅 cloud-init 格式。
用户数据和 cloud-init 指令
cloud-init 程序包配置新 Amazon Linux 实例在启动时的特定方面;最值得注意的是,它为 配置
ec2-user.ssh/authorized_keys 文件,以便您使用自己的私钥登录。
可在启动时将 cloud-init 用户指令传递给实例,方式与传递脚本相同,只是语法不同。有关 cloud-init
的更多信息,请转到 http://cloudinit.readthedocs.org/en/latest/index.html。
Important
启动实例后,用户数据脚本和 cloud-init 指令仅在首次启动循环过程中运行。
cloud-init 的 Amazon Linux 版本并不支持基程序包中可用的所有指令,其中一些指令已重命名(如
repo_update,而不是 apt-upgrade)。
在启动时添加这些任务会增加启动实例所需的时间。您应多等待几分钟让这些任务完成,然后测试用户数
据指令是否已完成。
将 cloud-init 指令传递给具有用户数据的实例
1.
根据从 AMI 启动实例 (p. 230)的实例启动过程操作,但是,到达Step 6 (p. 232)时,将 cloud-init 指
令文本粘贴到 User data (用户数据) 字段中,然后完成启动过程。对于以下示例,这些指令创建并配
置 Web 服务器。
#cloud-config
repo_update: true
repo_upgrade: all
packages:
- httpd24
- php56
- mysql55
- server
- php56-mysqlnd
runcmd:
- service httpd start
- chkconfig httpd on
- groupadd www
- [ sh, -c, "usermod -a -G www ec2-user" ]
- [ sh, -c, "chown -R root:www /var/www" ]
- chmod 2775 /var/www
- [ find, /var/www, -type, d, -exec, chmod, 2775, {}, + ]
- [ find, /var/www, -type, f, -exec, chmod, 0664, {}, + ]
- [ sh, -c, 'echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php' ]
2.
让实例有足够的时间启动和执行用户数据中的指令,然后查看指令是否完成了预期的任务。对于我们
的示例,在 Web 浏览器中输入指令创建的 PHP 测试文件的 URL。此 URL 是实例的公用 DNS 地
址,后接正斜杠和文件名。
http://my.public.dns.amazonaws.com/phpinfo.php
286
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
您应该可以看到 PHP 信息页面。
Tip
如果您未能看到 PHP 信息页,请检查所用的安全组是否包含允许 HTTP(端口 80)通信的
规则。有关将 HTTP 规则添加到您安全组的信息,请参阅 向安全组添加规则 (p. 461)。
3.
(可选)如果指令没有完成预期执行的任务,或者您要验证指令是否正确完成,请检查
/var/log/cloud-init-output.log 上的 cloud-init 输出日志文件,在输出中查找错误消息。
对于其他调试信息,您可以将以下行添加到指令:
output : { all : '| tee -a /var/log/cloud-init-output.log' }
该指令将 runcmd 输出发送到 /var/log/cloud-init-output.log。
API 和 CLI 概述
可以在启动过程中使用以下命令之一将用户数据传递给实例。有关这些命令行界面的更多信息,请参阅
访问 Amazon EC2 (p. 3)。
• AWS CLI:在 run-instances 命令中使用 --user-data 参数。
• 适用于 Windows PowerShell 的 AWS 工具:在 New-EC2Instance 命令中使用 -UserData 参数。
• Amazon EC2 CLI:在 ec2-run-instances 命令中使用 --user-data 参数。
• Amazon EC2 查询 API:在 RunInstances 命令中使用 UserData 参数。
实例元数据和用户数据
Abstract
访问实例元数据、动态数据和用户数据,以配置和管理正在运行的实例。
实例元数据 是有关您的实例的数据,可以用来配置或管理正在运行的实例。实例元数据可划分成不同类
别。有关更多信息,请参阅 实例元数据类别 (p. 294)。
EC2 实例还可包括动态数据,例如启动实例时生成的实例身份文档。有关更多信息,请参阅 动态数据类
别 (p. 297)。
您也可以访问在启动您的实例时所提供的用户数据。例如,您可指定参数以便配置实例,也可连接简单的
脚本。您也可以使用这些数据来构建更多可通过启动时提供的配置文件来修改的通用 AMI。例如,如果您
为各种小型企业运行 Web 服务器,则这些企业都可以使用相同的 AMI,并在启动时从您在用户数据中指
定的 Amazon S3 存储桶中检索其各自的内容。要随时添加一个新客户,您只需为该客户创建一个存储
桶,将客户的内容添加进去,然后启动您的 AMI 即可。如果您同时启动多个实例,则用户数据可供该预
留中的所有实例使用。
Important
虽然您只能从实例自身内部访问实例元数据和用户数据,但数据并未进行加密保护。可访问实例
的人员均可查看其元数据。因此,您应当采取适当的预防措施来保护敏感数据(例如永久加密密
钥)。不应将敏感数据(例如密码)存储为用户数据。
内容
• 检索实例元数据 (p. 288)
287
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
• 添加用户数据 (p. 290)
• 检索用户数据 (p. 291)
• 检索动态数据 (p. 291)
• 示例:AMI 启动索引值 (p. 292)
• 实例元数据类别 (p. 294)
• 实例标识文档 (p. 297)
检索实例元数据
由于您的正在运行的实例存在实例元数据,因此您无需使用 Amazon EC2 控制台或 AWS CLI。这在您编
写脚本以实现从实例运行时非常有用。例如,您可从实例元数据访问您的实例的本地 IP 地址来以管理与
外部应用程序的连接。
要从运行实例内部查看所有类别的实例元数据,请使用以下 URI:
http://169.254.169.254/latest/meta-data/
请注意,您无需为用于检索实例元数据和用户数据的 HTTP 请求付费。
您可以使用一种诸如 cURL 的工具,或是如果实例支持,则可以使用 GET 命令;例如:
$ curl http://169.254.169.254/latest/meta-data/
$ GET http://169.254.169.254/latest/meta-data/
您也可以下载实例元数据查询工具,通过该工具,您无需键入完整的 URI 或目录名称就可以查询实例元
数据:
http://www.amazonaws.cn/code/1825
所有元数据以文本形式返回(内容类型 text/plain)。对特定元数据资源的请求会返回一个相应的值,如
果该资源不可用,则会返回 HTTP 错误代码 404 - Not Found。
对通用元数据资源的请求(以 / 结尾的 URI)会返回一个可用资源列表,如果此类资源不存在,则会返回
HTTP 错误代码 404 - Not Found。列表中的各个项目位于被换行符 (ASCII 10) 终止的不同的行上。
检索实例元数据的示例
此示例可以获取实例元数据的可用版本。这些版本不一定与 Amazon EC2 API 版本相关联。如果您有依
赖于以前版本中所存在的结构和信息的脚本,则您可使用早期版本。
$ curl http://169.254.169.254/
1.0
2007-01-19
2007-03-01
2007-08-29
2007-10-10
2007-12-15
2008-02-01
2008-09-01
2009-04-04
2011-01-01
2011-05-01
288
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
2012-01-12
2014-02-25
latest
此示例获得顶级元数据项目。一些项目只可用于 VPC 中的实例。有关这些项目中每一项的更多信息,请
参阅 实例元数据类别 (p. 294)。
$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
instance-action
instance-id
instance-type
kernel-id
local-hostname
local-ipv4
mac
network/
placement/
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/
这些示例获得前面示例中的一些元数据项目的值。
$ curl http://169.254.169.254/latest/meta-data/ami-id
ami-2bb65342
$ curl http://169.254.169.254/latest/meta-data/reservation-id
r-fea54097
$ curl http://169.254.169.254/latest/meta-data/hostname
ec2-203-0-113-25.compute-1.amazonaws.com
此示例获得可用公共密钥的列表。
$ curl http://169.254.169.254/latest/meta-data/public-keys/
0=my-public-key
此示例显示了公用密钥 0 可用的格式。
$ curl http://169.254.169.254/latest/meta-data/public-keys/0/
openssh-key
此示例获得公用密钥 0 (以 OpenSSH 密钥格式)。
289
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
$ curl http://169.254.169.254/latest/meta-data/public-keys/0/openssh-key
ssh-rsa MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE my-public-key
此示例显示可用于 EC2-Classic 平台中 NAT 实例上特定网络接口(由 MAC 地址表示)的信息。
$ curl http://169.254.169.254/latest/meta-data/network/inter
faces/macs/02:29:96:8f:6a:2d/
device-number
local-hostname
local-ipv4s
mac
owner-id
public-hostname
public-ipv4s
此示例获得启动至 VPC 的 实例的子网 ID。
$ curl http://169.254.169.254/latest/meta-data/network/inter
faces/macs/02:29:96:8f:6a:2d/subnet-id
subnet-be9b61d7
添加用户数据
指定用户数据时,请注意以下几点:
• 用户数据会被视为非透明数据;您提供什么数据您就会得到什么数据。由实例对其进行解释。
• 用户数据被限制在 16 KB 以内。这种限制适用于原始形式的数据,而不是 Base64 编码形式的数据。
• 用户数据必须在提交给 API 前先进行 Base64 编码。EC2 命令行工具为您执行 base64 编码。在提交
给实例之前,数据会被解码。有关 base64 编码的更多信息,请参阅 http://tools.ietf.org/html/rfc4648。
• 用户数据仅在启动时执行。如果停止实例,修改用户数据,然后启动实例,则新的用户数据不会自动执
行。
在启动实例时指定用户数据
您可在启动实例时指定用户数据。有关更多信息,请参阅 启动实例 (p. 230)、cloud-init (p. 111) 和启动
时在 Linux 实例上运行命令 (p. 284)。
为正在运行的实例修改用户数据
您可以为之前已分配有用户数据且当前正在运行的实例修改用户数据。重启实例后将应用新用户数据。
290
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
修改 Amazon EBS 支持的实例的用户数据
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
在导航窗格中,单击 Instances (实例),然后选择实例。
单击 Actions (操作),选择 Instance State (实例状态),然后单击 Stop (停止)。
Warning
当您停止某个实例时,任何实例存储卷上的数据都将被擦除。因此,如果实例存储卷上有任
何您要保留的数据,请确保将其备份到持久性存储。
4.
在确认对话框中,单击 Yes, Stop 。停止实例可能需要几分钟时间。
5.
在实例仍处于选中状态的情况下,单击 Actions,选择 Instance Settings,然后单击 View/Change
User Data。请注意,如果实例正在运行,您不能更改用户数据,但是可以查看。
6.
在 View/Change User Data (查看/更改用户数据) 对话框中,更新用户数据,然后单击 Save (保存)。
检索用户数据
要检索用户数据,请使用以下 URI:
http://169.254.169.254/latest/user-data
请求用户数据时,所返回的是未经任何更改的原样数据(内容类型 application/x-octetstream)。
此处显示的是返回逗号分隔用户数据的示例。
$ curl http://169.254.169.254/latest/user-data
1234,john,reboot,true | 4512,richard, | 173,,,
此处显示的是返回行分隔的用户数据的示例。
$ curl http://169.254.169.254/latest/user-data
[general]
instances: 4
[instance-0]
s3-bucket: <user_name>
[instance-1]
reboot-on-error: yes
检索动态数据
要在运行实例内部检索动态数据,请使用以下 URI:
http://169.254.169.254/latest/dynamic/
此示例介绍如何检索高级实例标识类别:
291
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
$ curl http://169.254.169.254/latest/dynamic/instance-identity/
pkcs7
signature
document
有关动态数据的详细信息和如何对其进行检索的示例,请参阅 实例标识文档 (p. 297)。
示例:AMI 启动索引值
本示例演示如何使用用户数据和实例元数据来配置实例。
Alice 想要启动她最喜欢的 数据库 AMI 的四个实例,第一个实例用作主实例,其余三个用作副本。当她启
动它们时,她想为每个副本添加有关复制策略的用户数据。她知道这些数据将对所有四个实例都可用,因
此她所采用的用户数据构建方式必须能够让每个实例识别出哪些部分适用于自己。她可通过
ami-launch-index 实例元数据值来实现这一点,该值对每个实例都是唯一的。
以下是 Alice 所构建的用户数据:
replicate-every=1min | replicate-every=5min | replicate-every=10min
replicate-every=1min 数据定义第一个副本的配置,replicate-every=5min 定义第二个副本的配
置,以此类推。Alice 决定以 ASCII 字符串形式提供这些数据,用竖线符号 (|) 来分隔每个实例的数据。
Alice 使用 run-instances 命令启动四个实例,并指定以下用户数据:
aws ec2 run-instances --image-id ami-2bb65342 --count 4 --instance-type t2.micro
--user-data "replicate-every=1min | replicate-every=5min | replicateevery=10min"
实例启动之后,所有实例都有以下用户数据和常用元数据的副本:
•
•
•
•
•
AMI id: ami-2bb65342
预留 ID:r-1234567890abcabc0
公用密钥:无
安全组名称:默认值
实例类型:t2.micro
然而,每个实例都包含某些特定的元数据。
实例 1
元数据
值
instance-id
i-1234567890abcdef0
ami-launch-index
0
public-hostname
ec2-203-0-113-25.compute-1.amazonaws.com
public-ipv4
67.202.51.223
local-hostname
ip-10-251-50-12.ec2.internal
local-ipv4
10.251.50.35
292
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
实例 2
元数据
值
instance-id
i-0598c7d356eba48d7
ami-launch-index
1
public-hostname
ec2-67-202-51-224.compute-1.amazonaws.com
public-ipv4
67.202.51.224
local-hostname
ip-10-251-50-36.ec2.internal
local-ipv4
10.251.50.36
实例 3
元数据
值
instance-id
i-0ee992212549ce0e7
ami-launch-index
2
public-hostname
ec2-67-202-51-225.compute-1.amazonaws.com
public-ipv4
67.202.51.225
local-hostname
ip-10-251-50-37.ec2.internal
local-ipv4
10.251.50.37
实例 4
元数据
值
instance-id
i-abc123abc456abc78
ami-launch-index
3
public-hostname
ec2-67-202-51-226.compute-1.amazonaws.com
public-ipv4
67.202.51.226
local-hostname
ip-10-251-50-38.ec2.internal
local-ipv4
10.251.50.38
Alice 可以使用 ami-launch-index 值确定用户数据的哪个部分适用于哪个特定实例。
1. 她连接到其中一个实例并检索该实例的 ami-launch-index,以确保该实例是副本之一:
$ curl http://169.254.169.254/latest/meta-data/ami-launch-index
2
2. 她将 ami-launch-index 另存为变量:
293
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
$ ami_launch_index=`curl http://169.254.169.254/latest/meta-data/ami-launchindex`
3. 她将用户数据另存为变量:
$ user_data=`curl http://169.254.169.254/latest/user-data/`
4. 最后,Alice 使用 cut 命令提取适用于该实例的用户数据部分:
$ echo $user_data | cut -d"|" -f"$ami_launch_index"
replicate-every=5min
实例元数据类别
下表列举了实例元数据的类别。
Data
说明
引入的版本
ami-id
用于启动实例的 AMI ID。
1.0
ami-launch-index
如果您同时启动了多个实例,此值表
示实例启动的顺序。第一个启动的实
例的值是 0。
1.0
ami-manifest-path
Amazon S3 中的 AMI 清单文件的路
1.0
径。如果您使用 Amazon EBS 支持的
AMI 来启动实例,则返回的结果为
unknown。
ancestor-ami-ids
为创建此 AMI 而重新绑定的任何实例 2007-10-10
的 AMI ID。仅当 AMI 清单文件包含一
个 ancestor-amis 密钥时,此值才
存在。
block-device-mapping/ami
包含根/启动文件系统的虚拟设备。
block-device-mapping/ebs
否
与 Amazon EBS 卷相关联的虚拟设备 2007-12-15
(如果存在)。如果 Amazon EBS 卷
在启动时存在或者在上一次启动该实
例时存在,那么这些卷仅在元数据中
可用。N 表示 Amazon EBS 卷的索引
(例如 ebs1 或 ebs2)。
block-device-mapping/ephem- 与短暂设备相关联的虚拟设备,如果
eral
存在的话。N 表示临时卷的索引。
否
2007-12-15
2007-12-15
block-device-mapping/root
与根设备相关联的虚拟设备或分区, 2007-12-15
或虚拟设备上的分区(在根(/ 或 C:)
文件系统与给定实例相关联的情况
下)。
block-device-mapping/swap
与 swap 相关联的虚拟设备。并不总是 2007-12-15
存在。
294
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
Data
说明
引入的版本
hostname
实例的私有主机名。在存在多个网络
接口的情况下,其指的是 eth0 设备
(设备号为 0 的设备)。
1.0
iam/info
如果启动时存在与实例关联的 IAM 角 2012-01-12
色,则包含有关实例配置文件上次更
新时间的信息(包括实例的 LastUpdated 日期、InstanceProfileArn 和 InstanceProfileId)。如果没有,则不显
示。
iam/security-credentials
/role-name
如果启动时存在与实例关联的 IAM 角 2012-01-12
色,则 role-name 为角色的名称,并
且 role-name 包含与角色关联的临时
安全凭证(有关更多信息,请参阅 通
过实例元数据检索安全证书(p.507))。
如果没有,则不显示。
instance-action
通知实例在准备打包时重新启动。有 2008-09-01
效值:none | shutdown | bundlepending。
instance-id
此实例的 ID.
1.0
instance-type
实例类型有关更多信息,请参阅 实例
类型 (p. 121)。
2007-08-29
kernel-id
此实例启动的内核的 ID,如果适用的
话。
2008-02-01
local-hostname
实例的私有 DNS 主机名。在存在多个 2007-01-19
网络接口的情况下,其指的是 eth0 设
备(设备号为 0 的设备)。
local-ipv4
该实例的私有 IP 地址。在存在多个网 1.0
络接口的情况下,其指的是 eth0 设备
(设备号为 0 的设备)。
mac
实例的媒体访问控制 (MAC) 地址。在 2011 年 1 月 1 日
存在多个网络接口的情况下,其指的
是 eth0 设备(设备号为 0 的设备)。
network/interfaces/macs/
mac/device-number
与该接口相关联的唯一设备号。设备 2011 年 1 月 1 日
号与设备名称对应;例如,devicenumber 为 2 对应于 eth2 设备。此类
别对应于 Amazon EC2 API、Amazon
EC2 CLI 和适用于 AWS CLI 的 EC2
命令使用的 DeviceIndex 和
device-index 字段。
network/interfaces/macs/
mac/ipv4-associations/pu
blic-ip
与每个 public-ip 地址相关联并被分 2011 年 1 月 1 日
配给该接口的私有 IPv4 地址。
network/interfaces/macs/
mac/local-hostname
实例的本地主机名称。
295
2011 年 1 月 1 日
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
Data
说明
引入的版本
network/interfaces/macs/
mac/local-ipv4s
与接口相关联的私有 IP 地址。
2011 年 1 月 1 日
network/interfaces/macs/
mac/mac
该实例的 MAC 地址。
2011 年 1 月 1 日
network/interfaces/macs/
mac/owner-id
网络接口拥有者的 ID。在多个接口的
环境中,接口可由第三方连接,如
Elastic Load Balancing。接口拥有者
需为接口上的流量付费。
2011 年 1 月 1 日
network/interfaces/macs/
mac/public-hostname
实例的公有 DNS。如果实例在 VPC
2011 年 1 月 1 日
中,则仅当 enableDnsHostnames
属性设置为 true 时返回此类别。有关
更多信息,请参阅在您的 VPC 中使用
DNS。
network/interfaces/macs/
mac/public-ipv4s
与接口相关联的弹性 IP 地址。一个实 2011 年 1 月 1 日
例上可能有多个 IP 地址。
network/interfaces/macs/
mac/security-groups
网络接口所属的安全组。仅对启动至
VPC 的实例返回。
network/interfaces/macs/
mac/security-group-ids
网络接口所属的安全组的 ID.仅对启动 2011 年 1 月 1 日
至 VPC 的实例返回。有关 EC2-VPC
平台中安全组的更多信息,请参阅您
的 VPC 的安全组。
network/interfaces/macs/
mac/subnet-id
接口所驻留的子网的 ID。仅对启动至
VPC 的实例返回。
2011 年 1 月 1 日
network/interfaces/macs/
mac/subnet-ipv4-cidr-block
接口所驻留的子网的 CIDR 块。仅对
启动至 VPC 的实例返回。
2011 年 1 月 1 日
network/interfaces/macs/
mac/vpc-id
接口所驻留的 VPC 的 ID。仅对启动至 2011 年 1 月 1 日
VPC 的实例返回。
network/interfaces/macs/
mac/vpc-ipv4-cidr-block
接口所驻留的 VPC 的 CIDR 块。仅对 2011 年 1 月 1 日
启动至 VPC 的实例返回。
placement/availability-zone 实例启动的可用区域。
2011 年 1 月 1 日
2008-02-01
product-codes
与实例相关联的产品代码,如果有的
话。
public-hostname
实例的公有 DNS。如果实例在 VPC
2007-01-19
中,则仅当 enableDnsHostnames
属性设置为 true 时返回此类别。有关
更多信息,请参阅在您的 VPC 中使用
DNS。
public-ipv4
公用 IP 地址。如果弹性 IP 地址与实 2007-01-19
例相关联,返回的值是弹性 IP 地址。
public-keys/0/openssh-key
公用密钥。仅在实例启动时提供了公
用密钥的情况下可用。
1.0
ramdisk-id
启动时指定的 RAM 磁盘 的 ID,如果
适用的话。
2007-10-10
296
2007-03-01
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
Data
说明
引入的版本
reservation-id
预留的 ID。
1.0
security-groups
应用到实例的安全组的名称。
1.0
启动之后,您只能更改正在 VPC 中运
行的实例的安全组。这些更改将体现
在此处和 network/interfaces/macs/mac/security-groups
中。
services/domain
用于区域的 AWS 资源的域;例如用于 2014-02-25
us-east-1 的 amazonaws.com。
spot/termination-time
竞价型实例操作系统将收到关闭信号 2015-01-05
的大致时间 (UTC)。仅当竞价型实例
已由 Amazon EC2 标记为终止时,此
项目才会出现并包含时间值(例如,
2015-01-05T18:02:00Z)。如果您自
己终止了竞价型实例,那么终止时间
项目不会设置时间。
动态数据类别
下表列举了动态数据的类别。
Data
说明
引入的版本
fws/instance-monitor- 显示客户是否在 CloudWatch 中启用了详细的一分钟监控的 2009-04-04
ing
值。有效值:enabled | disabled
instance-identity/document
包含实例属性(如实例 ID、私有 IP 地址等)的 JSON。请 2009-04-04
参阅实例标识文档 (p. 297)。
instance-identity/pkcs7
用于验证签名的文档的真实性和内容。请参阅实例标识文
档 (p. 297)。
instance-identity/signature
可被其他各方用于验证来源和真实性的数据。请参阅实例标 2009-04-04
识文档 (p. 297)。
2009-04-04
实例标识文档
Abstract
使用实例标识文档验证实例的属性。
实例标识文档是描述实例的 JSON 文件。实例标识文档带有一个签名和一个 PKCS7 签名,这些签名可用
于验证文档中提供的信息的准确性、来源和真实性。例如,您可能下载了包含付费更新的免费软件。
实例标识文档在实例启动时生成,并通过实例元数据 (p. 287)向实例公开。它会验证实例的属性,如订阅
的软件、实例大小、实例类型、操作系统和 AMI。
Important
由于实例标识文档和签名的动态性质,我们建议定期检索一次实例标识文档和签名。
297
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
获取实例标识文档和签名
若要取回实例身分文件,请对正在运行的实例使用以下 URL :
http://169.254.169.254/latest/dynamic/instance-identity/document
{
"devpayProductCodes" : null,
"availabilityZone" : "us-east-1d",
"privateIp" : "10.158.112.84",
"version" : "2010-08-31",
"region" : "us-east-1",
"instanceId" : "i-1234567890abcdef0",
"billingProducts" : null,
"instanceType" : "t1.micro",
"accountId" : "123456789012",
"pendingTime" : "2015-11-19T16:32:11Z",
"imageId" : "ami-5fb8c835",
"kernelId" : "aki-919dcaf8",
"ramdiskId" : null,
"architecture" : "x86_64"
}
若要取回实例身分签名,请对正在运行的实例使用以下 URL :
http://169.254.169.254/latest/dynamic/instance-identity/signature
dExamplesjNQhhJan7pORLpLSr7lJEF4V2DhKGlyoYVBoUYrY9njyBCmhEayaGrhtS/AWY+LPx
lVSQURF5n0gwPNCuO6ICT0fNrm5IH7w9ydyaexamplejJw8XvWPxbuRkcN0TAA1p4RtCAqm4ms
x2oALjWSCBExample=
若要取回 PKCS7 签名,请对正在运行的实例使用以下 URL :
http://169.254.169.254/latest/dynamic/instance-identity/pkcs7
MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMC
VVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6
b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAd
BgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcN
MTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYD
VQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25z
b2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFt
YXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ
21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9T
rDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpE
Ibb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4
nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0Fkb
FFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTb
NYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE
示例:验证 PKCS7 签名
通过该地区的AWS公有证书对您的实例进行确认,您可以使用 PKCS7 签名来对它进行验证。
298
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
针对美国东部(弗吉尼亚北部)、美国西部(俄勒冈)、美国西部(加利福尼亚北部)、欧洲(爱尔兰)、
欧洲(法兰克福)、亚太地区(东京)地区、亚太区域 (首尔)、亚太区域(新加坡)、亚太地区(悉尼)
和南美洲(圣保罗)地区的AWS公有证书如下:
-----BEGIN CERTIFICATE----MIIC7TCCAq0CCQCWukjZ5V4aZzAJBgcqhkjOOAQDMFwxCzAJBgNVBAYTAlVTMRkw
FwYDVQQIExBXYXNoaW5ndG9uIFN0YXRlMRAwDgYDVQQHEwdTZWF0dGxlMSAwHgYD
VQQKExdBbWF6b24gV2ViIFNlcnZpY2VzIExMQzAeFw0xMjAxMDUxMjU2MTJaFw0z
ODAxMDUxMjU2MTJaMFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQIExBXYXNoaW5ndG9u
IFN0YXRlMRAwDgYDVQQHEwdTZWF0dGxlMSAwHgYDVQQKExdBbWF6b24gV2ViIFNl
cnZpY2VzIExMQzCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQCjkvcS2bb1VQ4yt/5e
ih5OO6kK/n1Lzllr7D8ZwtQP8fOEpp5E2ng+D6Ud1Z1gYipr58Kj3nssSNpI6bX3
VyIQzK7wLclnd/YozqNNmgIyZecN7EglK9ITHJLP+x8FtUpt3QbyYXJdmVMegN6P
hviYt5JH/nYl4hh3Pa1HJdskgQIVALVJ3ER11+Ko4tP6nwvHwh6+ERYRAoGBAI1j
k+tkqMVHuAFcvAGKocTgsjJem6/5qomzJuKDmbJNu9Qxw3rAotXau8Qe+MBcJl/U
hhy1KHVpCGl9fueQ2s6IL0CaO/buycU1CiYQk40KNHCcHfNiZbdlx1E9rpUp7bnF
lRa2v1ntMX3caRVDdbtPEWmdxSCYsYFDk4mZrOLBA4GEAAKBgEbmeve5f8LIE/Gf
MNmP9CM5eovQOGx5ho8WqD+aTebs+k2tn92BBPqeZqpWRa5P/+jrdKml1qx4llHW
MXrs3IgIb6+hUIB+S8dz8/mmO0bpr76RoZVCXYab2CZedFut7qc3WUH9+EUAH5mw
vSeDCOUMYQR7R9LINYwouHIziqQYMAkGByqGSM44BAMDLwAwLAIUWXBlk40xTwSw
7HX32MxXYruse9ACFBNGmdX2ZBrVNGrN9N2f6ROk0k9K
-----END CERTIFICATE-----
针对AWS GovCloud (US)地区的AWS公有证书如下:
-----BEGIN CERTIFICATE----MIIC7TCCAq0CCQCWukjZ5V4aZzAJBgcqhkjOOAQDMFwxCzAJBgNVBAYTAlVTMRkw
FwYDVQQIExBXYXNoaW5ndG9uIFN0YXRlMRAwDgYDVQQHEwdTZWF0dGxlMSAwHgYD
VQQKExdBbWF6b24gV2ViIFNlcnZpY2VzIExMQzAeFw0xMjAxMDUxMjU2MTJaFw0z
ODAxMDUxMjU2MTJaMFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQIExBXYXNoaW5ndG9u
IFN0YXRlMRAwDgYDVQQHEwdTZWF0dGxlMSAwHgYDVQQKExdBbWF6b24gV2ViIFNl
cnZpY2VzIExMQzCCAbcwggEsBgcqhkjOOAQBMIIBHwKBgQCjkvcS2bb1VQ4yt/5e
ih5OO6kK/n1Lzllr7D8ZwtQP8fOEpp5E2ng+D6Ud1Z1gYipr58Kj3nssSNpI6bX3
VyIQzK7wLclnd/YozqNNmgIyZecN7EglK9ITHJLP+x8FtUpt3QbyYXJdmVMegN6P
hviYt5JH/nYl4hh3Pa1HJdskgQIVALVJ3ER11+Ko4tP6nwvHwh6+ERYRAoGBAI1j
k+tkqMVHuAFcvAGKocTgsjJem6/5qomzJuKDmbJNu9Qxw3rAotXau8Qe+MBcJl/U
hhy1KHVpCGl9fueQ2s6IL0CaO/buycU1CiYQk40KNHCcHfNiZbdlx1E9rpUp7bnF
lRa2v1ntMX3caRVDdbtPEWmdxSCYsYFDk4mZrOLBA4GEAAKBgEbmeve5f8LIE/Gf
MNmP9CM5eovQOGx5ho8WqD+aTebs+k2tn92BBPqeZqpWRa5P/+jrdKml1qx4llHW
MXrs3IgIb6+hUIB+S8dz8/mmO0bpr76RoZVCXYab2CZedFut7qc3WUH9+EUAH5mw
vSeDCOUMYQR7R9LINYwouHIziqQYMAkGByqGSM44BAMDLwAwLAIUWXBlk40xTwSw
7HX32MxXYruse9ACFBNGmdX2ZBrVNGrN9N2f6ROk0k9K
-----END CERTIFICATE-----
有关AWS GovCloud (US)的更多信息,请参阅AWS GovCloud (US) User Guide。
针对中国(北京)地区的AWS公有证书如下:
-----BEGIN CERTIFICATE----MIIDNjCCAh4CCQD3yZ1w1AVkTzANBgkqhkiG9w0BAQsFADBcMQswCQYDVQQGEwJV
UzEZMBcGA1UECBMQV2FzaGluZ3RvbiBTdGF0ZTEQMA4GA1UEBxMHU2VhdHRsZTEg
MB4GA1UEChMXQW1hem9uIFdlYiBTZXJ2aWNlcyBMTEMwIBcNMTUwNTEzMDk1OTE1
WhgPMjE5NDEwMTYwOTU5MTVaMFwxCzAJBgNVBAYTAlVTMRkwFwYDVQQIExBXYXNo
aW5ndG9uIFN0YXRlMRAwDgYDVQQHEwdTZWF0dGxlMSAwHgYDVQQKExdBbWF6b24g
V2ViIFNlcnZpY2VzIExMQzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AMWk9vyppSmDU3AxZ2Cy2bvKeK3F1UqNpMuyeriizi+NTsZ8tQqtNloaQcqhto/l
299
Amazon Elastic Compute Cloud Linux 实例用户指南
实例元数据和用户数据
gsw9+QSnEJeYWnmivJWOBdn9CyDpN7cpHVmeGgNJL2fvImWyWe2f2Kq/BL9l7N7C
P2ZT52/sH9orlck1n2zO8xPi7MItgPHQwu3OxsGQsAdWucdxjHGtdchulpo1uJ31
jsTAPKZ3p1/sxPXBBAgBMatPHhRBqhwHO/Twm4J3GmTLWN7oVDds4W3bPKQfnw3r
vtBj/SM4/IgQ3xJslFcl90TZbQbgxIi88R/gWTbs7GsyT2PzstU30yLdJhKfdZKz
/aIzraHvoDTWFaOdy0+OOaECAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAdSzN2+0E
V1BfR3DPWJHWRf1b7zl+1X/ZseW2hYE5r6YxrLv+1VPf/L5I6kB7GEtqhZUqteY7
zAceoLrVu/7OynRyfQetJVGichaaxLNM3lcr6kcxOowb+WQQ84cwrB3keykH4gRX
KHB2rlWSxta+2panSEO1JX2q5jhcFP90rDOtZjlpYv57N/Z9iQ+dvQPJnChdq3BK
5pZlnIDnVVxqRike7BFy8tKyPj7HzoPEF5mh9Kfnn1YoSVu+61lMVv/qRjnyKfS9
c96nE98sYFj0ZVBzXw8Sq4Gh8FiVmFHbQp1peGC19idOUqxPxWsasWxQXO0azYsP
9RyWLHKxH1dMuA==
-----END CERTIFICATE-----
对于其他地区,请联系AWS 支持以获取AWS公有证书。
验证 PKCS7 签名
1.
在您的Amazon Linux实例上为 PKCS7 签名创建一个临时文件:
PKCS7=$(mktemp)
2.
在文档中加入-----BEGIN PKCS7-----标头,然后附加实例元数据的 PKCS7 签名内容、新的一
行和-----END PKCS7-----页脚。
echo "-----BEGIN PKCS7-----" > $PKCS7
curl -s http://169.254.169.254/latest/dynamic/instance-identity/pkcs7 >>
$PKCS7
echo "" >> $PKCS7
echo "-----END PKCS7-----" >> $PKCS7
3.
为实例身份文件创建一份临时文件,并用您的实例的元数据的文件内容对它进行数据输入:
DOCUMENT=$(mktemp)
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document >
$DOCUMENT
4.
5.
打开文本编辑器并创建名为AWSpubkey的文件。将上述AWS公有证书的内容复制粘贴到该文件内并
保存。
按照以下方法使用 OpenSSL 工具验证签名:
openssl smime -verify -in $PKCS7 -inform PEM -content $DOCUMENT -certfile
AWSpubkey -noverify > /dev/null
Verification successful
300
Amazon Elastic Compute Cloud Linux 实例用户指南
远程管理实例
远程管理 Amazon EC2 实例
Abstract
使用 SSM Run Command 远程管理 AWS Amazon EC2 实例的配置。
您可以使用 Simple Systems Manager (SSM) Run Command 功能安全地远程管理 Amazon EC2 实例的
配置。Run Command 提供了一种不必在本地登录实例桌面即可执行常见管理任务的简单方法。您可以通
过同时对多个实例执行命令,为一组实例管理配置更改。Run Command 将报告每个命令的状态和结果。
Note
有关适用于 Windows 的 SSM Run Command 的信息,请参阅 Amazon EC2 用户指南(适用于
Microsoft Windows 实例) 中的远程管理 AWS EC2 实例。有关 SSM Run Command API 的信
息,请参阅 Amazon EC2 Simple Systems Manager API Reference。
下面是您可使用 Run Command 执行的任务类型的一些示例:
•
•
•
•
•
•
•
•
运行 Shell 脚本
添加用户或组并配置权限
查看所有正在运行的服务
停止或启动服务
查看系统资源
查看日志文件
执行文件操作
安装或卸载应用程序
使用 Amazon EC2 Run Command
Run Command 使用预定义的 SSM 文档。您应确定要对实例进行的更改并选择预定义的 SSM 文档来执
行操作。例如,您可以使用 AWS-RunShellScript 文档对实例执行 Shell 脚本 。
在执行命令时,实例上的代理将使用 AWS Identity and Access Management (IAM) 角色访问 Run Command
服务。在实例上运行的 Amazon SSM 代理 将处理命令,按指定方式配置实例并记录输出和结果。Run
Command 将存储 30 天的命令历史记录。信息还会存储在 AWS CloudTrail 中并一直保留,直到您删除
这些数据。有关更多信息,请参阅 Amazon EC2 Simple Systems Manager API Reference 中的审核 API
调用。
Note
SSM 代理是一个开源应用程序。有关更多信息,请参阅
发送命令
当您发送指令时,请运行指令尝试执行一次此项指令。您可以同时发送多个命令。命令将异步执行。系统
将管理每个命令的队列、执行、取消和报告。但是,不保证命令执行的顺序。默认情况下,Run Command
使用限制来确保每个实例每分钟发出的命令不超过 60 个。如果在您执行命令时实例未运行或没有响应,
则系统会对命令进行排队并尝试在实例响应时运行命令。默认情况下,系统将对命令进行排队并且会在收
到请求后尝试运行命令最多 31 天。有关指令状态的详细信息,请参阅(监控命令 (p. 330))。
利用 IAM,您可以控制单个用户或一组用户可对一个或多个实例执行哪些命令。有关限制对 Run Command
的访问的更多信息,请参阅委派对 SSM Run Command 的访问权限 (p. 317)。
内容
301
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
• SSM Run Command 先决条件 (p. 302)
• 配置适用于 SSM Run Command 的 IAM 角色和用户 (p. 303)
• 配置 SSM 代理 (p. 308)
• 委派对 SSM Run Command 的访问权限 (p. 317)
• 使用 SSM Run Command 执行命令 (p. 319)
• 在 Amazon EC2 控制台中查看命令输出 (p. 321)
• 创建您自己的命令 (p. 323)
• SSM Run Command 演练 (p. 323)
• 取消命令 (p. 330)
• 监控命令 (p. 330)
• SSM Run Command 疑难解答 (p. 331)
SSM Run Command 先决条件
SSM Run Command 具有下列限制和先决条件。有关 Windows 先决条件的信息,请参阅 Amazon EC2
用户指南(适用于 Microsoft Windows 实例) 中的 SSM Run Command 先决条件。
限制
Run Command 仅在 SSM 区域提供。
先决条件
要求
详细信息
支持的操作系统
实例必须运行支持的 Linux 版本。
64 位和 32 位系统
• Amazon Linux 2014.09、2014.03 或更高版本
• Ubuntu Server 14.04 LTS、12.04 LTS 或更高版
本
• Red Hat Enterprise Linux (RHEL) 6.5 或更高版
本
• CentOS 6.3 或更高版本
仅 64 位系统
• Amazon Linux 2015.09、2015.03 或更高版本
• Red Hat Enterprise Linux (RHEL) 7.x 或更高版
本
• CentOS 7.1 或更高版本
302
了
解
更
多
信
息
查
找
xuniL
6
7
)p
.(A
M
I
Amazon Elastic Compute Cloud Linux 实例用户指南
配置适用于 SSM Run Command 的 IAM 角色和用户
要求
详细信息
了
解
更
多
信
息
代理
实例必须运行 SSM 代理的最新版本。
IAM 角色和权限
Run Command 需要一个针对将处理命令的实例的
IAM EC2 实例角色和一个针对执行命令的用户的独
立角色。两个角色都需要权限策略才能通过 SSM
API 进行通信。
Internet 访问
验证 EC2 实例是否具有出站 Internet 访问权。无需 -nI
入站 Internet 访问权。
-ret
ten
网
关
Amazon S3 存储桶(可选)
您可以在 Amazon S3 存储桶中存储命令输出。
Amazon EC2 控制台中的命令输出将在 2500 个字
符后被截断。此外,您可能希望创建 Amazon S3
键前缀(子文件夹)来帮助您整理 Run Command
输出。
配
置
MSS
代
)8
0
3.p理
(
配
置
适
用
于
对于实例和用户,您可以使用 SSM 托管策略或创 MSS
建自己的 IAM 策略。如果您要使用 EC2 实例的现 nuR
有 IAM 角色,则必须验证该角色的信任策略中是否 m
-oC
列出了 ec2.amazonaws.com。
dna
m
的
M
AI
角
色
和
用
)3
0.p户
(
在配置先决条件后,请参阅使用 SSM Run Command 执行命令 (p. 319)以了解分步过程。要查看 Run
Command 示例,请参阅 SSM Run Command 演练 (p. 323)。
相关主题
• Amazon EC2 Simple Systems Manager API Reference
• AWS Command Line Interface Reference 的 Amazon EC2 Simple Systems Manager 部分。
配置适用于 SSM Run Command 的 IAM 角色和用户
SSM Run Command 需要一个针对将处理命令的 EC2 实例的 IAM 角色和一个针对执行命令的用户的独
立角色。两个角色都需要权限策略才能通过 SSM API 进行通信。如果您要使用 EC2 实例的现有 IAM 角
色,则必须验证该角色的信任策略中是否列出了 ec2.amazonaws.com。有关更多信息,请参阅 验证信任
策略 (p. 307)。
303
创
建
存
储
桶
Amazon Elastic Compute Cloud Linux 实例用户指南
配置适用于 SSM Run Command 的 IAM 角色和用户
Important
您在创建实例时必须分配 EC2 实例角色。或者,您可以从现有实例创建 AMI,再从该 AMI 创建
新实例,然后分配此角色。 您可以选择使用 SSM 托管策略或创建自己的角色并指定权限,如提
供的示例所示。
内容
• 谨慎委派对 Run Command 的访问权限 (p. 304)
• 使用 SSM 托管策略 (p. 304)
• 配置您自己的角色和策略 (p. 304)
• 创建使用 EC2 实例角色的新 EC2 实例 (p. 308)
谨慎委派对 Run Command 的访问权限
由于 Amazon SSM 代理在 Linux 实例上作为根运行,SSM 文档中指定的命令或脚本通过您的实例上的管
理权限运行。如果用户有权执行任何预定义的 SSM 文档(任何以 AWS-* 开头的文档),则该用户也具
有实例的管理员访问权。合理地委派对 SSM 和 Run Command 的访问权限。如果您创建自己的 SSM 文
档,这一点会变得非常重要。
Important
Amazon Web Services 不提供有关如何创建安全 SSM 文档的指导。您自行承担创建 SSM 文档
和委派对 Run Command 操作的访问权限的风险。作为安全最佳实践,建议您仅向可信管理员分
配对 AWS-* 文档(尤其是 AWS-RunShellScript 文档)的访问权限。您可以为特定任务创建 SSM
文档,并向非管理员委派访问权限。有关更多信息,请参阅 委派对 SSM Run Command 的访问
权限 (p. 317)。
使用 SSM 托管策略
Run Command 是用于配置 EC2 实例的 Amazon EC2 Simple Systems Manager (SSM) 的扩展。SSM
的 IAM 托管策略可帮助您为 Run Command 用户和实例快速配置访问权限和其他权限。可通过搜索 SSM
在 IAM 控制台的 Policies 页面中查找这些策略,如以下屏幕截图所示。
托管策略执行以下功能:
• AmazonEC2RoleforSSM(实例信任策略):此策略使实例能够与 Run Command API 进行通信。
• AmazonSSMFullAccess(用户信任策略):此策略向用户授予对 Run Command API 和 SSM 文档的
访问权限。将此策略分配给管理员和可信高级用户。
• AmazonSSMReadOnlyAccess(用户信任策略):此策略向用户授予对只读 API 操作(例如 Get 和
List)的访问权限。
有关如何配置这些策略的信息,请参阅托管策略和内联策略。
配置您自己的角色和策略
如果您选择不使用 SSM 托管策略,则使用以下过程创建和配置一个 SSM EC2 实例角色和一个 SSM 用
户账户。
304
Amazon Elastic Compute Cloud Linux 实例用户指南
配置适用于 SSM Run Command 的 IAM 角色和用户
Important
如果您要使用现有 EC2 实例角色和用户账户,则必须将此部分中显示的策略附加到该角色和该
用户账户。还必须验证 EC2 实例角色的信任策略中是否列出了 ec2.amazonaws.com。有关更多
信息,请参阅 验证信任策略 (p. 307)。
为 EC2 实例创建 IAM 策略
以下 IAM 策略使 EC2 实例能够与 Run Command API 操作进行通信。在本主题的后面部分,您将创建一
个角色并将此策略附加到该角色。
为 EC2 实例创建 IAM 策略
1.
2.
打开 https://console.amazonaws.cn/iam/ 上的 Identity and Access Management (IAM) 控制台。
在导航窗格中,选择 Policies。(如果这是您首次使用 IAM,请选择 Get Started,然后选择 Create
Policy。)
3.
4.
在 Create Your Own Policy 旁边,选择 Select。
键入策略名称(例如,RunCommandInstance)和描述,然后将以下策略复制并粘贴到 Policy
Document 字段中:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:DescribeAssociation",
"ssm:GetDocument",
"ssm:ListAssociations",
"ssm:UpdateAssociationStatus",
"ssm:UpdateInstanceInformation"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2messages:AcknowledgeMessage",
"ec2messages:DeleteMessage",
"ec2messages:FailMessage",
"ec2messages:GetEndpoint",
"ec2messages:GetMessages",
"ec2messages:SendReply"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
305
Amazon Elastic Compute Cloud Linux 实例用户指南
配置适用于 SSM Run Command 的 IAM 角色和用户
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ds:CreateComputer",
"ds:DescribeDirectories"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:DescribeLogGroups",
"logs:DescribeLogStreams",
"logs:PutLogEvents"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:ListBucketMultipartUploads"
],
"Resource": "*"
}
]
}
Important
在此 IAM 策略的最后一个部分,您可以通过指定 Amazon 资源名称 (ARN) 来限制对 Amazon
S3 存储桶的访问。例如,您可以将最后一个 "Resource": "*" 项目更改为 "Resource":
"arn:aws:s3:::AnS3Bucket/*
5.
选择 Validate Policy。验证策略是否有效。如果您收到错误,请验证您是否包含了左右大括号 { }。验
证完策略后,请选择 Create Policy。
创建 IAM 用户策略
此策略使用户能够在实例上调用 Run Command API 操作。在本主题的后面部分,您将创建一个用户账
户并将此策略附加到该账户。
创建 IAM 用户策略
1.
2.
重复上一过程以为用户创建策略。
将下面的策略复制并粘贴到 Policy Document 字段中并创建策略:
306
Amazon Elastic Compute Cloud Linux 实例用户指南
配置适用于 SSM Run Command 的 IAM 角色和用户
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:*",
"ec2:DescribeInstanceStatus"
],
"Resource": "*"
}
]
}
创建 EC2 实例角色
EC2 实例角色使实例能够与 Run Command API 操作进行通信。该角色使用您先前创建 EC2 实例策略。
创建 EC2 实例角色
1.
2.
3.
4.
5.
在 IAM 控制台的导航窗格中,选择 Roles,然后选择 Create New Role。
在 Set Role Name 页面上,输入被指定为实例角色的角色的名称,例如 RunCommandInstance。选
择 Next Step。
在 Select Role Type 页面上,选择 Amazon EC2 旁的 Select。
在 Attach Policy 页面上,选择您先前创建的 RunCommandInstance 策略。选择 Next Step。
检查角色信息,然后选择 Create Role。
验证信任策略
如果您要使用现有的 EC2 实例角色,则必须验证该角色的信任策略中是否列出了 ec2.amazonaws.com。
如果您创建了一个新的 EC2 实例角色,则必须添加 ec2.amazonaws.com 作为可信实体。
验证信任策略
1.
2.
在 IAM 控制台的导航窗格中,选择 Roles,然后选择您刚刚创建的服务器角色。
选择 Trust Relationships。
3.
在 Trusted Entities 下,验证是否列出了 ec2.amazonaws.com。如果未列出 ec2.amazonaws.com,
请选择 Edit Trust Relationship。
将下面的策略复制并粘贴到 Policy Document 字段中并创建策略:
4.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
307
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
]
}
创建用户账户
用户可利用用户账户在实例上调用 Run Command API 操作。此账户使用您先前创建的 IAM 用户策略。
创建用户账户
1.
2.
从 IAM 控制台上的 Users 页面中,选择 Create New Users。
指定用户名称(例如 RunCommandUser)并确认 Generate an access key for each user 选项已选
定。
3.
4.
选择 Create。
选择 Download Credentials。默认情况下,系统将提示您将凭证另存为 .csv 文件。
Important
记下您下载的 .csv 文件中的 RunCommandUser 访问密钥和私有密钥。
5.
6.
7.
8.
选择 Close。
在 IAM Dashboard 中,选择 Users,然后找到您刚刚创建的用户。
选择该用户名称(不要选择名称旁边的选项),然后选择 Attach Policy。
选择您先前创建的用户策略,然后选择 Attach Policy。
创建使用 EC2 实例角色的新 EC2 实例
此过程介绍如何创建使用您先前创建的 角色的新 EC2 实例。启动 EC2 实例时,将为该实例分配角色。
无法将角色分配给已在运行的实例。如果您需要向已在运行的实例添加角色,可以创建该实例的映像,然
后使用分配的所需角色从映像启动新实例。
创建使用 EC2 实例角色的实例
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
切换到支持的区域。
选择 Launch Instance,然后选择一个 Linux 实例。
3.
4.
选择实例类型,然后选择 Next: Configure Instance Details。
在 IAM role 下拉列表中,选择您先前创建的 EC2 实例角色。
5.
完成向导。
如果您创建要使用 Run Command 配置的其他实例,则必须为每个实例指定 EC2 实例角色。
配置 SSM 代理
Amazon EC2 Simple Systems Manager (SSM) 代理处理 Run Command 请求并配置该请求中指定的实
例。使用以下过程可安装、配置或卸载 SSM 代理。
308
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
Note
GitHub 上提供了 SSM 代理的源代码。我们鼓励您针对要包含的更改提交提取请求。但是,Amazon
Web Services 当前不支持运行此软件的修改后副本。
内容
• 在启动时安装 SSM 代理 (p. 309)
• 手动安装 SSM 代理 (p. 310)
• 配置 SSM 代理以使用代理 (p. 315)
• 卸载 SSM 代理 (p. 316)
在启动时安装 SSM 代理
您可以通过使用 EC2 用户数据在首次启动实例时安装 SSM 代理。在启动向导的 Configure Instance
Details 页面上,展开 Advanced Details,然后复制以下脚本之一并将其粘贴到 User data 字段。例如:
在这些脚本中,将 < > 替换为某个 SSM 区域:要避免下载产生跨区域数据传输费用,请指定您的 EC2
实例的区域。
SSM 区域
地点
区域
美国东部(弗吉尼亚北部)
us-east-1
美国西部(俄勒冈)
us-west-2
美国西部(加利福尼亚北部)
us-west-1
欧洲(爱尔兰)
eu-west-1
欧洲(法兰克福)
eu-central-1
亚太区域(新加坡)
ap-southeast-1
亚太地区(东京)
ap-northeast-1
亚太地区(悉尼)
ap-southeast-2
南美洲(圣保罗)
sa-east-1
Amazon Linux、RHEL 和 CentOS 64 位
309
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
#!/bin/bash
cd /tmp
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_amd64/amazonssm-agent.rpm -o amazon-ssm-agent.rpm
yum install -y amazon-ssm-agent.rpm
Amazon Linux、RHEL 和 CentOS 32 位
#!/bin/bash
cd /tmp
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_386/amazon-ssmagent.rpm -o amazon-ssm-agent.rpm
yum install -y amazon-ssm-agent.rpm
Ubuntu Server 64 位
#!/bin/bash
cd /tmp
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/debian_amd64/amazonssm-agent.deb -o amazon-ssm-agent.deb
dpkg -i amazon-ssm-agent.deb
Ubuntu Server 32 位
#!/bin/bash
cd /tmp
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/debian_386/amazon-ssmagent.deb -o amazon-ssm-agent.deb
dpkg -i amazon-ssm-agent.deb
保存您的更改并完成向导。在实例启动时,系统会将 SSM 代理复制到实例并启动实例。当实例处于联机
状态时,您可以使用 Run Command 配置它。有关更多信息,请参阅 使用 SSM Run Command 执行命
令 (p. 319)。
手动安装 SSM 代理
使用以下一种脚本在 Amazon Linux 、Ubuntu 、 CentOS 或 Red Hat 企业版 Linux 安装 SSM 代理。在
这些脚本中,将 < > 替换为某个 SSM 区域。
SSM 区域
地点
区域
美国东部(弗吉尼亚北部)
us-east-1
美国西部(俄勒冈)
us-west-2
美国西部(加利福尼亚北部)
us-west-1
欧洲(爱尔兰)
eu-west-1
欧洲(法兰克福)
eu-central-1
亚太区域(新加坡)
ap-southeast-1
亚太地区(东京)
ap-northeast-1
310
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
地点
区域
亚太地区(悉尼)
ap-southeast-2
南美洲(圣保罗)
sa-east-1
• 在 Amazon Linux 上安装 SSM 代理 (p. 311)
• 在 Ubuntu 上安装 SSM 代理 (p. 312)
• 在 Red Hat Enterprise Linux 上安装 SSM 代理 (p. 313)
• 在 CentOS 上安装 SSM 代理 (p. 314)
在 Amazon Linux 上安装 SSM 代理
连接到您的 Amazon Linux 实例并执行下列步骤来安装 SSM 代理。使用 Run Command 对每个将执行命
令的实例执行这些步骤。
在 Amazon Linux 上安装 SSM 代理
1.
在实例上创建临时目录。
mkdir /tmp/ssm
2.
使用以下命令之一将 SSM 安装程序下载到临时目录中。将 < > 替换为某个 SSM 区域。要避免下
载产生跨区域数据传输费用,请指定您的 EC2 实例的区域。
64 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_amd64/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
32 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_386/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
3.
运行 SSM 安装程序。
sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
4.
运行以下命令确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。
status amazon-ssm-agent
5.
如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。
a.
启动服务.
sudo start amazon-ssm-agent
b.
检查代理的状态。
311
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
status amazon-ssm-agent
在 Ubuntu 上安装 SSM 代理
连接到您的 Ubuntu 实例并执行下列步骤来安装 SSM 代理。使用 Run Command 对每个将执行命令的实
例执行这些步骤。
在 Ubuntu 上安装 SSM 代理
1.
在实例上创建临时目录。
mkdir /tmp/ssm
2.
使用以下命令之一将 SSM 安装程序下载到临时目录中。将 < > 替换为某个 SSM 区域。要避免下
载产生跨区域数据传输费用,请指定您的 EC2 实例的区域。
64 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/debian_amd64/amazonssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
32 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/debian_386/amazonssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb
3.
运行 SSM 安装程序。
sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb
4.
运行以下命令确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。
status amazon-ssm-agent
5.
如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。
a.
启动服务.
sudo start amazon-ssm-agent
b.
检查代理的状态。
status amazon-ssm-agent
312
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
在 Red Hat Enterprise Linux 上安装 SSM 代理
连接到您的 Red Hat Enterprise Linux (RHEL) 实例并执行下列步骤来安装 SSM 代理。使用 Run Command
对每个将执行命令的实例执行这些步骤。
在 Red Hat Enterprise Linux 上安装 SSM 代理
1.
在实例上创建临时目录。
mkdir /tmp/ssm
2.
使用以下命令之一将 SSM 安装程序下载到临时目录中。将 < > 替换为某个 SSM 区域。要避免下
载产生跨区域数据传输费用,请指定您的 EC2 实例的区域。
64 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_amd64/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
32 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_386/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
3.
运行 SSM 安装程序。
sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
4.
运行以下命令之一,确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。
RHEL 7.x
sudo systemctl status amazon-ssm-agent
RHEL 6.x
status amazon-ssm-agent
5.
如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。
a.
启动服务.
RHEL 7.x
sudo systemctl start amazon-ssm-agent
RHEL 6.x
sudo start amazon-ssm-agent
b.
检查代理的状态。
313
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
RHEL 7.x
sudo systemctl status amazon-ssm-agent
RHEL 6.x
status amazon-ssm-agent
在 CentOS 上安装 SSM 代理
连接到您的 CentOS 实例并执行下列步骤来安装 SSM 代理。使用 Run Command 对每个将执行命令的实
例执行这些步骤。
在 CentOS 上安装 SSM 代理
1.
在实例上创建临时目录。
mkdir /tmp/ssm
2.
使用以下命令之一将 SSM 安装程序下载到临时目录中。将 < > 替换为某个 SSM 区域。要避免下
载产生跨区域数据传输费用,请指定您的 EC2 实例的区域。
64 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_amd64/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
32 位
curl https://amazon-ssm-<region>.s3.amazonaws.com/latest/linux_386/amazonssm-agent.rpm -o /tmp/ssm/amazon-ssm-agent.rpm
3.
运行 SSM 安装程序。
sudo yum install -y /tmp/ssm/amazon-ssm-agent.rpm
4.
运行以下命令之一,确定 SSM 代理是否在运行。该命令应返回“amazon-ssm-agent is running”。
CentOS 7.x
sudo systemctl status amazon-ssm-agent
CentOS 6.x
status amazon-ssm-agent
5.
如果上一个命令返回“amazon-ssm-agent is stopped”,则执行以下命令。
314
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
a.
启动服务.
CentOS 7.x
sudo systemctl start amazon-ssm-agent
CentOS 6.x
sudo start amazon-ssm-agent
b.
检查代理的状态。
CentOS 7.x
sudo systemctl status amazon-ssm-agent
CentOS 6.x
status amazon-ssm-agent
配置 SSM 代理以使用代理
可通过向 SSM 代理配置文件添加 http_proxy 和 no_proxy 设置来将 SSM 代理配置为通过 HTTP 代
理进行通信。本节包含适用于 upstart 和 systemd 环境的过程。
配置 SSM 代理以使用代理 (Upstart)
1.
2.
连接到已安装 SSM 代理的实例。
在编辑器(如 VIM)中打开 amazon-ssm-agent.conf 文件。默认情况下,此文件位于:
3.
/etc/init/amazon-ssm-agent.conf
采用以下格式向此文件添加 http_proxy 设置:
env http_proxy=http://hostname:port
4.
采用以下格式向此文件添加 no_proxy 设置。您必须指定此处列出的 IP 地址。它是 SSM 的实例元
数据终端节点,如果没有此 IP 地址,对 SSM 的调用将失败:
env no_proxy=169.254.169.254
5.
保存更改并关闭编辑器。
6.
使用以下命令重新启动 SSM 代理:
/sbin/restart amazon-ssm-agent
以下 Upstart 示例包含 amazon-ssm-agent.conf 文件中的 http_proxy 和 no_proxy 设置:
315
Amazon Elastic Compute Cloud Linux 实例用户指南
配置 SSM 代理
description "Amazon SSM Agent"
author "Amazon.com"
start on (runlevel [345] and started network)
stop on (runlevel [!345] or stopping network)
respawn
env http_proxy=http://i-1234567890abcdef0:443
env no_proxy=169.254.169.254
chdir /opt/amazon/ssm/
exec ./amazon-ssm-agent
配置 SSM 代理以使用代理 (systemd)
1.
2.
连接到已安装 SSM 代理的实例。
在编辑器(如 VIM)中打开 amazon-ssm-agent.service 文件。默认情况下,此文件位于:
3.
/etc/systemd/system/amazon-ssm-agent.service
采用以下格式向此文件添加 http_proxy 设置:
Environment="HTTP_PROXY=http://hostname:port"
4.
采用以下格式向此文件添加 no_proxy 设置。您必须指定此处列出的 IP 地址。它是 SSM 的实例元
数据终端节点,如果没有此 IP 地址,对 SSM 的调用将失败:
Environment="no_proxy=169.254.169.254"
5.
6.
保存更改并关闭编辑器。
使用以下命令重新启动 SSM 代理:
systemctl stop amazon-ssm-agent
systemctl daemon-reload
以下 systemd 示例包含 amazon-ssm-agent.service 文件中的 http_proxy 和 no_proxy 设置:
Type=simple
Environment="HTTP_PROXY=http://i-1234567890abcdef0:443"
Environment="no_proxy=169.254.169.254"
WorkingDirectory=/opt/amazon/ssm/
ExecStart=/opt/amazon/ssm/amazon-ssm-agent
KillMode=process
Restart=on-failure
RestartSec=15min
卸载 SSM 代理
使用以下命令卸载 SSM 代理。
316
Amazon Elastic Compute Cloud Linux 实例用户指南
委派对 SSM Run Command 的访问权限
卸载 Amazon Linux、RHEL 或 Cent OS 上的 SSM 代理
sudo yum erase amazon-ssm-agent –y
卸载 Ubuntu 上的 SSM 代理
sudo dpkg -r amazon-ssm-agent
委派对 SSM Run Command 的访问权限
您可以使用自定义 SSM 文档和 IAM 策略限制对 SSM Run Command 的访问权限。由于 Amazon SSM
代理作为根运行,SSM 文档中指定的命令或脚本通过您的实例上的管理权限运行。有权执行任何预定义
的 SSM 文档(任何以 AWS-* 开头的文档)的用户也具有实例的管理员访问权。
您应合理地委派对 SSM 和 Run Command 的访问权限。如果您创建自己的 SSM 文档,这一点会变得非
常重要。AWS 不提供有关如何创建安全 SSM 文档的指导。您自行承担创建 SSM 文档和委派对 Run
Command 操作的访问权限的风险。作为安全最佳实践,建议您仅向可信管理员分配对“AWS-*”文档(尤
其是 AWS-RunShellScript 文档)的访问权限。您可以为特定任务创建 SSM 文档,并向非管理员委派访
问权限。
本主题包含以下内容:
• 创建限制性的 IAM 用户策略 (p. 317)
• 创建限制性的 SSM 文档 (p. 318)
创建限制性的 IAM 用户策略
IAM 用户策略确定用户可在 Command document 列表中查看的 SSM 文档。用户可在 Amazon EC2 控制
台中查看此列表,或使用 AWS CLI 调用 ListDocuments 来查看此列表。
该策略还限制用户可使用 SSM 文档执行的操作。以下示例 IAM 策略允许用户列出 SSM 文档和查看有关
这些文档的详细信息,使用 文档发送命令,以及在发送命令后取消或查看有关命令的详细信息。用户有
权对第二个“资源”部分中的“arn:aws:ec2:us-east-1:*:instance/i-xxxxxxxxxxxxxxxxx”项确定的三个实例执
行 文档。如果需要向用户授予对其当前可访问的任何实例(由 AWS 用户账户确定)运行命令的访问权,
您可以在该“资源”部分中指定“arn:aws:ec2:us-east-1:*:instance/*”并删除其他实例资源。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:ListDocuments",
"ssm:DescribeDocument",
"ssm:GetDocument",
"ssm:DescribeInstanceInformation"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "ssm:SendCommand",
"Effect": "Allow",
"Resource": [
"arn:aws:ec2:us-east-1:*:instance/i-1234567890abcdef0",
317
Amazon Elastic Compute Cloud Linux 实例用户指南
委派对 SSM Run Command 的访问权限
"arn:aws:ec2:us-east-1:*:instance/i-0598c7d356eba48d7",
"arn:aws:ec2:us-east-1:*:instance/i-345678abcdef12345",
"arn:aws:ssm:us-east-1:*:document/RestartLinuxService"
]
},
{
"Action": [
"ssm:CancelCommand",
"ssm:ListCommands",
"ssm:ListCommandInvocations"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Action": "ec2:DescribeInstanceStatus",
"Effect": "Allow",
"Resource": "*"
}
]
}
有关创建 IAM 用户策略的更多信息,请参阅托管策略与内联策略。
创建 IAM 策略并将其分配给用户账户后,用户可以从 Amazon EC2 控制台中的 Commands 页面使用
RestartLinuxService 文档发出命令或使用 AWS CLI 发出命令。例如,以下 CLI 命令运行
RestartLinuxService 文档:
aws ssm send-command --instance-ids "instance-ID" --document-name "RestartLinux
Service" --parameter serviceName="Service name to restart"
如果用户尝试运行任何其他 SSM 文档,则用户会收到身份验证错误。
创建限制性的 SSM 文档
在向用户授予对 Run Command 的访问权限时,最好是从具有最小权限的策略开始。创建允许用户执行
最低数量任务的其他 SSM 文档。例如,您可以指定实例上的特定服务的名称,以便 Run Command 用户
仅能重启该服务。
创建限制性的 SSM 文档
1.
将以下 JSON 示例复制并粘贴到一个文本文件中,并使用 .json 文件扩展名保存该文件。
{
"schemaVersion": "1.2",
"description": "Restart Linux Service",
"parameters": {
"serviceName": {
"type": "String",
"description": "(Required) Specify the name of the service to restart",
"maxChars": 256
}
},
"runtimeConfig": {
"aws:runShellScript": {
318
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 SSM Run Command 执行命令
"properties": [
{
"runCommand": ["service {{ serviceName }} restart"]
}
]
}
}
}
2.
在 AWS CLI 中执行以下命令。
aws ssm create-document --content file:///tmp/RestartLinuxService.json -name "RestartLinuxService"
有关创建 SSM 文档的更多信息,请参阅 Amazon EC2 Simple Systems Manager API Reference 中的
SSM 文档。
使用 SSM Run Command 执行命令
您可以使用 Amazon EC2 控制台中的 Commands 页面在 EC2 实例上运行命令。您也可以使用、使用
CLI 执行命令或使用 SSM API 以编程方式执行命令。有关更多信息,请参阅 Amazon EC2 Simple Systems
Manager API Reference。
对您可用的命令取决于管理员为您指定的权限。命令由其 SSM 文档名称标识,例如 AWS-RunShellScript。
以 AWS-* 开头的任意命令均使用 AWS 提供的预定义 SSM 文档。开发人员或管理员可创建其他文档,并
根据您的权限为您配置这些文档。
主题
• 使用 SSM Run Command 运行 Shell 脚本 (p. 319)
• 使用 SSM Run Command 更新 Amazon SSM 代理 (p. 320)
使用 SSM Run Command 运行 Shell 脚本
可使用 AWS-RunShellScript 命令文档在实例上运行 shell 脚本。
Tip
EC2 控制台中的 Commands 页面包含名为 AWS Command Line Interface command 的部分。
此部分显示了根据您输入的参数生成的实用 CLI 脚本。
使用 Run Command 运行 shell 脚本
1. 打开 Amazon EC2 控制台并在导航窗格中选择 Commands。
2. 选择 Run a Command。
3. 在 Command document 列表中,选择 AWS-RunShellScript。
4. 选择 Select target instances 以选择要在其中运行命令的实例。如果未看到实例的完整列表,则可能不
会为 Run Command 正确配置缺少的实例。有关更多信息,请参阅 SSM Run Command 先决条
件 (p. 302)。
5. 在 Commands 字段中输入脚本或到脚本的路径。
319
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 SSM Run Command 执行命令
6. (可选)在 Working Directory 字段中,输入要运行命令的 EC2 实例上的文件夹的路径。
7. (可选)在 Execution Timeout 字段中,输入 Amazon SSM 代理在超时前将尝试运行命令的秒数。
8. (可选)在 Comment 字段中,输入要提供的有关此命令的信息。注释存储在日志文件中,并显示在
EC2 控制台中的命令调用列表中。
Tip
建议您输入有关您运行的每个命令的特定注释。发送的命令的列表可能会快速增大,Comment
字段可帮助您识别要监视的命令。
9. 在 Timeout (seconds) 字段中,输入在实例被视为无法访问且命令执行失败之前,Run Command 应尝
试连接实例的秒数。最小值为 30 秒。最大值为 30 天。默认值为 10 分钟。
10. 在 Amazon S3 bucket 字段中,输入要在其中存储命令输出的 Amazon S3 存储桶的名称。
Important
Amazon EC2 控制台中的 Run Command Output 页面将在 2500 个字符后截断输出。在使用
Run Command 执行命令之前,请配置 Amazon S3 存储桶。如果命令输出超过 2500 个字符,
您可在 Amazon S3 存储桶中查看完整输出。有关更多信息,请参阅创建存储桶。
11. 在 S3 key prefix 字段中,输入 Amazon S3 存储桶中的子文件夹的名称。该子文件夹可帮助您组织 Run
Command 输出。
有关如何查看命令的结果的信息,请参阅在 Amazon EC2 控制台中查看命令输出 (p. 321)。
有关如何使用 AWS CLI 运行命令的信息,请参阅 SSM CLI 参考。
使用 SSM Run Command 更新 Amazon SSM 代理
可使用 AWS-UpdateSSMAgent 命令文档更新在实例上运行的 Amazon SSM 代理。您可以更新到最新版
本或降级到较旧版本。在执行命令时,系统将从 AWS 下载并安装需要的版本,然后卸载运行命令前存在
的版本。如果此过程中出现错误,系统将回滚到命令运行之前服务器上的版本,并且命令状态将显示命令
失败。
Tip
EC2 控制台中的 Commands 页面包含名为 AWS Command Line Interface command 的部分。
此部分显示了根据您输入的参数生成的实用 CLI 脚本。
使用 Run Command 更新 Amazon SSM 代理
1.
2.
3.
打开 Amazon EC2 控制台并在导航窗格中选择 Commands。
选择 Run a Command。
在 Command document 列表中,选择 AWS-UpdateSSMAgent。
4.
选择 Select target instances 以选择要在其中运行命令的实例。如果未看到实例的完整列表,则可能
不会为 Run Command 正确配置缺少的实例。有关更多信息,请参阅 SSM Run Command 先决条
件 (p. 302)。
5.
(可选)在 Version 字段中,键入要安装的 Amazon SSM 代理的特定版本。您可以安装代理的较旧
版本。如果您不指定版本,服务将更新至最新版本。
(可选)如果您要安装 Amazon SSM 代理的早期版本,可在 Allow downgrade 列表中,选择 True。
如果您选择此选项,则必须指定早期版本号。如果您希望系统仅安装服务的最新版本,请选择 False。
6.
320
Amazon Elastic Compute Cloud Linux 实例用户指南
在 Amazon EC2 控制台中查看命令输出
7.
(可选)在 Comment 字段中,键入要提供的有关此命令的信息。注释存储在日志文件中,并显示在
Amazon EC2 控制台中的命令调用列表中。
Tip
建议您输入有关您运行的每个命令的特定注释。发送的命令的列表可能会快速增大,Comment
字段可帮助您识别要监视的命令。
8.
9.
在 Timeout (seconds) 字段中,键入在实例被视为无法访问且命令执行失败之前,Run Command 应
尝试连接实例的秒数。最小值为 30 秒。最大值为 30 天。默认值为 10 分钟。
在 S3 bucket 字段中,键入要在其中存储命令输出的 Amazon S3 存储桶的名称。
Important
Amazon EC2 控制台中的 Run Command Output 页面将在 2500 个字符后截断输出。在使
用 Run Command 执行命令之前,请配置 Amazon S3 存储桶。如果命令输出超过 2500 个
字符,您可在 Amazon S3 存储桶中查看完整输出。有关更多信息,请参阅创建存储桶。
10. 在 S3 key prefix 字段中,输入 Amazon S3 存储桶中的子文件夹的名称。该子文件夹可帮助您组织
Run Command 输出。
有关如何查看命令的结果的信息,请参阅在 Amazon EC2 控制台中查看命令输出 (p. 321)。
有关如何使用 AWS CLI 运行命令的信息,请参阅 SSM CLI 参考。
在 Amazon EC2 控制台中查看命令输出
使用 Run Command 执行命令后,系统将返回命令列表。
Important
Amazon EC2 控制台将截断 2500 个字符后的所有命令输出。如果命令输出超过 2500 个字符,
您可在 S3 存储桶中查看完整输出。
查看命令输出
1.
2.
在 Amazon EC2 控制台中,选择列表中的一个命令。
选择 Output 选项卡。
3.
选择 View Output。
321
Amazon Elastic Compute Cloud Linux 实例用户指南
在 Amazon EC2 控制台中查看命令输出
4.
命令输出页面将显示命令执行的结果。
322
Amazon Elastic Compute Cloud Linux 实例用户指南
创建您自己的命令
创建您自己的命令
Run Command 使用 SSM 文档。SSM 文档是描述您要使用 Run Command 对实例执行的操作的 JSON
文件。您可以使用预定义的 SSM 文档(任何以“AWS-*”开头的文档,例如 AWS-RunShellScript),也可
以创建自己的 SSM 文档。建议您创建低级别任务文档(例如,用户可在其中重启服务的文档),并将这
些文档分配给非管理员用户。所有“AWS-*”文档(尤其是 AWS-RunShellScript 文档)和任何更高级别的
管理员文档应仅分配给可信管理员。有关创建 SSM 文档的更多信息,请参阅 Amazon EC2 Simple Systems
Manager API Reference 中的 SSM 文档。有关委派对 SSM 文档的访问权限的更多信息,请参阅委派对
SSM Run Command 的访问权限 (p. 317)。
SSM Run Command 演练
本节包含的示例或演练可帮助您了解如何使用 SSM Run Command 从 Amazon EC2 控制台或 AWS CLI
执行命令。
323
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
Caution
如果这是您第一次使用 SSM Run Command,建议您对测试实例或未在生产环境中使用的实例执
行命令。
内容
• 使用 Amazon EC2 控制台的 SSM Run Command 演练 (p. 324)
• SSM使用 AWS CLI 的 Run Command 演练 (p. 328)
使用 Amazon EC2 控制台的 SSM Run Command 演练
以下示例演练说明如何通过 Amazon EC2 控制台中的 Commands 页面使用 Run Command 执行命令。
您将学习如何使用 AWS-RunShellScript SSM 文档执行命令。要查看 CLI 示例,请参阅SSM使用 AWS
CLI 的 Run Command 演练 (p. 328)。
1.
在 Amazon EC2 控制台中,选择导航窗格中的 Commands,然后选择 Run a command。
2.
在 Command document 列表中,选择 AWS-RunShellScript。
3.
选择 Select instances,然后选择要在其中执行命令的实例。如果未看到实例的完整列表,则可能不
会为 Run Command 正确配置缺少的实例。有关更多信息,请参阅 SSM Run Command 先决条
件 (p. 302)。
324
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
4.
在 Commands 字段中键入有效的 Shell 脚本或命令。如果需要,您可以指定 Working Directory 和
Execution Timeout。Execution Timeout 是 amazon-ssm-agent 在被视为已失败前将尝试运行命令的
秒数。建议您在 Comments 字段中输入注释。注释将帮助您识别待处理命令列表中的命令并让查看
输出变得更轻松。
5.
6.
在 Timeout (seconds) 字段中,键入在实例被视为无法访问且命令执行失败之前,Run Command 应
尝试连接实例的秒数。
在 S3 bucket 字段中,键入要在其中存储命令输出的 Amazon S3 存储桶的名称。在 S3 key prefix 字
段中,输入 Amazon S3 子文件夹。如果您正在对多个实例执行多个命令,子文件夹可帮助您组织输
出。
7.
8.
选择 Run 同时对所选实例执行命令。Run Command 将显示一个状态屏幕。
选择 View result。
9.
命令列表显示命令的三个调用,因为命令已发送到三个实例。每个调用拥有其自己的 Command ID
和状态。要查看状态,请选择一个调用,再选择该调用的 Output 选项卡,然后选择 View Output。
325
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
10. 系统将在浏览器中显示输出。如果输出超过 2500 个字符,则仅显示前 2500 个字符,其余字符将被
截断。
11. 您可以在 Amazon S3 中查看完整命令输出。打开 S3 控制台并选择 Amazon S3 存储桶。
326
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
12. 选择 Command-ID。要查看其命令输出的 Instance-ID。
13. 选择 awsrunShellScript 子文件夹。
14. 选择 stdout.text 文件。Amazon S3 显示完整命令输出。
327
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
SSM使用 AWS CLI 的 Run Command 演练
以下示例演练说明如何使用 AWS CLI 查看有关命令和命令参数的信息、如何执行命令以及如何查看这些
命令的状态。
Tip
EC2 控制台中的 Commands 页面包含名为 AWS Command Line Interface command 的部分。
此部分显示了根据您输入的参数生成的有用 CLI 脚本。
步骤 1:入门
您必须具有要配置的实例的管理员权限或必须已获得 IAM 中的适当权限。另请注意,此示例将使用
us-east-1 区域。目前,Run Command 在以下 SSM 区域提供。有关更多信息,请参阅 SSM Run Command
先决条件 (p. 302)。
使用 AWS CLI 执行命令
1.
在本地计算机上打开 AWS CLI 并执行以下命令来指定凭证和区域。
aws configure
2.
系统将提示您指定以下内容。
AWS Access Key ID [None]: key_name
AWS Secret Access Key [None]: key_name
Default region name [None]: us-east-1
Default output format [None]: ENTER
3.
列出所有可用文档
此命令将基于 IAM 权限列出您的账户可用的所有命令文档。此命令将返回 Linux 和 Windows 文档的
列表。
aws ssm list-documents
4.
验证实例是否准备好接收命令
以下命令的输出将显示实例是否处于联机状态。
aws ssm describe-instance-information --output text --query "InstanceInform
ationList[*]"
5.
使用以下命令查看有关特定实例的详细信息。
注意:要执行本演练中的命令,您必须替换实例和命令 ID。命令 ID 将作为 send-command 的响应
返回。可从 Amazon EC2 控制台获得实例 ID。
aws ssm describe-instance-information --instance-information-filter-list
key=InstanceIds,valueSet=instance ID
328
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 演练
步骤 2:运行 Shell 脚本
利用 Run Command 和 AWS-RunShellScript 文档,您可以在实例上执行任何命令或脚本,就像您已在本
地登录一样。
查看说明和可用参数
• 使用以下命令查看 SSM 文档的说明。
aws ssm describe-document --name "AWS-RunShellScript" --query "[Docu
ment.Name,Document.Description]"
• 使用以下命令查看可用参数和有关这些参数的详细信息。
aws ssm describe-document --name "AWS-RunShellScript" --query "Document.Para
meters[*]"
步骤 3:使用 AWS-RunShellScript 文档发送命令 - 示例 1
使用以下命令获取实例的 IP 信息。
aws ssm send-command --instance-ids "instance ID" --document-name "AWS-RunShell
Script" --comment "IP config" --parameters commands=ifconfig --output text
使用响应数据获取命令信息
以下命令使用从上一个命令返回的命令 ID 来获取命令执行的详细信息和响应数据。如果命令已完成,系
统将返回响应数据。如果命令执行显示“Pending”,您将需要再次执行此命令来查看响应数据。
aws ssm list-command-invocations --command-id "command ID" --details
步骤 4:使用 AWS-RunShellScript 文档发送命令 - 示例 2
以下命令显示运行命令的默认用户账户。
sh_command_id=$(aws ssm send-command --instance-ids "instance ID" --documentname "AWS-RunShellScript" --comment "Demo run shell script on Linux Instance"
--parameters commands=whoami --output text --query "Command.CommandId")
获取命令状态
以下命令使用命令 ID 获取实例上的命令执行的状态。此示例使用上一个命令中返回的命令 ID。
aws ssm list-commands
--command-id $sh_command_id
获取命令详细信息
以下命令使用来自上一命令的命令 ID 来获取每个实例的命令执行的状态。
aws ssm list-command-invocations --command-id $sh_command_id --details
329
Amazon Elastic Compute Cloud Linux 实例用户指南
取消命令
获取带有特定实例的响应数据的命令信息
以下命令返回特定实例的原始 aws ssm send-command 的输出。
aws ssm list-command-invocations --instance-id instance ID --command-id
$sh_command_id –-details
步骤 5:其他示例
以下命令返回在实例上运行的 Python 的版本。
sh_command_id=$(aws ssm send-command --instance-ids "instance ID" --documentname "AWS-RunShellScript" --comment "Demo run shell script on Linux Instances"
--parameters commands='python --version --output text --query "Command.Com
mandId")
以下命令使用 Run Command 执行 Python 脚本。
py_command_id=$(aws ssm send-command --instance-ids "instance ID" --documentname "AWS-RunShellScript" --comment "Demo run shell script on Linux Instances"
--parameters commands='#!/usr/bin/python', 'print \"Hello world from python\"'
--output text --query "Command.CommandId")
取消命令
只要服务指明命令处于 Pending 或 Executing 状态,就可以尝试取消该命令。但是,即使命令仍处于其
中某种状态,我们也无法保证该命令将终止并且基础流程将停止。
在 EC2 控制台中取消命令
1.
2.
3.
打开 Amazon EC2 控制台并在导航窗格中选择 Commands。
选择要取消的命令调用。
选择 Actions,然后选择 Cancel command。
使用 AWS CLI 取消命令
• 使用以下 命令。
aws ssm cancel-command --command-id "command
ID"
ID" --instance-ids "instance
有关已取消命令的状态的信息,请参阅监控命令 (p. 330)。
监控命令
您可以使用 SSM Run Command 同时向多个实例发出命令。以每个实例为目标的每个命令副本为一个命
令调用。例如,如果您使用 AWS-RunShellScript 文档并将一个 ifconfig 命令发送给 20 个实例,则该命
令具有 20 个调用。您可以在 Amazon EC2 控制台中或使用 aws ssm list-command-invocations (AWS
CLI) 命令监控每个调用的状态。您可以查看每个调用的详细信息;这些详细信息有助于您在命令失败时
解决问题。
330
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 疑难解答
命令状态
每个命令调用都会单独报告状态。此外,每个SSM 文档包含一个或多个名为插件 的代码执行块。给定命
令调用的插件也会单独报告状态。下表描述的是运行命令执行的状态。
有关插件的更多信息,请参阅 Amazon EC2 Simple Systems Manager API Reference 中的 SSM 文档 >
SSM 插件。
状态
详细信息
Pending
SSM 尚未接受此命令。如果SSM代理在达到超时
(秒数)参数指定的值前没有收到命令,该状态会
更改为超时。
正在进行
该命令或者被SSM代理接收,或者开始在实例上执
行。根据所有命令插件的结果,状态会变为成功、
失败或超时。如果 SSM 代理在实例上不可用,命
令状态会显示为正在进行,直至SSM代理再次可用
为止。状态将变为最终状态。
成功
该命令(包括所有插件)完成了在实例上的执行的
任务。
已失败
一个或多个插件无法执行。为了帮助您标识和解决
与命令相关的问题,如果插件失败,整个调用状态
将变为 Failed。
超时
在达到超时(秒数)参数指定的值前,该命令未达
到实例上的SSM代理。或者,命令执行的时间长于
允许的执行时间。命令执行的时间虽插件而有所不
同。默认值从两小时到八小时不等。
正在取消
您已发送移除命令调用的口令。命令未达到最终状
态(成功、失败或超时)。如果 SSM 代理在超时
(秒数)参数指定的时间范围内作出回应,那么状
态就会改变,以反映最终状态。否则,状态会变为
超时。
已取消
已成功取消您的命令。
Note
在 Amazon EC2 控制台中,单击右上角的“Refresh”符号可在命令执行时监视命令的状态。
SSM Run Command 疑难解答
本主题包含可帮助您排查 SSM Run Command 问题的信息。有关排查适用于 Windows 的 Run Command
的问题的信息,请参阅适用于 Microsoft Windows 的用户指南中的 Running Command 问题排查。
我的实例在哪里?
如果您正在尝试通过 Amazon EC2 控制台使用 Run Command 执行命令并且在选择 Select Target instances
时没看到应有的实例列表,则表示缺少的实例不符合一个或多个先决条件。有关更多信息,请参阅 SSM
Run Command 先决条件 (p. 302)。
331
Amazon Elastic Compute Cloud Linux 实例用户指南
SSM Run Command 疑难解答
使用 Health API 检查实例状态
您可以使用 Amazon EC2 Health API 快速确定以下有关 Amazon EC2 实例的信息:
• SSM 代理的版本
• 一个或多个实例的状态
• 操作系统
• SSM 代理的状态
• 该实例上次发送检测信号值的时间
使用以下命令可获取有关一个或多个实例的状态详细信息:
aws ssm describe-instance-information --instance-information-filter-list
key=InstanceIds,valueSet=instance-ID
使用以下不带筛选条件的命令可查看注册到您的账户的当前报告联机状态的所有实例。将 ValueSet="Online"
替换为 "ConnectionLost" 或 "Inactive" 可查看这些状态:
aws ssm describe-instance-information --instance-information-filter-list
key=PingStatus,valueSet=Online
使用以下命令可查看哪些实例正在运行 SSM 代理的最新版本。将 ValueSet="LATEST" 替换为特定版本
(例如,1.0.145 或 1.0)可查看这些详细信息:
aws ssm describe-instance-information --instance-information-filter-list
key=AgentVersion,valueSet=LATEST
如果 describe-instance-information API 操作返回有关是否联机的 AgentStatus,则可随时使用 Run
Command 来管理实例。如果状态为“Inactive”,则该实例具有下面的一个或多个问题。
• 未安装 SSM 代理。有关更多信息,请参阅 配置 SSM 代理 (p. 308)。
• 实例没有出站 Internet 连接。
• 未使用支持实例与 SSM API 通信的 IAM 角色来启动实例,或 IAM 角色的权限对 Run Command 不适
用。有关更多信息,请参阅 配置适用于 SSM Run Command 的 IAM 角色和用户 (p. 303)。
Amazon SSM 代理问题排查
如果您在使用 Run Command 执行命令时遇到问题,则可能是因为 SSM 代理有问题。使用以下信息可帮
助您排查代理问题。
查看代理日志
SSM 代理使用 cihub/seelog 在以下文件中记录信息。这些文件中的信息可帮助您排查问题。
• /var/log/amazon/ssm/amazon-ssm-agent.log
• /var/log/amazon/ssm/error.log
您可通过更新 seelog.xml 文件来启用延长日志记录。默认情况下,配置文件位于以下位
置:/opt/amazon/ssm/seelog.xml。
有关 cihub/seelog 配置的更多信息,请转到 cihub/seelog Wiki。有关 cihub/seelog 配置的示例,请转到
cihub/seelog 示例。
332
Amazon Elastic Compute Cloud Linux 实例用户指南
导入和导出实例
导入和导出实例
Abstract
您可以从 Citrix Xen、Microsoft Hyper-V 或 VMware vSphere 等虚拟化平台中导入虚拟机,然后在 Amazon EC2 中
启动该虚拟机。
您可以使用 Amazon Web Services (AWS) VM Import/Export 工具将虚拟机 (VM) 映像从您的本地环境导
入到 AWS 中,然后将它们转换成准备就绪的 Amazon EC2 Amazon 系统映像 (AMI) 或实例。稍后,您
可以将 VM 镜像作为实例导回至您的本地环境。使用 VM Import/Export,您可以利用为满足 IT 安全、配
置管理和合规要求而已构建的 VM 中的现有投资,方式是将 VM 纳入到 Amazon Elastic Compute Cloud
(Amazon EC2) 中作为准备就绪的 AMI 或实例。VM Import/Export 与 Citrix Xen、Microsoft Hyper-V 或
VMware vSphere 虚拟化环境兼容。如果您使用的是 VMware vSphere,也可以使用 AWS Connector for
vCenter 从 VMware 导出 VM,然后将其导入 Amazon EC2。有关更多信息,请参阅 AWS Management
Portal for vCenter 用户指南 中的使用 AWS Connector for vCenter 将您的虚拟机迁移至 Amazon EC2。
如果您使用的是 Microsoft Systems Center,则也可以使用 AWS Systems Manager for Microsoft SCVMM
来将 Windows VM 从 SCVMM 中导入到 Amazon EC2。有关更多信息,请参阅 Amazon EC2 用户指南
(适用于 Microsoft Windows 实例) 中的使用 AWS Systems Manager for Microsoft SCVMM 导入虚拟
机。
VM Import/Export 可以用于迁移应用程序和工作负载,复制您的 VM 映像目录,或为 VM 映像创建灾难
恢复存储库。
• 将现有应用程序和工作负载迁移至 Amazon EC2 - 您可以将基于 VM 的应用程序和工作负载迁移至
Amazon EC2 并保留其软件和配置设置。当您使用 VM Import 导入 VM 时,可将现有 VM 转换成 Amazon
EC2 实例或可在 Amazon EC2 上运行的 Amazon 系统映像 (AMI)。当您从 VM 创建 AMI 时,可基于同
一导入的 VM 运行多个实例。您还可借助 AMI 使用 AMI 副本来复制您在全球的应用程序和工作负载。
有关更多信息,请参阅 复制 AMI (p. 103)。
• 将您的 VM 映像目录导入到 Amazon EC2 - 您可以将现有 VM 映像目录导入到 Amazon EC2。如果您
要维护批准的 VM 映像的目录,可以将您的映像目录复制到 Amazon EC2 并从导入的 VM 映像创建
AMI。您可以将现有软件(包括您已安装的产品,例如,反病毒软件、入侵检测系统等)与您的 VM 映
像一起导入。您可将已创建的 AMI 用作您的 Amazon EC2 映像目录。
• 为 VM 映像创建灾难恢复存储库 - 您可以出于备份和灾难恢复目的将您的本地 VM 映像导入 Amazon
EC2。您可导入您的 VM,然后将其存储为 AMI。创建的 AMI 将准备就绪,您可在需要时在 Amazon
EC2 中启动它。如果您的本地环境发生任何事件,您可以快速启动实例来保持业务连续性,并将它们
同步导出,以便重新构建本地基础设施。
内容
• VM Import/Export 的先决条件 (p. 333)
• 将 VM 作为镜像导入 Amazon EC2 (p. 341)
• 将 VM 作为实例导入 Amazon EC2 (p. 351)
• 导出 Amazon EC2 实例 (p. 361)
• 对 VM Import/Export 进行故障排除 (p. 363)
VM Import/Export 的先决条件
Abstract
在开始导入您的虚拟机之前查看基本信息和限制条件。
在您开始将 VM 从您的虚拟化环境导出或从 Amazon EC2 导入和导出 VM 之前,您必须了解 AWS 支持
的操作系统和映像格式,还必须了解导出实例和卷的限制。
要从 Amazon EC2 导入或导出 VM,您还必须安装 CLI 工具:
333
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
• 有关安装 Amazon EC2 CLI 的更多信息,请参阅 Amazon EC2 命令行参考。
• 有关安装 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南。有关 AWS CLI 中
的 Amazon EC2 命令的更多信息,请参阅 AWS Command Line Interface Reference 中的 ec2。
内容
• 操作系统 (p. 334)
• 映像格式 (p. 335)
• 实例类型 (p. 336)
• 卷类型和文件系统 (p. 336)
• VM Import 服务角色 (p. 336)
• IAM 权限 (p. 338)
• 要求和限制 (p. 339)
操作系统
以下操作系统可以导入 Amazon EC2 和从 Amazon EC2 导出。
Windows(32 和 64 位)
• 含 Service Pack 1 (SP1) 的 Microsoft Windows Server 2003(标准版、数据中心版、企业版)或更高
版本
• Microsoft Windows Server 2003 R2(标准版、数据中心版、企业版)
• Microsoft Windows Server 2008(标准版、数据中心版、企业版)
• Microsoft Windows Server 2008 R2(标准版、数据中心版、企业版)
• Microsoft Windows Server 2012(标准版、数据中心版)
• Microsoft Windows Server 2012 R2(标准版、数据中心版)
Note
不支持 32 位版本的 Microsoft Windows Server 2012 R2。
• Microsoft Windows 7(专业版、企业版、旗舰版)
Note
VM Import 目前支持导入运行 Microsoft Windows 7 美国英语版(专业版、企业版、旗舰版)
的 VM。在导入这些操作系统时,您必须遵守 要求和限制 (p. 339)。
• Microsoft Windows 8(专业版、企业版)
Note
VM Import 目前支持导入运行 Microsoft Windows 8 美国英语版(专业版、企业版)的 VM。在
导入这些操作系统时,您必须遵守 要求和限制 (p. 339)。
• Microsoft Windows 8.1(专业版、企业版)
Note
不支持 32 位版本的 Microsoft Windows 8.1。
334
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
VM Import 目前支持导入运行 Microsoft Windows 8.1 美国英语版(专业版、企业版)的 VM。
在导入这些操作系统时,您必须遵守 要求和限制 (p. 339)。
• Microsoft Windows 10(家庭版、专业版、企业版、教育版)
Note
不支持 32 位版本的 Microsoft Windows 10。
VM Import 目前支持导入运行 Microsoft Windows 10 美国英语版(家庭版、专业版、企业版、
教育版)的 VM。在导入这些操作系统时,您必须遵守 要求和限制 (p. 339)。
Linux/Unix(64 位)
• Red Hat Enterprise Linux (RHEL) 5.1-5.11、6.1-6.6、7.0-7.1
Note
不支持 RHEL 6.0,因为它缺少在 Amazon EC2 上运行所需的驱动程序。
VM Import 支持 RHEL 实例的许可可移植性。您的现有 RHEL 许可与它们的关联 RHEL 实例
一同导入。有关对于 Red Hat Cloud Access 的资格的更多信息,请参阅 Red Hat 网站的资格。
• SUSE Linux Enterprise Server 11-12
• Ubuntu 12.04、12.10、13.04、13.10、14.04、14.10、15.04
• CentOS 5.1-5.11、6.1-6.6、7.0-7.1
Note
不支持 CentOS 6.0,因为它缺少在 Amazon EC2 上运行所需的驱动程序。
• Debian 6.0.0-6.0.8、7.0.0-7.8.0、8.0.0
• Oracle Linux 6.1-6.6、7.0-7.1
• Fedora Server 19-21
映像格式
以下格式可以导入 Amazon EC2 和从 Amazon EC2 中导出。
将映像格式导入 Amazon EC2
对于将磁盘和 VM 导入 Amazon EC2,AWS 支持下列映像格式:
• 用于导入磁盘和 VM 的 RAW 格式。
• 固定和动态虚拟硬盘 (VHD) 映像格式,该格式与 Microsoft Hyper-V 和 Citrix Xen 虚拟化产品兼容。目
前不支持 VHDX 映像。
Note
VM Export 仅支持动态虚拟硬盘 (VHD)。不支持固定 VHD。
335
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
• 流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式,该格式可与 VMware ESX 和 VMware vSphere 虚拟化
产品兼容。
Note
您只能将通过 VMware 中的 OVF 导出过程创建的 VMDK 文件导入 Amazon EC2。
• 启动虚拟装置 (OVA) 映像格式,该格式支持将映像与多个硬盘一起导入。
从 Amazon EC2 导出映像格式
对于从 Amazon EC2 导出卷和实例,AWS 支持下列映像格式。确保您将输出文件的格式转换为 VM 环境
支持的格式:
• 启动虚拟装置 (OVA) 映像格式,该格式可与 VMware vSphere 版本 4 和 5 相兼容。
• 虚拟硬盘 (VHD) 映像格式,该格式可与 Citrix Xen 和 Microsoft Hyper-V 虚拟化产品兼容。
• 流优化型 ESX 虚拟机磁盘 (VMDK) 映像格式,该格式可与 VMware ESX 和 VMware vSphere 版本 4
和 5 虚拟化产品相兼容。
实例类型
AWS 支持将 Windows 实例导入大多数实例类型。Microsoft Windows BYOL 实例必须作为 Microsoft
Windows 的专用实例或专用主机启动,因此无法使用 t2 实例类型,因为它不支持专用实例。
您可以将 Linux 实例导入下列实例类型:
• 通用型: t2.micro | t2.small | t2.medium | m3.medium | m3.large | m3.xlarge | m3.2xlarge
• 计算优化: c3.large | c3.xlarge | c3.2xlarge | c3.4xlarge | C3.8xlarge | cc1.4xlarge
• 内存优化: r3.large | r3.xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge
• 存储优化: i2.xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge
卷类型和文件系统
AWS 支持使用以下文件系统导入 Windows 和 Linux 实例:
Windows(32 和 64 位)
VM Import/Export 支持使用 NTFS 文件系统格式化并采用 MBR 分区的卷。不支持 GUID 分区表 (GPT)
分区的卷。
Linux/Unix(64 位)
VM Import/Export 支持使用 ext2、ext3、ext4、Btrfs、JFS 或 XFS 文件系统格式化并采用 MBR 分区的
卷。不支持 GUID 分区表 (GPT) 分区的卷。
VM Import 服务角色
VM Import 使用您的 AWS 账户中的角色执行特定操作(例如,从 Amazon S3 存储桶下载磁盘映像)。
您必须利用以下策略和可信实体创建名为 vmimport 的角色。利用以下策略创建名为 trust-policy.json 的
文件:
{
"Version":"2012-10-17",
336
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
"Statement":[
{
"Sid":"",
"Effect":"Allow",
"Principal":{
"Service":"vmie.amazonaws.com"
},
"Action":"sts:AssumeRole",
"Condition":{
"StringEquals":{
"sts:ExternalId":"vmimport"
}
}
}
]
}
使用 aws iam create-role 命令创建名为 vmimport 的角色,并向 VM Import/Export 提供对该角色的
访问权。
Note
必须将外部 ID 命名为 vmimport。
aws iam create-role --role-name vmimport --assume-role-policy-document
file://trust-policy.json
Note
您必须在策略文档名称前包含 file://(例如,file://trust-policy.json),否则该命令将返回错误“A
client error (MalformedPolicyDocument) occurred when calling the CreateRole operation: Syntax
errors in policy.”
为服务角色创建策略
利用以下策略创建名为 role-policy.json 的文件:
{
"Version":"2012-10-17",
"Statement":[
{
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:GetBucketLocation"
],
"Resource":[
"arn:aws:s3:::<disk-image-file-bucket>"
]
},
{
"Effect":"Allow",
"Action":[
"s3:GetObject"
337
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
],
"Resource":[
"arn:aws:s3:::<disk-image-file-bucket>/*"
]
},
{
"Effect":"Allow",
"Action":[
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource":"*"
}
]
}
将 <disk-image-file-bucket> 替换为将磁盘文件存储到的适当的 Amazon S3 存储桶。运行以下命
令可将策略挂载到上面创建的角色:
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policydocument file://role-policy.json
有关 IAM 角色的更多信息,请参阅 IAM 用户指南 中的 IAM 角色(委托和联合)。
IAM 权限
如果您以 AWS Identity and Access Management (IAM) 用户身份登录,那么您的 IAM 策略中需要以下权
限才能导入或导出 VM:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListAllMyBuckets"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:DeleteObject",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject"
],
"Resource": ["arn:aws:s3:::mys3bucket","arn:aws:s3:::mys3bucket/*"]
},
{
338
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
"Effect": "Allow",
"Action": [
"ec2:CancelConversionTask",
"ec2:CancelExportTask",
"ec2:CreateImage",
"ec2:CreateInstanceExportTask",
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeConversionTasks",
"ec2:DescribeExportTasks",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeTags",
"ec2:ImportInstance",
"ec2:ImportVolume",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:ImportImage",
"ec2:ImportSnapshot",
"ec2:DescribeImportImageTasks",
"ec2:DescribeImportSnapshotTasks",
"ec2:CancelImportTask"
],
"Resource": "*"
}
]
}
有关 IAM 用户和策略的更多信息,请参阅IAM 用户指南 中的 IAM 用户和组和管理 IAM 策略。
要求和限制
使用 ImportImage 将 VM 导入 Amazon EC2 中的已知限制
导入 AMI 和快照受下列限制:
• 在每个区域,您最多可以同时进行 20 个导入映像或快照任务。要请求增加此限制,请联系 AWS
Support。任务必须自起始日期起的 7 日内完成。
• 已导入的 VM 创建使用硬件虚拟机 (HVM) 虚拟化的 Amazon EC2 AMI。不支持使用 VM Import 来创建
使用半虚拟化 (PV) 的 AMI。导入的 VM 内支持 Linux PVHVM 驱动程序。
• 导入的 Red Hat Enterprise Linux (RHEL) VM 必须使用 Cloud Access (BYOL) 许可。
• 导入的 Linux VM 必须使用 64 位映像。不支持导入 32 位 Linux 映像。
• 导入的 Linux VM 应使用默认内核以获得最佳结果。使用自定义 Linux 内核的 VM 无法成功导入。
• 通常,您导入的是压缩版本的磁盘映像;展开的磁盘映像不能超过 1 TiB。
• 确保您拥有至少 250 MB 的可用磁盘空间才能在您希望将其导入到运行 Microsoft Windows 或 Linux 的
Amazon EC2 AMI 实例的任何 VM 上安装驱动程序和其他软件。
• 目前不支持多个网络接口。转换和导入后,您的 VM 会有一个虚拟 NIC,使用 DHCP 进行地址分配。
• 不支持 Internet 协议版本 6 (IPv6) IP 地址。
• 对于 vCenter 4.0 和 vSphere 4.0 用户,请从虚拟机中删除所有附加的 CD-ROM 映像或 ISO。
• Amazon EC2 VM Import 不支持因 P2V 转换而创建的虚拟机。通过在物理设备上通过执行 Linux 或
Windows 安装进程,然后将 Linux 或 Windows 安装导入虚拟机,从而创建磁盘映像,则会发生 P2V
转换。
339
Amazon Elastic Compute Cloud Linux 实例用户指南
先决条件
• Amazon VM Import 不会安装单个根 I/O 虚拟化 (SR-IOV) 驱动程序,除非导入 Microsoft Windows
Server 2012 R2 VM。除非您计划使用提供更高性能(每秒数据包)、更短延迟和更低抖动的增强联
网,否则不需要这些驱动程序。要在导入您的 VM 后在 c3 或 i2 实例类型上启动增强联网,请查看对
VPC 中的 Linux 实例启用增强联网 (p. 572)。对于 Microsoft Windows Server 2012 R2 VM,会在导入
过程中自动安装 SR-IOV 驱动程序。
• 结合使用您自己的 Microsoft 许可证(如通过 MSDN 或每用户 Windows 软件保障)来通过自有许可
(BYOL) 模式在 AWS 上运行 Microsoft 软件:
1. 您的 BYOL 实例将以现行的 Amazon EC2 Linux 实例定价来进行定价(Amazon EC2 实例购买选项
中已说明),前提是您 (a) 运行专用实例(有关更多信息,请参阅专用实例);(b) 使用 VM
Import/Export 从源自您提供的软件二进制文件的 VM 中启动,这将受 VM Import/Export 的现时条款
和功能的限制;(c) 将实例指定为 BYOL 实例(即在服务中声明适当的平台类型标志);(d) 在指定
的 AWS 区域内以及 AWS 提供 BYOL 模型的位置运行实例;以及 (e) 使用您提供的或您的密钥管理
系统中使用的 Microsoft 密钥进行激活。
2. 您必须考虑的一个实际情况是,在启动某个 Amazon EC2 实例时,该实例可在可用区内的多台服务
器中的任一服务器上运行。这意味着,每次启动 Amazon EC2 实例(包括停止/启动)时,该实例可
在可用区内的不同服务器上运行。您还必须考虑有关 Microsoft 产品和在线服务的批量许可中的
Microsoft 批量许可产品使用权利 (PUR)/产品条款 (PT) 中所述的许可重新分配的限制,或者查看您
的特定使用权利来确定您的权利是否与此使用保持一致。
3. 您必须有资格在您与 Microsoft 签订的协议下(例如,在您的 MSDN 用户权利下或您的每用户 Windows
软件保障权利下)使用针对合适的 Microsoft 软件的 BYOL 计划。您单独负责获得所有所需的许可证
并遵守所有适用的 Microsoft 许可要求,包括 PUR/PT。此外,您必须已接受 Microsoft 的最终用户
许可协议 (Microsoft EULA),并且一旦使用 BYOL 计划下的 Microsoft 软件,即表示您同意 Microsoft
EULA。
4. AWS 建议您咨询您自己的法律顾问和其他顾问以了解并遵守适用的 Microsoft 许可要求。不授权也
不允许在违反您与 Microsoft 签订的协议的情况下使用服务(包括使用 licenseType 参数和 BYOL 标
志)。
使用 ImportInstance 将 VM 导入 Amazon EC2 中的已知限制
导入实例和卷受以下条件的限制:
• 在每个区域,您最多可以同时进行五个导入任务。要请求增加此限制,请联系 AWS Support。任务必
须自起始日期起的 7 日内完成。
• 已导入的 VM 会创建使用硬件虚拟机 (HVM) 虚拟化的 EC2 实例。不支持使用 VM Import 来创建使用
半虚拟化 (PV) 的实例。导入的 VM 内支持 Linux PVHVM 驱动程序。
• 导入的 Red Hat Enterprise Linux (RHEL) VM 必须使用 Cloud Access (BYOL) 许可。
• 导入的 Linux VM 必须使用 64 位映像。不支持导入 32 位 Linux 映像。
• 导入的 Linux VM 应使用默认内核以获得最佳结果。使用自定义 Linux 内核的 VM 无法成功导入。
• 通常,您导入的是压缩版本的磁盘映像;展开的磁盘映像不能超过 1 TiB。
• 确保您的 VM 仅使用一个磁盘。不支持使用多个磁盘导入 VM。对于 Linux VM,/boot 和 / 可位于不同
分区中,但它们需要在同一磁盘上。
我们建议您只使用启动卷导入 VM,并使用 ec2-import-volume 命令导入任何其他磁盘。在完成
ImportInstance 任务后,可使用 ec2-attach-volume 命令将其他卷与您的实例关联。
• 虚拟硬盘 (VHD) 映像必须是动态的。
• 确保您拥有至少 250 MB 的可用磁盘空间才能在您希望将其导入运行 Microsoft Windows 或 Linux 的
Amazon EC2 实例的任何 VM 上安装驱动程序和其他软件。
• 导入的 VM 自动具有对 Amazon EC2 实例存储的访问权限,该存储是临时磁盘存储,位于以物理方式
连接到主计算机的磁盘上。您不能在导入时禁用它。有关实例存储的更多信息,请参阅 Amazon EC2
实例存储 (p. 645)。
• 目前不支持多个网络接口。将您的实例转换和导入后,它会拥有一个使用 DHCP 的虚拟 NIC 以进行地
址分配。
• 不支持 Internet 协议版本 6 (IPv6) IP 地址。
340
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
• 对于 vCenter 4.0 和 vSphere 4.0 用户,请从虚拟机中删除所有附加的 CD-ROM 映像或 ISO。
• Amazon VM Import 不会在 c3 和 i2 实例类型上安装单个根 I/O 虚拟化 (SR-IOV) 驱动程序,除非导入
Microsoft Windows Server 2012 R2 VM。除非您计划使用提供更高性能(每秒数据包)、更短延迟和
更低抖动的增强联网,否则不需要这些驱动程序。要在导入您的 VM 后在 c3 或 i2 实例类型上启动增强
联网,请查看对 VPC 中的 Linux 实例启用增强联网 (p. 572)。对于 Microsoft Windows Server 2012 R2
VM,会在导入过程中自动安装 SR-IOV 驱动程序。
• 您无法导入使用自有许可 (BYOL) 模型的 Microsoft Windows VM。要导入这些 VM,请参阅将 VM 作
为镜像导入 Amazon EC2 (p. 341)。
从 Amazon EC2 导出 VM 的已知限制
导出实例和卷受下列限制:
• 在每个区域,您最多可以同时进行五个导出任务。
•
•
•
•
•
•
您无法导出 Amazon Elastic Block Store (Amazon EBS) 数据卷。
您不能导出具有多个虚拟磁盘的实例或 AMI。
您不能导出使用固定虚拟硬盘 (VHD) 的实例或 AMI。
您不能导出具有多个网络接口的实例或 AMI。
您不能从 Amazon EC2 导出实例或 AMI,除非之前从另一虚拟化环境中将其导入了 Amazon EC2。
如果您从另一 AWS 账户共享实例或 AMI,则不能从 Amazon EC2 导出它。
将 VM 作为镜像导入 Amazon EC2
Abstract
使用 ImportImage API 从 Citrix Xen、Microsoft Hyper-V 或 VMware vSphere 虚拟化环境将 VM 作为镜像导入 Amazon
EC2。
您可从您的虚拟化环境(例如,Citrix Xen、Microsoft Hyper-V 或 VMware vSphere)导入虚拟机 (VM),
然后将其作为 AMI 导入 Amazon EC2 中。有关如何从 AMI 启动 Amazon EC2 实例的更多信息,请参阅
启动实例 (p. 229)。
要在 Amazon EC2 中使用您的 VM,您必须首先将其从虚拟化环境中导出,然后使用 AWS Command
Line Interface (AWS CLI) 或 API 工具将其导入 Amazon EC2。
下图显示将 VM 从您的本地虚拟化环境导出到 AWS 的过程。
341
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
无论使用 CLI 或 API,您将执行将 VM 或卷导入 Amazon EC2 的相同步骤。下面是使用 CLI 的过程。
将 VM 导入 Amazon EC2 中
1.
安装 AWS CLI. 有关更多信息,请参阅 步骤 1:安装 AWS CLI (p. 342)。
2.
3.
4.
为 VM 导入 Amazon EC2 做准备。有关更多信息,请参阅 步骤 2:准备您的 VM (p. 342)。
从虚拟化环境中导出 VM。有关更多信息,请参阅 步骤 3:将您的 VM 从其虚拟化环境导出 (p. 344)。
将 VM 导入 Amazon EC2。有关信息,请参阅 步骤 4:将您的 VM 导入 Amazon EC2 (p. 344)。
5.
在 Amazon EC2 中启动实例。有关更多信息,请参阅 步骤 5:在 Amazon EC2 中启动实例 (p. 350)。
步骤 1:安装 AWS CLI
Abstract
使用 Amazon EC2 命令行工具导入您的 Citrix、Microsoft Hyper-V 或 VMware vSphere 虚拟机。
您可安装 AWS CLI 以将您的 Citrix、Microsoft Hyper-V 或 VMware vSphere 虚拟机导入 Amazon EC2。
有关安装 AWS CLI 的更多信息,请参阅 AWS Command Line Interface 用户指南 中的配置 AWS 命令行
界面。
您可以使用 AWS CLI 中的以下命令来以支持的格式导入 VM:
命令
说明
import-image
使用指定磁盘映像中的元数据创建新的导入映像任
务并创建 Amazon 系统映像 (AMI)。
import-snapshot
使用指定磁盘映像中的元数据创建新的导入快照任
务,并将快照导入 Amazon EBS 中。
describe-import-image-tasks
列出并描述您的导入任务。
describe-import-snapshot-tasks
列出并描述您的快照导入任务。
cancel-import-task
取消活动的导入任务。
步骤 2:准备您的 VM
Abstract
从虚拟化环境导出之前配置 VM。
在将 VM 从虚拟化环境中导出之前,请按照以下指南配置您的 VM。
• 审查前提条件。有关更多信息,请参阅 VM Import/Export 的先决条件 (p. 333)。
• 在您的 VM 上禁用任何反病毒软件或入侵检测软件。可在导入过程完成后重新启用上述服务。
• 从您的 VMware 虚拟机上卸载 VMware 工具。
• 断开连接任何 CD-ROM 驱动(虚拟或实际)。
• 将您的网络设置为 DHCP 而不是静态 IP 地址。如果您希望分配静态私有 IP 地址,请务必在您的 VPC
子网中使用非预留私有 IP 地址。Amazon Virtual Private Cloud (Amazon VPC) 保留了 VPC 子网中的
前四个私有 IP 地址。
• 在从虚拟化环境导出您的 VM 之前先将其关闭。
Windows
342
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
• 启用 Remote Desktop (RDP) 以进行远程访问。
• 如果配置了主机防火墙(Windows 防火墙或类似防火墙),请确保该防火墙允许访问 RDP。否则在导
入完成后,您将无法访问您的实例。
• 确保管理员账户和所有其他用户账户使用安全密码。所有账户均须有密码,否则导入可能失败。
• 确保您的 Windows VM 已安装 .NET Framework 3.5 或更高版本,如 Amazon Windows EC2Config 服
务所要求的一样。
• 在导入 Windows Server 2008 或 Windows Server 2012 VM 映像之前或之后,您可以在其上运行 System
Preparation (Sysprep)。如果您在导入 VM 之前运行 Sysprep,则导入过程将在 VM 中添加一个回复文
件,以自动接受最终用户许可协议 (EULA) 并将区域设置设为 EN-US。如果您选择导入后运行 Sysprep,
我们建议您使用 Amazon EC2 配置服务运行 Sysprep。
要用您自己的回复文件替代默认回复文件 (unattend.xml),请执行以下操作:
1. 复制以下示例文件 unattend.xml,并将 processorArchitecture 参数设置为 x86 或 amd64,具体取决
于您的操作系统架构:
<?xml version='1.0' encoding='UTF-8'?>
<unattend xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xm
lns='urn:schemas-microsoft-com:unattend'>
<settings pass='oobeSystem'>
<component versionScope='nonSxS' processorArchitecture='x86 or amd64'
name='Microsoft-Windows-International-Core' publicKeyToken='31bf3856ad364e35'
language='neutral'>
<InputLocale>en-US</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component versionScope='nonSxS' processorArchitecture='x86 or amd64'
name='Microsoft-Windows-Shell-Setup' publicKeyToken='31bf3856ad364e35' lan
guage='neutral'>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
</component>
</settings>
</unattend>
2. 将文件保存在 C:\Windows\Panther 目录中,并命名为 unattend.xml。
3. 使用 /oobe 和 /generalize 选项运行 Sysprep。
Note
/oobe 和 /generlize 选项会从 Microsoft Windows 安装中删除所有唯一系统信息并提示您重
置管理员密码。
4. 关闭 VM 并从您的虚拟环境中将其导出。
• 在您的 Windows VM 上禁用 Autologon。
• 打开 Control Panel > System and Security > Windows Update。在左窗格中,选择 Change settings。
选择所需设置。请注意,如果选择 Download updates but let me choose whether to install them(默认
值),则更新检查可能会临时占用实例上 50% 到 99% 的 CPU 资源。检查通常会在实例启动后的几分
钟内执行。确保没有等待进行的 Microsoft 更新且计算机未设置成在重启时安装软件。
• 应用以下修补程序:
343
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
• 如果 Windows 中启用了 RealTimeIsUniversal 注册表项,那么您无法更改系统时间
• Windows Server 2008、Windows 7 或 Windows Server 2008 R2 中 DST 转换期间的高 CPU 使用率
• 启用 RealTimeIsUniversal 注册表项。
Linux
• 启用安全外壳 (SSH) 以进行远程访问。
• 确保您的主机防火墙(例如 Linux iptables)允许访问 SSH。否则在导入完成后,您将无法访问您的实
例。
• 确保您已配置了一个非根用户以使用基于密钥的公共 SSH 在导入您的实例后访问它。使用基于密码的
SSH 和通过 SSH 进行根登录均可行,但不推荐使用。推荐使用公共密钥和非根用户,因为它更安全。
VM Import 不会在导入过程中配置 ec2-user 账户。
• 确保您的 Linux VM 将 GRUB(传统 GRUB)或 GRUB 2 作为其启动加载程序。
• 确保您的 Linux VM 使用下列根文件系统之一:EXT2、EXT3、EXT4、Btrfs、JFS 或 XFS。
步骤 3:将您的 VM 从其虚拟化环境导出
Abstract
从 Citrix、Microsoft Hyper-V 或 VMware vCenter 虚拟化环境导出 VM。
完成 VM 导出的准备工作后,您可以从您的虚拟化环境将其导出。有关如何从您的虚拟化环境中导出 VM
的信息,请参阅 Citrix、Microsoft Hyper-V 或 VMware vCenter 虚拟化环境的文档。
Citrix:有关更多信息,请参阅 Citrix 网站的作为 OVF/OVA 导出 VM。
Microsoft Hyper-V:有关更多信息,请参阅 Microsoft 网站的 Hyper-V - Export & Import。
VMware:有关更多信息,请参阅 VMware 网站的导出 OVF 模板。
步骤 4:将您的 VM 导入 Amazon EC2
Abstract
将 VM 导入 Amazon EC2。
从您的虚拟化环境导出您的 VM 后,您可以将其导入 Amazon EC2。无论 VM 来自哪里,导入过程都相
同。
以下为需要您了解的有关 VM 实例的重要信息,以及一些安全和存储建议:
• Amazon EC2 将私有 DHCP IP 地址自动分配至您的实例。实例开始运行时,可通过
ec2-describe-instances 命令获得 DNS 名称和 IP 地址。出于安全原因,如果实例已导入到 VPC,
它将不会获得公有 IP 地址,尽管子网已启用自动分配公有 IP。但是,您可以创建弹性 IP 地址 (EIP) 并
将其附加到导入的实例。
• 您的实例将只有一个 Ethernet 网络接口。
• 我们建议您的 Windows 实例对于所有用户账户均包含强密码。我们建议您的 Linux 实例对 SSH 使用
公钥。
• 对于 Windows 实例,我们建议您在将虚拟机导入到 Amazon EC2 中后,安装最新版本的 Amazon
Windows EC2Config 服务。
以 OVA 格式将 VM 导入 Amazon EC2 中
344
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
您可使用所选的上传工具以 OVA 格式将 VM 上传到 Amazon S3 存储桶。将您的 VM 上传到 Amazon S3
后,您可使用 AWS CLI 导入 OVA 映像。这些工具接受 URL(公共 Amazon S3 文件,适用于私有 Amazon
S3 文件的已签名的 GET URL)或 Amazon S3 存储桶和磁盘文件的路径。
使用 aws ec2 import-image 创建新的导入映像任务。
此命令的语法如下:
$ aws ec2 import-image --description "Windows 2008 OVA" --disk-containers
file://containers.json
文件 containers.json 是包含有关映像的信息的 JSON 文档。S3Key 是要上传到 S3Bucket 的映像文
件的名称。
[{
"Description": "First CLI task",
"Format": "ova",
"UserBucket": {
"S3Bucket": "my-import-bucket",
"S3Key": "my-windows-2008-vm.ova"
}
}]
响应示例
<ImportImageResponse xmlns="http://ec2.amazonaws.com/doc/2015-03-01/">
<progress>2</progress>
<importTaskId>import-ami-fgxn195v</importTaskId>
<status>active</status>
<description>Windows 2008 OVA</description>
<snapshotTaskDetailSet>
<item>
<diskImageSize>0.0</diskImageSize>
<userBucket>
<s3Bucket>my-import-bucket</s3Bucket>
<s3Key>my-windows-2008-vm.ova</s3Key>
</userBucket>
</item>
</snapshotTaskDetailSet>
<licenseType>AWS</licenseType>
<statusMessage>pending</statusMessage>
<requestId>1571e127-d6d8-4984-b4f1-3a21e9dbdcb5</requestId>
</ImportImageResponse>
将具有多个显式磁盘的 VM 导入 Amazon EC2 中
在将您的 VM 磁盘映像上传到 Amazon S3 后,可使用 AWS CLI 导入您的磁盘映像或快照。这些工具接
受 URL(公共 Amazon S3 文件,适用于私有 Amazon S3 文件的已签名的 GET URL)或 Amazon S3 存
储桶和磁盘文件的路径。您还可以使用 Amazon EBS 快照作为 ImportImage API 的输入。
将 aws ec2 import-image 命令用于多个显式磁盘的示例
使用 aws ec2 import-image 命令创建新的导入映像任务。
345
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
$ aws ec2 import-image --description "Windows 2008 VMDKs" --disk-containers
file://containers.json
文件 containers.json 是包含有关映像的信息的 JSON 文档。S3Key 是要上传到 S3Bucket 的映像文
件的名称。
[{
"Description": "First CLI task",
"Format": "vmdk",
"UserBucket": {
"S3Bucket": "my-import-bucket",
"S3Key": "my-windows-2008-vm-disk1.vmdk"
}
},
{
"Description": "Second CLI task",
"Format": "vmdk",
"UserBucket": {
"S3Bucket": "my-import-bucket",
"S3Key": "my-windows-2008-vm-disk2.vmdk"
}
}]
响应示例
<ImportImageResponse xmlns="http://ec2.amazonaws.com/doc/2015-03-01/">
<progress>2</progress>
<importTaskId>import-ami-fgxn591c</importTaskId>
<status>active</status>
<description>Windows 2008 VMDKs</description>
<snapshotTaskDetailSet>
<item>
<diskImageSize>0.0</diskImageSize>
<userBucket>
<s3Bucket>my-import-bucket</s3Bucket>
<s3Key>my-windows-2008-vm-disk1.vmdk</s3Key>
</userBucket>
</item>
<item>
<diskImageSize>0.0</diskImageSize>
<userBucket>
<s3Bucket>my-import-bucket</s3Bucket>
<s3Key>my-windows-2008-vm-disk2.vmdk</s3Key>
</userBucket>
</item>
</snapshotTaskDetailSet>
<licenseType>AWS</licenseType>
<statusMessage>pending</statusMessage>
<requestId>1571e127-d6d8-4984-b4f1-3a21e9dbdcb5</requestId>
</ImportImageResponse>
346
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
检查您的导入映像任务的状态
Abstract
使用 Amazon EC2 CLI 检查导入任务的状态。
aws ec2 describe-import-image-tasks 命令会返回导入任务的状态。包括的状态值如下:
• active - 您的任务处于活动状态且当前正在进行中。
• deleting - 您的任务当前被取消。
• deleted - 您的任务已取消。
• completed - 您的任务已完成,并且 AMI 已准备就绪,可以随时使用。
检查您的导入任务的状态
使用 aws ec2 describe-import-image-tasks 命令返回任务的状态。此命令的语法如下:
使用 ec2 describe-import-image-tasks 命令的示例:
您可以在以下示例中查看您的导入任务的状态。
$ aws ec2 describe-import-image-tasks --cli-input-json "{ \"ImportTaskIds\":
[\"import-ami-fgxn195v\"], \"NextToken\": \"abc\", \"MaxResults\": 10 } "
响应示例
以下响应显示了来自 aws ec2 describe-import-image-tasks 命令的输出。
<DescribeImportImageTasksResponse xmlns="http://ec2.amazonaws.com/doc/2015-0301/">
<importImageTaskSet>
<item>
<platform>Windows</platform>
<importTaskId>import-ami-fgs8im0c</importTaskId>
<imageId>ami-4a6c2722</imageId>
<status>completed</status>
<description>Linux OVA</description>
<architecture>x86_64</architecture>
<snapshotTaskDetailSet>
<item>
<diskImageSize>3.115815424E9</diskImageSize>
<deviceName>/dev/sda1</deviceName>
<description>First CLI task</description>
<format>VMDK</format>
<url>https://mys3bucket/vms/my-linux-vm.ova?AWSAccessKey
Id=myAccessKeyId&Expires=expirationDate&Signature=mySignature</url>
</item>
</snapshotTaskDetailSet>
<licenseType>AWS</licenseType>
</item>
</importImageTaskSet>
<requestId>377ec1ca-6a47-42f5-8b84-aa07ff87f7b0</requestId>
</DescribeImportImageTasksResponse>
347
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
将磁盘映像导入 Amazon EBS 中
Abstract
将您的数据存储导入 Amazon EBS 中,然后将其附加到您的某个现有 EC2 实例。
本部分介绍如何将磁盘导入 Amazon EBS 快照中,然后创建 Amazon EBS 卷。Amazon EC2 支持导入
RAW、虚拟硬盘 (VHD) 以及 ESX 虚拟机磁盘 (VMDK) 磁盘格式。
在您将您的虚拟机从虚拟化环境中导出之后,只需一步即可将卷导入 Amazon EBS 中。创建上传任务以
将磁盘映像上传到 Amazon S3,然后创建导入任务以使用该卷。
将磁盘映像导入 Amazon EBS 中
1.
使用 aws ec2 import-snapshot 命令将您的卷上传到 Amazon EBS。
使用 aws ec2 import-snapshot 命令的示例。
$ aws ec2 import-snapshot --description "Windows 2008 VMDK" --disk-container
file://containers.json
文件 containers.json 是包含有关快照的信息的 JSON 文档。
[{
"Description": "First CLI snap",
"Format": "vmdk",
"Url": "https://mys3bucket/vms/Win_2008_Server_Enterprise_R2_64bit.vmdk?AWSAccessKeyId=myaccesskey&Expires=expirationdate&Signature=signa
ture",
"DeviceName": "",
"SnapshotId": ""
},
"ClientData": {
"UploadStart": null,
"UploadEnd": null,
"UploadSize": null,
"Comment": ""
},
"ClientToken": "abc"
}]
响应示例
<ImportSnapshotResponse xmlns="http://ec2.amazonaws.com/doc/2015-03-01/">
<snapshotTaskDetail>
<diskImageSize>0.0</diskImageSize>
<progress>3</progress>
<status>active</status>
<description>Windows 2008 VMDK</description>
<url>https://mys3bucket/vms/Win_2008_Server_Enterprise_R2_64bit.vmdk?AWSAccessKeyId=myaccesskey&Expires=expirationdate&Signature=signa
ture\</url>
<statusMessage>pending</statusMessage>
</snapshotTaskDetail>
<importTaskId>import-snap-ffy5pvea</importTaskId>
<description>Windows 2008 VMDK</description>
348
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
<requestId>2ef5652d-6816-4c20-89b2-a4bbb0560190</requestId>
</ImportSnapshotResponse>
2.
使用 aws ec2 describe-import-snapshot-tasks 命令可确认已成功导入快照。
使用 aws ec2 describe-import-snapshot-tasks 命令的示例
$ aws ec2 describe-import-snapshot-tasks --cli-input-json "{ \"Import
TaskIds\": [\"import-snap-fgr1mmg7\"], \"NextToken\": \"abc\", \"MaxResults\":
10 } "
响应示例
<DescribeImportSnapshotTasksResponse xmlns="http://ec2.amazonaws.com/doc/201503-01/">
<importSnapshotTaskSet>
<item>
<snapshotTaskDetail>
<diskImageSize>3.115815424E9</diskImageSize>
<progress>22</progress>
<status>active</status>
<description>Windows 2008 VMDK</description>
<format>VMDK</format>
<url>https://mys3bucket/vms/Win_2008_Server_Enterprise_R2_64bit.vmdk?AWSAccessKeyId=myaccesskey&Expires=expirationdate&Signature=signa
ture\</url>
<statusMessage>validated</statusMessage>
</snapshotTaskDetail>
<importTaskId>import-snap-fgr1mmg7</importTaskId>
<description>Windows 2008 VMDK</description>
</item>
</importSnapshotTaskSet>
<requestId>3ec7adc5-001a-454f-abc3-820c8a91c353</requestId>
</DescribeImportSnapshotTasksResponse>
3.
此示例中的状态为 active,这表示导入仍在进行中。
使用 aws ec2 create-volume 从 Amazon EBS 快照创建卷。以下示例从快照创建卷。确保您选
择的是实例所在的可用区,以便将 Amazon EBS 卷挂载到 Amazon EC2 实例。
$ aws ec2 create-volume --availability-zone us-east-1a -snapshot-id snapabcd1234
输出示例
{
"AvailabilityZone": "us-east-1a",
"VolumeId": "vol-1234abcd",
"State": "creating",
"SnapshotId": "snap-abcd1234"
}
4.
使用 aws ec2 attach-volume 将 Amazon EBS 卷挂载到您的某个现有 Amazon EC2 实例。以下
示例将卷 vol-abcd 附加到设备 /dev/sdf 上的 i-1234567890abcdef0 实例。
349
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为镜像导入 Amazon EC2
$ aws ec2 attach-volume --volume-id vol-1234abcd --instance-id i1234567890abcdef0 --device /dev/sdf
输出示例
{
"AttachTime": "YYYY-MM-DDTHH:MM:SS.000Z",
"InstanceId": "i-1234567890abcdef0",
"VolumeId": "vol-1234abcd",
"State": "attaching",
"Device": "/dev/sdf"
}
取消导入任务
Abstract
取消导入任务。
使用 aws ec2 cancel-import-task 命令取消活动的导入任务。任务可以是 AMI 或快照的导入。
取消导入任务
使用要通过 aws ec2 cancel-import-task 命令取消的导入的任务 ID。
使用 aws ec2 cancel-import-task 命令的示例
以下为取消与任务 ID import-ami-fg4z7c9h相关之上传的示例。
$ aws ec2 cancel-import-task --import-task-id "import-ami-fg4z7c9h"
响应示例
<CancelImportTaskResponse xmlns="http://ec2.amazonaws.com/doc/2015-03-01/">
<importTaskId>import-ami-fg4z7c9h</importTaskId>
<state>active</state>
<previousState>deleting</previousState>
<requestId>1e5abd4c-b8de-4b3c-8c1a-73d93b006c1f</requestId>
</CancelImportTaskResponse>
步骤 5:在 Amazon EC2 中启动实例
Abstract
基于已导入的 VM 从 AMI 启动 Amazon EC2 实例。
完成 aws ec2 import-image 任务后,Amazon EC2 控制台中将显示您的 AMI。您可选择此 AMI,然
后基于此 AMI 启动 Amazon EC2 实例。
基于您的 AMI 启动 Amazon EC2 实例
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
350
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
2.
3.
4.
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中,单击 AMIs。
在内容窗格中,选择此 AMI,然后单击 Launch。
将 VM 作为实例导入 Amazon EC2
Abstract
使用 ImportInstance API 从 Citrix Xen、Microsoft Hyper-V 或 VMware vSphere 虚拟化环境将 VM 作为实例导入
Amazon EC2。
您可以通过两种方式在 Amazon EC2 中启动实例。您可以从 Amazon 系统映像 (AMI) 启动实例,或者,
您可以从您在 Citrix Xen、Microsoft Hyper-V 或 VMware vSphere 等虚拟化环境下导入的虚拟机 (VM) 启
动实例。本节讲述导入 VM 并将其作为 Amazon EC2 实例启动。此方法仅支持具有单个卷的 VM。要导
入具有多个卷的 VM,请参阅将 VM 作为镜像导入 Amazon EC2 (p. 341)。有关如何从 AMI 启动 Amazon
EC2 实例的更多信息,请参阅启动实例 (p. 229)。
要在 Amazon EC2 中将您的 VM 作为实例使用,您必须首先将其从虚拟化环境中导出,然后使用 Amazon
EC2 命令行界面 (CLI) 或 API 工具将其导入 Amazon EC2。如果您要从 VMware vCenter 导入 VM,您还
可以使用 AWS Connector for vCenter 从 VMware 导出 VM,然后将其导入 Amazon EC2。有关更多信
息,请参阅 AWS Management Portal for vCenter 用户指南 中的使用 AWS Connector for vCenter 将您
的虚拟机迁移至 Amazon EC2。
Important
您不能使用 ImportInstance 导入使用自有许可 (BYOL) 模式的 Microsoft Windows 实例。要导入
这些实例类型,请参阅将 VM 作为镜像导入 Amazon EC2 (p. 341)。
下图显示将 VM 从您的本地虚拟化环境导出到 AWS 的过程。
无论使用 CLI 或 API,您将执行将 VM 或卷导入 Amazon EC2 的相同步骤。下面是使用 CLI 的过程。
将 VM 导入 Amazon EC2 中
1.
安装 CLI。有关更多信息,请参阅 步骤 1:安装 Amazon EC2 CLI (p. 352)。
2.
为 VM 导入 Amazon EC2 做准备。有关更多信息,请参阅 步骤 2:准备您的 VM (p. 352)。
351
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
3.
4.
5.
从虚拟化环境中导出 VM。有关更多信息,请参阅 步骤 3:将您的 VM 从其虚拟化环境导出 (p. 354)。
将 VM 导入 Amazon EC2。有关信息,请参阅 步骤 4:将您的 VM 导入 Amazon EC2 (p. 354)。
在 Amazon EC2 中启动实例。有关更多信息,请参阅 步骤 5:在 Amazon EC2 中启动实例 (p. 361)。
步骤 1:安装 Amazon EC2 CLI
Abstract
使用 Amazon EC2 命令行工具导入您的 Citrix、Microsoft Hyper-V 或 VMware vSphere 虚拟机。
您需要安装 Amazon EC2 CLI 才能将您的 Citrix、Microsoft Hyper-V 或 VMware vSphere 虚拟机导入
Amazon EC2 或将其从 Amazon EC2 导出。如果您尚未安装 Amazon EC2 CLI,请参阅设置 Amazon
EC2 工具。
您将使用下列 Amazon EC2 命令导入或导出 VM。
命令
说明
ec2-import-instance
使用指定磁盘映像中的元数据创建新的导入实例任
务,并将实例导入 Amazon EC2 中。
命令行中的
使用指定磁盘映像中的元数据创建新的导入卷任
务,并将该卷导入 Amazon EC2 中。
ec2-resume-import
重新开始上传与导入实例或导入卷任务 ID 相关的
磁盘映像。
ec2-describe-conversion-tasks
列出并描述您的导入任务。
ec2-cancel-conversion-task
取消活动的导入任务。任务可以是实例或卷的导
入。
ec2-delete-disk-image
删除部分或全部上传的磁盘映像以便从 Amazon S3
存储桶导入。
ec2-create-image-export-task
将正在运行或停止的实例导出到 Amazon S3 存储
桶。
ec2-cancel-export-task
取消活动的导出任务。
ec2-describe-export-tasks
列出并描述您的导出任务,包括最近取消和完成的
任务。
有关上述命令和其他 Amazon EC2 命令的信息,请参阅 Amazon EC2 命令行参考。
步骤 2:准备您的 VM
Abstract
从虚拟化环境导出之前配置 VM。
在将 VM 从虚拟化环境中导出之前,请按照以下指南配置您的 VM。
• 审查前提条件。有关更多信息,请参阅 VM Import/Export 的先决条件 (p. 333)。
• 在您的 VM 上禁用任何反病毒软件或入侵检测软件。可在导入过程完成后重新启用上述服务。
• 从您的 VMware 虚拟机上卸载 VMware 工具。
• 断开连接任何 CD-ROM 驱动(虚拟或实际)。
352
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
• 将您的网络设置为 DHCP 而不是静态 IP 地址。如果您希望分配静态私有 IP 地址,请务必在您的 VPC
子网中使用非预留私有 IP 地址。Amazon Virtual Private Cloud (Amazon VPC) 保留了 VPC 子网中的
前四个私有 IP 地址。
• 在导出前,请先关闭您的 VM。
Windows
• 启用 Remote Desktop (RDP) 以进行远程访问。
• 如果配置了主机防火墙(Windows 防火墙或类似防火墙),请确保该防火墙允许访问 RDP。否则在导
入完成后,您将无法访问您的实例。
• 确保管理员账户和所有其他用户账户使用安全密码。所有账户均须有密码,否则导入可能失败。
• 确保您的 Windows VM 已安装 .NET Framework 3.5 或更高版本,如 Amazon Windows EC2Config 服
务所要求的一样。
• 在导入 Windows Server 2008 或 Windows Server 2012 VM 映像之前或之后,您可以在其上运行 System
Preparation (Sysprep)。如果您在导入 VM 之前运行 Sysprep,则导入过程将在 VM 中添加一个回复文
件,以自动接受最终用户许可协议 (EULA) 并将区域设置设为 EN-US。如果您选择导入后运行 Sysprep,
我们建议您使用 Amazon EC2 配置服务运行 Sysprep。
要用您自己的回复文件替代默认回复文件 (unattend.xml),请执行以下操作:
1. 复制以下示例文件 unattend.xml,并将 processorArchitecture 参数设置为 x86 或 amd64,具体取决
于您的操作系统架构:
<?xml version='1.0' encoding='UTF-8'?>
<unattend xmlns:wcm='http://schemas.microsoft.com/WMIConfig/2002/State' xm
lns='urn:schemas-microsoft-com:unattend'>
<settings pass='oobeSystem'>
<component versionScope='nonSxS' processorArchitecture='x86 or amd64'
name='Microsoft-Windows-International-Core' publicKeyToken='31bf3856ad364e35'
language='neutral'>
<InputLocale>en-US</InputLocale>
<SystemLocale>en-US</SystemLocale>
<UILanguage>en-US</UILanguage>
<UserLocale>en-US</UserLocale>
</component>
<component versionScope='nonSxS' processorArchitecture='x86 or amd64'
name='Microsoft-Windows-Shell-Setup' publicKeyToken='31bf3856ad364e35' lan
guage='neutral'>
<OOBE>
<HideEULAPage>true</HideEULAPage>
<SkipMachineOOBE>true</SkipMachineOOBE>
<SkipUserOOBE>true</SkipUserOOBE>
</OOBE>
</component>
</settings>
</unattend>
2. 将文件保存在 C:\Windows\Panther 目录中,并命名为 unattend.xml。
3. 使用 /oobe 和 /generalize 选项运行 Sysprep。
Note
/oobe 和 /generlize 选项会从 Microsoft Windows 安装中删除所有唯一系统信息并提示您重
置管理员密码。
353
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
4. 关闭 VM 并从您的虚拟环境中将其导出。
• 在您的 Windows VM 上禁用 Autologon。
• 确保没有等待进行的 Microsoft 更新且计算机未设置成在重启时安装软件。
• 应用以下修补程序:
• 如果 Windows 中启用了 RealTimeIsUniversal 注册表项,那么您无法更改系统时间
• Windows Server 2008、Windows 7 或 Windows Server 2008 R2 中 DST 转换期间的高 CPU 使用率
• 启用 RealTimeIsUniversal 注册表项。
Linux
• 启用安全外壳 (SSH) 以进行远程访问。
• 确保您的主机防火墙(例如 Linux iptables)允许访问 SSH。否则在导入完成后,您将无法访问您的实
例。
• 确保您已配置了一个非根用户以使用基于密钥的公共 SSH 在导入您的实例后访问它。使用基于密码的
SSH 和通过 SSH 进行根登录均可行,但不推荐使用。推荐使用公共密钥和非根用户,因为它更安全。
VM Import 不会在导入过程中配置 ec2-user 账户。
• 确保您的 Linux VM 将 GRUB(传统 GRUB)或 GRUB 2 作为其启动加载程序。
• 确保您的 Linux VM 使用下列根文件系统之一:EXT2、EXT3、EXT4、Btrfs、JFS 或 XFS。
步骤 3:将您的 VM 从其虚拟化环境导出
Abstract
从 Citrix、Microsoft Hyper-V 或 VMware vCenter 虚拟化环境导出 VM。
完成 VM 导出的准备工作后,您可以从您的虚拟化环境将其导出。有关如何从您的虚拟化环境中导出 VM
的信息,请参阅 Citrix、Microsoft Hyper-V 或 VMware vCenter 虚拟化环境的文档。
Citrix:有关更多信息,请参阅 Citrix 网站的作为 OVF/OVA 导出 VM。
Microsoft Hyper-V:有关更多信息,请参阅 Microsoft 网站的 Hyper-V - Export & Import。
VMware:有关更多信息,请参阅 VMware 网站的导出 OVF 模板。
步骤 4:将您的 VM 导入 Amazon EC2
Abstract
将 VM 导入 Amazon EC2。
从您的虚拟化环境导出您的 VM 后,您可以将其导入 Amazon EC2。无论 VM 来自哪里,导入过程都相
同。
以下为需要您了解的有关 VM 实例的重要信息,以及一些安全和存储建议:
• Amazon EC2 将私有 DHCP IP 地址自动分配至您的实例。实例开始运行时,可通过
ec2-describe-instances 命令获得 DNS 名称和 IP 地址。要为您的实例指定私有 IP 地址,请将
--private-ip-address 选项与 ec2-import-instance 命令结合使用。
出于安全原因,如果将实例导入到 VPC,则您无法为其分配公有 IP 地址,即使子网已启用自动分配公
有 IP 也是如此。但是,您可以创建弹性 IP 地址 (EIP) 并将其附加到导入的实例。此外,您也可以作为
映像导入 VM,然后在启动 VM 时为其分配公有 IP 地址。有关作为映像导入 VM 的更多信息,请参阅
将 VM 作为镜像导入 Amazon EC2 (p. 341)。
• 您的实例只有一个 Ethernet 网络接口。
354
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
• 若要在创建导入任务时指定要使用的子网,请使用带有 --subnetsubnet_id 选项的
ec2-import-instance 命令;否则,您的实例将使用公有 IP 地址。我们建议您使用限制性安全组来
控制对实例的访问。
• 我们建议您的 Windows 实例对于所有用户账户均包含强密码。我们建议您的 Linux 实例对 SSH 使用
公钥。
• 对于 Windows 实例,我们建议您在将虚拟机导入到 Amazon EC2 中后,安装最新版本的 Amazon
Windows EC2Config 服务。
• 如果未设置 AWS_ACCESS_KEY 和 AWS_SECRET_KEY 环境变量,则除了提供 -o 和 -w 选项以指定
Amazon S3 存储桶拥有者和私有密钥之外,您还必须包括 -O 和 -W 选项。
将 VM 导入 Amazon EC2 中
使用 ec2-import-instance 创建新的导入实例任务。
此命令的语法如下:
ec2-import-instance disk_image_filename -f file_format -t instance_type -a ar
chitecture -b s3_bucket_name -o owner -w secret_key -p platform_name -O
your_access_key -W your_secret_key
如果 VM 的导入中断,您可以使用 ec2-resume-import 命令从其停止位置恢复导入。有关更多信息,
请参阅 恢复上传 (p. 359)。
示例 (Windows)
通过以下命令可以创建导入 Windows Server 2008 SP2(32 位)VM 的实例任务。
C:\> ec2-import-instance ./WinSvr8-2-32-disk1.vmdk -f VMDK -t m1.small -a i386
-b myawsbucket -o AKIAIOSFODNN7EXAMPLE -w wJalrXUtnFEMI/K7MDENG/bPxRfi
CYEXAMPLEKEY -p Windows -O AKIAI44QH8DHBEXAMPLE -W je7MtGbCl
wBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
此请求使用 VMDK 文件 WinSvr8-2-32-disk1.vmdk 创建导入任务。(请注意,可以选择使用 VHD
或 RAW 格式。)如果您没有使用 -s 参数指定请求卷的大小,则会使用基于磁盘映像文件的卷大小。输
出类似于以下内容。
Requesting volume size: 25 GB
Disk image format: Stream-optimized VMDK
Converted volume size: 26843545600 bytes (25.00 GiB)
Requested EBS volume size: 26843545600 bytes (25.00 GiB)
TaskType
IMPORTINSTANCE TaskId import-i-fhbx6hua
ExpirationTime
2011-09-09T15:03:38+00:00
Status active StatusMessage
Pending In
stanceID
i-1234567890abcdef0
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
5070303744
VolumeSize
25
AvailabilityZone
cn-north-1c
Approximate
BytesConverted
0
Status active StatusMessage
Pending
Creating new manifest at testImport/9cba4345-b73e-4469-81062756a9f5a077/Win_2008_R1_EE_64.vmdkmanifest.xml
Uploading the manifest file
Uploading 5070303744 bytes across 484 parts
0% |--------------------------------------------------| 100%
|==================================================|
Done
355
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
示例 (Linux)
以下示例创建一个导入 64 位 Linux VM 的导入实例任务:
$ ec2-import-instance rhel6.4-64bit-disk.vhd -f vhd -t m3.xlarge -a x86_64 -b
myawsbucket -o AKIAIOSFODNN7EXAMPLE -w wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
-p Linux
此请求使用 VHD 文件 rhel6.4-64bit-disk.vhd 创建导入任务。输出类似于以下内容。
Requesting volume size: 8 GB
TaskType
IMPORTINSTANCE TaskId import-i-ffnzq636
ExpirationTime
2013-12-12T22:55:18Z
Status
active StatusMessage
Pending InstanceID
i-1234567890abcdef0
DISKIMAGE
DiskImageFormat VHD
DiskImageSize
861055488
VolumeSize
8
AvailabilityZone
cn-north-1d
ApproximateBytesCon
verted
0
Status active StatusMessage
Pending
Creating new manifest at myawsbucket/b73bae14-7ec5-4122-89584234028e1d9f/rhel6.4-64bit-disk.vhdmanifest.xml
Uploading the manifest file
Uploading 861055488 bytes across 83 parts
0% |--------------------------------------------------| 100%
|==================================================|
Done
Average speed was 11.054 MBps
The disk image for import-i-ffnzq636 has been uploaded to Amazon S3 where it
is being converted into
an EC2 instance. You may monitor the progress of this task by running ec2-de
scribe-conversion-tasks.
When the task is completed, you may use ec2-delete-disk-image to remove the
image from S3.
检查您的导入任务的状态
Abstract
使用 Amazon EC2 CLI 检查导入任务的状态。
ec2-describe-conversion-tasks 命令返回导入任务的状态。包括的状态值如下:
• active – 您的实例或卷仍在导入中。
• cancelling – 您的实例或卷仍在取消中。
• cancelled – 您的实例或卷已被取消。
• completed – 您的实例或卷已做好使用准备。
已导入的实例处于停止状态。您可以使用ec2-start-instance启动实例。有关更多信息,请参阅
Amazon EC2 命令行参考 中的 ec2-start-instances。
检查您的导入任务的状态
使用 ec2-describe-conversion-tasks 返回任务状态。此命令的语法如下:
ec2-describe-conversion-tasks task_id
356
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
示例
您可以在以下示例中查看到您的导入实例任务之状态。
$ ec2-describe-conversion-tasks import-i-ffvko9js
响应 1
以下响应显示IMPORTINSTANCE状态为active,且 893968896 个字节中的 73747456 个已被转换。
TaskType
IMPORTINSTANCE TaskId import-i-ffvko9js
ExpirationTime
2011-06-07T13:30:50+00:00
Status active StatusMessage
Pending In
stanceID
i-1234567890abcdef0
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
893968896 VolumeSize
12
AvailabilityZone
cn-north-1
ApproximateBytesConverted
73747456
Status active StatusMessage
Pending
响应 2
以下响应显示 IMPORTINSTANCE 状态为 active,进度为 7%,且 DISKIMAGE 已完成。
TaskType
IMPORTINSTANCE TaskId import-i-ffvko9js
ExpirationTime
2011-06-07T13:30:50+00:00
Status active StatusMessage
Progress: 7%
InstanceID
i-1234567890abcdef0
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
893968896 VolumeId
vol-9b59daf0
VolumeSize
12
AvailabilityZone
cn-north-1
ApproximateBytesConverted
893968896 Status completed
响应 3
以下响应显示IMPORTINSTANCE状态为completed。
TaskType
IMPORTINSTANCE TaskId import-i-ffvko9js
ExpirationTime
2011-06-07T13:30:50+00:00
Status completed
InstanceID
i1234567890abcdef0
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
893968896 VolumeId
vol-9b59daf0
VolumeSize
12
AvailabilityZone
cn-north-1
ApproximateBytesConverted
893968896 Status completed
Note
IMPORTINSTANCE状态是您用于确定最终状态的状态。DISKIMAGE状态将会在IMPORTINSTANCE
状态成为completed之前维持在completed一段时间。
现在,您可以使用ec2-stop-instance、ec2-start-instance、ec2-reboot-instance、
ec2-terminate-instance等命令管理您的实例。有关更多信息,请参阅 Amazon EC2 命令行参考
将您的卷导入 Amazon EBS 中
Abstract
将您的数据存储导入 Amazon EBS 中,然后将其附加到您的某个现有 EC2 实例。
本节介绍如何将您的数据存储导入 Amazon EBS 中,然后将其附加到您的某个现有 EC2 实例。Amazon
EC2 支持导入 RAW、虚拟硬盘 (VHD) 以及 ESX 虚拟机磁盘 (VMDK) 磁盘格式。
357
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
Important
我们建议使用 Amazon EC2 安全组限制对您的导入实例的网络访问。配置安全组,以仅允许可信
EC2 实例和远程主机连接到 RDP 和其它服务端口。有关安全组的更多信息,请参阅 Amazon
EC2 个安全组(对于 Linux 实例) (p. 456)。
在您将您的虚拟机从虚拟化环境中导出之后,只需一步即可将卷导入 Amazon EBS 中。您创建导入任务
和上传卷。
要将卷导入 Amazon EBS 中
1.
使用 ec2-import-volume 创建允许您将卷上传到 Amazon EBS 中的任务。此命令的语法如下:
ec2-import-volume disk_image -f file_format -s volume_size -z availabil
ity_zone -b s3_bucket_name -o Amazon S3 bucket owner -w Amazon S3 bucket
secret_acess_key --region region_name -O your_access_key -W your_secret_key
下面的示例创建一个导入卷任务,将卷导入 d 可用区中的 cn-north-1 区域。
$ ec2-import-volume Win_2008_R1_EE_64.vmdk -f vmdk -s 25 -z cn-north-1d -b
myawsbucket -o AKIAIOSFODNN7EXAMPLE -w wJalrXUtnFEMI/K7MDENG/bPxRfi
CYEXAMPLEKEY --region cn-north-1 -O AKIAI44QH8DHBEXAMPLE -W je7MtGbCl
wBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
以下是一个示例响应。
Requesting volume size: 25 GB
Disk image format: Stream-optimized VMDK
Converted volume size: 26843545600 bytes (25.00 GiB)
Requested EBS volume size: 26843545600 bytes (25.00 GiB)
TaskType
IMPORTVOLUME
TaskId import-vol-ffut5xv4
ExpirationTime
2011-09-09T15:22:30+00:00
Status active StatusMessage
Pending
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
5070303744
VolumeSize
25
AvailabilityZone
cn-north-1d
Approxim
ateBytesConverted
0
Creating new manifest at myawsbucket/0fd8fcf5-04d8-44ae-981f3c9f56d04520/Win_2008_R1_EE_64.vmdkmanifest.xml
Uploading the manifest file
Uploading 5070303744 bytes across 484 parts
0% |--------------------------------------------------| 100%
|==================================================|
Done
Amazon EC2 返回您将在下一步中使用的任务 ID。在此示例中,ID 为import-vol-ffut5xv4。
2.
使用 ec2-describe-conversion-tasks 确认您的卷已成功导入。
$ ec2-describe-conversion-tasks import-vol-ffut5xv4
TaskType
IMPORTVOLUME
TaskId import-vol-ffut5xv4
ExpirationTime
2011-09-09T15:22:30+00:00
Status completed
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
5070303744
VolumeId
vol-365a385c
VolumeSize
25
AvailabilityZone
cn-north-1d
ApproximateBytesConverted
5070303744
此示例中的状态为completed,这表示导入成功。
358
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
3.
使用 ec2-attach-volume 将 Amazon EBS 卷挂载到您的某个现有 EC2 实例中。以下为将卷
vol-2540994c附加到设备/dev/sde上的i-1234567890abcdef0实例中的示例。
$ ec2-attach-volume vol-2540994c -i i-1234567890abcdef0 -d /dev/sde
ATTACHMENT vol-2540994c i-1234567890abcdef0 /dev/sde attaching 2010-0323T15:43:46+00:00
恢复上传
Abstract
恢复上传。
连接发生问题会导致上传中断。当您恢复上传时,Amazon EC2 会从其停止位置自动开始上传。以下程
序会带您一步步了解上传成功百分比和恢复上传的方法。
要恢复上传
使用任务 ID 及 ec2-resume-import 继续上传。命令使用 HTTP HEAD操作决定恢复的位置。
ec2-resume-import disk_image -t task_id -o owner -w secret_key
示例
以下为恢复导入实例任务的示例。
$ ec2-resume-import Win_2008_R1_EE_64.vmdk -t import-i-ffni8aei -o AKIAIOSFOD
NN7EXAMPLE -w wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
导入实例任务完成时显示下列输出内容:
Disk image size: 5070303744 bytes (4.72 GiB)
Disk image format: Stream-optimized VMDK
Converted volume size: 26843545600 bytes (25.00 GiB)
Requested EBS volume size: 26843545600 bytes (25.00 GiB)
Uploading 5070303744 bytes across 484 parts
0% |--------------------------------------------------| 100%
|==================================================|
Done
Average speed was 10.316 MBps
The disk image for import-i-ffni8aei has been uploaded to Amazon S3
where it is being converted into an EC2 instance. You may monitor the
progress of this task by running ec2-describe-conversion-tasks. When
the task is completed, you may use ec2-delete-disk-image to remove the
image from S3.
取消上传
Abstract
取消上传。
使用 ec2-cancel-conversion-task 取消活动的导入任务。任务可以是上传实例或卷。使用此命令会删除导
入的所有项目,包括已上传的卷或实例。
359
Amazon Elastic Compute Cloud Linux 实例用户指南
将 VM 作为实例导入 Amazon EC2
如果导入已完成或仍在传输最后的磁盘映像,则命令失败且会返回类似于以下内容的例外情况:
Client.CancelConversionTask Error: Failed to cancel conversion task import-ifh95npoc
取消上传任务
使用要删除的上传的任务 ID 及 ec2-cancel-conversion-task。
示例
以下为取消与任务 ID import-i-fh95npoc相关之上传的示例。
$ ec2-cancel-conversion-task import-i-fh95npoc
成功的取消之输出类似于以下内容:
CONVERSION-TASK import-i-fh95npoc
您可以使用 ec2-describe-conversion-tasks 命令查看取消状态,如下面的示例所示:
$ ec2-describe-conversion-tasks import-i-fh95npoc
TaskType
IMPORTINSTANCE TaskId import-i-fh95npoc
ExpirationTime
2010-12-20T18:36:39+00:00
Status cancelled
InstanceID
i1234567890abcdef0
DISKIMAGE
DiskImageFormat VMDK
DiskImageSize
2671981568
VolumeSize
40
AvailabilityZone
cn-north-1c ApproximateBytesCon
verted
0
Status cancelled
在本示例中,状态为 cancelled。如果上传仍在进行,则状态为 cancelling。
上传后清除
Abstract
上传之后删除磁盘映像。
您可以使用 ec2-delete-disk-image 在映像文件上传后将其删除。如果您未删除文件,则会针对其在 Amazon
S3 中的存储情况向您收费。
要删除磁盘映像
使用您想用ec2-delete-disk-image删除的磁盘映像的任务 ID。
示例
以下为删除与任务 ID import-i-fh95npoc相关的磁盘映像的示例。
$ ec2-delete-disk-image -t import-i-fh95npoc
成功的取消之输出类似于以下内容:
DELETE-TASK import-i-fh95npoc
360
Amazon Elastic Compute Cloud Linux 实例用户指南
导出 Amazon EC2 实例
步骤 5:在 Amazon EC2 中启动实例
Abstract
启动从 VM 导入的实例。
在您将 VM 上传至 Amazon S3 后,VM Import 过程自动将其转换为 Amazon EC2 实例,并在 Amazon
EC2 控制台中将其作为停止的实例进行启动。在您开始使用实例前,必须启动。有关使用 Amazon EC2
实例的更多信息,请参阅实例生命周期 (p. 227)。
启动实例
1.
2.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
3.
4.
在导航窗格中,单击 Instances (实例)。
在内容窗格中,右键单击实例,选择 Instance State (实例状态),然后单击 Start (启动)。
导出 Amazon EC2 实例
Abstract
导出实例以将 Amazon EC2 实例的副本部署到您的现场虚拟化环境。
如果您之前已将实例导入 Amazon EC2 中,可以使用命令行工具将该实例导出到 Citrix Xen、Microsoft
Hyper-V 或 VMware vSphere 中。当您想在您的现场虚拟化环境中部署您的 EC2 实例时,导出您之前导
入的实例会很有用。
如果您使用的是 VMware vSphere,也可以使用 AWS Connector for vCenter 从 Amazon EC2 导出 VM。
有关更多信息,请参阅 AWS Management Portal for vCenter 用户指南 中的导出迁移的 Amazon EC2 实
例。
内容
• 导出实例 (p. 361)
• 取消或阻止实例的导出 (p. 363)
导出实例
您可以使用 Amazon EC2 CLI 导出实例。如果您尚未安装 CLI,请参阅设置 Amazon EC2 工具。
ec2-create-instance-export-task 命令可收集将实例正确导出到所选虚拟化格式所需的全部信息(例如,
实例 ID;用于保存所导出映像的 Amazon S3 存储桶的名称;所导出映像的名称;VMDK、OVA 或 VHD
格式)。导出的文件保存在您指定的 Amazon S3 存储桶中。VM Export 支持导出动态虚拟硬盘 (VHD)。
不支持固定 VHD。
Note
当您导出实例时,会针对您存储所导出 VM 所用的存储桶按照标准 Amazon S3 费率向您收费。
此外,您的账单中还会出现反映 Amazon EBS 快照的临时使用情况的小额费用。有关 Amazon
S3 定价的更多信息,请参阅 Amazon Simple Storage Service (S3) 定价。
361
Amazon Elastic Compute Cloud Linux 实例用户指南
导出 Amazon EC2 实例
要导出实例
1.
创建 Amazon S3 存储桶以存储导出的实例。Amazon S3 存储桶必须将上载/删除和查看权限授予
[email protected] 账户。有关更多信息,请参阅 Amazon Simple Storage Service 控
制台用户指南 中的创建存储桶和编辑存储桶权限。
Note
您可使用区域特定的规范 ID,而不是使用 [email protected] 账户。目标映像
的 Amazon S3 存储桶必须存在,并且必须已向使用其规范 ID 的以下区域特定的账户授予
WRITE 和 READ_ACP 权限:
• 中国(北京):834bafd86b15b6ca71074df0fd1f93d234b9d5e848a2cb31f880c149003ce36f
• AWS GovCloud(美国):
af913ca13efe7a94b88392711f6cfc8aa07c9d1454d4f190a624b126733a5602
有关更多信息,请参阅 AWS GovCloud (US) User Guide 中的 Amazon Elastic Compute
Cloud (Amazon EC2)。
• 所有其他区域:
c4d8eabf8db69dbe46bfe0e517100c554f01200b104d59cd408e777ba442a322
2.
在命令提示窗口中,键入以下命令:
ec2-create-instance-export-task instance_id -e target_environment -f
disk_image_format -c container_format -b s3_bucket
instance_id
要导出的实例的 ID。
target_environment
VMware、Citrix 或 Microsoft。
disk_image_format
适用于 VMware 的 VMDK 或适用于 Microsoft Hyper-V 和 Citrix Xen 的 VHD。
Note
VM Export 仅支持动态虚拟硬盘 (VHD)。不支持固定 VHD。
container_format
可在导出至 VMware 时视需要设置为 OVA。
s3_bucket
您希望将实例导出到的 Amazon S3 存储桶的名称。
3.
若要监控实例的导出,请在命令提示符处键入以下命令,其中 task_id 是导出任务的 ID:
ec2-describe-export-tasks task_id
362
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
取消或阻止实例的导出
您可以使用 Amazon EC2 CLI 在完成之前取消或阻止实例的导出。ec2-cancel-export-task 命令会删除所
有的导出项目,包括任何未完全创建的 Amazon S3 对象。如果导出任务完成或正在传输最后一个磁盘映
像,则该命令将失败且会返回错误。
要取消或阻止导出实例
在命令提示符处键入以下命令,其中 task_id 是导出任务的 ID:
ec2-cancel-export-task task_id
对 VM Import/Export 进行故障排除
Abstract
在您将虚拟机导入 EC2 实例时排查问题。
导入或导出 VM 时,大多数错误是在您进行不受支持的尝试时发生。要避免这些错误,请在开始导入或导
出之前阅读 VM Import/Export 的先决条件 (p. 333)。
错误
• AWS Error Code: InvalidParameter, AWS Error Message: Parameter disk-image-size=0 has an invalid
format. (AWS 错误代码: InvalidParameter,AWS 错误消息: 参数 disk-image-size=0 的格式无
效。) (p. 364)
• Client.NotExportable:仅可导出已导入的实例。(服务:AmazonEC2;状态代码:400;错误代码:
NotExportable;请求 ID:<RequestID>)。 (p. 364)
• Client.Unsupported:未找到可启动的分区。(服务:AmazonEC2,状态代码:400,错误代码:
Unsupported,请求 ID:<RequestID>) (p. 364)
• Client.UnsupportedOperation: This instance has multiple volumes attached.
(Client.UnsupportedOperation: 此实例附加了多个卷。)请删除额外的卷。 (p. 364)
• ClientError:Booter 联网故障/实例不可访问。请在安装 .Net framework 3.5 SP1 或更高版本后重
试。 (p. 364)
• ClientError: Footers not identical (ClientError: 页脚不同) (p. 365)
• ClientError:配置无效 - 无法读取 fstab。 (p. 365)
• ClientError: Uncompressed data has invalid length. (ClientError: 未压缩数据的长度无效。) (p. 365)
• ClientError:配置不受支持:找到了多个目录。 (p. 365)
• 存储桶 <<MyBucketName> 不在 <<RegionName> 区域,它在 <RegionName>。< (p. 365)
• ERROR: File uses unsupported compression algorithm 0. (错误: 文件使用的压缩算法 0 不受支
持。) (p. 365)
• Error starting instances: Invalid value <instance ID> for instanceId. Instance does not have a volume
attached at root (/dev/sda1). (启动实例时出错: instanceId 的值 <userinput><instance ID></userinput>
无效。实例的根上未附加卷 (/dev/sda1)。) (p. 366)
• S3 源位置无效 (p. 366)
• java.lang.OutOfMemoryError: Java heap space (java.lang.OutOfMemoryError: Java 堆空间) (p. 366)
• Service.InternalError: An internal error has occurred. (Service.InternalError: 出现内部错误。)Status
Code: 500, AWS Service: AmazonEC2 (状态代码: 500,AWS 服务: AmazonEC2) (p. 366)
• 调用 CreateRole 操作时出现客户端错误 (MalformedPolicyDocument):策略中的语法错误。 (p. 366)
• 给定的 S3 存储桶不在该区域本地。 (p. 366)
• 服务角色 <vmimport> 不存在或没有让服务继续的足够权限。 (p. 367)
• FirstBootFailure:该导入请求失败的原因是 Windows 实例启动和建立网络连接失败。 (p. 367)
363
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
• 请求的实例不支持 Linux (p. 368)
AWS Error Code: InvalidParameter, AWS Error Message:
Parameter disk-image-size=0 has an invalid format. (AWS 错误
代码: InvalidParameter,AWS 错误消息: 参数 disk-image-size=0
的格式无效。)
不支持您使用的映像格式。
解决
使用受支持的映像格式重试:RAW、VHD 或 VMDK。
Client.NotExportable:仅可导出已导入的实例。(服务:
AmazonEC2;状态代码:400;错误代码:NotExportable;请
求 ID:<RequestID>)。
您只能导出之前已导入到 Amazon EC2 的实例或镜像。
解决
导出之前已导入到 Amazon EC2 的实例或镜像。
Client.Unsupported:未找到可启动的分区。(服务:
AmazonEC2,状态代码:400,错误代码:Unsupported,请求
ID:<RequestID>)
VM 具有 GUID 分区表 (GPT) 已分区的根卷。
解决
VM Import/Export 工具不支持 GPT 已分区的卷。将您的 VM 根卷转换为 MBR 分区,然后尝试重新导入
VM。
Client.UnsupportedOperation: This instance has multiple volumes
attached. (Client.UnsupportedOperation: 此实例附加了多个卷。)
请删除额外的卷。
VM 有多个附加的磁盘。
解决
断开额外的驱动器并重试。如果您在其他卷上需要此数据,复制数据至根卷然后尝试再次导出 VM。
ClientError:Booter 联网故障/实例不可访问。请在安装 .Net
framework 3.5 SP1 或更高版本后重试。
Windows VM 需要支持 EC2 Config 服务的 Microsoft .NET Framework 3.5 Service Pack 1 或更高版本。
解决
364
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
先在 Windows VM 上安装 Microsoft .NET Framework 3.5 Service Pack 1 或更高版本,然后尝试导入
EC2 Config 服务。
ClientError: Footers not identical (ClientError: 页脚不同)
您尝试导入差异 VHD,或在创建 VHD 时出错。
解决
重新导出您的 VM,然后将其重新导入 Amazon EC2。
ClientError:配置无效 - 无法读取 fstab。
不支持带有多个引导卷或多个 /etc 目录的 Linux VM。
解决
将 VM 配置为只有一个引导卷或 /etc 目录。
ClientError: Uncompressed data has invalid length. (ClientError:
未压缩数据的长度无效。)
VMDK 文件已损坏。
解决
您可以尝试维修或重新创建 VMDK 文件,或者为您的导入使用另一个 VMDK 文件。
ClientError:配置不受支持:找到了多个目录。
不支持带有多个引导卷或多个 /etc 目录的 Linux VM。
解决
将 VM 配置为只有一个引导卷或 /etc 目录。
存储桶 <<MyBucketName> 不在 <<RegionName> 区域,它在 <RegionName>。<
Amazon S3 存储桶与您希望导入的实例不在同一个区域。
解决
请尝试添加 --ignore-region-affinity 选项,它忽略了存储桶的区域是否与创建导入任务的区域相
符。您也可以使用 Amazon Simple Storage Service 控制台创建 Amazon S3 存储桶并将区域设置为您希
望导入 VM 的区域。再次运行命令并指定您刚创建的新存储桶。
ERROR: File uses unsupported compression algorithm 0. (错误:
文件使用的压缩算法 0 不受支持。)
使用 OVA 格式而非 OVF 格式创建 VMDK。
解决
以 OVF 格式创建 VMDK。
365
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
Error starting instances: Invalid value <instance ID> for instanceId.
Instance does not have a volume attached at root (/dev/sda1).
(启动实例时出错: instanceId 的值 <userinput><instance
ID></userinput> 无效。实例的根上未附加卷 (/dev/sda1)。)
您尝试在 VM Import 过程和所有转换任务完成之前启动实例。
解决
请等待 VM Import 过程和所有转换任务全部完成后再启动实例。
S3 源位置无效
命令语法或 Amazon S3 存储桶名称不正确。
解决
在仅用于 VM Import 的合适区域中创建新的 Amazon S3 存储桶,然后将 VM 文件上传到该存储桶的根。
java.lang.OutOfMemoryError: Java heap space
(java.lang.OutOfMemoryError: Java 堆空间)
没有足够的虚拟内存启动 Java,或者您尝试导入的映像过大。
解决
如果您向 Java 分配额外内存,额外内容将仅适用于 JVM,但如果指定了此设置(明确针对 EC2 命令行
工具),它将覆盖全局设置。例如,您可以使用下列命令向 Java“set EC2_JVM_ARGS=-Xmx512m”分配
512 MB 的额外内存。
Service.InternalError: An internal error has occurred.
(Service.InternalError: 出现内部错误。)Status Code: 500, AWS
Service: AmazonEC2 (状态代码: 500,AWS 服务: AmazonEC2)
您尝试在未指定子网和可用性区域时导入没有默认 VPC 的实例。
解决
如果您正在导入没有默认 VPC 的实例,请确保指定子网和可用区。
调用 CreateRole 操作时出现客户端错误
(MalformedPolicyDocument):策略中的语法错误。
您忘记在策略文档名称前包含 file://。
解决
在策略文档名称前包含 file://(例如,file://trust-policy.json)。
给定的 S3 存储桶不在该区域本地。
用于 VM Import 的 Amazon S3 存储桶必须位于您希望导入 VM 的同一 AWS 区域。
366
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
解决
在您希望导入 VM 的区域中创建 S3 存储桶。
服务角色 <vmimport> 不存在或没有让服务继续的足够权限。
VM Import Service 角色缺失或不正确。如果尝试开始导入的 IAM 用户没有对 Amazon EC2 资源的足够
权限,您也可能收到此错误。
解决
请确保该服务角色存在且拥有所有适当权限。
FirstBootFailure:该导入请求失败的原因是 Windows 实例启动
和建立网络连接失败。
使用 ec2-import-instance 命令导入 VM 时,导入任务可能在完成之前停止,然后失败。若要调查问
题原因,您可以使用 ec2-describe-conversion-tasks 命令描述实例。
当您收到 FirstBootFailure 错误消息时,意味着您的虚拟磁盘映像无法执行以下步骤之一:
•
•
•
•
启动并开始 Windows。
安装 Amazon EC2 联网和磁盘驱动程序。
使用一个 Dhcp 配置的网络接口接收 IP 地址。
使用 Amazon EC2 Windows 批量许可激活 Windows。
以下最佳实践可帮助您避免 Windows 首次启动失败:
• 禁用反病毒和反间谍软件和防火墙. 这些类型的软件能够防止安装新 Windows 服务或防止运行未知的
二进制文件。软件和防火墙可在导入后重新启用。
• 不要强化您的操作系统. 安全配置(有时称为强化)可防止自动安装 Amazon EC2 驱动程序。还有其他
Windows 配置设置可防止导入。这些设置可在导入时重新使用。
• 禁用或删除多个可启动的分区. 如果您的虚拟机启动并需要您选择使用的启动分区,导入可能会失败。
虚拟磁盘映像无法启动和建立网络连接可能是由于以下任一原因。
原因
• TCP/IP 网络和 DHCP 未启用 (p. 367)
• 虚拟机上丢失了 Windows 需要的卷 (p. 368)
• Windows 始终启动到 System Recovery Options (p. 368)
• 虚拟机是利用 physical-to-virtual (P2V) 转换过程被创建的 (p. 368)
• Windows 激活失败 (p. 368)
• 未找到可启动的分区 (p. 368)
TCP/IP 网络和 DHCP 未启用
原因:对于所有 Amazon EC2 实例(包括 Amazon VPC 中的 Amazon EC2 实例),必须启用 TCP/IP
网络和 DHCP。在 VPC 中,您在导入实例之前或之后都可以定义实例的 IP 地址。导出实例前,不要设
置静态 IP 地址。
解决:确保 TCP/IP 网络已启用。有关更多信息,请参阅 Microsoft TechNet 网站的设置 TCP/IP (Windows
Server 2003) 或配置 TCP/IP (Windows Server 2008)。
367
Amazon Elastic Compute Cloud Linux 实例用户指南
问题排查
确认 DHCP 已启用。有关更多信息,请参阅 Microsoft TechNet 网站的什么是 DHCP。
虚拟机上丢失了 Windows 需要的卷
原因:将 VM 导入 Amazon EC2 时只导入启动盘,必须断开所有其他磁盘,而且在导入虚拟机前 Windows
必须能够启动。例如,Active Directory 通常会将 Active Directory 数据库存储在 D:\ 驱动器上。如果
Active Directory 数据库丢失或无法访问时,域控制器无法启动。
解决:在导出前,断开所有连接到 Windows VM 的二级和网络磁盘。
将所有 Active Directory 数据库从辅助驱动或分区移至主要 Windows 分区。有关更多信息,请参阅 Microsoft
Support 网站上的启动基于 Windows 或基于 SBS 的域控制器时出现“Directory Services cannot start”(目
录服务无法启动)错误消息。
Windows 始终启动到 System Recovery Options
原因:Windows 可以出于多种原因启动到 System Recovery Options,包括将 Windows 从物理计算机推
送至虚拟环境(也称为 P2V)。
解决:在导出或准备导入之前,确保 Windows 启动到登录提示。
不要导入来自物理设备的虚拟 Windows 实例。
虚拟机是利用 physical-to-virtual (P2V) 转换过程被创建的
原因:如果在物理计算机上执行 Windows 安装过程,然后将 Windows 安装的副本导入 VM,从而创建磁
盘映像,则会发生 P2V 转换。Amazon EC2 VM Import 不支持作为 P2V 转换的结果而创建的 VM。Amazon
EC2 VM Import 仅支持在源 VM 内本地安装的 Windows 映像。
解决:将 Windows 安装到虚拟化环境中 ,并将所安装的软件迁移至新的 VM。
Windows 激活失败
原因:在启动过程中,Windows 将检测硬件更改并尝试激活。在导入进程中,我们尝试将 Windows 中的
授许可机制转换为 Amazon Web Services 提供的批量许可。但是,如果 Windows 激活过程失败,那么
导入也会失败。
解决:确保要导入的 Windows 版本支持批量许可。Windows 测试版或预览版可能不会。
未找到可启动的分区
原因:在虚拟机导入期间,未能找到启动分区。
解决:确保要导入的磁盘有启动分区。我们不支持多磁盘导入。
请求的实例不支持 Linux
原因:只有特定实例类型才支持 Linux 导入。您尝试导入了一个不支持的实例类型。
解决:使用受支持的实例类型重试。Microsoft Windows BYOL 实例必须作为 Microsoft Windows 的专用
实例或专用主机启动,因此无法使用 t2 实例类型,因为它不支持专用实例。
• 通用型: t2.micro | t2.small | t2.medium | m3.medium | m3.large | m3.xlarge | m3.2xlarge
• 计算优化: c3.large | c3.xlarge | c3.2xlarge | c3.4xlarge | C3.8xlarge | cc1.4xlarge
• 内存优化: r3.large | r3.xlarge | r3.2xlarge | r3.4xlarge | r3.8xlarge
• 存储优化: i2.xlarge | i2.2xlarge | i2.4xlarge | i2.8xlarge
368
Amazon Elastic Compute Cloud Linux 实例用户指南
监控 Amazon EC2
Abstract
列出要进行监控,以保持 Amazon EC2 实例的可靠性、可用性以及性能的各个项目。
监控是保持 Amazon Elastic Compute Cloud (Amazon EC2) 实例和 AWS 解决方案的可靠性、可用性和
性能的重要部分。您的 AWS 解决方案的所有组成部分都应收集监控数据,以便更轻松地调试出现的多点
故障。但是,在开始监控 Amazon EC2 前,您应创建包括以下内容的监控计划:
•
•
•
•
•
•
您的监控目标是什么?
您将监控哪些资源?
监控这些资源的频率如何?
您将使用哪些监控工具?
谁负责执行监控任务?
出现错误时应通知谁?
在定义监控目标并创建监控计划后,下一步是在您的环境中建立正常 Amazon EC2 性能的基准。您应该
在不同时间和不同负载条件下测量 Amazon EC2 的性能。监控 Amazon EC2 时,您应存储所收集的监控
数据的历史记录。您可将当前 Amazon EC2 性能与这些历史数据进行比较,这样可帮助您确定性能的正
常模式和异常模式,找出解决问题的方法。例如,您可以监控 Amazon EC2 实例的 CPU 利用率、磁盘
I/O 和网络使用率。如果性能低于您所建立的基准,则您可能需要重新配置或优化实例以降低 CPU 使用
率、改进磁盘 I/O 或减少网络流量。
要建立基准,您至少应监控以下各项:
要监控的项目
Amazon EC2 指标
CPU 利用率
CPU 利用率 (p. 382)
内存利用率
监控脚本/CloudWatch Logs
(Linux 实例)为 Amazon EC2
Linux 实例监控内存和磁盘指标
(Windows 实例)将性能计数器
发送到 CW;,将日志发送到
CloudWatch Logs
369
Amazon Elastic Compute Cloud Linux 实例用户指南
自动和手动监控
要监控的项目
Amazon EC2 指标
已用内存
监控脚本/CloudWatch Logs
(Linux 实例)为 Amazon EC2
Linux 实例监控内存和磁盘指标
(Windows 实例)将性能计数器
发送到 CW;,将日志发送到
CloudWatch Logs
可用内存
(Linux 实例)为 Amazon EC2
Linux 实例监控内存和磁盘指标
(Windows 实例)将性能计数器
发送到 CW;,将日志发送到
CloudWatch Logs
网络使用率
网络输入 (p. 382)
网络输出 (p. 382)
磁盘性能
磁盘读取操作 (p. 382)
磁盘写入操作 (p. 382)
磁盘交换分区利用率(仅限 Linux
实例)
为 Amazon EC2 Linux 实例监控内
存和磁盘指标
使用的交换空间(仅限 Linux 实
例)
页面文件利用率(仅限 Windows
实例)
将性能计数器发送到 CW;,将日
志发送到 CloudWatch Logs
使用的页面文件(仅限 Windows
实例)
可用的页面文件(仅限 Windows
实例)
磁盘读取/写入
磁盘读取字节数 (p. 382)
磁盘写入字节数 (p. 382)
磁盘空间利用率(仅限 Linux 实
例)
为 Amazon EC2 Linux 实例监控内
存和磁盘指标
使用的磁盘空间(仅限 Linux 实
例)
为 Amazon EC2 Linux 实例监控内
存和磁盘指标
可用磁盘空间(仅限 Linux 实
例)
为 Amazon EC2 Linux 实例监控内
存和磁盘指标
自动和手动监控
Abstract
配置 AWS 工具来监控您的 Amazon EC2 实例,其中一些工具自动执行,而一些工具需要手动干预。
370
Amazon Elastic Compute Cloud Linux 实例用户指南
自动监控工具
AWS 为您提供了各种可以用来监控 Amazon EC2 的工具。您可以配置其中的一些工具来为您执行监控任
务,但另一些工具需要手动干预。
主题
• 自动监控工具 (p. 371)
• 手动监控工具 (p. 371)
自动监控工具
您可以使用以下自动化监控工具来查看 Amazon EC2 并在出现错误时向您报告:
• System Status Checks (系统状态检查) - 监控使用您的实例所需的 AWS 系统,以确保这些系统正常工
作。这些检查会检测出需要 AWS 参与修复的实例问题。当一个系统状态检查故障时,您可以等待 AWS
修复故障或者您也可以亲自解决该故障(例如,通过停止和重启或终止和替换实例)。导致系统状态检
查出现故障的问题示例包括:
• 网络连接丢失
• 系统电源损耗
• 物理主机上的软件问题
• 物理主机上的硬件问题
有关更多信息,请参阅 实例的状态检查 (p. 373)。
• Instance Status Checks (实例状态检查) - 监控您的各个实例的软件和网络配置。这些检查检测需需要
您参与修复的问题。一旦发生实例状态检查故障,一般需要都您亲自解决这些问题(例如,通过重启实
例或者在您的操作系统中进行修改)。可能导致实例状态检查出现故障的问题示例包括:
• 系统状态检查故障
• 网络或启动配置错误
• 内存耗尽
• 文件系统损坏
• 内核不兼容
有关更多信息,请参阅 实例的状态检查 (p. 373)。
• Amazon CloudWatch 警报 - 按您指定的时间段观察单个指标,并根据相对于给定阈值的指标值在若干
时间段内执行一项或多项操作。该操作是向 Amazon Simple Notification Service (Amazon SNS) 主题
或 Auto Scaling 策略发送通知。警报只会调用操作进行持续的状态变更。CloudWatch 警报将不会调用
操作,因为这些操作处于特定状态,必须改变其状态并维持指定的若干个时间段。有关更多信息,请参
阅 使用 CloudWatch 监控您的实例 (p. 381)。
• Amazon CloudWatch Logs – 监控、存储和访问来自 Amazon EC2 实例、AWS CloudTrail 或其他来源
的日志文件。有关更多信息,请参阅监控日志文件。
• Amazon EC2 监控脚本 – 可以使用 Perl 脚本在您的实例中监控内存、磁盘和页面/交换文件使用率。有
关更多信息,请参阅为 Amazon EC2 Linux 实例监控内存和磁盘指标。
• Microsoft System Center Operations Manager 的 AWS 管理包 - 链接 Amazon EC2 实例与在其内部运
行的 Microsoft Windows 或 Linux 操作系统。AWS 管理包是 Microsoft System Center Operations
Manager 的一种扩展程序。它使用数据中心内的指定计算机(称为观察程序节点)和 Amazon Web
Services API 远程发现并收集 AWS 资源的相关信息。有关更多信息,请参阅适用于 Microsoft System
Center 的 AWS 管理包。
手动监控工具
监控 Amazon EC2 的另一重要部分需要手动监控一些项目,监控脚本、状态检查和 CloudWatch 警报并
不考察这些项目的指标。Amazon EC2 和 CloudWatch 控制台控制面板提供您的 Amazon EC2 环境状态
的概览视图。
371
Amazon Elastic Compute Cloud Linux 实例用户指南
监控的最佳实践
• Amazon EC2 控制面板显示:
• 按区域显示服务运行状况和计划的事件
• 实例状态
• 状态检查
• 警报状态
• 实例指标详细信息(在导航窗格中,单击 Instances (实例) 选择一个实例,然后单击 Monitoring (监
控) 选项卡)
• 卷指标详细信息(在导航窗格中,单击 Volumes (卷) 选择一个卷,然后单击 Monitoring (监控) 选项
卡)
• Amazon CloudWatch 控制面板显示:
• 当前警报和状态
• 警报和资源的图表
• 服务运行状况
此外,您还可以使用 CloudWatch 执行以下操作:
• 将 Amazon EC2 监控数据绘制成图表以排除问题和发现趋势
• 搜索并浏览您所有的 AWS 资源指标
• 创建和编辑警报以接收有关问题的通知
• 一目了然地查看您的警报和 AWS 资源的概览信息
监控的最佳实践
Abstract
介绍监控的最佳实践,帮助您执行 Amazon EC2 监控任务。
使用以下监控最佳实践,帮助您执行 Amazon EC2 监控任务。
• 让监控成为优先事务,阻止小问题演变为大问题。
• 创建并实施从 AWS 解决方案各个部分收集监控数据的监控计划,以便更轻松地调试发生的多点故障。
您的监控计划至少应该解决以下问题:
• 您的监控目标是什么?
• 您将监控哪些资源?
• 监控这些资源的频率如何?
• 您将使用哪些监控工具?
• 谁负责执行监控任务?
• 出现错误时应通知谁?
• 尽可能自动监控任务。
• 检查 EC2 实例的日志文件。
监控实例状态
Abstract
您可以通过查看实例的状态检查和计划事件来监控您的 Amazon EC2 实例的状态。
您可以通过查看实例的状态检查和计划事件来监控您的实例状态。状态检查反映 Amazon EC2 自动检查
的结果信息。这些自动检查会检测出指定的问题是否影响您的实例。该状态检查信息与 Amazon CloudWatch
提供的数据一起为您的每一个实例提供详细的的操作可视性。
372
Amazon Elastic Compute Cloud Linux 实例用户指南
实例状态检查
您也可以查看您的实例中指定的预定事件的状态。事件提供了关于活动日程信息,例如,根据每个事件预
定的开始和结束时间,有计划的重启或指令引退您的实例。
内容
• 实例的状态检查 (p. 373)
• 实例的计划事件 (p. 377)
实例的状态检查
Abstract
使用状态检查监控实例,以确定 Amazon EC2 是否检测到实例的任何问题。
使用实例状态监控,您可以快速确定 Amazon EC2 是否已经检测到可能阻止您的实例运行应用程序的任
何问题。Amazon EC2 将对运行的所有 EC2 实例执行自动检查以识别硬件和软件问题。您可以通过查看
这些状态检查的结果来识别指定的和可检测的问题。这些数据扩充了 Amazon EC2 已提供的有关每个实
例的预期状态(如 pending、running、stopping)的信息以及 Amazon CloudWatch 监控的利用率指
标(CPU 利用率、网络流量和磁盘活动)。
状态检查每分钟进行一次并且每次都会返回一个通过或失败状态。如果所有的检查都通过,则实例的整体
状态是OK。如果有一个或多个检查故障,则整体状态为受损。状态检查是内置到 Amazon EC2 中的,所
以不能禁用或删除。但是,您可以创建或删除基于状态检查结果触发的警报。例如,您可以创建一个警报
来提醒您在一个指定实例上的状态检查中返回了故障状态。有关更多信息,请参阅 创建和编辑状态检查
警报 (p. 375)。
内容
• 状态检查的类型 (p. 373)
• 查看状态检查 (p. 374)
• 报告实例状态 (p. 375)
• 创建和编辑状态检查警报 (p. 375)
状态检查的类型
状态检查可分为两种类型:系统状态检查和实例状态检查。
系统状态检查
监控使用您的实例所需的 AWS 系统,以确保这些系统正常工作。这些检查会检测出需要 AWS 参与修复
的实例问题。如果系统状态检查失败,您可以等待 AWS 修复问题,也可自行解决问题(例如,停止并启
动实例,或终止并替换实例)。
以下是可能导致系统状态检查失败的问题的示例:
• 网络连接丢失
• 系统电源损耗
• 物理主机上的软件问题
• 物理主机上的硬件问题
实例状态检查
监控您的各个实例的软件和网络配置。这些检查检测需需要您参与修复的问题。如果实例状态检查失败,
一般需要您自行解决问题(例如,重启实例或更改实例配置)。
以下是可能导致实例状态检查失败的问题的示例:
373
Amazon Elastic Compute Cloud Linux 实例用户指南
实例状态检查
• 系统状态检查故障
• 网络或启动配置不正确
• 内存耗尽
• 文件系统损坏
• 内核不兼容
查看状态检查
Amazon EC2 为您提供了多种查看和使用状态检查的方法。
使用控制台查看状态
您可使用 AWS 管理控制台 查看状态检查。
使用控制台查看状态检查
1.
2.
3.
4.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 Instances。
在 Instances (实例) 页面上,Status Checks (状态检查) 列中列出每个实例的运行状态。
要查看特定实例的状态,请选择该实例,然后选择 Status Checks 选项卡。
5.
如果您有一个实例出现过状态检查失败的情况,并且该实例无法访问的时间已超 20 分钟,请选择
AWS Support 提交帮助请求。要自行解决系统或实例状态检查失败问题,请参阅 通过故障状态检查
排查实例故障 (p. 708)。
使用 AWS CLI 查看状态
您可使用 describe-instance-status 命令查看状态检查。
要查看所有实例的状态,请使用以下命令:
aws ec2 describe-instance-status
获取实例状态为 impaired 的所有实例的状态:
aws ec2 describe-instance-status --filters Name=instance-status.status,Values=im
paired
要获取单一实例的状态,请使用以下命令:
374
Amazon Elastic Compute Cloud Linux 实例用户指南
实例状态检查
aws ec2 describe-instance-status --instance-ids i-1234567890abcdef0
如果您的实例发生了状态检查故障,请参阅 通过故障状态检查排查实例故障 (p. 708).
API
您可以使用DescribeInstanceStatus操作来检索实例的状态。有关更多信息,请参阅 Amazon EC2
API Reference 中的 DescribeInstanceStatus。
报告实例状态
如果您的实例出现了问题但其状态并未显示为受损,或者您想要向 AWS 发送有关您遇到的受损实例相关
问题的详细信息,可提供反馈。
我们利用报告的反馈来识别影响到多数客户的问题,但不会对单独的账户问题作出回应。提供反馈并不会
改变您当前看到的实例状态检查结果。
使用控制台报告状态反馈
使用控制台报告实例状态
1.
2.
3.
4.
5.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 Instances。
选择实例。
选择 Status Checks 选项卡,然后选择 Submit feedback。
填写 Report Instance Status 表单,然后选择 Submit。
使用 AWS CLI 报告状态反馈
使用以下 report-instance-status 命令发送有关受损实例状态的反馈:
aws ec2 report-instance-status --instances i-1234567890abcdef0 --status impaired
--reason-codes code
使用 API 报告状态反馈
使用 ReportInstanceStatus 操作发送有关实例状态的反馈。如果您看到的实例状态与通过
DescribeInstanceStatus操作返回的实例状态不同,那么请使用ReportInstanceStatus来报告您
看到的实例状态。Amazon EC2 收集这些信息来改善状态检查的准确性。有关更多信息,请参阅 Amazon
EC2 API Reference 中的 ReportInstanceStatus。
创建和编辑状态检查警报
您可以创建实例状态和系统状态警报,以在实例的状态检查失败时向您发出通知。
使用控制台创建状态检查警报
您可以为现有实例创建状态检查警报,以监视实例状态或系统状态。您可以将警报配置为,当实例状态检
查或系统状态检查失败时,通过电子邮件向您发出通知或停止、终止或恢复实例。
要创建状态检查警报
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
375
Amazon Elastic Compute Cloud Linux 实例用户指南
实例状态检查
2.
3.
4.
在导航窗格中,选择 Instances。
选择实例。
选择 Status Checks 选项卡,然后选择 Create Status Check Alarm。
5.
6.
选择 Send a notification to。选择一个现有 SNS 主题,或单击 create topic 以创建新的主题。如果要
创建新的主题,请在 With these recipients 中,输入您的电子邮件地址以及任何其他收件人的地址,
中间用逗号隔开。
(可选)选择 Take the action,然后选择要采取的操作。
7.
在 Whenever 中,选择想要获得通知的状态检查。
Note
如果您在上一步中选择的是 Recover this instance,则请选择 Status Check Failed (System)。
8.
在 For at least 中,设置所需的评估期间数量,然后在 consecutive periods 中,选择评估期间持续时
间,此评估期间结束后才会触发警报并发送电子邮件。
9. (可选)在 Name of alarm 中,将警报的默认名称替换为其他名称。
10. 选择 Create Alarm。
Important
如果您向收件人列表添加了电子邮件地址或创建了新的主题,则 Amazon SNS 将向每个新
地址发送一封订阅确认电子邮件。每个收件人必须通过单击该邮件中包含的链接来确认订
阅。警报通知仅发送至经过确认的地址。
在您需要更改实例状态警报时,您可以对其进行编辑。
要编辑状态检查警报
1.
2.
3.
4.
5.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,选择 Instances。
选择实例,选择 Actions,选择 CloudWatch Monitoring,然后选择 Add/Edit Alarms。
在 Alarm Details 对话框中,选择警报的名称。
在 Edit Alarm 对话框中,进行所需更改,然后选择 Save。
使用 AWS CLI 创建状态检查警报
在以下示例中,当实例的实例检查或系统状态检查在至少两个期间连续失败后,警报将向 SNS 主题
arn:aws:sns:us-west-2:111122223333:my-sns-topic 发送通知。指标为 StatusCheckFailed。
要使用 CLI 创建状态检查警报
1.
选择一个现有 SNS 主题或创建一个新的主题。有关更多信息,请参阅 AWS Command Line Interface
用户指南 中的 将 Amazon SNS 与 AWS CLI 结合使用。
2.
使用以下 list-metrics 命令查看 Amazon EC2 的可用 Amazon CloudWatch 指标:
aws cloudwatch list-metrics --namespace AWS/EC2
3.
使用以下 put-metric-alarm 命令创建警报:
376
Amazon Elastic Compute Cloud Linux 实例用户指南
计划的事件
aws cloudwatch put-metric-alarm --alarm-name StatusCheckFailed-Alarm-for-i1234567890abcdef0 --metric-name StatusCheckFailed --namespace AWS/EC2 -statistic Maximum --dimensions Name=InstanceId,Value=i-1234567890abcdef0 -unit Count --period 300 --evaluation-periods 2 --threshold 1 --comparisonoperator GreaterThanOrEqualToThreshold --alarm-actions arn:aws:sns:us-west2:111122223333:my-sns-topic
注意
• --period 是收集 Amazon CloudWatch 指标的时间范围(秒)。此示例使用 300,这是 60 秒乘
以 5 分钟得到的结果。
• --evaluation-periods 是必须将指标数值与阈值相比较的连续周期数。此示例使用 2。
• --alarm-actions 是要在此警报触发时执行的操作的列表。每个操作都被指定为一个Amazon 资
源名称 (ARN)。此示例将此警报配置为使用 Amazon SNS 发送电子邮件。
实例的计划事件
Abstract
监控实例的计划事件。
AWS 可为您的实例计划事件,例如重启、停止/启动或停用。这些事件不会频繁发生。如果您的一个实例
将受某计划事件影响,则 AWS 将在该计划事件发生之前向与您的 AWS 账户关联的电子邮件地址发送电
子邮件,其中包含有关该事件的详细信息,包括开始和结束日期。根据事件的不同,您也许能够采取操作
来控制事件的发生时间。
要更新账户的联系人信息以确保获得有关计划事件的通知,请转至 Account Settings 页。
内容
• 计划事件的类型 (p. 377)
• 查看计划的事件 (p. 377)
• 使用计划停用的实例 (p. 379)
• 使用计划为重启的实例 (p. 379)
• 使用计划为维护的实例 (p. 380)
计划事件的类型
Amazon EC2 为您的实例支持下列类型的计划事件:
• 实例停止:实例将停止并开始迁移至新的主计算机。仅适用于 Amazon EBS 支持的实例。
• 实例停用:实例将终止。
• 重启:实例将重启(实例重启)或实例的主计算机将重启(系统重启)。
• 系统维护:实例可能会因网络维护或电源维护受到暂时的影响。
查看计划的事件
除了通过电子邮件接收计划事件的通知外,您还可查看计划的事件。
377
Amazon Elastic Compute Cloud Linux 实例用户指南
计划的事件
使用控制台查看实例的计划事件
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
在导航窗格中,单击 Events (事件)。将显示与事件关联的所有资源。您可按资源类型或按特定事件
类型进行筛选。您可选择资源来查看详细信息。
3.
或者,在导航窗格中,选择 EC2 Dashboard。Scheduled Events 下将显示与事件关联的所有资源。
4.
请注意,还将显示受影响资源的事件。例如,在导航窗格中,选择 Instances,然后选择一个实例。
如果所选实例具有关联事件,则关联事件将显示在底部窗格中。
使用 AWS CLI 查看实例的计划事件
使用以下 describe-instance-status 命令:
aws ec2 describe-instance-status --instance-id i-1234567890abcdef0
以下是显示实例停用事件的示例输出:
{
"InstanceStatuses": [
{
"InstanceStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
378
Amazon Elastic Compute Cloud Linux 实例用户指南
计划的事件
},
"AvailabilityZone": "us-west-2a",
"InstanceId": "i-1234567890abcdef0",
"InstanceState": {
"Code": 16,
"Name": "running"
},
"SystemStatus": {
"Status": "ok",
"Details": [
{
"Status": "passed",
"Name": "reachability"
}
]
},
"Events": [
{
"Code": "instance-stop",
"Description": "The instance is running on degraded hard
ware",
"NotBefore": "2015-05-23T00:00:00.000Z"
}
]
}
]
}
使用计划停用的实例
当 AWS 检测到您的实例的基础主机存在无法修复的故障时,它将计划实例停止或终止,这取决于实例根
设备的类型。如果根设备为 EBS 卷,则将计划实例停止。如果根设备为实例存储卷,则将计划实例终止。
有关更多信息,请参阅 实例停用 (p. 253)。
Important
实例停止或终止之后,实例存储卷上存储的所有数据都将丢失。这包括连接到使用 EBS 卷作为
根设备的实例的实例存储卷。在实例停止或终止之前,请务必保存实例存储卷中以后还将需要的
数据。
Amazon EBS 支持的实例操作
您可等待实例按计划停止。您也可自行停止并启动实例,这会将实例迁移至新的主计算机。有关停止实例
的更多信息,以及有关实例停止时的实例配置更改的信息,请参阅 停止和启动您的实例 (p. 250)。
实例存储支持的实例操作
建议您在实例按计划终止之前,从最新的 AMI 启动替代实例并将所有必需数据迁移至替代实例。然后,
您可终止原始实例,或等待其按计划终止。
使用计划为重启的实例
当 AWS 需要执行安装更新或维护基础主机等任务时,它可计划实例或实例的基础主机进行重启。您可确
定重启事件为实例重启还是系统重启。
379
Amazon Elastic Compute Cloud Linux 实例用户指南
计划的事件
使用控制台查看计划重启事件的类型
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中,选择 Events。
从筛选器列表中选择 Instance resources,然后选择您的实例。
在底部窗格中,找到 Event type。该值为 system-reboot 或 instance-reboot。
使用 AWS CLI 查看计划重启事件的类型
使用以下 describe-instance-status 命令:
aws ec2 describe-instance-status --instance-ids i-1234567890abcdef0
针对实例重启的操作
您可等待重启在其计划的维护时段进行。您也可在方便时自行重启实例。有关更多信息,请参阅 重启您
的实例 (p. 253)。
重启实例之后,会立即取消针对实例重启的计划事件,并且更新事件的描述。基础主计算机的所有挂起的
维护都将完成,并且在您的实例完全启动后,您可再次开始使用您的实例。
针对系统重启的操作
您无需执行任何操作;系统重启将在其计划的维护时段进行。系统重启通常在几分钟内完成。要验证重启
是否已进行,可查看实例是否不再有计划事件。建议您检查实例上的软件是否按预期运行。
使用计划为维护的实例
当 AWS 需要维护实例的基础主计算机时,它将计划实例进行维护。维护事件有两种:网络维护和电源维
护。
在网络维护期间,计划的实例会在短时间内失去网络连接。在维护完成后,将恢复与实例的正常网络连
接。
在电源维护期间,计划的实例将短时间脱机,然后重启。执行重启后,将保留您的所有实例的配置设置。
在实例重启后(这通常需要几分钟),验证您的应用程序是否按预期运行。此时,您的实例应该不再具有
与之关联的计划事件,或者计划事件的描述应该以 [Completed] 开头。有时,此实例状态需要 1 个小时才
能更新。已完成的维护事件将在 Amazon EC2 控制台面板上显示长达一周时间。
Amazon EBS 支持的实例操作
您可等待维护按计划进行。您也可停止并启动实例,这会将实例迁移至新的主计算机。有关停止实例的更
多信息,以及有关实例停止时的实例配置更改的信息,请参阅 停止和启动您的实例 (p. 250)。
实例存储支持的实例操作
您可等待维护按计划进行。或者,如果您想在计划的维护时段保持正常操作,可从最新的 AMI 启动替代
实例,并在计划的维护时段之前将所有必需数据迁移至替代实例,然后终止原始实例。
380
Amazon Elastic Compute Cloud Linux 实例用户指南
使用 CloudWatch 监控您的实例
使用 CloudWatch 监控您的实例
Abstract
使用 Amazon CloudWatch 监控 Amazon EC2 实例,以便从实例收集原始数据,并将数据处理为易读的近乎实时的
指标。
您可以使用 Amazon CloudWatch 监控您的实例,此工具可从 Amazon EC2 收集原始数据,并将数据处
理为易读的近乎实时的指标。这些统计数据会保存两周,从而使您能够访问历史信息,并能够更好地了解
您的 Web 应用程序或服务的执行情况。
默认情况下,Amazon EC2 每隔 5 分钟向 CloudWatch 发送一次指标数据。要每隔 1 分钟向 CloudWatch
发送一次实例的指标数据,可以对实例启用详细监控。有关更多信息,请参阅 对您的实例启用或禁用详
细监控 (p. 381)。
Amazon EC2 控制台将根据来自 Amazon CloudWatch 的原始数据显示一系列图表。根据您的需求,您可
能更愿意从 Amazon CloudWatch 而非控制台中的图表中获取实例数据。
有关 Amazon CloudWatch 的更多信息,请参阅 Amazon CloudWatch 开发人员指南。
内容
• 对您的实例启用或禁用详细监控 (p. 381)
• 列出实例的可用 CloudWatch 指标 (p. 382)
• 获取您的实例的指标的统计数据 (p. 388)
• 绘制实例的指标图形 (p. 404)
• 创建 CloudWatch 警报 (p. 407)
• 创建停止、终止、重启或恢复实例的警报 (p. 413)
对您的实例启用或禁用详细监控
Abstract
对 EC2 实例启用或禁用详细监控。
默认情况下,已对您的实例启用基本监控。您可以选择启用详细监控。当您启用详细监控后,Amazon
EC2 控制台将以 1 分钟为间隔显示实例的监控图表。下表描述对 实例的基本和详细监控。
类型
说明
基本
数据在 5 分钟期间内自动可用,无需收费。
明细
额外付费的情况下,每隔 1 分钟提供一次数据。要
获得此级别的数据,您必须为实例专门启用此监
视。对于您已启用详细监视的实例,您还可以跨组
(相似实例所在组)获得聚合数据。
有关定价的信息,请参阅 Amazon CloudWatch 产
品页。
启用详细监控
在实例启动时或在实例运行或停止后,可对实例启用详细监控。
381
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
使用控制台对现有实例启用详细监控
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
3.
4.
在导航窗格中,单击 Instances (实例)。
选择一个实例,单击 Actions,选择 CloudWatch Monitoring,然后单击 Enable Detailed Monitoring。
在“Enable Detailed Monitoring”对话框中,单击“Yes, Enable”。
5.
在“启用详细监视”确认对话框中,单击“关闭”。
在使用控制台启动实例时启用详细监控
在使用 AWS 管理控制台启动实例时,请在 Configure Instance Details 页面上选中 Monitoring 复选框。
使用 AWS CLI 对现有实例启用详细监控
使用以下 monitor-instances 命令对指定实例启用详细监控。
$ aws ec2 monitor-instances --instance-ids i-1234567890abcdef0
在使用 AWS CLI 启动实例时启用详细监控
结合使用 run-instances 命令和 --monitoring 标志来启用详细监控。
$ aws ec2 run-instances --image-id ami-09092360 --monitoring Enabled=true...
禁用详细监控
在实例启动时或在实例运行或停止后,可对实例禁用详细监控。
使用控制台禁用详细监控
1.
2.
3.
4.
5.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
在导航窗格中,单击 Instances (实例)。
选择一个实例,单击 Actions,选择 CloudWatch Monitoring,然后单击 Disable Detailed Monitoring。
在“Disable Detailed Monitoring”对话框中,单击“Yes, Disable”。
在“禁用详细监视”确认对话框中,单击“关闭”。
使用 AWS CLI 禁用详细监控
使用以下 unmonitor-instances 命令对指定实例禁用详细监控。
$ aws ec2 unmonitor-instances --instance-ids i-1234567890abcdef0
列出实例的可用 CloudWatch 指标
Abstract
查看 Amazon EC2 发送到 CloudWatch 的指标,了解前 5 分钟内的活动的默认值。
Amazon EC2 将指标发送到 Amazon CloudWatch。可使用 AWS 管理控制台、AWS CLI 或 API 列出
Amazon EC2 发送到 CloudWatch 的指标。默认情况下,每个数据点中包含的是实例 5 分钟前的活动。
如果您启用了详细监控,则每个数据点包含 1 分钟前的活动。
382
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
有关获取这些指标的统计数据的信息,请参阅 获取您的实例的指标的统计数据 (p. 388)。
实例指标
下表描述了您的实例的指标。有关为 EBS 卷提供的指标的信息,请参阅 Amazon EBS 指标 (p. 600)。有
关为竞价型队列提供的指标的信息,请参阅 竞价型队列的 CloudWatch 指标 (p. 205)。
指标
说明
CPUCreditUsage
(仅对 T2 实例有效)在指定时段内消耗的 CPU 积分数量。
这项指标标识了物理 CPU 在处理虚拟 CPU 分配给实例的指令时所
花费的时间。
Note
CPU 积分指标每 5 分钟可用一次。
单位:计数
CPUCreditBalance
(仅对 T2 实例有效)实例累积的 CPU 积分数量。
该指标用于确定实例在给定的速率下可以突增至超出基准性能水平的
时长。
Note
CPU 积分指标每 5 分钟可用一次。
单位:计数
CPUUtilization
当前正在实例上使用的已分配 EC2 计算单位的百分率。该指标确认
在选定实例上运行一个应用程序需要的处理能力。
Note
根据实例类型,如果未向实例分配整个处理器核心,则操作
系统中的工具显示的百分率可能低于 CloudWatch。
单位:百分比
DiskReadOps
在指定时间段内从可供实例使用的所有实例存储卷完成的读取操作
数。
Note
要计算该周期的每秒平均 I/O 操作数 (IOPS),请将该周期的
总操作数除以总秒数。
单位:计数
383
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
指标
说明
DiskWriteOps
在指定时间段内向可供实例使用的所有实例存储卷完成的写入操作
数。
Note
要计算该周期的每秒平均 I/O 操作数 (IOPS),请将该周期的
总操作数除以总秒数。
单位:计数
DiskReadBytes
从可供实例使用的所有实例存储卷读取的字节数。
该指标用来确定应用程序从实例的硬盘读取的数据量。它可以用来确
定应用程序的速度。
单位:字节
DiskWriteBytes
向可供实例使用的所有实例存储卷写入的字节数。
该指标用来确定应用程序向实例的硬盘写入的数据量。它可以用来确
定应用程序的速度。
单位:字节
NetworkIn
实例在所有网络接口上收到的字节数。该指标确认单个实例上向应用
程序传入的网络流量。
单位:字节
NetworkOut
实例在所有网络接口上发送的字节数。该指标确认单个实例上向应用
程序传出的网络流量。
单位:字节
NetworkPacketsIn
实例在所有网络接口上收到的数据包的数量。此指标依据单个实例上
的数据包数量来标识传入流量的量。此指标仅对基本监控可用。
单位:计数
统计数据:Minimum、Maximum、Average
NetworkPacketsOut
实例在所有网络接口上发送的数据包的数量。此指标依据单个实例上
的数据包数量标识传出流量的量。此指标仅对基本监控可用。
单位:计数
统计数据:Minimum、Maximum、Average
384
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
指标
说明
StatusCheckFailed
报告两种状况检查之一是否失败的 StatusCheckFailed_Instance 和
StatusCheckFailed_System 组合。该指标的值为 0(零)或者 1
(一)。“零”表示状况检查已通过。“一”表示状况检查失败。
Note
状况检查指标每 1 分钟可用一次。对于新启动的实例,状况
检查指标仅在实例已完成了初始化状态后可用。状况检查指
标将在实例处于运行状态中的几分钟之内可用。
单位:计数
StatusCheckFailed_Instance
报告实例在上 1 分钟内是否通过了 Amazon EC2 实例状况检查。该
指标的值为 0(零)或者 1(一)。“零”表示状况检查已通过。“一”表
示状况检查失败。
Note
状况检查指标每 1 分钟可用一次。对于新启动的实例,状况
检查指标仅在实例已完成了初始化状态后可用。状况检查指
标将在实例处于运行状态中的几分钟之内可用。
单位:计数
StatusCheckFailed_System 报告实例在上一分钟内是否通过了 EC2 系统状况检查。该指标的值
为 0(零)或者 1(一)。“零”表示状况检查已通过。“一”表示状况检
查失败。
Note
状况检查指标每 1 分钟提供一次。对于新启动的实例,状况
检查指标仅在实例已完成了初始化状态后可用。状况检查指
标将在实例处于运行状态中的几分钟之内可用。
单位:计数
Amazon EC2 维度
您可以用下表中的维度来优化针对您的实例返回的指标。
维度
说明
AutoScalingGroupName
该维度筛选您为指定容量组中的所有实例请求的数据。如果您使用
Auto Scaling,Auto Scaling 组就是您定义的实例集合。当实例在上
述 Auto Scaling 组中时,该维度仅供 Amazon EC2 指标使用。可供
启用了详细或基本监控的实例使用。
ImageId
该维度筛选您为运行此 Amazon EC2 Amazon 系统映像 (AMI) 的所
有实例而请求的数据。可供启用了详细监控功能的实例使用。
InstanceId
该维度筛选您仅为已识别实例请求的数据。这样有助于您精确定位要
对其监控数据的确切实例。
385
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
维度
说明
InstanceType
该维度筛选您为以这一指定实例类型运行的所有实例请求的数据。这
样有助于您按运行的实例类型给数据分类。例如,您可以比较
m1.small 实例和 m1.large 实例的数据,以确定哪一个对您的应用程
序具有更好的商业价值。可供启用了详细监控功能的实例使用。
使用控制台列出指标
您可以按类别查看指标。指标首先按命名空间进行分组,然后按各命名空间内的各种维度组合进行分组。
例如,您可以查看由 Amazon EC2 提供的所有指标或按实例 ID、实例类型、映像 (AMI) ID 或 Auto Scaling
组分组的指标。
按类别查看可用指标
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
3.
4.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Metrics。
在 CloudWatch Metrics by Category 窗格中的 EC2 Metrics 下,选择 Per-Instance Metrics。
5.
在上方窗格中,向下滚动以查看完整指标列表。
386
Amazon Elastic Compute Cloud Linux 实例用户指南
列出可用指标
使用 AWS CLI 列出指标
使用 list-metrics 命令列出实例的 CloudWatch 指标。
列出所有实例可用的指标
指定 AWS/EC2 命名空间以将结果限制为由 Amazon EC2 发送的指标。
$ aws cloudwatch list-metrics --namespace AWS/EC2
下面是示例输出:
...
{
"Namespace": "AWS/EC2",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-1234567890abcdef0"
}
],
"MetricName": "NetworkOut"
},
{
"Namespace": "AWS/EC2",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-1234567890abcdef0"
}
],
387
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"MetricName": "CPUUtilization"
},
{
"Namespace": "AWS/EC2",
"Dimensions": [
{
"Name": "InstanceId",
"Value": "i-1234567890abcdef0"
}
],
"MetricName": "NetworkIn"
},
...
列出指定实例的可用指标
指定 AWS/EC2 命名空间和 InstanceId 维度以将结果限制为由 Amazon EC2 发送的指定实例的指标。
$ aws cloudwatch list-metrics --namespace AWS/EC2 --dimensions Name=In
stanceId,Value=i-1234567890abcdef0
列出跨所有实例的指标
指定 AWS/EC2 命名空间和指标名称以将结果限制为由 Amazon EC2 发送的指定指标。
$ aws cloudwatch list-metrics --namespace AWS/EC2 --metric-name CPUUtilization
获取您的实例的指标的统计数据
Abstract
介绍如何使用 Amazon CloudWatch 控制台或命令行命令获得指标统计数据的各种场景。
以下方案演示如何获取您实例的 CloudWatch 指标的统计数据。
内容
• 获取指定 实例的统计数据 (p. 388)
• 聚合多实例统计数据 (p. 392)
• 通过 Auto Scaling 组聚合统计数据 (p. 397)
• 通过映像 (AMI) ID 聚合统计数据 (p. 399)
获取指定 实例的统计数据
Abstract
此场景介绍如何获得特定 EC2 实例的统计数据。
以下场景演示了如何使用 AWS 管理控制台或 get-metric-statistics 命令来确定特定 EC2 实例的
最大 CPU 利用率。
Note
开始和结束时间必须在最近 14 天内。
388
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
对于此例,我们假定您拥有一个 EC2 实例 ID。您可以通过 AWS 管理控制台或 describe-instances
命令来获取活动 EC2 实例的 ID。
AWS 管理控制台
使用控制台显示特定实例的 CPU 利用率
1.
2.
3.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Metrics。
4.
5.
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中,选择 EC2: Metrics
(EC2: 指标)。
选择包含特定实例的 CPUUtilization 的行,这将显示此实例指标的图表。
6.
要更改指标的统计数据或周期,请从列表中选择不同的值。
389
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
AWS Command Line Interface
使用 AWS CLI 获取特定实例的 CPU 利用率
使用以下 get-metric-statistics 命令。
$ aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name
CPUUtilization --period 3600 --statistics Maximum --dimensions Name=In
stanceId,Value=i-1234567890abcdef0 --start-time 2014-02-18T23:18:00 --end-time
2014-02-19T23:18:00
返回的统计信息是以请求的 2 天时间为间隔的 6 分钟数值。每个数值代表一个 EC2 实例的最大 CPU 利
用率百分比。下面是示例输出:
{
"Datapoints": [
{
"Timestamp": "2014-02-19T00:18:00Z",
"Maximum": 0.33000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T03:18:00Z",
"Maximum": 99.670000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T07:18:00Z",
"Maximum": 0.34000000000000002,
390
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T12:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T02:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T01:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T17:18:00Z",
"Maximum": 3.3900000000000001,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T13:18:00Z",
"Maximum": 0.33000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-18T23:18:00Z",
"Maximum": 0.67000000000000004,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T06:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T11:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T10:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T19:18:00Z",
"Maximum": 8.0,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T15:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
391
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Timestamp": "2014-02-19T14:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T16:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T09:18:00Z",
"Maximum": 0.34000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T04:18:00Z",
"Maximum": 2.0,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T08:18:00Z",
"Maximum": 0.68000000000000005,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T05:18:00Z",
"Maximum": 0.33000000000000002,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-19T18:18:00Z",
"Maximum": 6.6699999999999999,
"Unit": "Percent"
}
],
"Label": "CPUUtilization"
}
聚合多实例统计数据
Abstract
此场景介绍如何跨实例和区域获取并聚集统计数据。
聚合统计信息适用于已经启用详细监控的实例。聚合中不包含使用基本监控的实例。此外,Amazon
CloudWatch 不跨各个区域聚合数据。因此指标在各地区间彼此独立。在获取多实例聚合统计数据前,必
须启用详细监控(另外收费),以提供以 1 分钟为间隔的数据。此场景展示了如何通过 AWS 管理控制
台、get-metric-statistics API 或 GetMetricStatistics 命令使用详细监控来获取 EC2 实例的
平均 CPU 使用率。因为未指定任何维度,所以 CloudWatch 会返回 AWS/EC2 命名空间中所有维度的统
计数据。要获取其他指标的统计数据,请参阅 Amazon CloudWatch 命名空间、维度和指标参考。
Important
此方法可以在 AWS 命名空间中检索所有维度,但不适用于发布到 Amazon CloudWatch 的自定
义命名空间。对于自定义命名空间,必须指定与任意给定数据关联的完整的维度组,以检索包含
数据点的统计数据。
392
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
AWS 管理控制台
显示实例的平均 CPU 利用率
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
3.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Metrics。
4.
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中的 EC2 Metrics (EC2
指标) 下,选择 Across All Instances (跨所有实例)。
在上方窗格中,选择包含 CPUUtilization (CPU 利用率) 的行。
5.
详细信息窗格中会出现一个显示 EC2 实例的 CPUUtilization 的图表。
6.
要更改指标的统计数据或周期,请从列表中选择不同的值。
393
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
AWS Command Line Interface
要获取 实例的平均 CPU 利用率,请执行以下步骤:
使用 get-metric-statistics 命令,如下所示。
$ aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name
CPUUtilization --period 3600 --statistics "Average" "SampleCount" --start-time
2014-02-11T23:18:00 --end-time 2014-02-12T23:18:00
下面是示例输出:
{
"Datapoints": [
{
"SampleCount": 238.0,
"Timestamp": "2014-02-12T07:18:00Z",
"Average": 0.038235294117647062,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T09:18:00Z",
"Average": 0.16670833333333332,
"Unit": "Percent"
},
{
"SampleCount": 238.0,
394
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Timestamp": "2014-02-11T23:18:00Z",
"Average": 0.041596638655462197,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T16:18:00Z",
"Average": 0.039458333333333345,
"Unit": "Percent"
},
{
"SampleCount": 239.0,
"Timestamp": "2014-02-12T21:18:00Z",
"Average": 0.041255230125523033,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T01:18:00Z",
"Average": 0.044583333333333336,
"Unit": "Percent"
},
{
"SampleCount": 239.0,
"Timestamp": "2014-02-12T18:18:00Z",
"Average": 0.043054393305439344,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T13:18:00Z",
"Average": 0.039458333333333345,
"Unit": "Percent"
},
{
"SampleCount": 238.0,
"Timestamp": "2014-02-12T15:18:00Z",
"Average": 0.041260504201680689,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T19:18:00Z",
"Average": 0.037666666666666668,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T06:18:00Z",
"Average": 0.037541666666666675,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T20:18:00Z",
"Average": 0.039333333333333338,
"Unit": "Percent"
},
395
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T08:18:00Z",
"Average": 0.039250000000000014,
"Unit": "Percent"
},
{
"SampleCount": 239.0,
"Timestamp": "2014-02-12T03:18:00Z",
"Average": 0.037740585774058588,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T11:18:00Z",
"Average": 0.039500000000000007,
"Unit": "Percent"
},
{
"SampleCount": 238.0,
"Timestamp": "2014-02-12T02:18:00Z",
"Average": 0.039789915966386563,
"Unit": "Percent"
},
{
"SampleCount": 238.0,
"Timestamp": "2014-02-12T22:18:00Z",
"Average": 0.039705882352941181,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T14:18:00Z",
"Average": 0.082458333333333328,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T05:18:00Z",
"Average": 0.04287500000000001,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T17:18:00Z",
"Average": 0.039458333333333345,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T10:18:00Z",
"Average": 0.083416666666666667,
"Unit": "Percent"
},
{
"SampleCount": 236.0,
"Timestamp": "2014-02-12T00:18:00Z",
"Average": 0.036567796610169498,
396
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T12:18:00Z",
"Average": 0.039541666666666676,
"Unit": "Percent"
},
{
"SampleCount": 240.0,
"Timestamp": "2014-02-12T04:18:00Z",
"Average": 0.043000000000000003,
"Unit": "Percent"
}
],
"Label": "CPUUtilization"
}
通过 Auto Scaling 组聚合统计数据
Abstract
此场景介绍如何根据 Auto Scaling 组获取聚合的统计数据。
聚合统计信息适用于已经启用详细监控的实例。聚合中不包含使用基本监控的实例。此外,Amazon
CloudWatch 不跨各个区域聚合数据。因此指标在各地区间彼此独立。在获取多实例聚合统计数据前,必
须启用详细监控(另外收费),以提供以 1 分钟为间隔的数据。
此场景展示了如何通过 DiskWriteBytes 指标使用 AWS 管理控制台、GetMetricStatistics 命令或
get-metric-statistics API 来检索某个 Auto Scaling 组的磁盘写入总字节数。总数以 1 分钟为周期
24 小时为间隔针对指定 AutoScalingGroupName 中的所有 EC2 实例计算得出。
Note
开始和结束时间必须在最近 14 天内。
在此例中,假定有一个 EC2 应用程序正在运行,且该应用程序包含一个名为 test-group-1 的 Auto
Scaling 组。
AWS 管理控制台
显示自动扩展的应用程序的 DiskWriteByte 总数
1.
2.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
3.
4.
在导航窗格中,单击 Metrics。
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中的 EC2 Metrics (EC2
指标) 下,选择 By Auto Scaling Group (按 Auto Scaling 组)。
5.
选择包含 DiskWriteBytes 的行。
详细信息窗格中将出现一个显示所有 EC2 实例的 DiskWriteBytes 的图表。
397
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
6.
要更改指标的统计数据或周期,请从列表中选择不同的值。
398
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
AWS Command Line Interface
获取 Auto-Scaled 应用程序的写入磁盘总字节数
使用 get-metric-statistics 命令,如下所示。
$ aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name
DiskWriteBytes --period 360 --statistics "Sum" "SampleCount" --dimensions
Name=AutoScalingGroupName,Value=my-group --start-time 2014-02-16T23:18:00 --endtime 2014-02-18T23:18:00
下面是示例输出:
{
"Datapoints": [
{
"SampleCount": 18.0,
"Timestamp": "2014-02-19T21:36:00Z",
"Sum": 0.0,
"Unit": "Bytes"
},
{
"SampleCount": 5.0,
"Timestamp": "2014-02-19T21:42:00Z",
"Sum": 0.0,
"Unit": "Bytes"
}
],
"Label": "DiskWriteBytes"
}
通过映像 (AMI) ID 聚合统计数据
Abstract
此场景介绍如何根据映像 ID 获取聚合的统计数据。
聚合统计信息适用于已经启用详细监控的实例。聚合中不包含使用基本监控的实例。此外,Amazon
CloudWatch 不跨各个区域聚合数据。因此指标在各地区间彼此独立。在获取多实例聚合统计数据前,必
须启用详细监控(另外收费),以提供以 1 分钟为间隔的数据。
此场景展示了如何使用 AWS 管理控制台、get-metric-statistics 命令或 GetMetricStatistics
API 来确定符合给定映像 ID 的所有实例的平均 CPU 利用率。平均值以 60 秒为时间间隔 1 天为周期。
Note
开始和结束时间必须在最近 14 天内。
在此场景中,EC2 实例运行 ID 为 ami-c5e40dac 的映像。
AWS 管理控制台
要显示映像 ID 的平均 CPU 利用率
1.
2.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
399
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
3.
4.
5.
在导航窗格中,单击 Metrics。
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中的 EC2 Metrics (EC2
指标) 下,选择 By Image (AMI) Id (按映像 (AMI) ID)。
选择包含 CPUUtilization (CPU 利用率) 和映像 ID 的行。
详细信息窗格中将出现一个显示基于 CPUUtilization 映像 ID 的所有 EC2 实例的平均
ami-c5e40dac 的图表。
6.
要更改指标的统计数据或周期,请从列表中选择不同的值。
400
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
AWS Command Line Interface
要获取映像 ID 的平均 CPU 利用率,请执行以下步骤:
使用 get-metric-statistics 命令,如下所示。
$ aws cloudwatch get-metric-statistics --namespace AWS/EC2 --metric-name
CPUUtilization --period 3600 --statistics Average --dimensions Name=Im
ageId,Value=ami-3c47a355 --start-time 2014-02-10T00:00:00 --end-time 2014-0211T00:00:00
下面是示例输出:
{
"Datapoints": [
{
"Timestamp": "2014-02-10T07:00:00Z",
"Average": 0.041000000000000009,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T14:00:00Z",
"Average": 0.079579831932773085,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T06:00:00Z",
"Average": 0.036000000000000011,
401
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T13:00:00Z",
"Average": 0.037625000000000013,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T18:00:00Z",
"Average": 0.042750000000000003,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T21:00:00Z",
"Average": 0.039705882352941188,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T20:00:00Z",
"Average": 0.039375000000000007,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T02:00:00Z",
"Average": 0.041041666666666671,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T01:00:00Z",
"Average": 0.041083333333333354,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T23:00:00Z",
"Average": 0.038016877637130804,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T15:00:00Z",
"Average": 0.037666666666666668,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T12:00:00Z",
"Average": 0.039291666666666676,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T03:00:00Z",
"Average": 0.036000000000000004,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T04:00:00Z",
"Average": 0.042666666666666672,
"Unit": "Percent"
},
{
402
Amazon Elastic Compute Cloud Linux 实例用户指南
获取指标的统计数据
"Timestamp": "2014-02-10T19:00:00Z",
"Average": 0.038305084745762719,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T22:00:00Z",
"Average": 0.039291666666666676,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T09:00:00Z",
"Average": 0.17126050420168065,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T08:00:00Z",
"Average": 0.041166666666666678,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T11:00:00Z",
"Average": 0.082374999999999962,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T17:00:00Z",
"Average": 0.037625000000000013,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T10:00:00Z",
"Average": 0.039458333333333345,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T05:00:00Z",
"Average": 0.039250000000000007,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T00:00:00Z",
"Average": 0.037625000000000013,
"Unit": "Percent"
},
{
"Timestamp": "2014-02-10T16:00:00Z",
"Average": 0.041512605042016815,
"Unit": "Percent"
}
],
"Label": "CPUUtilization"
}
操作返回的统计信息是以 1 天时间为间隔的 1 分钟数值。每个数值代表运行指定系统映像的 EC2 实例的
平均 CPU 利用率。
403
Amazon Elastic Compute Cloud Linux 实例用户指南
绘制指标图形
绘制实例的指标图形
Abstract
查看实例的监控图形。
启动实例后,您可以转至 Amazon EC2 控制台查看实例的监视图表。当您在 EC2 控制面板中的“Instances”
页面上选择实例时,会显示监视图像。“Monitoring”选项卡显示在实例的“Description”选项卡旁。可供使用
图形如下:
• CPU 平均利用率(%)
• 平均读磁盘数(字节)
• 平均写磁盘数(字节)
• 最大网络输入(字节)
• 最大网络输出(字节)
• 读磁盘操作概括(计数)
•
•
•
•
写磁盘操作概括(计数)
状态概括(任意)
实例状态概括(计数)
系统状态概括(计数)
每个图表以一个可用的 Amazon EC2 指标为基础。有关指标及其向图表提供的数据的更多信息,请参阅
列出实例的可用 CloudWatch 指标 (p. 382)。
您还可以使用 CloudWatch 控制台将 Amazon EC2 和其他 AWS 服务生成的指标数据绘制成图表,以便
更轻松地查看当前的运行状况。您可以使用下列步骤在 CloudWatch 中绘制指标图表。
内容
• 绘制指标图表 (p. 404)
• 绘制跨资源指标的图表 (p. 405)
绘制指标图表
Abstract
此场景介绍如何在 CloudWatch 中选择指标和创建数据图表。
您可以选择一项指标,并在 CloudWatch 中创建数据的图表。例如,您可以选择一个 Amazon EC2 实例
的 CPU 利用率指标,显示该实例的 CPU 利用率随着时间变化的图表。
绘制指标图表
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
3.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Metrics (指标)。
4.
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中,使用 Search Metrics
(搜索指标) 框和类别,按指标名称、AWS 资源或其他元数据查找指标。
使用指标列表上方的滚动条及上一页和下一页箭头来翻阅整个指标列表
选择指标(例如 CPU 利用率)以进行查看。详细信息窗格中会显示相应图表。
5.
6.
404
Amazon Elastic Compute Cloud Linux 实例用户指南
绘制指标图形
7.
要保存此图表以在稍后进行访问,请在详细信息窗格中的 Tools (工具) 下,单击 Copy URL (复制
URL),然后在 Copy Graph URL (复制图表 URL) 对话框中,选择该 URL,并将其粘贴到您的浏览器
中。
绘制跨资源指标的图表
Abstract
此场景介绍如何跨所有资源选择一个指标并在 CloudWatch 中创建单个数据图表。
您可以为跨所有资源的指标绘制图表,以在一个图表中查看所有数据。例如,您可以在一个图表中绘制所
有 Amazon EC2 实例的 CPU 利用率指标。
绘制跨资源指标的图表
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
3.
在导航窗格中,单击 Metrics。
405
Amazon Elastic Compute Cloud Linux 实例用户指南
绘制指标图形
4.
在 CloudWatch Metrics by Category (按类别显示的 CloudWatch 指标) 窗格中,选择一种指标类别。
例如,在 EC2 Metrics (EC2 指标) 下,选择 Per-Instance Metrics (每个实例的指标)。
5.
6.
在指标列表的 Metric Name (指标名称) 列中,单击一项指标。例如 CPUUtilization (CPU 利用率)。
在指标列表的顶部,单击 Select All (全选)。
图表会显示所选指标的所有出现次数的全部数据。以下示例中显示了所有 Amazon EC2 实例的 CPU
利用率。
406
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
7.
要保存此图表以在稍后进行访问,请在详细信息窗格中的 Tools (工具) 下,单击 Copy URL (复制
URL),然后在 Copy Graph URL (复制图表 URL) 对话框中,选择该 URL,并将其粘贴到您的浏览器
中。
创建 CloudWatch 警报
Abstract
针对 CloudWatch 指标创建一个 CloudWatch 警报。
您可以创建 Amazon CloudWatch 警报来监控您的任一 Amazon EC2 实例的 CloudWatch 指标。当该指
标达到指定阈值时,CloudWatch 自动向您发送通知。您可以在 AWS 管理控制台的 Amazon EC2 控制台
上创建 CloudWatch 警报,也可以使用 CloudWatch 控制台并配置更高级的选项。
内容
• 根据 CPU 利用率警报发送电子邮件 (p. 407)
• 根据负载均衡器警报发送电子邮件 (p. 409)
• 根据存储吞吐量警报发送电子邮件 (p. 411)
根据 CPU 利用率警报发送电子邮件
Abstract
此场景介绍如何根据 CPU 使用率警报的状态创建发送电子邮件的警报。
此场景介绍如何使用 AWS 管理控制台或命令行界面创建一个 Amazon CloudWatch 警报,当警报状态从
“正常”变为“警报”时,该警报会发送 Amazon Simple Notification Service 电子邮件。
在此场景中,可以将警报配置为,当 EC2 实例的 CPU 利用率超过 70% 长达两个连续 5 分钟时间段时,
更改为“警报”状态。
407
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
AWS 管理控制台
创建根据 CPU 利用率发送电子邮件的警报
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
3.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Alarms (警报)。
4.
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 中,选择一个指标类别,例如 EC2 Metrics (EC2 指标)。
在指标列表中,选择包含特定实例 ID 的 CPUUtilization (CPU 利用率) 的行。
5.
一张显示单一实例平均 CPUUtilization 的图表会出现在下方窗格中。
6.
从 Statistic 下拉列表中选择 Average。
7.
从“Period”下拉列表中选择一个时间段,例如:5 。
8.
单击 Next (下一步),然后在 Alarm Threshold (警报阈值) 下的 Name (名称) 字段中,为警报输入唯
一名称,例如:myHighCpuAlarm。
9.
在 Description (描述) 字段中,输入警报的描述,例如:CPU 70% 10. 在 is 下拉列表中选择 >。
11. 在 is (条件) 下拉列表旁的框内,输入 70 并在 for (时间) 字段内输入 10。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,在 Whenever this alarm (每当此警报) 下拉列表中选择 State is ALARM (状态
为“警报”)。
13. 在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon SNS 主题或创建一个新主
题。
408
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
14. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to (发送通知到) 字段中,输入新 Amazon SNS 主题的名称,例如:
myHighCpuAlarm,在 Email list (电子邮件列表) 字段中,输入警报变为 ALARM 状态时要通知的逗
号分隔电子邮件地址列表。
15. 单击创建警报完成警报创建过程。
AWS Command Line Interface
在 CPU 利用率超过 70% 时发送 Amazon Simple Notification Service 电子邮件
1.
2.
设置 Amazon Simple Notification Service 主题或检索要使用的主题的“主题资源名称”。有关设置
Amazon Simple Notification Service 主题的帮助,请参阅设置 Amazon Simple Notification Service。
使用 put-metric-alarm 命令创建警报,如下所示。
$ aws cloudwatch put-metric-alarm --alarm-name cpu-mon --alarm-description
"Alarm when CPU exceeds 70%" --metric-name CPUUtilization --namespace
AWS/EC2 --statistic Average --period 300 --threshold 70 --comparison-operator
GreaterThanThreshold --dimensions Name=InstanceId,Value=i-1234567890abcdef0
--evaluation-periods 2 --alarm-actions arn:aws:sns:cn-north1:111122223333:MyTopic --unit Percent
3.
通过使用 set-alarm-state 命令强制改变警报状态对警报进行测试。
a.
将警报状态从 INSUFFICIENT_DATA 更改为 OK:
$ aws cloudwatch set-alarm-state
"initializing" --state-value OK
b.
--alarm-name cpu-mon --state-reason
将警报状态从 OK 更改为 ALARM:
$ aws cloudwatch set-alarm-state --alarm-name cpu-mon --state-reason
"initializing" --state-value ALARM
c.
查看是否已经收到电子邮件。
根据负载均衡器警报发送电子邮件
Abstract
此场景介绍如何根据警报的状态设置发送电子邮件的负载均衡器警报。
此场景介绍如何使用 AWS 管理控制台或命令行界面设置 Amazon Simple Notification Service 通知和配
置警报,以监控超过 100 ms 的负载均衡器延迟。
AWS 管理控制台
创建发送电子邮件的负载均衡器警报
1.
2.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
409
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
3.
4.
5.
在导航窗格中,单击 Alarms (警报)。
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 窗格中,选择一个指标类别,例如 ELB Metrics (ELB 指标)。
在指标列表中,选择包含特定负载均衡器的 Latency (延迟) 的行。
下方窗格中会出现一个显示单个负载均衡器的平均 Latency 的图表。
6.
7.
8.
从 Statistic 下拉列表中选择 Average。
从“Period”下拉列表中选择“1 Minute”。
单击 Next (下一步),然后在 Alarm Threshold (警报阈值) 下的 Name (名称) 字段中,为警报输入唯
一名称,例如:myHighCpuAlarm。
9.
在 Description (描述) 字段中,输入警报的描述,例如: 100ms 。
10. 在 is 下拉列表中选择 >。
11. 在 is (条件) 下拉列表旁的框内,输入 0.1 并在 for (时间) 字段内输入 3。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,在 Whenever this alarm (每当此警报) 下拉列表中选择 State is ALARM (状态
为“警报”)。
13. 在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon SNS 主题或创建一个新主
题。
14. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to (发送通知到) 字段中,输入新 Amazon SNS 主题的名称,例如:
myHighCpuAlarm,在 Email list (电子邮件列表) 字段中,输入警报变为 ALARM 状态时要通知的逗
号分隔电子邮件地址列表。
15. 单击创建警报完成警报创建过程。
410
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
AWS Command Line Interface
在负载均衡器延迟超过 100 毫秒时发送 Amazon Simple Notification Service 电子邮件
1.
创建一个 Amazon Simple Notification Service 主题。请参阅设置 Amazon Simple Notification Service
中有关创建 Amazon SNS 主题的说明。
2.
使用 put-metric-alarm 命令,如下所示。
$ aws cloudwatch put-metric-alarm --alarm-name lb-mon --alarm-description
"Alarm when Latency exceeds 100ms" --metric-name Latency --namespace AWS/ELB
--statistic Average --period 60 --threshold 100 --comparison-operator
GreaterThanThreshold --dimensions Name=LoadBalancerName,Value=my-server -evaluation-periods 3 --alarm-actions arn:aws:sns:cn-north-1:1234567890:mytopic --unit Milliseconds
3.
测试警报。
• 将警报状态强制变为 ALARM:
$ aws cloudwatch set-alarm-state --alarm-name lb-mon --state-reason "ini
tializing" --state OK
$ aws cloudwatch set-alarm-state --alarm-name lb-mon --state-reason "ini
tializing" --state ALARM
• 查看是否已经收到电子邮件。
根据存储吞吐量警报发送电子邮件
Abstract
此场景介绍如何根据警报状态创建发送电子邮件的存储吞吐量警报。
此场景介绍如何使用 AWS 管理控制台或命令行界面设置 Amazon Simple Notification Service 通知,以
及配置当 EBS 超过 100 MB 吞吐量时发送电子邮件的警报。
AWS 管理控制台
创建发送电子邮件的存储吞吐量警报
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
3.
4.
如果需要,可从导航栏中更改区域以匹配实例所在的区域。
在导航窗格中,单击 Alarms (警报)。
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 窗格中,选择一个指标类别,例如 EBS Metrics (EBS 指标)。
5.
在指标列表中,选择包含特定 VolumeId 的 VolumeWriteBytes (卷写入字节数) 的行。
下方窗格中会出现一个显示单个卷的平均 VolumeWriteBytes 的图表。
411
Amazon Elastic Compute Cloud Linux 实例用户指南
创建 CloudWatch 警报
6.
7.
8.
从 Statistic 下拉列表中选择 Average。
从 5 Minutes (周期) 下拉列表中选择 Period (5 分钟)。
单击 Next (下一步),然后在 Alarm Threshold (警报阈值) 下的 Name (名称) 字段中,为警报输入唯
一名称,例如:myHighWriteAlarm。
9.
在 Description (描述) 字段中,输入警报的描述,例如:VolumeWriteBytes 100,000 KiB/s 10. 在 is 下拉列表中选择 >。
11. 在 is (条件) 下拉列表旁的框内,输入 100000 并在 for (时间) 字段内输入 15。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,在 Whenever this alarm (每当此警报) 下拉列表中选择 State is ALARM (状态
为“警报”)。
13. 在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon SNS 主题或创建一个新主
题。
14. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to (发送通知到) 字段中,输入新 Amazon SNS 主题的名称,例如:
myHighCpuAlarm,在 Email list (电子邮件列表) 字段中,输入警报变为 ALARM 状态时要通知的逗
号分隔电子邮件地址列表。
15. 单击创建警报完成警报创建过程。
AWS Command Line Interface
在 EBS 吞吐量超过 100 MB 时发送 Amazon Simple Notification Service 电子邮件
1.
创建一个 Amazon Simple Notification Service 主题。请参阅设置 Amazon Simple Notification Service
中有关创建 Amazon SNS 主题的说明。
412
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
2.
使用 put-metric-alarm 命令,如下所示。
$ aws cloudwatch put-metric-alarm --alarm-name ebs-mon --alarm-description
"Alarm when EBS volume exceeds 100MB throughput" --metric-name VolumeRead
Bytes --namespace AWS/EBS --statistic Average --period 300 --threshold
100000000 --comparison-operator GreaterThanThreshold --dimensions
Name=VolumeId,Value=my-volume-id --evaluation-periods 3 --alarm-actions
arn:aws:sns:cn-north-1:1234567890:my-alarm-topic --insufficient-data-actions
arn:aws:sns:cn-north-1:1234567890:my-insufficient-data-topic
3.
测试警报。
• 将警报状态强制变为 ALARM。
$ aws cloudwatch set-alarm-state --alarm-name lb-mon --state-reason "ini
tializing" --state-value OK
$ aws cloudwatch set-alarm-state --alarm-name lb-mon --state-reason "ini
tializing" --state-value ALARM
$ aws cloudwatch set-alarm-state --alarm-name lb-mon --state-reason "ini
tializing" --state-value INSUFFICIENT_DATA
• 查看是否已经收到两封电子邮件。
创建停止、终止、重启或恢复实例的警报
Abstract
创建自动停止、终止、重启或恢复 Amazon EC2 实例的 CloudWatch 警报。
利用 Amazon CloudWatch 警报操作,您可创建自动停止、终止、重启或恢复 Amazon Elastic Compute
Cloud (Amazon EC2) 实例的警报。当不再需要某个实例运行时,您可使用停止或终止操作来帮助您节省
资金。如果发生了系统损害,您可使用重启和恢复操作自动重启这些实例或将它们恢复到新硬件上。
您创建的每个警报操作均使用警报操作 ARN。一组 ARN 更安全,因为它要求您的账户中有
EC2ActionsAccess IAM 角色。利用此 IAM 角色,您可执行停止、终止或重启操作 - 以前如果您使用的是
IAM 角色,则无法执行操作。使用以前的警报操作 ARN 的现有警报不需要此 IAM 角色,但建议您在编辑
使用这些 ARN 的现有警报时更改 ARN 并添加此角色。
EC2ActionsAccess IAM 角色使 AWS 能够代表您执行警报操作。当您首次使用 Amazon EC2 或 Amazon
CloudWatch 控制台创建警报操作时,AWS 将自动为您创建此角色。此外,您必须先使用任一控制台创
建 EC2ActionsAccess 角色,然后才能通过 CLI 使用此角色。
在许多情况下,您可能需要自动终止或停止实例。例如,您可能拥有专用于批工资单处理工作或科学计算
任务的实例,这些实例在运行一段时间后就完成了其工作。与其让这些实例空闲(并产生费用),不如将
其停止或终止以节省开支。使用停止警报操作和终止警报操作的主要区别是,停止的警报可以在需要时轻
松重启,还可以保留相同的实例 ID 和根卷。而终止的实例则无法重新启动。如此就必须启动一个新的实
例。
您可以创建警报用于在实例受损(由于发生底层硬件故障或需要 AWS 参与才能修复的问题)时自动恢复
Amazon EC2 实例。导致系统状态检查出现故障的问题示例包括:
• 网络连接丢失
• 系统电源损耗
413
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
• 物理主机上的软件问题
• 物理主机上的硬件问题
Important
恢复操作仅受到以下项支持:
• C3、C4、M3、M4、R3 和 T2 实例类型。
• 亚太区域(新加坡)、亚太地区(悉尼)、亚太地区(东京)地区、欧洲(爱尔兰)、欧洲
(法兰克福)、南美洲(圣保罗)、美国东部(弗吉尼亚北部)、美国西部(加利福尼亚北
部)、美国西部(俄勒冈) 和 亚太区域 (首尔) 区域中的实例。
• VPC 中的实例。
Note
如果您的实例有公有 IP 地址,它会在恢复后保留相同的公有 IP 地址。
• 使用共享租赁的实例(实例的租赁属性设置为 default)。
• 完全使用 Amazon EBS 存储的实例。
目前,EC2-Classic 实例、专用租赁实例、在专用主机上运行的实例以及使用任何实例存储卷的
实例不支持恢复操作。
您可以向为 Amazon EC2 每个实例指标设置的任何警报添加停止、终止、重启或恢复操作,这些指标包
括 Amazon CloudWatch 提供的基本和详细监控指标(在 AWS/EC2 命名空间中),以及包含“InstanceId=”
维度的任何自定义指标,只要 InstanceId 值引用有效运行的 Amazon EC2 实例。
内容
• 向 Amazon CloudWatch 警报添加停止操作 (p. 414)
• 向 Amazon CloudWatch 警报添加终止操作 (p. 417)
• 向 Amazon CloudWatch 警报添加重启操作 (p. 420)
• 向 Amazon CloudWatch 警报添加恢复操作 (p. 423)
• 使用 Amazon CloudWatch 控制台查看已触发的警报和操作的历史记录 (p. 426)
• 使用 CLI 或 API 创建警报以停止、终止、重启或恢复实例 (p. 427)
• Amazon CloudWatch 警报操作场景 (p. 433)
向 Amazon CloudWatch 警报添加停止操作
您可使用 Amazon EC2 控制台、Amazon CloudWatch 控制台、Amazon CloudWatch 命令行界面 (CLI)、
CloudWatch API 或 AWS 软件开发工具包配置停止警报操作。有关结合使用 Amazon CloudWatch API
和 AWS 开发工具包的信息,请参阅示例代码和库。
使用 Amazon EC2 控制台创建停止实例的警报
可以创建当达到一定阈值后停止 Amazon EC2 实例的警报。例如,您可能运行了开发或测试实例而偶尔
忘记将其关闭。可以创建当平均 CPU 利用率低于 10% 达 24 小时时触发的警报,同时告知其为空闲并不
再使用。可以根据需要调整阈值、时长和时间段,还可以添加 Amazon Simple Notification Service (Amazon
SNS) 通知,以便您在触发警报后能够收到电子邮件。
可以停止或终止将 Amazon Elastic Block Store 卷用作根设备的 Amazon EC2 实例,但只能终止将实例
存储用作根设备的实例。
414
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
要创建停止空闲实例的警报
1.
2.
3.
4.
5.
6.
7.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中的 INSTANCES (实例) 下,单击 Instances (实例)。
在内容窗格中,右键单击一个实例,选择 CloudWatch Monitoring,然后单击 Add/Edit Alarms。
也可以选择该实例,然后在 Monitoring (监控) 选项卡上的下方窗格中单击 Create Alarm (创建警报)。
在 Alarm Details for (以下项的警报详细信息) 对话框中,单击 Create Alarm (创建警报)。
如果您要在触发警报时接收电子邮件,请在 Create Alarm for (针对以下项创建警报) 对话框中的 Send
a notification to (发送通知到) 框中选择一个现有 Amazon SNS 主题,或单击 Create Topic (创建主
题) 创建新的主题。
如果创建新的主题,则请在“Send a notification to”方框中输入主题的名称,然后在“With these
recipients”方框中输入收件人的电子邮件地址(以逗号隔开)。之后,待警报创建完成,您将收到一
封订阅确认电子邮件,而您必须接受方可获得该主题的电子邮件。
选中 Take the action 复选框,然后选择 Stop this instance 单选按钮。
8.
如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
9. 在“Whenever”方框中,选择想要使用的统计信息,然后选择指标。在此示例中,选择“Average”和
“CPU Utilization”。
10. 在“Is”方框中,定义指标的阈值。在此示例中,输入 10%。
11. 在“For at least”方框中,选择警报的采样周期。在此示例中,输入 24 个连续 1 小时时间段。
12. 要更改警报的名称,在“Name this alarm”方框中,输入新的名称。
如果不输入警报名称,则 Amazon CloudWatch 会自动为您创建一个。
415
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
Note
可以在创建警报前根据自己的要求调整警报配置,也可以在之后编辑配置。这包括指标、阈
值、时长、操作和通知等设置。但是,警报创建后其名称无法再次编辑。
13. 单击 Create Alarm (创建警报)。
使用 Amazon CloudWatch 控制台创建停止实例的警报
可以创建当达到一定阈值后停止 Amazon EC2 实例的警报。例如,您可能运行了开发或测试实例而偶尔
忘记将其关闭。可以创建当平均 CPU 利用率低于 10% 达 24 小时时触发的警报,同时告知其为空闲并不
再使用。可以根据需要调整阈值、时长和时间段,还可以添加 Amazon Simple Notification Service (Amazon
SNS) 通知,以便您在触发警报后能够收到电子邮件。
Amazon CloudWatch 警报操作可以停止由 EBS 支持的 Amazon EC2 实例,但无法停止由实例存储支持
的 Amazon EC2 实例。但是,Amazon CloudWatch 警报操作可以终止这两种类型的 Amazon EC2 实例。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
要创建停止空闲实例的警报
1.
2.
3.
4.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中,单击 Alarms (警报)。
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 中的 EC2 Metrics (EC2 指标) 下面,选择 Per-Instance Metrics (每个实例的指标)。
5.
在指标列表中,选择您要为其创建警报的实例和指标。还可以在搜索框中输入一个实例 ID 以便找到
所需的实例。
6.
7.
从 Statistic 下拉列表中选择 Average。
从 Period (周期) 下拉列表中选择一个周期,例如:1 。
416
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
8.
单击 Next (下一步),然后在 Alarm Threshold (警报阈值) 下的 Name (名称) 字段中,为警报输入唯
一名称,例如:Stop EC2 instance。
9.
在 Description (说明) 字段中输入警报描述,例如:CPU EC2 10. 在 is 下拉列表中选择 <。
11. 在 is (条件) 下拉列表旁的框内,输入 10 并在 for (时间) 字段内输入 1440。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,单击 EC2 Action (EC2 操作)。
13. 在 Whenever this alarm (每当此警报) 下拉列表中,选择 State is ALARM (状态为“警报”)。
14. 在 Take this action (请执行以下操作) 下拉列表中,选择 Stop this instance (停止此实例)。
15. 如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
16. 单击 Notification (通知),然后在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon
SNS 主题或创建一个新的主题。
17. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to (发送通知到) 字段中,输入新 Amazon SNS 主题的名称,例如:
Stop_EC2_Instance,在 Email list (电子邮件列表) 字段中,输入警报变为 ALARM 状态时要通知的
电子邮件地址列表(逗号分隔)。
Important
如果创建新主题或向现有主题添加电子邮件地址,则每个电子邮件地址会收到一封主题订阅
确认电子邮件。必须点击其中包含的链接对订阅进行确认,方可让新的电子邮件地址接收通
知。
18. 在导航窗格中,单击 Create Alarm (创建警报) 以完成警报创建过程。
向 Amazon CloudWatch 警报添加终止操作
您可使用 Amazon EC2 控制台、Amazon CloudWatch 控制台、Amazon CloudWatch 命令行界面 (CLI)、
CloudWatch API 或 AWS 软件开发工具包配置终止警报操作。有关结合使用 Amazon CloudWatch API
和 AWS 开发工具包的信息,请参阅示例代码和库。
使用 Amazon EC2 控制台创建终止实例的警报
可以创建当达到一定阈值时自动终止 EC2 实例的警报(只要该实例未启用终止保护)。例如,某个实例
已经完成工作,您不再需要此实例而想将其终止。如果可能在之后使用该实例,则应该选择停止而不是终
止。有关对实例启用和禁用终止保护的信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的
为实例启用终止保护。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
417
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
要创建终止空闲实例的警报
1.
2.
3.
4.
5.
6.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中的 INSTANCES (实例) 下,单击 Instances (实例)。
在上方窗格中,右键单击一个实例,选择 CloudWatch Monitoring (CloudWatch 监控),然后单击
Add/Edit Alarms (添加/编辑警报)。
或者选择实例,然后在下方窗格中的“Monitoring”选项卡上单击“Create Alarm”。
在 Alarm Details for (以下项的警报详细信息) 对话框中,单击 Create Alarm (创建警报)。
如果您要在触发警报时接收电子邮件,请在 Create Alarm for (针对以下项创建警报) 对话框中的 Send
a notification to (发送通知到) 框中选择一个现有 Amazon SNS 主题,或单击 Create Topic (创建主
题) 创建新的主题。
如果创建新的主题,则请在“Send a notification to”方框中输入主题的名称,然后在“With these
recipients”方框中输入收件人的电子邮件地址(以逗号隔开)。之后,待警报创建完成,您将收到一
封订阅确认电子邮件,而您必须接受方可获得该主题的电子邮件。
7. 选中 Take the action 复选框,然后选择 Terminate this instance 单选按钮。
8. 如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
9. 在“Whenever”方框中,选择想要使用的统计信息,然后选择指标。在此示例中,选择“Average”和
“CPU Utilization”。
10. 在“Is”方框中,定义指标的阈值。在此示例中,输入 10%。
11. 在“For at least”方框中,选择警报的采样周期。在此示例中,输入 24 个连续 1 小时时间段。
12. 要更改警报的名称,在“Name this alarm”方框中,输入新的名称。
如果不输入警报名称,则 Amazon CloudWatch 会自动为您创建一个。
Note
可以在创建警报前根据自己的要求调整警报配置,也可以在之后编辑配置。这包括指标、阈
值、时长、操作和通知等设置。但是,警报创建后其名称无法再次编辑。
13. 单击 Create Alarm (创建警报)。
使用 Amazon CloudWatch 控制台创建终止空闲实例的警报
在对 Amazon EC2 实例禁用终止保护后,可以创建当达到一定阈值时自动终止该实例的警报。例如,某
个实例已经完成工作,您不再需要此实例而想将其终止。如果可能在之后使用该实例,则应该选择停止而
418
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
不是终止。有关对实例禁用终止保护的信息,请参阅Amazon EC2 用户指南(适用于 Linux 实例) 中的
为实例启用终止保护。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
要创建终止空闲实例的警报
1.
2.
3.
4.
5.
6.
7.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中,单击 Alarms (警报)。
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 中的 EC2 Metrics (EC2 指标) 下面,选择 Per-Instance Metrics (每个实例的指标)。
在指标列表中,选择您要为其创建警报的实例和指标。还可以在搜索框中输入一个实例 ID 以便找到
所需的实例。
从 Statistic 下拉列表中选择 Average。
从 Period (周期) 下拉列表中选择一个周期,例如:1 。
8.
单击 Next (下一步),然后在 Alarm Threshold (警报阈值) 下的 Name (名称) 字段中,输入警报的唯
一名称,例如:Terminate EC2 instance。
9.
例如在 Description (说明) 字段中,输入警报描述,例如:CPU EC2 10. 在 is 下拉列表中选择 <。
11. 在 is (条件) 下拉列表旁的框内,输入 10 并在 for (时间) 字段内输入 1440。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,单击 EC2 Action (EC2 操作)。
13. 在 Whenever this alarm (每当此警报) 下拉列表中,选择 State is ALARM (状态为“警报”)。
14. 在 Take this action (请执行以下操作) 下拉列表中,选择 Terminate this instance (终止此实例)。
15. 如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
16. 单击 Notification (通知),然后在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon
SNS 主题或创建一个新的主题。
419
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
17. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to (发送通知到) 字段中,输入新 Amazon SNS 主题的名称,例如:
Terminate_EC2_Instance,在 Email list (电子邮件列表) 字段中,输入警报变为 ALARM 状态时要
通知的电子邮件地址列表(逗号分隔)。
Important
如果创建新主题或向现有主题添加电子邮件地址,则每个电子邮件地址会收到一封主题订阅
确认电子邮件。必须点击其中包含的链接对订阅进行确认,方可让新的电子邮件地址接收通
知。
18. 在导航窗格中,单击 Create Alarm (创建警报) 以完成警报创建过程。
向 Amazon CloudWatch 警报添加重启操作
您可使用 Amazon EC2 控制台、Amazon CloudWatch 控制台、Amazon CloudWatch 命令行界面 (CLI)、
CloudWatch API 或 AWS 软件开发工具包配置重启警报操作。有关结合使用 Amazon CloudWatch API
和 AWS 开发工具包的信息,请参阅示例代码和库。
使用 Amazon EC2 控制台创建重启实例的警报
您可创建监控 Amazon EC2 实例并自动重启此实例的 Amazon CloudWatch 警报。在实例运行状况检查
失败时,推荐重启警报操作(与恢复警报操作相反,该操作适合系统运行状况检查失败的情况)。实例重
启相当于操作系统重启。在许多情况下,只需要几分钟时间即可重启您的实例。重启实例时,其仍驻留在
相同的物理主机上,因此您的实例将保留其公有 DNS 名称、私有 IP 地址及其实例存储卷上的任何数据。
重启实例不会启动新的实例计费时间,这与停止并重新启动您的实例不同。有关重启实例的更多信息,请
参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的重启您的实例。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
420
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
创建重启实例的警报
1.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
2.
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中的 INSTANCES (实例) 下,单击 Instances (实例)。
在上方窗格中,右键单击一个实例,选择 CloudWatch Monitoring (CloudWatch 监控),然后单击
Add/Edit Alarms (添加/编辑警报)。
3.
4.
5.
6.
或者选择实例,然后在下方窗格中的“Monitoring”选项卡上单击“Create Alarm”。
在 Alarm Details for (以下项的警报详细信息) 对话框中,单击 Create Alarm (创建警报)。
如果您要在触发警报时接收电子邮件,请在 Create Alarm for (针对以下项创建警报) 对话框中的 Send
a notification to (发送通知到) 框中选择一个现有 Amazon SNS 主题,或单击 Create Topic (创建主
题) 创建新的主题。
如果创建新的主题,则请在“Send a notification to”方框中输入主题的名称,然后在“With these
recipients”方框中输入收件人的电子邮件地址(以逗号隔开)。之后,待警报创建完成,您将收到一
封订阅确认电子邮件,而您必须接受方可获得该主题的电子邮件。
7. 选中 Take the action 复选框,然后选择 Reboot this instance 单选按钮。
8. 如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
9. 在 Whenever 框中,选择“Status Check Failed (Instance)”。
10. 在 For at least 字段中,输入 2。
11. 在 consecutive period(s) of 框中,选择 1 minute。
12. 要更改警报的名称,可在 Name of alarm 框中键入新名称。
如果不输入警报名称,则 Amazon CloudWatch 会自动为您创建一个。
13. 单击 Create Alarm (创建警报)。
使用 Amazon CloudWatch 控制台创建重启实例的警报
您可创建监控 Amazon EC2 实例并自动重启此实例的 Amazon CloudWatch 警报。在实例运行状况检查
失败时,推荐重启警报操作(与恢复警报操作相反,该操作适合系统运行状况检查失败的情况)。实例重
启相当于操作系统重启。在许多情况下,只需要几分钟时间即可重启您的实例。重启实例时,其仍驻留在
相同的物理主机上,因此您的实例将保留其公有 DNS 名称、私有 IP 地址及其实例存储卷上的任何数据。
重启实例不会启动新的实例计费时间,这与停止并重新启动您的实例不同。有关重启实例的更多信息,请
参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的重启您的实例。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
421
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
创建重启实例的警报
1.
通过以下网址打开 CloudWatch 控制台:https://console.amazonaws.cn/cloudwatch/。
2.
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
3.
4.
在导航窗格中,单击 Alarms (警报)。
单击 Create Alarm (创建警报),然后在 CloudWatch Metrics by Category (按类别显示的 CloudWatch
指标) 中的 EC2 Metrics (EC2 指标) 下面,选择 Per-Instance Metrics (每个实例的指标)。
在指标列表中,选择您要为其创建警报的实例和 StatusCheckFailed_Instance 指标。还可以在
搜索框中输入一个实例 ID 以便找到所需的实例。
从 Statistic 下拉列表中选择 Minimum (最小值)。
5.
6.
Note
这是当前唯一支持的统计数据。
7.
从 Period (周期) 下拉列表中选择一个周期,例如:1 Minute。
8.
单击 Next,然后在 Alarm Threshold 下的 Name 字段中,为警报输入唯一名称,例如:Reboot EC2
instance。
9.
在 Description 字段中,输入警报的描述,例如:Reboot EC2 instance when health checks
fail。
10. 在 is 下拉列表中选择 >。
11. 在 is (条件) 下拉列表旁的框内,输入 0 并在 for (时间) 字段内输入 2。
Alarm Preview (警报预览) 下会显示阈值的图形表示。
12. 在 Actions (操作) 下,单击 EC2 Action (EC2 操作)。
13. 在 Whenever this alarm (每当此警报) 下拉列表中,选择 State is ALARM (状态为“警报”)。
14. 在 Take this action 下拉列表中,选择 Reboot this instance。
15. 单击 Notification (通知),然后在 Send notification to (发送通知到) 下拉列表中,选择一个现有 Amazon
SNS 主题或创建一个新的主题。
16. 要创建新 Amazon SNS 主题,请选择 New list (新建列表)。
在 Send notification to 字段中,为新的 Amazon SNS 主题输入名称,例如:Reboot_EC2_Instance,
并在 Email list 字段中,输入警报变为 ALARM 状态时要通知的电子邮件地址的列表(以逗号分隔)。
Important
如果创建新主题或向现有主题添加电子邮件地址,则每个电子邮件地址会收到一封主题订阅
确认电子邮件。必须点击其中包含的链接对订阅进行确认,方可让新的电子邮件地址接收通
知。
17. 在导航窗格中,单击 Create Alarm (创建警报) 以完成警报创建过程。
422
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
向 Amazon CloudWatch 警报添加恢复操作
您可使用 Amazon EC2 控制台、Amazon CloudWatch 控制台、Amazon CloudWatch 命令行界面 (CLI)、
CloudWatch API 或 AWS 软件开发工具包配置恢复警报操作。有关结合使用 Amazon CloudWatch API
和 AWS 开发工具包的信息,请参阅示例代码和库。
使用 Amazon EC2 控制台创建警报以恢复实例
您可以创建 Amazon CloudWatch 警报用于监控 Amazon EC2 实例,并且在实例受损(由于发生底层硬
件故障或需要 AWS 参与才能修复的问题)时自动恢复实例。恢复的实例与原始实例相同,包括实例 ID、
私有 IP 地址、弹性 IP 地址以及所有实例元数据。
当 StatusCheckFailed_System 警报触发且恢复操作启动时,您在创建警报及相关恢复操作时所选择
的 Amazon SNS 主题将向您发出通知。在实例恢复过程中,实例将在重启时迁移,并且内存中的所有数
据都将丢失。该过程完成后,您将收到一封电子邮件通知,其中包括恢复尝试的状态以及任何进一步的指
示。您会注意到,实例在已恢复的实例上重启。
导致系统状态检查出现故障的问题示例包括:
•
•
•
•
网络连接丢失
系统电源损耗
物理主机上的软件问题
物理主机上的硬件问题
Important
恢复操作仅受到以下项支持:
• C3、C4、M3、M4、R3 和 T2 实例类型。
• 亚太区域(新加坡)、亚太地区(悉尼)、亚太地区(东京)地区、欧洲(爱尔兰)、欧洲
(法兰克福)、南美洲(圣保罗)、美国东部(弗吉尼亚北部)、美国西部(加利福尼亚北
部)、美国西部(俄勒冈) 和 亚太区域 (首尔) 区域中的实例。
• VPC 中的实例。不支持专用实例或在专用主机上运行的实例。
Note
如果您的实例有公有 IP 地址,它会在恢复后保留相同的公有 IP 地址。
• 使用 EBS 支持的存储的实例。不支持实例存储。如果连接了任何实例存储,则实例的自动恢
复会失败。
Note
如果您要使用 AWS Identity and Access Management (IAM) 账户创建或修改警报,则必须拥有
以下 Amazon EC2 权限:
• ec2:DescribeInstanceStatus 和 ec2:DescribeInstances,针对有关 Amazon EC2
实例状态指标的所有警报。
• ec2:StopInstances,针对包含停止操作的警报。
• ec2:TerminateInstances,针对包含终止操作的警报。
• ec2:DescribeInstanceRecoveryAttribute 和 ec2:RecoverInstances,针对包含恢
复操作的警报。
423
Amazon Elastic Compute Cloud Linux 实例用户指南
创建停止、终止、重启或恢复实例的警报
如果您拥有对 Amazon CloudWatch 而不是 Amazon EC2 的读/写权限,则仍然可以创建警报,
但无法对 Amazon EC2 实例执行停止或终止操作。但是,如果您之后获得使用相关 Amazon EC2
API 的权限,将会执行之前创建的警报操作。有关 IAM 权限的更多信息,请参阅 IAM 用户指南
中的权限与策略。
如果要通过 IAM 角色使用警报操作停止或终止实例,则只能使用 EC2ActionsAccess 角色。其他
IAM 角色不受支持。如果您使用的是其他 IAM 角色,则无法停止或终止实例。但是,您仍然可以
查看警报状态和执行任何其他操作,如 Amazon SNS 通知或 Auto Scaling 策略。
如果您使用的是用 AWS Security Token Service (AWS STS) 授予的临时安全凭据,则无法使用
警报操作来恢复 Amazon EC2 实例。
创建用于恢复实例的警报
1.
2.
3.
4.
5.
6.
打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/。
如果需要,可以更改区域。从导航栏,选择实例运行所在的区域。有关更多信息,请参阅 Regions
and Endpoints。
在导航窗格中的 INSTANCES (实例) 下,单击 Instances (实例)。
在上方窗格中,右键单击一个实例,选择 CloudWatch Monitoring (CloudWatch 监控),然后单击
Add/Edit Alarms (添加/编辑警报)。
或者选择实例,然后在下方窗格中的“Monitoring”选项卡上单击“Create Alarm”。
在 Alarm Details for (以下项的警报详细信息) 对话框中,单击 Create Alarm (创建警报)。
如果您要在触发警报时接收电子邮件,请在 Create Alarm for (针对以下项创建警报) 对话框中的 Send
a notification to (发送通知到) 框中选择一个现有 Amazon SNS 主题,或单击 Create Topic (创建主
题) 创建新的主题。
如果创建新的主题,则请在“Send a notification to”方框中输入主题的名称,然后在“With these
recipients”方框中输入收件人的电子邮件地址(以逗号隔开)。之后,待警报创建完成,您将收到一
封订阅确认电子邮件,而您必须接受方可获得该主题的电子邮件。
7. 选中 Take the action 复选框,然后选择 Recover this instance 单选按钮。
8. 如果出现提示,请选中 Create IAM role: EC2ActionsAccess 复选框以自动创建 IAM 角色,以便 AWS
可在此警报触发时自动代表您停止实例。
9. 在 Whenever 框中,选择“Status Check Failed (System)”。
10. 在 For at least 字段中,输入 2。
11. 在 consecutive period(s) of 框中,选择 1 minute。
12. 要更改警报的名称,可在 Name of alarm 框中键入新名称。
如果不输入警报名称,则 Amazon CloudWatch 会自动为您创建一个。
13. 单击 Create Alarm (创建警报)。
使用 Amazon CloudWatch 控制台创建警报以恢复实例
您可以创建 Amazon CloudWatch 警报用于监控 Amazon EC2 实例,并且在实例受损(由于发生底层硬
件故障或需要 AWS 参与才能修复的问题)时自动恢复实例。恢复的实例与原始实例相同,包括实例 ID、
私有 IP 地址、弹性 IP 地址以及所有实例元数据。
当 StatusCheckFailed_System 警报触发且恢复操作启动时,您在创建警报及相关恢复操作时所选择
的 Amazon SNS 主题将向您发出通知。在实例恢复过程中,实例将在重启时迁移,并且内存中的所有数
据都将丢失。该过程完成后,您将收到一封电子邮件通知,其中包括恢复尝试的状态以及任何进一步的指