python-3.x - 用户数据脚本完成
问题描述
我正在开发自动化并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()
但是如果我的脚本需要更长的时间才能完成怎么办。
解决方案
Boto3 无法检测脚本何时完成。AWS API 中没有任何内容可以告诉您脚本何时完成,因为只有 EC2 服务器上的操作系统知道脚本何时真正完成。您需要做的是在脚本末尾添加一个操作,以在 SNS 主题之类的地方发送通知,或将任务添加到 SQS 队列,并将其用作您需要执行的下一组操作的触发器.
推荐阅读
- spring-data-mongodb - 使用带有 arrayFilters 的 Spring Data for MongoDB 更新嵌套数组中的对象
- jekyll - Jekyll - 在`index.html`中找不到文件''
- javascript - 添加更多文本时,输入类型单选会放大
- c# - 在按钮上隐藏和显示面板单击c#
- python - 使用 python 登录
- ios - iOS 应用商店评级(跟踪用户的操作)
- ajax - 将 Ajax 与同位素结合使用
- php - php mysql登录/注册当前登录用户不同的代码
- spring-webflux - Spring Boot webFlux内部单声道不发射数据
- javascript - dsp:input 是否支持 onclick?