亚马逊AWS官方博客

使用 AWS Console-to-Code 控制台转代码功能(现已正式发布)将 AWS 管理控制台操作转换为可重复使用的代码

今天,我们宣布推出 AWS Console-to-Code 控制台转代码功能正式发布版本(GA),该功能可以轻松地将 AWS 管理控制台操作转换为可重复使用的代码。您可以使用 AWS Console-to-Code 控制台转代码功能记录控制台中的操作和工作流程,例如启动 Amazon Elastic Compute Cloud(Amazon EC2)实例,以及查看控制台操作的 AWS 命令行界面(AWS CLI)命令。只需单击几下,Amazon Q 就可以使用您选择的基础设施即代码(IaC)格式为您生成代码,包括 AWS CloudFormation 模板(YAML 或 JSON)和 AWS Cloud Development Kit(AWS CDK)(TypeScript、Python 或 Java)。这可以作为基础设施自动化的起点,并根据您的生产工作负载进行进一步定制,将其纳入管道,等等。

自我们去年宣布发布预览版以来,AWS Console-to-Code 控制台转代码功能已经获得客户的积极反馈。在正式发布(GA)版本中,我们根据客户的反馈继续进行了优化,使其更加完善。

GA 中的新功能

  • 支持更多服务 — 预览版仅支持 Amazon EC2 服务。在 GA 中,AWS Console-to-Code 控制台转代码功能已扩展支持,新增对 Amazon Relational Database Service(RDS)Amazon Virtual Private Cloud(Amazon VPC)的支持。
  • 简化体验 — 新的用户体验使客户可以更轻松地管理原型设计、录制和代码生成工作流程。
  • 预览代码 — EC2 实例和自动扩缩组的启动向导已更新,允许客户在不实际创建资源的情况下为这些资源生成代码。
  • 高级代码生成 — AWS CDK 和 CloudFormation 的代码生成由 Amazon Q 机器学习模型提供支持。

AWS Console-to-Code 控制台转代码功能入门
让我们从一个简单的场景开始:启动 Amazon EC2 实例。首先,访问 Amazon EC2 控制台。在右侧找到 AWS Console-to-Code 控制台转代码功能小部件,然后选择开始录制以启动录制。

现在,使用 Amazon EC2 控制台中的启动实例向导来启动 Amazon EC2 实例。实例启动后,选择 Stop(停止)以完成录制。

Recorded actions(已录制操作)表中,查看已录制的操作。使用 Type(类型)下拉菜单筛选出写入操作 [Write(写入)]。选择RunInstances操作。选择 Copy CLI(复制 CLI)以复制相应的 AWS CLI 命令。

这是我从 AWS Console-to-Code 控制台转代码功能中获得的 CLI 命令:

aws ec2 run-instances \
  --image-id "ami-066784287e358dad1" \
  --instance-type "t2.micro" \
  --network-interfaces '{"AssociatePublicIpAddress":true,"DeviceIndex":0,"Groups":["sg-1z1c11zzz1c11zzz1"]}' \
  --credit-specification '{"CpuCredits":"standard"}' \
  --tag-specifications '{"ResourceType":"instance","Tags":[{"Key":"Name","Value":"c2c-demo"}]}' \
  --metadata-options '{"HttpEndpoint":"enabled","HttpPutResponseHopLimit":2,"HttpTokens":"required"}' \
  --private-dns-name-options '{"HostnameType":"ip-name","EnableResourceNameDnsARecord":true,"EnableResourceNameDnsAAAARecord":false}' \
  --count "1"

这个命令可以轻松修改。在此示例中,我将其更新为启动两个类型为 t3.micro--instance-type)的实例(--count 2)。这只是一个简单的示例,但同样的技巧可以应用于其他工作流程。

我使用 AWS CloudShell 执行了这个命令,它按预期运行,并成功启动了两个 t3.micro EC2 实例。

一键生成 CLI 代码的体验基于执行操作(启动 EC2 实例)时使用的 API 命令。有趣的是,当您在控制台中完成操作时,配套的屏幕会显示已录制操作。而且,得益于具有开始和停止功能的交互式 UI,您可以轻松地为原型设计明确界定操作范围。

