示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载导读本文围绕 javascriptv3/example_code/codebuild 目录下的 CodeBuild 示例系统讲解如何基于 AWS SDK for JavaScript (v3) 调用CreateProjectCommand创建 CodeBuild 构建项目并完整覆盖运行方式、依赖配置与端到端集成测试。读完本文你将能够看懂并复用仓库中的create-project单动作示例、理解构建项目各配置字段产物、环境、源码、服务角色的真实含义并掌握用 Vitest 编写集成测试验证 CodeBuild 项目是否成功创建的方法。背景CodeBuild 示例在这个仓库中做什么在javascriptv3代码集中CodeBuild 属于单服务动作Single actions级别的示例即展示如何调用单个服务函数。正如 codebuild/README.md 概述所述CodeBuild compiles your source code, runs unit tests, and produces artifacts that are ready to deploy.CodeBuild 负责编译源代码、运行单元测试并产出可部署的构建工件artifacts。该目录下的示例聚焦于CreateProject创建构建项目这一动作对应源码 actions/create-project.js。整个目录结构非常精简javascriptv3/example_code/codebuild/ ├── actions/ │ └── create-project.js # 单动作示例创建 CodeBuild 项目 ├── tests/ │ └── create-project.integration.test.js # Vitest 集成测试 ├── client.js # CodeBuildClient 客户端初始化 ├── package.json # 依赖与测试脚本 └── README.md # 示例说明文档前置条件与准备运行本示例前需要满足以下前置条件与 javascriptv3/README.md 一致安装 Node.js安装最新稳定版本。配置 AWS 凭证设置共享配置文件~/.aws/credentials存放凭证SDK for JavaScript (v3) 会自动加载。安装依赖在javascriptv3目录下执行npm i。此外需要留意官方文档中的几条重要提醒见 codebuild/README.md运行这些代码和测试可能产生 AWS 账户费用建议遵循最小权限原则least privilege只授予完成任务所需的最低权限该代码并未在全部 AWS 区域经过测试。核心实战CreateProject 单动作详解创建客户端区域如何解析所有 CodeBuild 操作都依赖CodeBuildClient仓库在 client.js 中演示了最简洁的初始化方式import { CodeBuildClient } from aws-sdk/client-codebuild; // 未显式指定 region 时SDK 会依次尝试环境变量或 AWS 配置文件来确定区域。 const client new CodeBuildClient({}); export { client };从 create-project.js 的源码看示例内部也直接通过new CodeBuildClient({})实例化客户端——即在本地开发时区域由AWS_REGION/AWS_DEFAULT_REGION环境变量或~/.aws/config中的配置决定。完整参数解析CreateProjectCommand核心代码位于 actions/create-project.js它从aws-sdk/client-codebuild导入枚举与命令并封装为createProject函数import { ArtifactsType, CodeBuildClient, ComputeType, CreateProjectCommand, EnvironmentType, SourceType, } from aws-sdk/client-codebuild; export const createProject async ( projectName MyCodeBuilder, roleArn arn:aws:iam::xxxxxxxxxxxx:role/CodeBuildAdmin, buildOutputBucket xxxx, githubUrl https://..., ) { const codeBuildClient new CodeBuildClient({}); const response await codeBuildClient.send( new CreateProjectCommand({ artifacts: { // 构建产物的输出位置。 type: ArtifactsType.S3, location: buildOutputBucket, }, environment: { // computeType 与 type 的组合决定环境的 CPU、内存、磁盘要求。 computeType: ComputeType.BUILD_GENERAL1_SMALL, // Docker 镜像标识符。 image: aws/codebuild/standard:7.0, type: EnvironmentType.LINUX_CONTAINER, }, name: projectName, // 具有创建项目、写入产物位置和写入 CloudWatch 日志权限的 IAM 角色 ARN。 serviceRole: roleArn, source: { type: SourceType.GITHUB, location: githubUrl, }, }), ); console.log(response); return response; };各配置字段的实际作用如下字段取值示例中的值说明nameMyCodeBuilder默认CodeBuild 项目名称在账户与区域范围内唯一serviceRoleIAM 角色 ARN项目运行时扮演的服务角色需具备创建项目、写入 S3 产物桶、写入 CloudWatch 日志的权限artifacts.typeArtifactsType.S3构建产物类型示例将产物输出到 S3artifacts.locationS3 桶名产物输出桶environment.computeTypeComputeType.BUILD_GENERAL1_SMALL计算类型决定构建环境的 CPU/内存/磁盘规格environment.imageaws/codebuild/standard:7.0构建环境使用的托管 Docker 镜像environment.typeEnvironmentType.LINUX_CONTAINER构建环境类型Linux 容器source.typeSourceType.GITHUB源码仓库类型示例使用 GitHubsource.locationGitHub 仓库 URL待构建源码仓库地址其中computeType与type的组合直接决定了构建环境的硬件规格CPU、内存、磁盘空间是影响构建速度与费用的关键参数image则决定构建环境预装哪些工具链。示例选用的aws/codebuild/standard:7.0是 AWS 提供的标准托管镜像。响应结构创建成功后返回什么源码 create-project.js 中注释了一段完整响应示例展示了成功创建后返回的project对象关键字段{ $metadata: { httpStatusCode: 200, requestId: b428b244-777b-49a6-a48d-5dffedced8e7, attempts: 1 }, project: { arn: arn:aws:codebuild:us-east-1:xxxxxxxxxxxx:project/MyCodeBuilder, artifacts: { encryptionDisabled: false, location: xxxxxx-xxxxxxx-xxxxxx, name: MyCodeBuilder, namespaceType: NONE, packaging: NONE, type: S3 }, badge: { badgeEnabled: false }, cache: { type: NO_CACHE }, created: 2023-08-18T14:46:48.979Z, encryptionKey: arn:aws:kms:us-east-1:xxxxxxxxxxxx:alias/aws/s3, environment: { computeType: BUILD_GENERAL1_SMALL, environmentVariables: [], image: aws/codebuild/standard:7.0, imagePullCredentialsType: CODEBUILD, privilegedMode: false, type: LINUX_CONTAINER }, lastModified: 2023-08-18T14:46:48.979Z, name: MyCodeBuilder, projectVisibility: PRIVATE, queuedTimeoutInMinutes: 480, serviceRole: arn:aws:iam::xxxxxxxxxxxx:role/CodeBuildAdmin, source: { insecureSsl: false, location: https://..., reportBuildStatus: false, type: GITHUB }, timeoutInMinutes: 60 } }其中timeoutInMinutes默认 60、queuedTimeoutInMinutes默认 480等字段是 AWS 为项目设置的默认值encryptionKey默认指向 KMS 的alias/aws/s3表示产物默认使用 S3 托管密钥加密。如何运行示例直接运行单动作根据 codebuild/README.md 的说明所有示例均采用ECMAScript 6 (ES6)编写package.json中type: module也印证了这一点。运行单动作使用node ./actions/create-project.jscreate-project.js 底部有一段直接运行守卫逻辑if (process.argv[1] fileURLToPath(import.meta.url)) { createProject(); }也就是说该文件既可作为独立脚本直接执行此时使用默认参数MyCodeBuilder、占位 ARN 等也可作为模块被其他代码import { createProject }后按需调用——集成测试正是采用后一种方式。运行场景与带选项运行README 同时给出了场景类示例的通用运行方式node ./scenarios/fileName以及带命令行选项的运行方式node ./scenarios/fileName --option1 --option2这些选项通过 Node.js 内置的util.parseArgs配置每个脚本具体支持哪些选项需查看对应文件的parseArgs用法。就当前 CodeBuild 目录而言它属于单动作示例而非场景因此仓库中不包含scenarios/目录。集成测试端到端验证创建流程CodeBuild 示例附带 Vitest 集成测试 tests/create-project.integration.test.js它完整演示了创建前置资源 → 创建项目 → 验证 → 清理的全流程并印证了createProject的真实调用方式。测试所需的资源测试开始前beforeAll会准备三类资源均在测试完成后afterAll清理IAM 角色以CodeBuildAdmin-随机后缀命名创建信任主体为codebuild.amazonaws.com服务允许其执行sts:AssumeRoleS3 桶以codebuild-bucket-随机后缀命名用作产物输出桶CodeBuild 项目以codebuild-project-随机后缀命名。角色与权限的最小集合测试中为角色附加了两个 AWS 托管策略测试源码 L42-L50CloudWatchLogsFullAccess——构建日志写入 CloudWatch Logs 所需AWSCodeBuildAdminAccess——管理 CodeBuild 项目所需。这与createProject中serviceRole的注释要求完全对应该角色必须具有创建 CodeBuild 项目、写入产物位置和写入 CloudWatch 日志的权限。重试机制与异步一致性验证调用createProject时测试通过aws-doc-sdk-examples/lib提供的retry工具进行重试间隔 1000ms、最多 20 次await retry({ intervalInMs: 1000, maxRetries: 20 }, async () { await createProject( projectName, roleArn, bucketName, https://github.com/awsdocs/aws-doc-sdk-examples.git, ); });retry的实现位于 javascriptv3/example_code/libs/utils/util-timers.js它会在函数抛错时按intervalInMs间隔反复重试直至成功、耗尽maxRetries或配置swallowError时吞掉错误。这里用重试是为了容忍 IAM 角色等资源刚创建后的最终一致性延迟。用分页器断言创建结果创建后测试使用 CodeBuild 客户端的分页器paginateListProjects遍历项目列表断言刚创建的项目名出现在其中const listProjectsPaginator paginateListProjects({ client: codebuildClient }, {}); for await (const page of listProjectsPaginator) { projectNames.push(...page.projects); } expect(projectNames).toContain(projectName);测试后的资源清理afterAll中按依赖顺序逆序清理先DetachRolePolicyCommand解除两个策略再DeleteRoleCommand删除角色、DeleteBucketCommand删除 S3 桶、DeleteProjectCommand删除 CodeBuild 项目避免遗留云资源产生持续费用。依赖与测试脚本配置package.json 展示了该示例的依赖构成运行时依赖aws-sdk/client-codebuild^3.391.0与aws-doc-sdk-examples/lib^1.0.0提供retry/wait等工具开发依赖aws-sdk/client-iam、aws-sdk/client-s3测试中准备 IAM 角色与 S3 桶以及vitest^1.6.0测试脚本npm run integration-test会以 JUnit 报告格式运行集成测试并输出到test_results/codebuild-test-results.junit.xml。更通用的测试入口见 javascriptv3/README.md单测用npm test集成测试用npm run integration-test输出分别写入unit_test.log与integration_test.log。注意集成测试同样可能产生 AWS 账户费用。延伸阅读继续深入可以从仓库中获取以下资料javascriptv3/README.mdJavaScript (v3) 示例集的全局说明含前置条件、测试与代码规范actions/create-project.js本文核心示例的完整源码tests/create-project.integration.test.js端到端集成测试实现client.js客户端初始化范式官方层面可参考 AWS CodeBuild 用户指南、CodeBuild API Reference 以及 SDK for JavaScript (v3) 的 CodeBuild 客户端参考进一步了解CreateProjectCommand的更多可选参数如environmentVariables、cache、vpcConfig、logsConfig等在真实流水线中的配置方式。Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0赞分享示例工程教程后端【免费下载链接】aws-doc-sdk-examplesWelcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more information, see the Readme.md file below.项目地址https://gitcode.com/gh_mirrors/aw/aws-doc-sdk-examples点击查看免费下载相关推荐AWS CodeBuild 的 AWS SDK for GoV1实战示例构建项目、列出构建与项目AWS CodeBuild 的 AWS SDK for GoV1实战示例构建项目、列出构建与项目 导读 本文基于 AWS 文档代码示例仓库中的 go/co示例工程教程后端AWS SDK for C CodeBuild 代码示例构建列表、项目查询与构建启动实战AWS SDK for C CodeBuild 代码示例构建列表、项目查询与构建启动实战 导读 本指南围绕 AWS Code Examples 仓库中 c示例工程教程后端使用 AWS SDK for C 构建 Hello IAM 示例从 CMake 构建到 ListPolicies 实战使用 AWS SDK for C 构建 Hello IAM 示例从 CMake 构建到 ListPolicies 实战 导读 本文基于 AWS 官方代码示示例工程教程后端上一篇MATLAB图像导出终极指南如何用export_fig解决科研论文图像质量难题下一篇3步解锁Switch控制器JoyCon-Driver让你在Windows上免费畅玩PC游戏创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?