
示例工程教程后端【免费下载链接】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 官方代码示例仓库aws-doc-sdk-examples中 kotlin/services/secrets-manager 目录下的示例为核心系统讲解如何使用 AWS SDK for Kotlin 安全地加密、存储与检索 AWS Secrets Manager 中的凭据。你将掌握GetSecretValue单操作的完整代码结构、客户端初始化方式、Gradle 构建配置以及 JUnit 测试的运行方法可直接将示例迁移到自己的 Kotlin 应用中用于数据库口令、API 密钥等敏感凭据的读取。Secrets Manager 与 SDK for Kotlin 示例概览AWS Secrets Manager 是一项托管密钥管理服务帮助用户安全地加密、存储和检索数据库及其他服务的凭据。它支持自动轮换密钥、细粒度访问控制并可与 IAM、KMS 深度集成避免把明文口令硬编码在应用代码或配置文件中。本仓库的 README 展示了如何使用 AWS SDK for Kotlin 与 Secrets Manager 交互目前收录了一个**单一操作Single action**示例——GetSecretValue即通过密钥名称读取密钥内容。整个目录结构如下kotlin/services/secrets-manager/ ├── README.md ├── build.gradle.kts └── src/ ├── main/kotlin/com/kotlin/secrets/GetSecretValue.kt └── test/kotlin/SecretsManagerKotlinTest.kt从源码结构看该模块遵循标准的 Gradle JVM 工程布局主程序与测试分离依赖通过 build.gradle.kts 统一管理。⚠ 运行前必须了解的成本与安全注意事项原 README 中特别强调了四类注意事项在运行本示例或将其用于生产环境前务必阅读费用风险运行本代码以及运行测试可能会在你的 AWS 账户中产生费用请先了解 AWS 定价与免费套餐政策避免意外账单。最小权限原则least privilege建议为代码授予最小必要权限——仅授予完成当前任务所需的 IAM 权限即可。例如读取密钥只需要secretsmanager:GetSecretValue操作不需要附加管理员权限。区域可用性本代码并未在所有 AWS 区域进行测试。部分 AWS 服务仅在特定区域可用部署前应查阅区域服务清单确认目标区域支持 Secrets Manager。凭据配置运行前必须先在本地配置 AWS 默认凭据与区域具体方式参见 SDK for Kotlin 的开发者指南。这也是SecretsManagerClient在代码中以fromEnvironment方式创建的前提。这些注意事项同样适用于本目录下的 JUnit 测试——测试会真实调用 Secrets Manager 服务因此同样可能产生费用。前置条件环境与账号准备根据 kotlin 目录总 README 中的 Prerequisites 说明运行本示例需要满足AWS 账户并已按 AWS SDK for Kotlin 开发者指南完成默认凭据与默认区域的配置Kotlin 开发环境推荐使用 Gradle 来配置和构建 AWS SDK for Kotlin 项目具体可参考 Get started with the AWS SDK for Kotlin 指南一个已存在的 Secrets Manager 密钥作为GetSecretValue的读取目标。前置条件细节可查看 README 的对应章节。单一操作GetSecretValue 完整实现剖析源码文件与包结构示例主程序位于 GetSecretValue.kt包名为com.kotlin.secrets。文件顶部引入了三个关键依赖import aws.sdk.kotlin.services.secretsmanager.SecretsManagerClient import aws.sdk.kotlin.services.secretsmanager.model.GetSecretValueRequest import kotlin.system.exitProcessSecretsManagerClientSDK for Kotlin 提供的 Secrets Manager 服务客户端GetSecretValueRequest封装getSecretValue请求的请求模型用于指定要读取的密钥标识exitProcess用于参数校验失败时的进程退出。main 入口与参数校验suspend fun main(args: ArrayString) { val usage Usage: secretName secretValue Where: secretName - The name of the secret (for example, tutorials/MyFirstSecret). if (args.size ! 1) { println(usage) exitProcess(0) } val secretName args[0] getValue(secretName) }需要说明的是代码中的 usage 文本仍保留了secretValue占位符但实际校验逻辑要求恰好一个命令行参数args.size ! 1即退出因此程序运行时只需传入密钥名称例如gradle run --argstutorials/MyFirstSecret密钥名称的典型格式如tutorials/MyFirstSecret可通过 Secrets Manager 控制台或 AWS CLI 预先创建。核心调用链getValuesuspend fun getValue(secretName: String?) { val valueRequest GetSecretValueRequest { secretId secretName } SecretsManagerClient.fromEnvironment { region us-east-1 }.use { secretsClient - val response secretsClient.getSecretValue(valueRequest) val secret response.secretString println(The secret value is $secret) } }这一段是整个示例的核心由三步组成构造请求通过 Kotlin DSL 风格的构造器创建GetSecretValueRequest将命令行传入的secretName赋给secretId字段。secretId可以是一个密钥的名称Name也可以是 ARN示例使用名称。创建客户端调用SecretsManagerClient.fromEnvironment { region us-east-1 }创建客户端。fromEnvironment表示客户端配置凭据、区域从环境变量、默认凭据链等来源解析示例中显式指定了区域us-east-1。客户端实现Closeable/Use接口因此采用.use { ... }作用域函数确保用后自动关闭释放底层 HTTP 连接资源。发起请求并读取结果secretsClient.getSecretValue(valueRequest)返回GetSecretValueResponse其中secretString字段保存解密后的字符串型密钥内容最后打印输出。需要注意getValue是suspend函数说明 SDK for Kotlin 的 API 基于协程coroutine设计调用必须在协程作用域或runBlocking中执行——这正是测试文件中使用runBlocking包裹调用的原因。关于返回值的补充说明从代码可见示例只读取了response.secretString即字符串类型的密钥值。对于以二进制形式存储的密钥如密钥对私钥Secrets Manager 会将其 Base64 编码后通过secretBinary字段返回需要额外的 Base64 解码步骤本示例的 GetSecretValue.kt 中并未处理该场景读者在实际项目中可根据密钥类型自行扩展。构建配置build.gradle.kts 深度解读示例的构建脚本 build.gradle.kts 完整定义了工程的编译、依赖与测试配置关键点如下配置项值说明Kotlin 版本2.1.0kotlin(jvm)插件版本Java 兼容性VERSION_17source/target 均为 Java 17SDK BOMaws.sdk.kotlin:bom:1.5.63统一管理 AWS SDK for Kotlin 各模块版本服务依赖aws.sdk.kotlin:secretsmanagerSecrets Manager 服务 SDKHTTP 引擎http-client-engine-okhttp、http-client-engine-crtOkHttp 与 AWS CRT 两种 HTTP 客户端引擎JSON 工具com.google.code.gson:gson:2.10Gson 序列化库协程kotlinx-coroutines-core:1.6.4支撑suspendAPI 的协程核心库日志slf4j-api:2.0.15、slf4j-simple:2.0.15应用与测试日志测试框架org.junit.jupiter:junit-jupiter:5.9.2JUnit 5Jupiter此外构建脚本还应用了org.jlleitschuh.gradle.ktlint插件用于 Kotlin 代码风格检查并在tasks.test中启用 JUnit Platform 与测试事件输出passed/skipped/failed方便在终端直接观察每个测试的通过情况。运行示例的命令在满足前置条件的前提下可在 kotlin/services/secrets-manager 目录执行gradle run --argssecretName程序会调用 Secrets Manager 的GetSecretValue接口并在控制台输出The secret value is ...。测试实现JUnit 5 协程验证测试源码结构测试文件位于 SecretsManagerKotlinTest.kt核心代码如下TestInstance(TestInstance.Lifecycle.PER_CLASS) TestMethodOrder(OrderAnnotation::class) class SecretsManagerKotlinTest { private val logger: Logger LoggerFactory.getLogger(SecretsManagerKotlinTest::class.java) private var secretName mysecret Test Order(1) fun getSecretValue() runBlocking { getValue(secretName) logger.info(Test 1 passed) } }几个值得注意的实现细节测试类使用PER_CLASS生命周期与TestMethodOrder(OrderAnnotation::class)保证测试按Order注解顺序执行测试直接复用主程序中的getValue函数通过import com.kotlin.secrets.getValue而不是重新实现调用逻辑体现了示例代码的可复用性由于getValue是suspend函数测试用runBlocking将其包裹在阻塞式测试线程中启动协程测试前需要确保名为mysecret的密钥已存在于 Secrets Manager 中否则调用会抛异常导致测试失败日志输出依赖org.slf4j.Logger配合 src/test/resources/logback.xml 中配置的 Logback 控制台输出可在终端看到Test 1 passed之类的信息。运行测试根据 kotlin 目录总 README 的说明测试可以从 IDE如 IntelliJ IDEA直接运行也可以从命令行执行gradle test每个测试运行时终端会打印成功/失败消息例如Test 1 passed需要注意总 README 中提到部分 Kotlin 服务模块的 JUnit 测试依赖resources目录下的config.properties文件中的配置值若未定义全部所需值测试会失败。就本模块而言测试直接硬编码了secretName mysecret因此在运行前请确保该密钥已创建。附加资源与延伸阅读原 README 的 Additional resources 章节推荐了以下官方资料读者可按需查阅Secrets Manager 用户指南覆盖密钥创建、轮换、权限模型等完整概念Secrets Manager API ReferenceGetSecretValue、CreateSecret、PutSecretValue等接口的字段与行为定义SDK for Kotlin Secrets Manager API 参考Kotlin 语言视角下的客户端与模型类文档。若希望在多服务场景中深入练习可进一步阅读 kotlin/README.md 中列出的 usecases 教程涵盖 SQS、DynamoDB、Redshift、Aurora、Step Functions 等组合示例以及本仓库 scenarios/basics 下的跨服务基础场景文档。小结本文围绕仓库中 secrets-manager 目录 的 README 与其源码完整梳理了使用 AWS SDK for Kotlin 调用 Secrets ManagerGetSecretValue的路径从请求构造GetSecretValueRequest、客户端初始化fromEnvironment到协程化调用与结果读取并深入讲解了 Gradle 构建配置Kotlin 2.1.0、Java 17、SDK BOM 1.5.63与 JUnit 测试的组织方式。掌握了这套示例后你可以将其扩展为完整的密钥管理工具——例如结合CreateSecret、PutSecretValue与RotateSecret接口为应用构建安全、可轮换的凭据读取链路。赞分享示例工程教程后端【免费下载链接】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 读取 AWS Secrets Manager 密钥GetSecretValue 实战指南使用 AWS SDK for .NET 读取 AWS Secrets Manager 密钥GetSecretValue 实战指南 本文以 AWS 官方示例仓库示例工程教程后端使用 AWS SDK for C 读取 AWS Secrets Manager 密钥getSecretValue 实战指南使用 AWS SDK for C 读取 AWS Secrets Manager 密钥getSecretValue 实战指南 本文以 cpp/example示例工程教程后端使用 AWS SDK for JavaScript (v3) 读取 AWS Secrets Manager 密钥GetSecretValue 实战指南使用 AWS SDK for JavaScript v3 读取 AWS Secrets Manager 密钥GetSecretValue 实战指南 本文以开源示例工程教程后端上一篇KMS_VL_ALL_AIOWindows与Office智能激活终极方案下一篇Mac Mouse Fix如何在5分钟内为普通鼠标解锁macOS原生级体验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考