使用 AWS CDK 生成 IaC
AWS CDK 是一个开源框架,用于以代码形式定义云基础设施,并通过 AWS CloudFormation 对其进行配置。借助 AWS Console-to-Code 控制台转代码功能,您可以为基础设施工作流程生成 AWS CDK 代码(目前支持 Java、Python 和 TypeScript)。

让我们继续讨论 EC2 启动实例的使用案例。如果您尚未执行此操作,请在 Amazon EC2 控制台中找到右侧的 AWS Console-to-Code 控制台转代码功能小部件,选择 Start recording(开始录制),然后启动 EC2 实例。实例启动后,选择 Stop(停止)以完成录制,并从 Recorded actions(已录制操作)表中选择 RunInstances 操作。

要生成 AWS CDK Python 代码,请从下拉列表中选择 Generate CDK Python(生成 CDK Python)按钮。

您可以从生成的代码入手,根据特定使用案例进行自定义,使其满足生产环境的要求。

我已经安装了 AWS CDK,所以我创建了一个新的 Python CDK 项目:

mkdir c2c_cdk_demo
cd c2c_cdk_demo
cdk init app --language python

然后,我将生成的代码插入 Python CDK 项目中。在此示例中,我将代码重构为 AWS CDK 堆栈,更改了 EC2 实例类型,并进行了其他细微更改以确保代码正确无误。我使用 cdk deploy 成功完成了部署。

我能够从控制台操作启动 EC2 实例,然后前往 AWS CDK 来重现相同的结果。

from aws_cdk import (
    Stack,
    aws_ec2 as ec2,
)
from constructs import Construct

class MyProjectStack(Stack):

    def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
        super().__init__(scope, construct_id, **kwargs)

        existing_vpc = ec2.Vpc.from_lookup(self, "ExistingVPC",
            is_default=True
        )

        instance = ec2.Instance(self, "Instance",
                instance_type=ec2.InstanceType("t3.micro"),
                machine_image=ec2.AmazonLinuxImage(),
                vpc=existing_vpc,
                vpc_subnets=ec2.SubnetSelection(
                    subnet_type=ec2.SubnetType.PUBLIC
                )
        )

您还可以生成 YAML 或 JSON 格式的 CloudFormation 模板:

预览代码
您还可以直接在 Amazon EC2 和 Amazon EC2 Auto Scaling 组启动体验的预览代码功能中直接访问 AWS Console-to-Code 控制台转代码功能。这意味着您无需实际创建资源即可获取基础设施代码。

要试用此功能,请按照使用启动模板创建自动扩缩组的步骤操作。但是,请点击预览代码,而不是创建自动扩缩组。现在,您应该看到生成基础设施代码或复制 AWS CLI 命令的选项。

注意事项
使用 AWS Console-to-Code 控制台转代码功能应注意以下几点:

  • 任何人都可以使用 AWS Console-to-Code 控制台转代码功能为其基础设施工作流程生成 AWS CLI 命令。AWS CDK 和 CloudFormation 格式的代码生成功能每月有 25 次免费生成配额,超出配额后,则需要订阅 Amazon Q 开发者版
  • 建议在部署前先测试和验证生成的 IaC 代码。
  • 在 GA 版本中,AWS Console-to-Code 控制台转代码功能仅记录 Amazon EC2、Amazon VPC 和 Amazon RDS 控制台中的操作。
  • AWS Console-to-Code 控制台转代码功能中的已录制操作表仅显示在当前浏览器选项卡的当前会话期间执行的操作,并且不会保留之前会话或其他选项卡中的操作。请注意,刷新浏览器选项卡会导致所有已录制操作丢失。

现已推出
AWS Console-to-Code 控制台转代码功能现已在所有商业区域推出。您可以在 Amazon EC2 文档中了解更多信息。在 Amazon EC2 控制台中立即试用,并将反馈发送至 AWS re:Post for Amazon EC2 或通过常用的 AWS Support 联系方式发送反馈。


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