使用 bash 脚本更改 Amazon EC2 实例类型 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 bash 脚本更改 Amazon EC2 实例类型

Amazon EC2 的这一 bash 脚本示例使用 Amazon Command Line Interface (Amazon CLI) 更改 Amazon EC2 实例的实例类型。如果实例正在运行,它会停止实例,更改实例类型,然后根据请求重启实例。Shell 脚本是专用于在命令行界面中运行的程序。

注意

有关其他命令示例,请参阅 Amazon CLI 参考指南

开始之前

您需要先满足以下条件,才能运行下文中的任何示例代码。

  • 安装 Amazon CLI,请参阅安装或更新最新版本的 Amazon CLI了解更多信息。

  • 配置 Amazon CLI,请参阅配置基础知识了解更多信息。您使用的配置文件必须具有允许示例代码执行 Amazon 操作的权限。

  • 在账户中有正在运行的 Amazon EC2 实例,并且您有权停止和修改该实例。如果您运行测试脚本,它会为您启动一个实例,测试更改类型,然后终止该实例。

  • 作为 Amazon 的最佳实践,请授予此代码最低的权限,或者仅授予它执行任务所需的权限。有关更多信息,请参阅 Amazon Identity and Access Management (IAM) 用户指南中的授予最低权限

  • 此代码尚未在所有 Amazon 区域中进行测试。有些 Amazon 服务仅在特定区域中提供。有关更多信息,请参阅 Amazon 一般参考指南中的服务终端节点和配额

  • 运行此代码可能会导致您的Amazon账户产生相关费用。您有责任确保在使用完由此脚本创建的任何资源后删除这些资源。

关于此示例

此示例是作为 shell 脚本文件 change_ec2_instance_type.sh 中的一个函数编写的,您可以通过其他脚本或命令行 source 该函数。每个脚本文件都包含了介绍每个函数的注释。一旦该函数进入内存,您就可以通过命令行调用它。例如,以下命令会将指定实例的类型更改为 t2.nano

$ source ./change_ec2_instance_type.sh $ ./change_ec2_instance_type -i *instance-id* -t new-type

有关完整示例和可下载的脚本文件,请参阅 GitHub 上的 Amazon 代码示例存储库 中的更改 Amazon EC2 实例类型

参数

-i -(字符串)指定要修改的实例 ID。

-t -(字符串)指定要切换到的 Amazon EC2 实例类型。

-r -(开关)默认情况下,此参数未设置。如果设置了 -r,则在类型切换后将会重启实例。

-f -(开关)默认情况下,脚本在进行切换之前会提示用户确认关闭实例。如果设置了 -f,则函数在关闭实例以进行类型切换之前不会提示用户

-v -(开关)默认情况下,脚本会以静默方式运行,仅在出现错误时才显示输出。如果设置了 -v,则函数会在整个运行过程中显示状态。

文件

change_ec2_instance_type.sh

该主脚本文件包含执行以下任务的 change_ec2_instance_type() 函数:

  • 验证指定的 Amazon EC2 实例是否存在。

  • 除非选择了 -f,否则函数会在停止实例之前向用户发出警告。

  • 更改实例类型

  • 如果您设置了 -r,请重启实例并确认实例正在运行

GitHub 上查看 change_ec2_instance_type.sh 的代码。

test_change_ec2_instance_type.sh

脚本文件 change_ec2_instance_type_test.sh 会测试 change_ec2_instance_type 函数的各种代码路径。如果测试脚本中的所有步骤都正确完成,测试脚本将会删除它创建的所有资源。

您可以使用以下参数运行该测试脚本:

  • -v -(开关)每个测试在运行时都会显示通过/失败状态。默认情况下,测试以静默方式运行,输出仅包含最终的总体通过/失败状态。

  • -i -(开关)脚本会在每个测试后暂停,以便您能查看每个步骤的中间结果。让您能够使用 Amazon EC2 控制台检查实例的当前状态。您在系统提示符处按 Enter 后,脚本才会继续执行下一步。

GitHub 上查看 test_change_ec2_instance_type.sh 的代码。

awsdocs_general.sh

脚本文件 awsdocs_general.sh 中包含了在 Amazon CLI 的高级示例中使用的通用函数。

GitHub 上查看 awsdocs_general.sh 的代码。

参考

Amazon CLI 参考:

其他参考资料: