写点什么

AWS Systems Manager 的新自动化功能

  • 2019-11-21
  • 本文字数:2905 字

    阅读完需:约 10 分钟

AWS Systems Manager 的新自动化功能

今天,我们宣布在 AWS Systems Manager 内推出附加自动化功能。如果您尚未使用 Systems Manager,您可以使用这项提供统一用户界面的服务,以便可以从多个 AWS 服务中查看操作数据,并在您的 AWS 资源间自动执行操作任务。


随着这个新版本的发布,这项服务变得更加强大。我们已在 AWS Systems Manager 中增加了附加功能,可使您构建、运行及与您团队或组织内的其他人共享自动化,从而使您的基础设施管理更具有可重复性、更不易出错。


在导航菜单的 AWS Systems Manager 控制台内,有一个称为自动化的项目,如果我点击该菜单项,将会看到执行自动化按钮。



当我点击此按钮时,系统会询问我想要运行哪个文档。AWS 提供文档库供选择,但今天,我希望构建自己的文件,因此,我将点击创建文档按钮。



进行此操作后,我将进入新的屏幕,从该屏幕中,我可以创建一个主要执行 Python 或 PowerShell 脚本的文档(有时候也称为自动化操作手册)。


控制台为我提供两个编辑文档的选项:一个 YAML 编辑器或提供指导性逐步用户界面且能够包含每个工作流程步骤文档的“生成器”工具。


因此,我们来了解一下如何构建和运行简单的自动化。当我使用生成器工具创建文档时,首先需要的是文档名称。



接下来,我需要提供描述。正如下文所示,我能够使用 Markdown 对描述进行格式化。描述是对您的文档作用进行说明的绝佳机会,由于大多数用户都希望与其团队中的其他人共享文档并构建文档库来解决日常问题,描述非常有价值。



另外,系统要求我提供文档的参数。这些参数可用于您将在稍后创建的所有脚本中。在示例中,我创建了三个参数:imageIdtagValueinstanceType。当我开始执行这个文档时,我将有机会提供这些参数的值,这些值将覆盖我设置的任何默认值。



当有人执行我的文档时,所执行的脚本将与 AWS 服务交互。运行文档时,大多数操作都具有用户权限,而且还具有提供代入角色的选项。然而,对于具有运行脚本操作的文档,当脚本调用任何 AWS API 时,需要该角色。


您可以在生成器工具中全局设置代入角色;然而,我希望将称为 assumeRole 的参数添加到我的文档中,这将使执行角色的任何人都能提供不同的角色。



然后,您可以通过在代入角色属性文本框中使用 {{assumeRole}} 语法将此参数与全局 assumeRole 连接(我已将我的参数命名为 assumeRole,但您可以使用您喜欢的名称,只需要确保给赋予参数的名称是您在双括号语法中输入的名称,例如 {{yourParamName}})。



当我的文档设置完成后,我需要创建文档的第一步。您的文档可以包含 1 个或多个步骤,且您可以使用分支策略创建复杂的工作流程,例如基于某个参数或失败的步骤。在本示例中,我仍然打算创建三个步骤,这些步骤将一个接一个的执行。同样,您需要为步骤提供名称和描述。此描述还可以包含标记。您需要选择一种操作类型,在此示例中,我将选择运行脚本



通过“运行脚本”操作类型,我可以在 Python 或 PowerShell 中运行脚本,无需任何基础设施来允许脚本。重要的是,要认识到此脚本将不在您的其中一个 EC2 示例中运行。脚本在托管的计算环境中运行。您可以在首选项页面上配置 Amazon CloudWatch 日志组,以将输出发送至您选择的 CloudWatch 日志组中。


在此演示中,我编写了一些 Python 来创建 EC2 实例。您将注意到,此脚本使用的是适用于 Python 的 AWS 软件开发工具包。我根据以参数形式传递到脚本中的 image_idtag_value 和操作 instance_type 创建实例。



要将参数传递至脚本中,我在其他输入部分中将 InputPayload 选为输入类型。然后,我在“输入值”文本框中使用特定的 YAML 格式将全局参数连接到我将在脚本中使用的参数。您还将发现,我使用双括号语法来引用全局参数,例如 {{imageId}}


输出部分中,我还连接了可以在后续步骤中使用的输出参数。



接下来,我将在文档中添加第二个步骤。这一次,我将轮询实例,以查看其状态是否已切换到确定。此代码令人兴奋的地方在于,从上一步传递到脚本中的 InstanceId。此示例演示了如何将执行步骤连接到一起来使用前面步骤的输出。


Python


def poll_instance(events, context):    import boto3    import time
ec2 = boto3.client('ec2')
instance_id = events['InstanceId']
print('[INFO] Waiting for instance to enter Status: Ok', instance_id)
instance_status = "null"
while True: res = ec2.describe_instance_status(InstanceIds=[instance_id])
if len(res['InstanceStatuses']) == 0: print("Instance Status Info is not available yet") time.sleep(5) continue
instance_status = res['InstanceStatuses'][0]['InstanceStatus']['Status']
print('[INFO] Polling get status of the instance', instance_status)
if instance_status == 'ok': break
time.sleep(10)
return {'Status': instance_status, 'InstanceId': instance_id}
复制代码


要将参数传递到第二个步骤中,请注意,我使用双括号语法引用前一个步骤的输出。输入值文本框中的值 {{launchEc2Instance.payload}}是步骤 launchEc2Instance 的名称,其次是输出参数 payload 的名称。



最后,我将添加最后一个步骤。该步骤将运行 PowerShell 脚本并使用适用于 PowerShell 的 AWS 工具。我添加这个步骤只是为了说明,您可以将 PowerShell 用作 Python 的替代。


