在左侧的视频中,Rendy 介绍如何
使用 AWS Data Pipeline 停止 EC2 实例

 

在右侧的视频中,Rendy 介绍如何
创建 AWS Data Pipeline 角色

stop-start-ec2-instances-rendy
aws-kc-slate

以编程方式按计划的间隔停止和启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例而不终止实例的最佳实践是什么?

您可以使用 AWS Data Pipeline 在计划的实例上以编程方式启动和停止 EC2 实例。Data Pipeline 按不带外部依赖项的设置计划使用 AWS 技术并运行 AWS 命令行界面 (AWS CLI) 命令。Data Pipeline 将日志写入到 Amazon Simple Storage Service (Amazon S3),在 IAM 角色上下文中运行,因而不需要进行密钥管理。Data Pipeline 也具成本效益。例如,每天可使用 Data Pipeline 免费套餐停止和启动实例一次。有关更多信息,请参阅 AWS Data Pipeline 定价

注意:Amazon EC2 t1.micro 实例启动作为数据管道执行的主机环境。为此目的启动的 EC2 实例按 50 分钟的默认超时时间段运行。用于数据管道主机执行的所有资源都会计入您的账户。通过执行管道在 100 分钟或更少时间内停止并重启 EC2 实例所使用的资源量与让 EC2 t1.micro 实例继续运行是一样的。

您应停止并重启一个或多个 EC2 t1.micro 或更大的实例超过 100 分钟(50 分钟停止,50 分钟启动),从而确保本文所述的方法占用的资源不会多于节省的资源。

如果与 DataPipelineDefaultResourceRole 角色关联的默认策略是 AmazonEC2RoleforDataPipelineRole AWS 托管策略,由于 AWS 托管策略是只读的,Data Pipeline 需要您为该角色创建客户管理的策略。如果附加到 DataPipelineDefaultResourceRole 的策略不是 AWS 托管策略,则不需要创建客户管理的策略。相反,您可以编辑指定给 DataPipelineDefaultResourceRole 角色的策略。

按照以下过程设置可在指定的时间以编程方式启动和停止 EC2 实例的 Data Pipeline:

为 DataPipelineDefaultResourceRole 创建并验证自定义策略

1.   在 AWS 管理控制台的身份和权限部分,选择 Identity & Access Management (IAM) 以打开 Identity and Access Management 控制面板。

2.   选择 Policies

3.   选择 Create Policy (创建策略) 以打开“Create Policy”(创建策略) 页面。

4.   选择该选项以创建您自己的策略。​

5.   输入策略名称以与 DataPipelineDefaultResourceRole 关联,如“DataPipelineDefaultResourceRole_EC2_Policy”。

6.   为策略输入描述,如“在通过 Data Pipeline 启动和停止 EC2 实例时与 DataPipelineDefaultResourceRole 关联的策略”。

7.   在新策略的“Policy Document”(策略文档) 部分输入以下信息:

{
   "Version": "2012-10-17",
  "Statement": [
      { 
        "Effect": "Allow",
        "Action": [
            "s3:*", 
            "ec2:Describe*",
            "ec2:Start*", 
            "ec2:RunInstances",
            "ec2:Stop*", 
            "datapipeline:*",
            "cloudwatch:*" 
          ],
          "Resource": [
              "*" 
          ]
      }
    ]
}

注意:向当前与“DataPipelineDefaultResourceRole”角色关联的任何客户管理的策略应用此处所述的相同权限是最佳实践。

8.   选择 Validate Policy

9.   验证策略后,选择 Create Policy (创建策略) 以创建新的策略。

将策略附加到 DataPipelineDefaultResourceRole 角色

1.   为 Policy Type (策略类型) 筛选条件表达式输入“DataPipeline”或其他适当的前缀。选中此策略旁边的框,然后从 Policy Actions(策略操作) 下拉菜单中选择 Attach (附加) 选项。

