Skai 如何利用 亚马逊云科技 Step Functions 来执行其标签政策

Skai 是一个独立的全球营销平台,用于在全球所有最具影响力的数字渠道上进行策略、评估和最佳激活。Skai的解决方案提供数据驱动的见解和优化技术,帮助公司做出明智的决策并扩大关键出版商的绩效。

Skai 拥有一个高度技术化的工程组织,拥有 350 多名软件工程师、数据专家和 DevOps 工程师。

挑战

作为向云原生架构迁移的一部分,我们正在将许多工作负载转移到亚马逊云科技,其中包括 亚马逊弹性计算云 (EC2)、Amazon RDS、亚马逊弹性 Kubernetes 服务 (EKS) 等服务。

作为标准,我们希望在创建时使用预先确定的强制标签来标记所有云资源。

我们选择将重点放在 “项目” 标签上,这是我们成本优化工作的重要组成部分。

我们的开发文化允许大多数开发人员预置不同的 亚马逊云科技 资源,这导致我们的 亚马逊云科技 支出增加。如果没有适当的资源标记,就很难对不同的资源进行分组并了解其业务价值。

随着许多不同的用户和团队现在都在使用我们的 亚马逊云科技 云基础设施,我们注意到越来越多的资源是在没有必需的强制标签的情况下创建的。

当我们尝试使用不同的工具(如 亚马逊云科技 标签编辑 器和自定义 boto3 脚本)来增加标记 覆盖范围时,未标记的资源百分比正在迅速增加。

我们想监控未标记资源的增加,这样我们就可以看到最大的贡献者(通常是自动化)并对其进行修复,然后再实施下一阶段,防止使用 服务控制策略 (SCP) 策略 创建这些资源。

解决方案概述

我们的解决方案分为两个阶段:

  1. 第 1 阶段 — 识别没有 “项目” 标签的新创建的资源。
  2. 第 2 阶段-防止使用 服务控制策略 (SCP) 创建没有 “项目” 标签的资源。

在这篇博文中,我们将重点介绍第 1 阶段。

为了了解在没有我们强制标签的情况下创建的资源,我们利用了 亚马逊云科技 Config,特别是 亚马逊云科技 提供的必需 标签 规则 、亚马逊云科技 Step Functions、亚马逊云科技 Lambda、 亚马逊云科技 D ynamoDB 和 亚马逊云科技 Cloudtrail

这也可以使用单一的 亚马逊云科技 Lambda 来实现,但是使用 亚马逊云科技 Step Functions 可以直观地查看每个步骤,并提供使用最少代码进行调试、错误处理和模块化的直观方式。下图显示了我们的解决方案的概述:

Figure 1. High Level Archtcure

图 1。高级架构

我们创建了一个 亚马逊云科技 Step Function,它生成一份报告,其中列出了在过去 24 小时内创建的、没有我们的强制标签的资源,然后通过电子邮件将此报告发送给我们。

该报告使我们能够快速找到新创建的未标记资源并确定这些资源的创建者。通过阻止创建更少的资源,这使第二阶段的实施变得更加容易。

以下列表是我们如何利用 亚马逊云科技 服务以及如何在解决方案中配置活动部分。

  1. 亚马逊云科技 Config — 使用 亚马逊云科技 提供的必需标签规则收集不合规资源(没有 “项目” 标签的资源)。
  2. 亚马逊云科技 Lambda — 我们在步进函数中使用的多入口点函数。它提供以下功能:
    1. getYesterdayDate — 筛选过去 24 小时内创建的资源。
    2. getLateStelement — 使用 UserAgent 和 CreatorArn 丰富每种资源的信息。
    3. parseeMail — 发送一封电子邮件,报告在过去 24 小时内使用 “必需标签” 亚马逊云科技 Config 规则创建的受支持的不合规资源。
  1. 亚马逊云科技 DynamoDB — 将所有筛选的资源(过去 24 小时内创建的无强制标签的资源)记录在专用表中。稍后将在发送报告的 Lambda 函数中使用此表。
  2. 亚马逊云科技 Step Functions — 我们解决方案的支柱,用于连接和协调用于实现目标的不同部分和服务。

亚马逊云科技 Cloudtrail — 对于每种不合规的资源,我们将查询 Cloudtrail,以使用 UserAgent 和 CreatorArn 来丰富我们的报告。在修复资源并确保使用强制标签创建资源时,这有助于指导我们朝着正确的方向前进。例如,如果我们看到特定资源是使用 “CreatorArn” 作为 EKS 角色,使用 “UserAgent” 作为 “eks.amazonaws.com” 创建的,我们可能会立即知道需要修复哪些内容和位置。

为了避免达到 亚马逊云科技 Step Function 历史配额,我们将工作流程分为两个步骤函数 (https://docs.aws.amazon.com/step-functions/latest/dg/bp-history-limit.html)

  1. 地图步骤函数-遍历来自 亚马逊云科技 Config 的分页评估结果,对于结果的每一页,它都会触发我们的 Map 步骤函数。
Figure 2. Main Step Function- Iterate through AWS Config report

图 2。映射步骤函数-遍历 亚马逊云科技 Config 报告

  1. 映射步骤函数-遍历 亚马逊云科技 Config 规则评估中每个页面中的不合规资源。
Figure 3. Second Step Function- Iterate over non-compliant resources

图 3。第二步函数-遍历不合规的资源

Skai基础设施工程总监丹尼·扎尔金德表示:“StepFunctions使我们能够以低代码方式快速创建与多个亚马逊云科技服务集成的工作流程,否则使用自定义逻辑或开源工具将花费更长的时间才能实现。这使我们能够加强资源标签执法力度,改善成本控制。在大规模云迁移期间,我们能够以可控的方式增加账户成本,仅增加了很小的、信号位数的成本百分比。”

结论

确保使用强制标签创建资源对于确保合规性和控制成本至关重要。
在这篇文章中,我们看到了如何通过利用 亚马逊云科技 Step Functions 来快速高效地维护较高的标记资源比例(> 85%)并追踪未加标签的资源创建者。

在实施了我们的解决方案并修复了所有发现之后,我们使用亚马逊云科技 Service控制策略启动了下一阶段的标签工作,该策略从一开始就积极阻止创建没有强制标签的资源。

作者简介:

Roman Fainerman Roman

Fainerman 是一名高级开发运营工程师、Skai 的技术主管和 亚马逊云科技 认证的专业开发运营工程师。

史蒂夫·马塔尔

史蒂夫·马塔尔是 Skai 的 DevOps 架构师。

Judith Lehner

Judith Lehner 是位于以色列的 亚马逊云科技 的技术客户经理,她还专注于帮助客户开展成本优化活动。

Eran Balan Eran

Balan 是一名 亚马逊云科技 高级解决方案架构师,居住在以色列。他与数字原生客户合作,为他们提供在 亚马逊云科技 环境中构建可扩展架构的架构指导。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。