Amazon Lambda 控制台 Amazon CodeWhisperer 简介

IDE
机器学习
自然语言处理
海外精选
Amazon CodeWhisperer
海外精选的内容汇集了全球优质的亚马逊云科技相关技术内容。同时,内容中提到的“AWS” 是 “Amazon Web Services” 的缩写,在此网站不作为商标展示。
0
0
亚马逊云科技于今日推出一项全新功能,可将 [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 体验与 [Amazon Lambda](https://aws.amazon.com/cn/lambda/?trk=cndc-detail) 控制台代码编辑器集成使用。 [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 是一项由[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)(ML)驱动的服务,根据用自然语言编写的代码注释结合代码而生成代码建议,因此有助于提高开发人员的工作效率。 CodeWhisperer 作为面向 [JetBrains](https://docs.aws.amazon.com/toolkit-for-jetbrains/index.html?trk=cndc-detail)、[Visual Studio Code](https://aws.amazon.com/cn/visualstudiocode/?trk=cndc-detail) 和 [Amazon Cloud9](https://aws.amazon.com/cn/cloud9/?trk=cndc-detail) 等主要集成开发环境(IDE)的Amazon工具包扩展的组成部分而提供,目前支持 Python、Java 和 JavaScript。在 Lambda 控制台中,CodeWhisperer 可作为本地代码建议功能使用,这也是本文介绍的重点。 CodeWhisperer 目前提供预览版,允许申请加入等候名单。本文阐述了如何申请访问以及激活 Lambda 控制台的 CodeWhisperer。激活之后,CodeWhisperer 可以在您开发函数时在 Lambda 代码编辑器中按需提供代码建议。预览版期间,开发者可以免费使用 CodeWhisperer。 ![文章 3 插图1.jpg](https://dev-media.amazoncloud.cn/9f69db2291af49c1ae9f5b256adfde43_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE1.jpg "文章 3 插图1.jpg") [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) Lambda 是一项[无服务器计算](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)服务,可运行代码来响应事件并为您自动管理底层计算资源。您可以从 200 多个 亚马逊云科技服务和软件即服务 (SaaS) 应用程序中触发 Lambda,且只需按您的使用量付费。 借助 Lambda,您可以直接在[亚马逊云科技管理控制台](https://aws.amazon.com/cn/console/?trk=cndc-detail)中构建您的函数,充分利用 CodeWhisperer 的集成优势。Lambda 控制台中的 CodeWhisperer 目前支持使用 Python和Node.js 运行时的函数。 在控制台中编写 Amazon Lambda 函数时,CodeWhisperer 会分析代码和注释,确定哪些云服务和公共库最适合特定任务,并直接在源代码编辑器中推荐代码片段。CodeWhisperer 提供的代码建议是基于在各种数据源(包括 Amazon 和开源代码)上训练的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型。开发人员可以接受建议,或者干脆继续编写自己的代码。 ### 申请访问 CodeWhisperer CodeWhisperer 与 Lambda 的集成目前仅在弗吉尼亚州北部(us-east-1)地区提供预览版本。要在Lambda 控制台中使用 CodeWhisperer,您必须先在[这里](https://aws.amazon.com/cn/contact-us/?trk=cndc-detail)注册才可访问该服务的预览版,或直接从Lambda 控制台中申请访问。 在 Amazon Lambda 控制台中,选择 Code(代码) 选项卡下的 Code source(代码源) 编辑器,然后选择 Tools(工具) 菜单中的 Request [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) Access(请求访问 [Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) )。 ![文章 3 插图2.jpg](https://dev-media.amazoncloud.cn/b9c9eefbc6d74e9bbfec4ba7ec583f11_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE2.jpg "文章 3 插图2.jpg") 在 Lambda 控制台中请求访问 CodeWhisperer 您还可以通过 **Preferences**(**参数**)子窗口发起访问申请。 ![文章 3 插图3.jpg](https://dev-media.amazoncloud.cn/902c15889568421ba048d37c16d9c9f4_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE3.jpg "文章 3 插图3.jpg") 在 Lambda 控制台的参数子窗口中请求访问 CodeWhisperer 选择任一选项,打开注册表格。 ![文章 3 插图4.jpg](https://dev-media.amazoncloud.cn/0324b21288f14988bdf86341e0ae0087_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE4.jpg "文章 3 插图4.jpg") CodeWhisperer 注册[表格](https://aws.amazon.com/cn/contact-us/) 输入您的联系信息,包括您的亚马逊云科技帐户 ID,必需完成这一步骤才能启用 Amazon Lambda 控制台集成。一旦 CodeWhisperer 团队批准了您的请求,您将收到一封欢迎邮件。 ### 在 Lambda 控制台中激活 Amazon CodeWhisperer 亚马逊云科技批准您访问预览版之后,您必须在 Lambda 控制台打开 CodeWhisperer 集成,并配置所需的权限。 在 **Tools(工具)** 菜单中,启用 **[Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) Code Suggestions([Amazon CodeWhisperer](https://aws.amazon.com/cn/codewhisperer/?trk=cndc-detail) 代码建议)。** ![文章 3 插图5.jpg](https://dev-media.amazoncloud.cn/a58090eb04ae45d9b260d3722276dbc2_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE5.jpg "文章 3 插图5.jpg") 启用 CodeWhisperer 代码建议 您还可以通过 **Preferences(参数)** 子窗口启动代码建议: ![文章 3 插图6.jpg](https://dev-media.amazoncloud.cn/cd8eebb15b7f40058bac46fb81b2b4b1_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE6.jpg "文章 3 插图6.jpg") 通过 Preferences(参数) 子窗口启动 CodeWhisperer 代码建议 首次激活 CodeWhisperer 时,您会看到一个弹出窗口,显示了使用这项服务的条款和条件。 ![文章 3 插图7.png](https://dev-media.amazoncloud.cn/938d97bff699402c952b0eac77357a3f_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE7.png "文章 3 插图7.png") CodeWhisperer 预览版条款 阅读条款和条件,选择 **Accept(接受)** 继续。 ### Amazon 身份和访问管理(IAM) 权限 您必须首先为您的 IAM 用户或角色启用恰当的[亚马逊云科技身份和访问管理 (IAM)](https://aws.amazon.com/cn/iam/?trk=cndc-detail) 权限,CodeWhisperer 才能在 Lambda 控制台中提供建议。除了 Lambda 控制台编辑器权限外,您还必须添加codewhisperer:GenerateRecommendations 权限。 下面是一个 IAM 策略示例,授予用户 Lambda 控制台和 CodeWhisperer 权限: <!--StartFragment--> ```json { "Version": "2012-10-17", "Statement": [{ "Sid": "LambdaConsolePermissions", "Effect": "Allow", "Action": [ "lambda:AddPermission", "lambda:CreateEventSourceMapping", "lambda:CreateFunction", "lambda:DeleteEventSourceMapping", "lambda:GetAccountSettings", "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:GetFunctionCodeSigningConfig", "lambda:GetFunctionConcurrency", "lambda:GetFunctionConfiguration", "lambda:InvokeFunction", "lambda:ListEventSourceMappings", "lambda:ListFunctions", "lambda:ListTags", "lambda:PutFunctionConcurrency", "lambda:UpdateEventSourceMapping", "iam:AttachRolePolicy", "iam:CreatePolicy", "iam:CreateRole", "iam:GetRole", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:ListRolePolicies", "iam:ListRoles", "iam:PassRole", "iam:SimulatePrincipalPolicy" ], "Resource": "*" }, { "Sid": "CodeWhispererPermissions", "Effect": "Allow", "Action": ["codewhisperer:GenerateRecommendations"], "Resource": "*" } ] } ``` 该示例仅供说明之用。最好的办法是使用 IAM 策略向IAM主体授予限制性权限,以满足[最低权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege?trk=cndc-detail)标准。 ### 演示 使用以下键盘快捷键激活并使用代码建议:\ • 手动获取代码建议: Option+C (macOS), Alt+C (Windows)\ • 接受代码建议: Tab\ • 拒绝代码建议: ESC、Backspace、随意滑动、或继续输入,代码建议就会自动消失。 目前,IDE 扩展提供系统自动生成的建议,并且可显示多条建议。Lambda 控制台集成需要手动获取,而且仅显示一条建议。 以下是编写 Lambda 函数时使用 CodeWhisperer 的一些常见方法。 ### 完成单行代码 输入单行代码时,CodeWhisperer 会给出如何完成这行代码的建议。 ![文章 3 插图8.png](https://dev-media.amazoncloud.cn/64019373b8dd4499b5b760a0f94ff7de_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE8.png "文章 3 插图8.png") 使用CodeWhisperer完成单行代码 ### 生成完整函数 CodeWhisperer 可以根据您的函数签名或代码注释来生成整个函数。在下面的例子中,开发者编写了一个从 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 读取文件的函数签名。CodeWhisperer 据此推荐使用 read_from_s3 方法来完成全部实现过程。 ![文章 3 插图9.jpg](https://dev-media.amazoncloud.cn/d75ec6aa54bd4a1fa29f2d3c3eac3760_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE9.jpg "文章 3 插图9.jpg") 使用 CodeWhisperer 生成完整函数 CodeWhisperer 的建议中可能包括导入语句,如上例所示。为了提高性能,最好的做法是手动将这些导入语句移到函数句柄之外。 ### 通过注释生成代码 CodeWhisperer 也可以从注释中生成代码。下面的例子显示了CodeWhisperer如何生成代码来使用AWS APIs吧把文件上传到[ Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)。编写一个描述预期函数的注释,并在下面一行激活CodeWhisperer建议。根据注释的上下文,CodeWhisperer会首先建议使用函数签名代码。 ![文章 3 插图10.jpg](https://dev-media.amazoncloud.cn/24d3f0333d684f7bbb8b33c95573449c_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE10.jpg "文章 3 插图10.jpg") CodeWhisperer 通过注释生成函数签名代码 您接受函数签名之后,CodeWhisperer 会对其余的函数代码提出建议。 ![文章 3 插图11.jpg](https://dev-media.amazoncloud.cn/56a4d9c854e640a28ed24a98535558be_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE11.jpg "文章 3 插图11.jpg") CodeWhisperer 通过注释生成函数代码 您接受建议之后,CodeWhisperer即完成了全部代码块。 ![文章 3 插图12.jpg](https://dev-media.amazoncloud.cn/1b8a05d4f6114908b5bdf02e5a5fd2e2_%E6%96%87%E7%AB%A0%203%20%E6%8F%92%E5%9B%BE12.jpg "文章 3 插图12.jpg") CodeWhisperer 生成代码,写入S3。 CodeWhisperer 可以帮助编写访问许多其他 Amazon 服务的代码。在下面的示例中,代码注释表明函数正在使用 [Amazon Simple Notification Service (SNS)](https://aws.amazon.com/cn/sns/?trk=cndc-detail) 发送通知。基于该注释,CodeWhisperer 建议使用函数签名。 ![文章 3 插图13.png](https://dev-media.amazoncloud.cn/09b310e3b42d4d079499e351c4d7d250_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE13.png "文章 3 插图13.png") CodeWhisperer 为 SNS 建议建议函数签名 如果您接受建议的函数签名,CodeWhisperer 就会给出实现 send_notification 函数的完整建议。 ![文章 3 插图14.png](https://dev-media.amazoncloud.cn/7779d42be13441fbb4e22655e228c0fc_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE14.png "文章 3 插图14.png") CodeWhisperer 为 SNS 生成发送通知函数 同样的程序也适用于 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail)。在编写指示函数从DynamoDB表中获取某个项目的代码注释时,CodeWhisperer建议使用函数签名。 ![文章 3 插图15.png](https://dev-media.amazoncloud.cn/c8c1e9d17c674085a0bcdd17ef5026de_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE15.png "文章 3 插图15.png") CodeWhisperer建议的DynamoDB 函数签名 接受建议后,CodeWhisperer 会提出一个完整的代码片段来完成实施。 ![文章 3 插图16.png](https://dev-media.amazoncloud.cn/adc3607b479747ccb21c6bae9882ea83_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE16.png "文章 3 插图16.png") CodeWhisperer DynamoDB代码片段 检查建议时,本例中常见的重构步骤是手动将对 DynamoDB 资源和表的引用移到 get_item 函数之外。 CodeWhisperer还可以推荐复杂的算法实现,例如 Insertion sort(插入排序)。 ![文章 3 插图17.png](https://dev-media.amazoncloud.cn/4e5e3ac309bb4126941e67434299070d_%E6%96%87%E7%AB%A0%203%20%20%E6%8F%92%E5%9B%BE17.png "文章 3 插图17.png") CodeWhisperer 插入排序。 最好的做法是始终检验代码建议的完整性和正确性。 CodeWhisperer 不仅在与 Amazon API 集成时提供建议的代码片段,而且可以帮助您实现正确处理错误等常见的编程风格。 ### 结语 CodeWhisperer 是一个由[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)驱动的通用代码生成器,可以实时为您提供代码建议。在Lambda控制台中激活后,CodeWhisperer 会根据现有的代码和注释生成建议,从而帮助您加快在亚马逊云科技上开发应用程序。 访问 https://aws.amazon.com/codewhisperer/?trk=cndc-detail, 立即开始使用。欢迎向我们分享您的反馈意见,您可发送邮件至 codewhisperer@amazon.com。 获取更多关于[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)学习的资源,请访问[ Serverless Land](https://serverlessland.com/?trk=cndc-detail)。 ##### 作者介绍 Mark Richman 亚马逊云科技高级解决方案架构师
目录
亚马逊云科技解决方案 基于行业客户应用场景及技术领域的解决方案
联系亚马逊云科技专家
亚马逊云科技解决方案
基于行业客户应用场景及技术领域的解决方案
联系专家
0
目录
关闭