AWS Server Migration Service
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将 Amazon CloudWatch Events 和 AWS Lambda 与 AWS SMS 配合使用

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

处理 AWS SMS 的 CloudWatch Events 规则

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

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

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

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

    { "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. 通过以下网址打开 AWS Lambda 控制台:https://console.amazonaws.cn/lambda/

  4. 选择 Create function

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

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

  7. 选择创建函数,然后定义类似于下文所示的 Lambda 函数。此实例函数使用 Python 2.7 编写,由 CloudWatch Events 在 AWS 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.amazonaws.cn/cloudwatch/

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

  10. 选择目标添加目标

  11. 对于 Lambda 函数,请选择您之前创建的 Lambda 函数并选择配置详细信息

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

  13. 选择 Create rule

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