2.   在 Attach Policy (附加策略) 页面上,输入筛选条件表达式“datapipeline”,然后选中筛选条件所返回的 DataPipelineDefaultResourceRole 条目旁边的复选框。

3.   选择页面底部的 Attach Policy (附加策略) 将新策略与 DataPipelineDefaultResourceRole 相关联。

创建数据管道以运行 AWS CLI 命令

1.   打开 Data Pipeline 控制台。

2.   选择 Create New Pipeline (创建新管道) 并输入以下信息以创建两个管道:
名称:例如,启动 EC2 实例停止 EC2 实例。​
描述:根据需要提供管道的相关详细信息。
源:选择 Build using template (使用模板构建) 并选择模板运行 AWS CLI 命令​。
AWS CLI 命令:指定管道的任务。创建两个管道,一个运行 aws ec2 start-instances 命令,另一个运行 aws ec2 stop-instances 命令。

注意:ec2 start-instancesec2 stop-instances 都需要有效的 --region 参数值。

例如,您可以使用以下命令启动指定的 EC2 实例:

aws ec2 start-instances --instance-ids i-abcd1234 i-987a654b i-ba154f3c --region us-east-x 

此命令提供用于停止您启动的 EC2 实例的语法:

aws ec2 stop-instances --instance-ids i-abcd1234 i-987a654b i-ba154f3c --region us-east-x 

重要提示 如果传递给 --instance-ids 参数的任何实例 ID 不存在,则整个命令都会失败,不会停止或启动任何实例。如果指定的任何实例 ID 已终止,则会出现问题。例如,如果实例 ID i-abcd1234 已终止,则 aws ec2 start-instances 示例不会启动任何指定的实例。为防止出现这种情况,请考虑发出独立的分号分隔的命令:

aws ec2 start-instances --instance-ids i-abcd1234 --region us-east-x;
aws ec2 start-instances --instance-ids i-987a654b --region us-east-x;
aws ec2 start-instances --instance-ids i-ba154f3c --region us-east-x

有关使用 AWS CLI 启动和停止 EC2 实例的更多信息,请参阅 AWS CLI 文档中的 start-instancesstop-instances

配置 Data Pipeline 计划和日志记录

1.   使用适当的计划信息配置每个 Data Pipeline 计划。有关更多信息,请参阅计划管道​​。

2.在创建管道时启用管道级别日志记录,方法是在控制台中,或者在开发工具包或 CLI 的默认对象中使用 pipelineLogUri 来指定 Amazon S3 位置。有关更多信息,请参阅查看管道日志​。

注意:Data Pipeline 日志记录不是必需的。但是,如果不启用它,当您执行 Data Pipeline 验证时,控制台将显示警告。

3.   设置安全访问选项:
- IAM Roles (IAM 角色):选择 Custom Pipeline Role: DataPipelineDefaultRole (自定义管道角色: DataPipelineDefaultRole)
- EC2 Instance Role (EC2 实例角色):选择 DataPipelineDefaultResourceRole

注意:Data Pipeline 为您创建必要的 IAM 角色。

更新角色权限并激活管道

1.   在 AWS 管理控制台中,选择 IAM,然后选择角色​。​
– 如果使用非托管策略,请选择 DataPipelineDefaultResourceRole 角色并编辑相关联的策略,如“创建并验证 DataPipelineDefaultResourceRole 的自定义策略”的步骤 7 中所述。
– 否则,将 DataPipelineDefaultResourceRole 与自定义策略相关联,如创建 DataPipelineDefaultResourceRole 的自定义策略​中所述。有关更多信息,请参阅编辑管道

2.   在控制台中选择 Activate (激活)激活管道​。您可以在控制台中监控 Data Pipeline 活动以确认操作是否已成功按时完成。


此页内容对您是否有帮助? |

返回 AWS Support 知识中心

需要帮助? 访问 AWS 支持中心

发布时间:2015 年 5 月 21 日

更新时间:2018 年 8 月 24 日