首页 > 解决方案 > 用户数据脚本完成

问题描述

我正在开发自动化并user data在创建 EC2 实例时传递一些脚本。我正在使用 boto3 (python) 进行自动化。

我传递的脚本user data需要将近 30 分钟才能完成,基于此,我必须提取日志并在此基础上做一些事情。

要在脚本完成时提取数据,我应该知道它什么时候完成。有没有办法知道用户数据中的脚本是否已完成,然后是否拉取生成的日志。

我在boto3试过服务员

class EC2.Waiter.InstanceStatusOk
waiter = client.get_waiter('instance_status_ok')
wait(**kwargs)
Polls EC2.Client.describe_instance_status() every 15 seconds until a successful state is reached. An error is returned after 40 failed checks.

See also: AWS API Documentation

Request Syntax

waiter.wait(
    Filters=[
        {
            'Name': 'string',
            'Values': [
                'string',
            ]
        },
    ],
    InstanceIds=[
        'string',
    ],
    MaxResults=123,
    NextToken='string',
    DryRun=True|False,
    IncludeAllInstances=True|False,
    WaiterConfig={
        'Delay': 123,
        'MaxAttempts': 123
    }
)

获取服务员

这似乎是在检查状态,EC2.Client.describe_instance_status()但是如果我的脚本需要更长的时间才能完成怎么办。

标签: python-3.xamazon-web-servicesamazon-ec2boto3

解决方案


Boto3 无法检测脚本何时完成。AWS API 中没有任何内容可以告诉您脚本何时完成,因为只有 EC2 服务器上的操作系统知道脚本何时真正完成。您需要做的是在脚本末尾添加一个操作,以在 SNS 主题之类的地方发送通知,或将任务添加到 SQS 队列,并将其用作您需要执行的下一组操作的触发器.


推荐阅读