使用 Amazon Bedrock 代理交互式生成基础设施代码 机器学习博客
通过Amazon Bedrock代理互动生成基础设施代码
关键要点
在这篇文章中,我们探讨了如何利用Amazon Bedrock代理直接从上传的架构图生成符合组织标准的基础设施代码IaC脚本。这种方法能够加速部署、减少错误,并确保遵循安全指南。
在云基础设施的多样化工具包中,Amazon Bedrock代理为希望提升其基础设施即代码IaC流程的团队提供了一个实用且创新的选项。Amazon Bedrock代理自动化了提示工程和用户请求任务的协调工作。经过配置后,代理构建提示并用您的公司特定信息进行增强,以用自然语言响应用户。
该解决方案展示了如何配置Amazon Bedrock代理以接受云架构图,自动分析它们,并生成Terraform或AWS CloudFormation模板。该解决方案使用了检索增强生成RAG,以确保生成的脚本符合组织需求和行业标准。一个关键特性是代理能够动态与用户进行互动。在基础设施代码生成过程中,Amazon Bedrock代理通过分析提供的图表并向用户询问以填补任何空白,从而积极探索额外信息。这种互动使得基础设施代码配置更加个性化和准确。
Amazon Bedrock是一个完全托管的服务,通过单一API提供来自领先人工智能AI公司的高性能基础模型FMs,如AI21 Labs、Anthropic、Cohere、Meta、Mistral AI、Stability AI和亚马逊。该服务还具备构建生成AI应用程序所需的广泛能力,同时确保安全性、隐私和负责任的AI。
在本文中,我们将深入探讨Amazon Bedrock代理如何有效生成定制的、符合组织标准的基础设施代码脚本,从而帮助加快部署、减少错误,并确保遵循安全指南。
解决方案概述
在深入部署过程之前,让我们先浏览下图1中展示的架构的关键步骤。
图1:通过架构图创建基础设施代码的高层概述
通过Amazon Bedrock聊天控制台的初始输入:用户首先在Amazon Bedrock聊天控制台中输入他们的AWS S3存储桶名称和存储架构图的对象键名称。例如,如果架构图保存为s3//testbucket/architecturediagrampng,用户将输入testbucket作为 S3 存储桶名称以及architecturediagrampng作为对象名称。
图表分析和查询生成:Amazon Bedrock代理将架构图位置转发给一个动作组,调用一个AWS Lambda函数。该函数从指定的S3桶中检索架构图,使用Amazon Bedrock模型分析图表,并生成图表摘要。同时生成有关创建AWS服务IaC所需的缺失组件、依赖关系或参数值的问题。该详细响应随后被发送回代理。
互动和用户确认:代理将生成的问题展示给用户并记录他们的回答。接下来,代理提供架构图的综合摘要以及用户提供的额外输入。用户可以批准此配置或建议任何必要的调整。在收到用户的确认后,代理将该信息传递给第二个动作组以生成IaC。
IaC生成和部署:第二个动作组调用一个Lambda函数,处理用户输入的数据及来自Amazon Bedrock知识库的组织特定编码规范,以创建IaC。生成后,IaC会自动推送到指定的GitHub存储库。
先决条件
您应具备以下条件:
了解Amazon Bedrock代理、提示工程、Amazon Bedrock知识库、Lambda函数和AWS身份与访问管理IAM。拥有一个AWS账户,并具备创建Amazon Bedrock代理和知识库、Lambda函数和IAM角色的相应IAM权限。为Amazon Bedrock代理创建一个服务角色。拥有一个GitHub账户以及用于存储生成的Terraform脚本的存储库。部署步骤
该解决方案可以通过输入架构图来创建IaC使用Terraform或CloudFormation。为了本博客文章的目的,我们重点讨论如何创建Terraform IaC。部署解决方案的步骤如下:
第1步:配置Amazon Bedrock知识库:配置知识库KB使您能访问有关组织标准Terraform模块的信息。请按照以下步骤设置您的知识库:
登入并访问Amazon Bedrock的AWS管理控制台,直接进入知识库部分。这是创建新知识库的起点。输入一个清晰且描述性的名称,反映您知识库的目的,例如Terraform KB。指派带有必要权限的预配置IAM角色。通常最好让Amazon Bedrock为您创建此角色,以确保它具有正确的权限。通过将JSON文件上传到启用加密的S3桶中定义数据源。该文件应包含AWS服务和Terraform模块的结构化列表。有关JSON结构的示例,请参考此资源库。选择默认的嵌入模型。对于大多数用例,Amazon Bedrock Titan G1 Embeddings Text模型就足够了。它已预配置并准备好使用,从而简化流程。使用托管的向量存储,允许Amazon Bedrock为您创建和管理在Amazon OpenSearch Service中的向量存储。选择知识库,然后在数据源部分选择同步以开始数据摄取。当数据摄取完成时,若成功会出现绿色成功横幅。仔细检查所有输入的信息以确保准确,特别注意S3桶URI和IAM角色的详细信息。第2步:配置Amazon Bedrock代理:
打开Amazon Bedrock控制台,在左侧导航面板中选择代理,然后选择创建代理。输入代理详细信息,包括代理名称和描述可选。接下来,通过IAM服务角色授予代理对AWS服务的权限。这为您的代理提供了必要服务的访问权限,如 Lambda。从Amazon Bedrock选择一个基础模型例如,Anthropic Claude 3 Sonnet。为了使用Amazon Bedrock代理创建Terraform代码,请将以下指令附加到代理:
“协助用户为提供的架构图创建IaC。询问用户S3存储桶名称和存储架构图的对象名称。收到信息后,运行分析查询动作组。给出结构化摘要,仅询问用户从动作组响应中获得的问题。获取用户的答案并给出详细摘要。获取用户批准。当获得批准后,将所有信息连同S3桶名称和对象名称作为IaC部署动作组的输入,并运行该动作组。”
第3步:配置代理的动作组:在完成初始代理配置并添加上述指令后,需要为代理添加两个动作以通过传递架构图创建Terraform IaC。
创建一个与Lambda函数相关联的动作组创建Lambda函数的步骤请参考Lambda入门,该Lambda函数旨在分析架构图并生成有关任何缺失组件、依赖关系或创建AWS服务IaC所需参数值的问题。在用户输入S3存储桶和对象详细信息后代理会调用该动作组。然后将响应转发给代理,代理进行互动会话以收集用户的任何缺失信息。有关Lambda代码和OpenAPI模式的更多信息,参见资源库。
建立第二个动作组,关联到另一个负责创建Terraform代码并将其上传到GitHub存储库的Lambda函数。仅在用户审核并批准基础设施配置后,此组才被调用。有关Lambda代码和OpenAPI模式的更多信息,参见资源库。
第4步:将动作组添加到代理:
为每个动作组指定一个描述性名称,并在描述字段中详细说明其功能。这有助于阐明每个组在工作流中的目的。对于每个动作组,选择之前设置的相应Lambda函数。这些函数在调用动作时运行业务逻辑。确保选择每个Lambda函数的正确版本。有关更多详细信息,请参见动作组Lambda函数部分。提供指向每个动作组API模式的Amazon S3 URI。此模式应包含API的描述、结构和参数。API对于管理工作流至关重要,例如接收用户输入、调用Lambda函数以运行流程、验证输入、启动Terraform模块创建及监控提供状态。有关更多指导,请参见动作组OpenAPI模式部分。以下截图展示了用户与Amazon Bedrock代理的互动示例。

