使用 Amazon CloudWatch Events 和Amazon Lambda替换为Amazon SMS - Amazon Server Migration Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Amazon CloudWatch Events 和Amazon Lambda替换为Amazon SMS

您可以将 Amazon CloudWatch Events 与Amazon Server Migration Service可基于迁移工作流来自动完成操作。这需要您为 Lambda 代入的创建 IAM 策略、用于处理事件的 Lambda 函数,以及与传入事件匹配并能将传入事件路由到 Lambda 函数的 CloudWatch Events 规则。

处理 CloudWatch 事件规则Amazon SMS

以下过程使用Amazon Lambda要监视的函数Amazon SMS任务状态更改,并随时在创建了 AMI ID 时启动 Amazon EC2 实例。

创建监视任务状态更改的 Lambda 函数

  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 创建 IAM 策略,提供权限用于执行操作(由 Lambda 调用),并在 CloudWatch Events 调用时写入 CloudWatch 日志。以下实例提供了执行 RunInstances 操作的权限。将策略分配给要处理 CloudWatch 事件角色的用户。

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource":"arn:aws:logs:*:*:*" }, { "Effect":"Allow", "Action":[ "ec2:RunInstances" ], "Resource":"*" } ] }
  3. 打开Amazon Lambda控制台位于https://console.aws.amazon.com/lambda/

  4. 选择创建函数

  5. 为确保您的 Lambda 函数在 CloudWatch 控制台中可用,请在将发生 CloudWatch 事件的区域创建该函数。有关更多信息,请参阅 Amazon Lambda 开发人员指南。命名函数 LaunchInstanceFromAMI 并选择 Python 2.7 作为运行时。

  6. 对于角色,选择选择现有角色。在现有角色下的可用角色列表中,选择要添加到策略的角色。

  7. 选择创建函数,然后定义类似于下文所示的 Lambda 函数。此实例函数使用 Python 2.7 编写,由 CloudWatch Events 调用时调用。Amazon SMS作业完成发送带有 AMI ID 的事件。在调用之后,它在事件的区域中启动 t2.micro 实例。

    # Sample Lambda function to launch an EC2 instance from all AMI ID's created from a # Server Migration Service replication job import boto3 # main function def lambda_handler(event, context): # create an ec2 client ec2 = boto3.client('ec2', region_name=event['region']) # match any event that returns an ami-id if 'ami-id' in event['detail']: imageId = event['detail']['ami-id'] # launch instance from the AMI ID ec2.run_instances( ImageId=imageId, MaxCount=123, MinCount=1, InstanceType='t2.micro' ) print 'launched instance with ami id: ' + imageId else: print 'did not launch instance'
  8. 通过以下网址打开 CloudWatch 控制台:https://console.aws.amazon.com/cloudwatch/

  9. 依次选择 EventsCreate rule。对于服务名称,选择 Server Migration Service (SMS)。对于事件类型,选择Server Migration Job State Change (服务器迁移任务状态更改)

  10. 选择目标添加目标

  11. 有关 Lambda 功能,请选择您之前创建的 Lambda 功能并选择配置详细信息

  12. 配置规则详细信息页面,请键入名称描述的值。选择状态复选框激活功能 (将其设置为已启用)。

  13. 选择 Create rule

现在,您的规则应该会显示在规则选项卡中。在示例中,配置的事件应在您每次收到 AMI ID 时启动 EC2 实例。