您将在第一行注意到,我必须先安装 AWSPowerShell.NetCore 模块并使用 -Force 交换器才能开始与 AWS 服务进行交互。


在此步骤中,只需要从 LaunchEc2Instance 步骤中获取 InstanceId 输出,并用它返回 ECS 实例的 InstanceType



值得注意的是,我必须按照与前面相同的方式配置其他输入,从而将参数从 LaunchEc2Instance 步骤传递到此步骤中。



现在,我们的文档已创建好,可以执行文档。我将前往菜单的操作与更改部分并从此屏幕中选择自动化,然后再点击执行自动化按钮。然后,我将选择我要执行的文档。由于此文档是我创建的,我可以在由我拥有选项卡中找到此文档。



如果我点击之前创建的 LaunchInstance 文档,我将进入文档详细信息屏幕,该屏幕将显示我添加的描述。通过这份格式良好的描述,我可以为我的文档生成文档,并且还能使其他人了解它的用途。



当我点击下一步时,系统将要求我为我的文档提供任何输入参数。我将添加希望在执行此自动化时使用的 imageId 和此角色的 ARN。需要记住的是,此角色需要具有调用脚本所请求的任何服务的权限。在我的示例中,这意味着,此角色需要能够创建 EC2 实例。



当文档执行后,我将进入一个屏幕,该屏幕显示文档的步骤并为我提供每个步骤所花费时间的详细信息及每个步骤的各自成功或失败情况。我还可以深入了解每个步骤并检查日志。如您所见,我的文档的全部三个步骤均已成功完成,如果我前往 Amazon Elastic Compute Cloud (EC2) 控制台,我将拥有使用标签 LaunchedBySsmAutomation 创建的 EC2 实例。



现在,可以在 AWS Systems Manager 控制台内在所有区域使用这些新功能,因此,您可以立即开始使用它们。


快乐自动化!


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/new-automation-features-in-aws-systems-manager/


2019-11-21 08:00624

评论

发布
暂无评论
发现更多内容

首届物联网数据基础设施案例大赛结果出炉,与 EMQ 和英特尔共同见证物联网的无限可能

EMQ映云科技

物联网 IoT intel emq

我们两周岁啦!InfoQ写作平台正式升级为InfoQ写作社区

InfoQ写作社区官方

热门活动 InfoQ写作社区2周年

远程代码执行漏洞复现分析

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

为什么要选择Web3?它有什么好处?

CECBC

解读谷歌 Pathways 架构(二):向前一步是 OneFlow

OneFlow

人工智能 机器学习 深度学习 深度学习框架 谷歌

Apache ShenYu源码阅读系列-Divide插件

子夜2104

无人自助洗车机多少钱一台?不是自动

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 无人自助洗车机

FAQ是什么?如何高效地创建一个好的FAQ页面?

小炮

FAQ

2022年中国低延时技术市场洞察

易观分析

低延时

数字人民币试点扩大,市场化问题如何解决?

CECBC

云原生虚拟化的最佳拍档:Kube-OVN + KubeVirt 【附有奖调研】

York

Kubernetes 云原生 网络性能 云原生网络 网络虚拟化

TDesign 更新周报(2022年4月第2周)

TDesign

机票报价高并发实施的关键路径

Qunar技术沙龙

高并发 后端技术

24小时无人洗车加盟!就自助洗车加盟

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 24小时无人洗车加盟

云效多云视角团队协作方式,让团队协作更高效

阿里云云效

阿里云 项目管理 运维 研发管理 团队协作

为什么领导不喜欢提拔老实人?

方云AI研发绩效

团队管理 研发管理 数字化转型 职场 PUA 职场发展

有小程序还没有App?试试用小程序转App功能

Speedoooo

APP开发 移动端开发 小程序转app

恒源云(Gpushare)_FAIR CVPR2022新作DVT是个啥?

恒源云

深度学习 CV transform

华为与OpenInfra基金会十年共筑开源基础设施平台

科技热闻

等了15年,这本豆瓣评分高达9.3的编程巨著终于出版了!

图灵教育

2022春季校园招聘·复旦站,即将开启~

非凸科技

免费训练营限时抢报|大咖带你玩转PolarDB for PostgreSQL开源训练营

阿里云数据库开源

数据库 postgresql 开源 阿里云; polarDB

模块二作业

Dean.Zhang

架构实战营

Reactor实现http服务器,附完整代码

Linux服务器开发

后台开发 reactor HTTP Linux服务器开发 服务端开发

小波从此逝,江海寄余生,不但是文坛巨擘还是不世出的编程奇才,王小波离世25周年

刘悦的技术博客

编码习惯 编码 代码 编程、 编码规范

艾瑞咨询:2022年隐私计算卓越者——洞见科技

洞见科技

隐私计算 数据智能解决方案

InfoQ专访龙蜥社区陈绪:从CentOS 停服说起,龙蜥操作系统的开源观

OpenAnolis小助手

centos 开源 操作系统 开放原子开源基金会 龙蜥社区

【分享汇总】25个主题分享,360°领略OpenHarmony最新技术版图

OpenHarmony开发者

OpenHarmony

自助洗车设备全套多少钱?有了解的吗

共享电单车厂家

自助洗车机价格 自助洗车加盟 自助洗车设备多少钱

想开一家24小时的自助洗车店要多少钱

共享电单车厂家

自助洗车机多少钱 24小时自助洗车店 开自助洗车店多少钱

6元自助洗车怎么样?想加盟自助洗车

共享电单车厂家

自助洗车加盟 6元自助洗车 自助洗车怎么样

AWS Systems Manager 的新自动化功能_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章