本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
自动进行AWS资源评估
由 Naveen Suthar (AWS)、Arun Bagal ()、Manish Garg (AWS) 和 Sandeep Gawande (AWS) 创作 AWS
摘要
此模式描述了一种使用 AWSCloud Development Kit (AWSCDK) 设置资源评估功能的自动方法。通过使用这种模式,运营团队可以自动收集资源审计详细信息,并在单个仪表板上查看AWS账户中部署的所有资源的详细信息。这在以下用例中很有用:
识别基础设施即代码 (IaC) 工具,隔离由不同 IaC 解决方案(例如 HashiCorp Terraform
、AWS CloudFormationAWSCDK、和AWS命令行界面 ())创建的资源 AWS CLI 获取资源审计信息
该解决方案还将帮助领导团队从单个仪表板获取有关AWS账户中资源和活动的见解。
注意Amazon QuickSight 是一项付费服务。在运行它来分析数据和创建控制面板之前,请先查看 Amazon 的 QuickSight 定价 |
先决条件和限制
先决条件
一个活动的 AWS 账户。
AWS具有配置资源访问权限的 Identity and Access Management (IAM) 角色和权限
创建的允许访问亚马逊简单存储服务 (Amazon S3) 和亚马逊 A thena 的亚马逊 QuickSight 账户
AWSCDK已安装版本 2.55.1 或更高版本
已安装 3.9 或更高版本的 Python
。
限制
此解决方案部署到单个AWS账户。
除非已经设置并将数据存储在 S3 存储桶中,否则AWS CloudTrail 该解决方案不会跟踪部署前发生的事件。
产品版本
AWSCDK版本 2.55.1 或更高版本
Python 版本 3.9 或更高版本
架构
目标技术堆栈
Amazon Athena
AWS CloudTrail
AWS Glue
AWS Lambda
Amazon QuickSight
Amazon S3
目标架构
该AWSCDK代码将部署在账户中设置资源评估功能所需的所有资源。AWS下图显示了向 AWS Glue、Amazon Athena 和发送 CloudTrail 日志的过程。 QuickSight
CloudTrail 将日志发送到 S3 存储桶进行存储。
事件通知会调用 Lambda 函数,以处理日志并生成经过筛选数据。
筛选后的数据存储至另一个 S3 存储桶。
在 S3 存储桶中的筛选数据上设置 AWS Glue 爬虫,以便在 Glue 数据目录表中AWS创建架构。
筛选后的数据已就绪,可供 Amazon Athena 查询。
通过访问查询的数据 QuickSight 进行可视化。
自动化和扩缩
如果 Organization AWS s 中有组织范围的 CloudTrail 跟踪,则可以将此解决方案从一个AWS账户扩展到多个账户。AWS通过在组织 CloudTrail 级别部署,您还可以使用此解决方案来获取所有所需资源的资源审计详细信息。
此模式使用AWS无服务器资源来部署解决方案。
工具
AWS 服务
Amazon Athena 是一项交互式查询服务,可帮助您使用标准直接在 Amazon S3 中分析数据。SQL
AWSCloud Development Kit (AWSCDK) 是一个软件开发框架,可帮助您在代码中定义和配置AWS云基础架构。
AWS CloudFormation帮助您设置AWS资源,快速一致地配置资源,并在各个AWS账户和AWS地区的整个生命周期中对其进行管理。
AWS CloudTrail帮助您审计AWS账户的治理、合规和运营风险。
AWSGlu e 是一项完全托管的提取、转换和加载 (ETL) 服务。它可以帮助您在数据存储和数据流之间对数据进行可靠地分类、清理、扩充和移动。此模式使用 AWS Glue 爬虫和 AWS Glue 数据目录表。
AWSLambda 是一项计算服务,可帮助您运行代码,而无需预置或管理服务器。它仅在需要时运行您的代码,并且能自动扩缩,因此您只需为使用的计算时间付费。
Amazon QuickSight 是一项云规模的商业智能 (BI) 服务,可帮助您在单个控制面板中可视化、分析和报告数据。
Amazon Simple Storage Service (Amazon S3) 是一项基于云的对象存储服务,可帮助您存储、保护和检索任意数量的数据。
代码存储库
此模式的代码可在 GitHub infrastructure-assessment-iac-automation
代码存储库包含以下文件和文件夹:
lib
文件夹-用于创建AWS资源的AWSCDK构造 Python 文件src/lambda_code
— 在 Lambda 函数中运行的 Python 代码requirements.txt
— 必须安装的所有 Python 依赖项列表cdk.json
— 用于提供启动资源所需值的输入文件
最佳实践
为 Lambda 函数设置监控和警报。有关更多信息,请参阅 Lambda 函数监控和故障排除。有关使用 Lambda 函数时的一般最佳实践,请参阅文档。AWS
操作说明
任务 | 描述 | 所需技能 |
---|---|---|
在本地机器克隆存储库。 | 要克隆存储库,请运行 | AWS DevOps, DevOps 工程师 |
设置 Python 虚拟环境以及安装所需依赖项。 | 要设置 Python 虚拟环境,请运行以下命令。
要设置所需依赖项,请运行命令 | AWS DevOps, DevOps 工程师 |
设置AWSCDK环境并合成AWSCDK代码。 |
| AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
为待部署堆栈的账户和区域导出变量。 | 要使用环境变AWSCDK量为提供AWS凭证,请运行以下命令。
| AWS DevOps, DevOps 工程师 |
设置AWSCLI个人资料。 | 要为账户设置AWSCLI个人资料,请按照AWS文档中的说明进行操作。 | AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
在账户中部署资源。 | 要使用在AWS账户中部署资源 AWSCDK,请执行以下操作:
| AWS DevOps |
运行 AWS Glue 搜寻器并创建数据目录表。 | AWSGlue 搜寻器用于保持数据架构的动态性。该解决方案通过按照 Glue 搜寻器AWS调度程序的定义定期运行爬虫来创建和更新 Glue 数据目录表AWS中的分区。在输出 S3 存储桶中有数据后,请使用以下步骤运行 Glue AWS 爬网程序并创建用于测试的数据目录表架构:
注意该AWSCDK代码将 AWS Glue 爬虫配置为在特定时间运行,但您也可以按需运行。 | AWS DevOps, DevOps 工程师 |
部署 QuickSight 构造。 |
| AWS DevOps, DevOps 工程师 |
创建 QuickSight 仪表板。 | 要创建示例 QuickSight 仪表板和分析,请执行以下操作:
有关更多信息,请参阅在 Amazon 中启动分析 QuickSight和在 Amazon 中启动可视化类型 QuickSight。 | AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
移除AWS资源。 |
| AWS DevOps, DevOps 工程师 |
任务 | 描述 | 所需技能 |
---|---|---|
监控和清理手动创建资源。 | (可选)如果您的组织有使用 IaC 工具创建资源的合规性要求,则可以通过使用AWS资源评估工具自动化来获取手动配置的资源来实现合规性。您也可以使用此工具将资源导入至 IaC 工具或重新创建这些资源。若要监控手动配置的资源,请执行以下概要任务:
| AWS DevOps, DevOps 工程师 |
故障排除
事务 | 解决方案 |
---|---|
AWSCDK返回错误。 | 有关问题的帮助,请参阅常见AWSCDKAWSCDK问题疑难解答。 |
相关资源
其他信息
多个账户
要为多个账户设置AWSCLI凭证,请使用AWS个人资料。有关更多信息,请参阅 “设置
AWSCDK命令
使用时 AWSCDK,请记住以下有用的命令:
列出应用程序的所有堆栈
cdk ls
发射合成后的模板 AWS CloudFormation
cdk synth
将堆栈部署到您的默认AWS账户和区域
cdk deploy
将已部署的堆栈与当前状态比较
cdk diff
打开AWSCDK文档
cdk docs