以下截图展示了Terraform输出的示例。
加速器清理
此演示中使用的服务可能会产生费用。请按照以下步骤清理您的资源:
如果不再需要,删除Lambda函数。删除创建的动作组和Amazon Bedrock代理。清空并删除用于存储架构图的S3桶。从GitHub存储库中删除生成的Terraform脚本。删除不再需要的Amazon Bedrock知识库。结论
Amazon Bedrock代理利用生成AI将架构图转化为符合AWS部署标准的基础设施代码IaC脚本,如Terraform和AWS CloudFormation。此能力对于向云转型的工程师而言是一个重要工具,它加快了云的采用进程,同时确保从一开始就遵循既定的最佳实践。
通过Amazon Bedrock代理的互动功能,IaC生成的自动化不仅简化了初始设置,还显著改善了基础设施管理等持续操作。虽然本文集中于IaC创建,但Amazon Bedrock代理的互动能力可以应用于各种AWS服务,为管理和优化云基础设施提供了动态、全面的解决方案。
准备好利用Amazon Bedrock的生成AI来简化您的云部署过程了吗?开始深入了解Amazon Bedrock用户指南,看看它如何促进您组织向云的转型。若需要专业协助,可考虑联系AWS专业服务,以最大限度地提升使用Amazon Bedrock的效率和效益。利用Amazon Bedrock,拥抱迅速、安全和高效的云转型潜力。今天就迈出第一步,发现如何利用生成AI革新您的云基础设施方法。
作者简介
阿基尔拉杰亚拉梅利是AWS的云基础设施架构师,专注于优化云基础设施,以增强数据安全性和成本效率。他巧妙地将技术解决方案与商业策略相结合,创造可扩展、可靠且安全的云环境。阿基尔构建以客户商业成果为重点的技术解决方案,引入生成AIGen AI技术以推动创新。他具有深厚的AWS经验和软件开发生命周期SDLC中的DevOps方法论背景,领导关键的实施和迁移项目。他持有计算机科学硕士学位。在专业工作之外,阿基尔喜欢观看和参与体育活动。
艾比托马斯专注于策划和开发自定义AWS登录区域,重点利用生成AI增强云基础设施自动化。在AWS专业服务中,他的专业知识对架构解决方案至关重要,这些解决方案简化了云采用,确保AWS用户的操作框架安全高效。他以创新的方法解决云挑战而闻名,并致力于推动云服务能力的发展。