示例工程教程后端【免费下载链接】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-doc-sdk-examples仓库中的 kotlin/services/translate/README.md 及其配套源码系统讲解如何基于 AWS SDK for Kotlin 调用 Amazon Translate覆盖单文本实时翻译TranslateText、批量文档翻译任务StartTextTranslationJob、任务状态查询DescribeTextTranslationJob与任务列表获取ListTextTranslationJobs四类核心操作并给出可直接运行的 Kotlin 代码与 JUnit 集成测试方案。读完本文你将能够在自己的 Kotlin 项目中复刻这套实时翻译 异步批量翻译的完整实现并理解其参数语义与运行前提。概览Amazon Translate 与 SDK for KotlinAmazon Translate 是一项基于神经网络的机器翻译服务支持在多种语言之间进行文本翻译以英语为中心向/从其他语言互译同时提供实时单条文本翻译与面向文档集的异步批量翻译两类能力。本示例仓库在 kotlin/services/translate 目录下提供了四个相互独立、可组合使用的 Kotlin 示例示例文件对应 API功能TranslateText.ktTranslateText将单条文本从源语言实时翻译为目标语言BatchTranslation.ktStartTextTranslationJobDescribeTextTranslationJob提交批量翻译任务并轮询任务状态直至完成DescribeTextTranslationJob.ktDescribeTextTranslationJob按 JobId 查询单个批量翻译任务的状态ListTextTranslationJobs.ktListTextTranslationJobs分页列出历史批量翻译任务以上实现均通过aws.sdk.kotlin.services.translate.TranslateClient完成SDK 版本由 build.gradle.kts 中的 BOMBill of Materialsaws.sdk.kotlin:bom:1.5.63统一约束。示例中的默认区域为us-west-2运行时通过TranslateClient.fromEnvironment { region us-west-2 }创建客户端。环境准备Prerequisites运行这些示例前需要满足以下前提条件AWS 账号与凭据按照 AWS SDK for Kotlin Developer Guide 配置默认凭据与默认区域。本示例通过TranslateClient.fromEnvironment从环境中的 AWS 凭据链加载访问密钥。JDK 17build.gradle.kts中sourceCompatibility与targetCompatibility均设置为JavaVersion.VERSION_17Kotlin 编译器目标 JVM 版本同样为 17。Gradle 构建环境示例使用 Kotlin JVM 插件与application插件通过 Gradle 配置并构建项目。具体入门方式可参考 kotlin/README.md 的说明。批量翻译附加资源运行BatchTranslation示例需要 S3 存储桶存放待翻译文档与翻译结果以及一个用于翻译任务的 IAM 数据访问角色 ARN。仓库 kotlin/README.md 同时提示这些示例代码基于 beta 版本的 AWS SDK for Kotlin 编写各服务目录下的独立 README 记录了对应服务的具体示例信息。示例一实时翻译文本TranslateTextTranslateText.kt 演示了最直接的文本翻译场景构造TranslateTextRequest指定源语言、目标语言与文本内容同步调用translateClient.translateText并打印结果。suspend fun textTranslate() { val textRequest TranslateTextRequest { sourceLanguageCode en targetLanguageCode fr text Its a sunny day today } TranslateClient.fromEnvironment { region us-west-2 }.use { translateClient - val textResponse translateClient.translateText(textRequest) println(textResponse.translatedText) } }要点说明语言代码sourceLanguageCode与targetLanguageCode使用语言代码例如en英语、fr法语。Amazon Translate 支持在英语与多种语言之间互译目标语言集合以官方语言列表为准。同步调用translateText是即时返回的同步 API适合对话式翻译、单条文本处理等低延迟场景。挂起函数示例中的main与textTranslate均为suspend函数体现了 AWS SDK for Kotlin 基于协程coroutines的异步编程模型SDK 调用需在协程作用域内执行。资源管理通过.use { }作用域函数确保TranslateClient在使用完毕后自动关闭。程序入口main()直接调用textTranslate()无命令行参数。示例二批量翻译文档StartTextTranslationJob 状态轮询BatchTranslation.kt 面向大规模文档集翻译场景从 S3 读取待翻译文档异步提交批量翻译任务并在任务完成后返回 JobId。命令行参数程序入口main(args: ArrayString)接收 4 个参数参数个数不匹配时会打印用法说明并退出Usage: s3Uri s3UriOut jobName dataAccessRoleArn Where: s3Uri - The URI of the Amazon S3 bucket where the documents to translate are located. s3UriOut - The URI of the Amazon S3 bucket where the translated documents are saved to. jobName - The job name. dataAccessRoleArn - The Amazon Resource Name (ARN) value of the role required for translation jobs.参数含义s3Uri存放待翻译文档的 S3 路径例如s3://my-bucket/input/s3UriOut翻译结果输出路径例如s3://my-bucket/output/jobName批量翻译任务的名称dataAccessRoleArnAmazon Translate 执行该任务所需的 IAM 角色 ARN角色需具备对输入/输出 S3 桶的读写权限核心实现translateDocuments函数依次完成四步构造输入/输出配置 → 发起任务 → 轮询状态 → 返回 JobId。suspend fun translateDocuments( s3UriVal: String?, s3UriOutVal: String?, jobNameVal: String?, dataAccessRoleArnVal: String?, ): String? { val sleepTime: Long 5 val dataConfig InputDataConfig { s3Uri s3UriVal contentType text/plain } val outputDataConfigVal OutputDataConfig { s3Uri s3UriOutVal } val myList mutableListOfString() myList.add(fr) val textTranslationJobRequest StartTextTranslationJobRequest { jobName jobNameVal dataAccessRoleArn dataAccessRoleArnVal inputDataConfig dataConfig outputDataConfig outputDataConfigVal sourceLanguageCode en targetLanguageCodes myList } TranslateClient.fromEnvironment { region us-west-2 }.use { translateClient - val textTranslationJobResponse translateClient.startTextTranslationJob(textTranslationJobRequest) // Keep checking until job is done. val jobDone false var jobStatus: String val jobIdVal: String? textTranslationJobResponse.jobId val jobRequest DescribeTextTranslationJobRequest { jobId jobIdVal } while (!jobDone) { // Check status on each loop. val response translateClient.describeTextTranslationJob(jobRequest) jobStatus response.textTranslationJobProperties?.jobStatus.toString() println(jobStatus) if (jobStatus.contains(Completed)) { break } else { print(.) delay(sleepTime * 1000) } } return textTranslationJobResponse.jobId } }实现细节InputDataConfig通过s3Uri指定输入文档位置contentType text/plain声明文档为纯文本格式。批量翻译任务支持的文件格式取决于服务配置纯文本text/plain是最常用的一种。OutputDataConfig通过s3Uri指定翻译结果写入位置。多目标语言targetLanguageCodes是一个字符串列表示例仅添加了fr意味着单次任务可同时翻译为多种目标语言。状态轮询提交成功后循环调用DescribeTextTranslationJob获取jobStatus当状态包含Completed时跳出循环否则每 5 秒sleepTime * 1000毫秒查询一次未完成时打印.作为进度提示。轮询依赖kotlinx.coroutines.delay实现非阻塞等待。返回值函数最终返回任务的jobId可供DescribeTextTranslationJob示例继续查询使用。示例三查询单个翻译任务DescribeTextTranslationJobDescribeTextTranslationJob.kt 演示如何根据 JobId 获取某个批量翻译任务的详细信息与当前状态。suspend fun describeTranslationJob(id: String?) { val textTranslationJobRequest DescribeTextTranslationJobRequest { jobId id!! } TranslateClient.fromEnvironment { region us-west-2 }.use { translateClient - val jobResponse translateClient.describeTextTranslationJob(textTranslationJobRequest) println(The job status is ${jobResponse.textTranslationJobProperties?.jobStatus}.) } }命令行参数程序入口接收 1 个参数jobId该值可从BatchTranslation示例的输出中获取。参数缺失时打印用法说明并退出。响应结构textTranslationJobProperties?.jobStatus返回任务状态如Submitted、InProgress、Completed、CompletedWithError等同时TextTranslationJobProperties还包含任务名称、输入/输出配置、错误信息等元数据可用于任务管理与结果追溯。示例四列出翻译任务ListTextTranslationJobsListTextTranslationJobs.kt 演示分页列出历史批量翻译任务suspend fun getTranslationJobs() { val textTranslationJobsRequest ListTextTranslationJobsRequest { maxResults 10 } TranslateClient.fromEnvironment { region us-west-2 }.use { translateClient - val response translateClient.listTextTranslationJobs(textTranslationJobsRequest) response.textTranslationJobPropertiesList?.forEach { prop - println(The job name is ${prop.jobName}) println(The job id is: ${prop.jobId}) } } }maxResults单次返回的最大任务数示例设为 10用于控制分页大小。textTranslationJobPropertiesList返回TextTranslationJobProperties列表示例打印每个任务的jobName与jobId。若任务数量较多可通过分页参数如基于NextToken的游标继续翻页。该示例无命令行参数直接调用getTranslationJobs()即可。Gradle 构建配置build.gradle.kts 给出了这些示例的完整依赖与构建配置核心内容如下plugins { kotlin(jvm) version 2.1.0 application } java { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { implementation(platform(aws.sdk.kotlin:bom:1.5.63)) implementation(aws.sdk.kotlin:translate) implementation(aws.sdk.kotlin:secretsmanager) implementation(aws.smithy.kotlin:http-client-engine-okhttp) implementation(aws.smithy.kotlin:http-client-engine-crt) implementation(com.google.code.gson:gson:2.10) testImplementation(org.junit.jupiter:junit-jupiter:5.9.2) implementation(org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4) implementation(org.slf4j:slf4j-api:2.0.15) implementation(org.slf4j:slf4j-simple:2.0.15) }配置要点BOM 依赖管理通过aws.sdk.kotlin:bom:1.5.63引入 SDK BOM随后只需声明aws.sdk.kotlin:translateAmazon Translate 客户端与aws.sdk.kotlin:secretsmanager测试中用到的 Secrets Manager 客户端无需逐一手写版本号。HTTP 引擎同时引入http-client-engine-okhttp与http-client-engine-crt为 SDK 提供可选的 HTTP 传输实现。测试与工具链JUnit Jupiter 5.9.2 负责测试执行kotlinx-coroutines-core:1.6.4支撑协程编程Gson 用于解析测试参数 JSONSLF4J 提供日志输出构建时还会应用ktlint插件org.jlleitschuh.gradle:ktlint-gradle:11.5.1进行代码风格检查。JVM 目标kotlinOptions.jvmTarget 17并通过-Xlint:-deprecation抑制弃用警告。运行示例由于项目启用了application插件可通过 Gradle 直接运行示例类。不同示例对命令行参数的依赖不同实时翻译无参数运行TranslateText.kt的main()直接输出Its a sunny day today的法语翻译结果。批量翻译4 个参数依次传入s3Uri、s3UriOut、jobName、dataAccessRoleArn例如gradle run --argss3://my-bucket/input/ s3://my-bucket/output/ my-job arn:aws:iam::123456789012:role/TranslateAccessRole查询单个任务1 个参数传入从批量翻译示例返回的jobIdgradle run --argsjobId列出任务无参数直接运行ListTextTranslationJobs.kt的main()控制台将打印最近任务的名称与 ID。提示每个示例的main()都是suspend函数运行前需确保 AWS 凭据已通过环境变量或默认凭据链配置完成。运行这些示例可能产生 AWS 费用详见下文注意事项。集成测试JUnit Secrets Manager仓库在 TranslateKotlinTest.kt 中提供了覆盖四个示例的 JUnit 集成测试。测试类使用TestMethodOrder(OrderAnnotation::class)保证用例按序执行并通过TestInstance(TestInstance.Lifecycle.PER_CLASS)复用类实例。测试用例顺序用例验证内容1translateTextTest调用textTranslate()验证实时翻译流程可正常执行2batchTranslationTest调用translateDocuments(...)断言返回的jobId非空3listTextTranslationJobsTest调用getTranslationJobs()验证任务列表可获取4describeTextTranslationJobTest以测试 2 产生的jobId调用describeTranslationJob(id)验证状态查询测试 2 的jobId会被保存在类成员变量中供测试 4 复用因此测试对执行顺序有依赖。测试参数来源BeforeAll的setup()从 AWS Secrets Manager 读取密钥test/translate解析其中的s3Uri、s3UriOut、jobName并追加UUID.randomUUID()保证唯一性、dataAccessRoleArn四个字段作为批量翻译测试的输入private suspend fun getSecretValues(): String { val secretName test/translate val valueRequest GetSecretValueRequest { secretId secretName } SecretsManagerClient { region us-east-1 }.use { secretClient - val valueResponse secretClient.getSecretValue(valueRequest) return valueResponse.secretString.toString() } }测试使用的 Secrets Manager 客户端区域为us-east-1密钥内 JSON 字段通过 Gson 反序列化为SecretValues数据类。这意味着运行测试前必须在账号中预先创建名为test/translate的密钥并写入上述四个字段否则测试会因参数缺失而失败。测试运行方式有两种从 IDE如 IntelliJ IDEA直接执行 JUnit 测试或在命令行运行 Gradle 的test任务build.gradle.kts中配置了useJUnitPlatform()并将passed、skipped、failed事件输出到日志。注意事项与费用提示按照 README 的提示使用本仓库示例需注意以下几点费用运行示例或测试均可能产生 AWS 费用。Amazon Translate 按翻译的文本量计费批量翻译任务还会涉及 S3 存储与请求费用。详细计费请参考 AWS Pricing 与 Free Tier。最小权限原则建议遵循最小权限原则least privilege仅授予执行任务所需的最低权限——例如批量翻译角色只需对指定输入/输出 S3 桶的读写权限测试账号无需授予超出所需的 IAM 权限。区域可用性本代码未经所有 AWS 区域测试。部分区域可能不提供 Amazon Translate部署前请确认目标区域的服务可用性参考 AWS Regional Services。版本说明示例基于 beta 阶段的 AWS SDK for Kotlin 编写kotlin/README.md 明确标注接口可能随 SDK 演进而调整本仓库实际锁定在aws.sdk.kotlin:bom:1.5.63。其他资源Amazon Translate 开发者指南服务能力与限制的权威说明Amazon Translate Developer GuideAmazon Translate API 参考Amazon Translate API ReferenceSDK for Kotlin 的 Amazon Translate 参考文档SDK for Kotlin Amazon Translate reference仓库内其他服务示例与使用教程kotlin/README.md其中 kotlin/usecases 目录还包含跨服务集成教程如 Android 消息翻译应用本文内容基于仓库 kotlin/services/translate 目录下的 README 与源码整理示例代码遵循 Apache-2.0 许可版权归 Amazon.com, Inc. 或其关联公司所有。赞分享示例工程教程后端【免费下载链接】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 SDK for .NET 操作 Amazon Translate从实时文本翻译到异步批处理任务使用 AWS SDK for .NET 操作 Amazon Translate从实时文本翻译到异步批处理任务 Amazon Translate 是 AWS 提示例工程教程后端aws-doc-sdk-examples基于 AWS SDK for Java 2.x 实现 Amazon Translate 单文本与批量文档翻译aws doc sdk examples基于 AWS SDK for Java 2.x 实现 Amazon Translate 单文本与批量文档翻译 本文以示例工程教程后端用 ProcessHacker 排查系统卡顿CPU、内存、磁盘硬件监控完整指南用 ProcessHacker 排查系统卡顿CPU、内存、磁盘硬件监控完整指南 系统莫名变卡却说不清瓶颈在哪ProcessHacker 是一款免费的系统性桌面应用调试器应用安全驱动开发上一篇Nhost API版本控制管理Nuxt.js应用接口变更下一篇Colorify.js实战案例如何打造动态主题切换的网站设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
Databasus 复制凭据规格:PostgreSQL 物理备份的 WAL 轮转权限与 PITR 前条件解析 数据库灾备 【免费下载链接】databasus PostgreSQL backup tool with Point-In-Time-Recovery and restore verification 项目地址: https://gitcode.com/gh_mirrors/po/databasus 点击查看 免费下载 导读
本文围绕 Databasus 开源仓库中的复制凭据规格文档展开&a… · 2026/9/26 2:14:32
Blockbench 免费低多边形3D建模与动画完整教程 Blockbench 免费低多边形3D建模与动画完整教程 【免费下载链接】blockbench Blockbench - A low poly 3D model editor 项目地址: https://gitcode.com/GitHub_Trending/bl/blockbench
想给游戏或 Minecraft 做低多边形模型,却被商业软件的价格和陡峭学习曲线劝退?Bloc… · 2026/9/26 2:14:32
AI_NovelGenerator本地部署与快速上手完整指南:4步跑通AI长篇小说生成器 AI_NovelGenerator本地部署与快速上手完整指南:4步跑通AI长篇小说生成器 【免费下载链接】AI_NovelGenerator 使用ai生成多章节的长篇小说,自动衔接上下文、伏笔 项目地址: https://gitcode.com/GitHub_Trending/ai/AI_NovelGenerator
写长篇写到… · 2026/9/26 2:14:32
故事化内容创作实战:构建叙事钩子与三幕式流程 最近埋头做的一个项目,标题就叫“story”。很多人看到这个词觉得太虚、太抽象,但真正把它当成一个完整产品去打磨以后,我发现它其实是几乎所有内容形式的底层骨架——短视频脚本、公众号长文、播客单期,甚至产品里的新手引导流程&… · 2026/9/26 2:53:44
SQL Server数据库实验实战:约束、触发器与游标避坑指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:53:44
从脉脉看职场社交生态重构:身份可信度、内容生态与商业化路径 职场社交这个赛道,失败案例远比成功案例多。LinkedIn入华多年始终不温不火,腾讯朋友、人人网相继转型,飞书、钉钉内部的社区尝试也始终没有真正长成生态。脉脉算是国内坚持最久、也是唯一把“职场社交”这个命题撑到亿级用户规模的样本。标题… · 2026/9/26 2:53:44
SQL注入原理与实战绕过:从手工注入到参数化防护全解析 直接说结论:SQL注入到现在二十多年了,从1998年第一次被公开提出到现在,它依然坚挺地排在OWASP Top 10榜单里,每年因为SQL注入被拖库、被删库、被勒索的事件从来没断过。很多刚入门的安全爱好者总觉得这玩意太老、太基础࿰… · 2026/9/26 2:53:44
Cinema 4D 2024 安装教程:环境配置、常见报错与优化指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:53:44
品牌设计不是买张图,选对伙伴才能成就好品牌 前几天一位做食品加工的老板找我,开口第一句就是:"我想换个包装设计,请问多少钱一个?"我说你别急着问价,我先问你:你现在找的设计师,是坐下来聊过你生意的,还是上来就发过… · 2026/9/26 2:53:38
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46