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

产品更新

我们建议AmazonApplication Migration Service(AmazonMGN) 作为主要的迁移服务 lift-and-shift 迁移。如果AmazonMGN 在特定版本中不可用Amazon区域,你可以使用Amazon SMSAPI直到 2023 年 3 月。

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

使用 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. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 创建 IAM 策略,提供权限用于在 CloudWatch Events 调用时执行操作(由 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. 访问 https://console.aws.amazon.com/cloudwatch/,打开 CloudWatch 控制台。

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

  10. 选择目标添加目标

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

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

  13. 选择 Create rule (创建规则)

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