
示例工程教程后端【免费下载链接】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点击查看免费下载本指南以 javav2/example_code/glue 目录为核心系统讲解如何使用 AWS SDK for Java 2.x 操作 AWS Glue 服务。AWS Glue 是一项可扩展的无服务器数据集成服务帮助开发者轻松完成数据的发现、准备与整合服务于分析、机器学习和应用开发。阅读本文后你将掌握使用 Java 代码创建数据库与爬虫Crawler、启动爬取任务、在 Data Catalog 中查询表、创建并运行 ETL Job以及清理资源的完整闭环能力。概览AWS Glue 与 SDK for Java 2.xAWS Glue 的核心价值在于自动发现并编目数据。它可以扫描存储在 Amazon S3、Amazon RDS、Amazon Redshift 等各类数据源中的数据构建一个统一的元数据仓库——AWS Glue Data Catalog为组织提供数据资产的全景视图。在此基础上你可以创建 ETL 任务Job按需或按计划调度执行从而简化数据集成管线的搭建与维护。javav2/example_code/glue目录下的示例完整覆盖了这一工作流示例文件相对路径说明入门示例Hello AWS Gluesrc/main/java/com/example/glue/HelloGlue.java调用ListJobs展示服务基础用法完整场景Learn the basicssrc/main/java/com/example/glue/scenario/GlueScenario.java覆盖爬虫、Data Catalog、Job 的 13 步完整流程表格搜索额外补充src/main/java/com/example/glue/SearchTables.java使用SearchTables全文检索 Data Catalog 表集成测试src/test/java/GlueTest.java以Order按序驱动 13 个场景步骤Maven 构建配置pom.xml声明 AWS SDK BOM、glue 依赖与构建插件运行前置条件运行本目录示例前需要满足以下条件详细说明见 javav2 文件夹 README在本地通过 clone、fork 或下载 zip 方式获取本仓库安装 Apache Maven大于 3.0确保 Java SDK 能通过默认凭证提供者链default credentials provider chain获取 AWS 凭证例如在~/.aws/config中配置 IAM Identity Center SSO或在~/.aws/credentials中配置临时凭证配置默认区域。示例代码硬编码使用Region.US_EAST_1美国东部 1 区如果默认区域未设置SDK 同样会使用 us-east-1。此外请注意运行示例或测试可能会产生 AWS 账户费用建议遵循最低权限原则least privilege只为 IAM 角色授予执行任务所必需的最小权限示例代码并未在每个 AWS 区域都经过测试。示例一Hello AWS Glue —— 用 ListJobs 快速入门入门示例位于 HelloGlue.java核心是构建GlueClient并调用listJobs验证 SDK 配置是否正确。GlueClient glueClient GlueClient.builder() .region(Region.US_EAST_1) .build(); public static void listJobs(GlueClient glueClient) { ListJobsRequest request ListJobsRequest.builder() .maxResults(10) .build(); ListJobsResponse response glueClient.listJobs(request); ListString jobList response.jobNames(); jobList.forEach(job - { System.out.println(Job Name: job); }); }要点解读GlueClient.builder().region(...).build()是 SDK for Java 2.x 创建服务客户端的标准方式凭证由默认凭证链自动解析ListJobsRequest通过maxResults(10)控制单次返回的任务定义数量上限1100 之间响应体jobNames()返回任务名称列表该示例本身不产生计费资源是验证环境连通性的理想起点。示例二Learn the basics —— 爬虫 Data Catalog ETL Job 全流程这是本目录的核心场景示例入口为 GlueScenario.javamain方法按 13 个步骤串联完整业务流创建数据库database创建爬虫crawler获取爬虫并等待其进入READY状态启动爬虫获取数据库信息列出数据库中的表table创建 ETL Job启动一次 Job run列出所有 Job查询 Job run 状态直至结束删除 Job删除数据库删除爬虫。整个流程实现了一个真实的数据集成任务爬虫扫描公共 Amazon S3 存储桶并生成 CSV 格式元数据数据库 → 在 Data Catalog 中列出数据库与表 → 创建 Job 从 S3 桶抽取 CSV 数据、执行转换并加载 JSON 格式输出到另一个 S3 桶 → 查看 Job run 信息、验证转换后的数据并清理资源。命令行参数GlueScenario运行时需要传入 9 个参数源码 L88-L103参数不足时程序会打印用法说明并退出Usage: iam s3Path cron dbName crawlerName jobName scriptLocation locationUri bucketNameSc Where: iam - 拥有 AWS Glue 与 S3 权限的 IAM 角色 ARN s3Path - 包含数据的 S3 目标路径例如 s3://bucket name/read cron - 用于指定调度时间的 cron 表达式例如 cron(15 12 * * ? *) dbName - 数据库名称 crawlerName - 爬虫名称 jobName - 分配给任务定义的名称 scriptLocation - 执行任务所用脚本的 S3 路径 locationUri - 数据库位置可参考 resources 文件夹中的文件 bucketNameSc - 创建 Job 时使用的 S3 存储桶名称程序采用交互式驱动每完成一个步骤会提示输入c回车继续waitForInputToContinue辅助方法便于逐步观察每个 API 调用的效果。步骤 1创建数据库createDatabase 通过DatabaseInput描述数据库元信息再提交createDatabase请求DatabaseInput input DatabaseInput.builder() .description(Built with the AWS SDK for Java V2) .name(dbName) .locationUri(locationUri) .build(); CreateDatabaseRequest request CreateDatabaseRequest.builder() .databaseInput(input) .build(); glueClient.createDatabase(request);locationUri通常指向数据实际存放的根路径如s3://bucket/为后续爬虫和查询提供元数据定位场景代码对GlueException做了容错处理若错误信息为Database already exists.则跳过创建保证示例可重复运行。步骤 2创建爬虫Crawler爬虫负责扫描数据源并自动推断 Schema。createGlueCrawler 的核心是组装S3Target与CrawlerTargetsS3Target s3Target S3Target.builder() .path(s3Path) .build(); ListS3Target targetList new ArrayList(); targetList.add(s3Target); CrawlerTargets targets CrawlerTargets.builder() .s3Targets(targetList) .build(); CreateCrawlerRequest crawlerRequest CreateCrawlerRequest.builder() .databaseName(dbName) .name(crawlerName) .description(Created by the AWS Glue Java API) .targets(targets) .role(iam) .schedule(cron) .build(); glueClient.createCrawler(crawlerRequest);关键参数说明databaseName爬取结果写入的 Data Catalog 数据库role爬虫运行时扮演的 IAM 角色 ARN必须同时具备读取目标 S3 与写入 Glue 服务的权限schedule可选调度表达式cron决定爬虫按何种频率自动运行targets.s3Targets声明 S3 扫描目标还可扩展到 JDBC、DynamoDB 等数据源。步骤 34获取并启动爬虫getSpecificCrawler 使用轮询模式等待爬虫就绪boolean ready false; while (!ready) { GetCrawlerResponse response glueClient.getCrawler(crawlerRequest); String status response.crawler().stateAsString(); if (status.compareTo(READY) 0) { ready true; } Thread.sleep(3000); }每 3 秒轮询一次直到crawler.state变为READY随后 startSpecificCrawler 调用startCrawler触发首次爬取。步骤 56查询数据库与表Data CataloggetSpecificDatabase 调用getDatabase获取数据库对象并将创建时间createTimeInstant类型格式化为可读日期getGlueTables 调用getTables遍历数据库内全部表GetTablesRequest tableRequest GetTablesRequest.builder() .databaseName(dbName) .build(); GetTablesResponse response glueClient.getTables(tableRequest); ListTable tables response.tableList();注意时序爬虫启动后表需要时间完成编目。场景代码在步骤 6 前显式执行TimeUnit.MINUTES.sleep(5)等待 5 分钟确保表可用这一点在集成测试中同样保留。如果只想对 Data Catalog 做全文检索可参考 SearchTables.java通过SearchTablesRequest的searchText(text)、resourceShareType(ALL)与maxResults(10)参数跨资源类型模糊匹配表名及数据库名。步骤 7创建 ETL JobcreateJob 通过JobCommand指定脚本与运行时再组装CreateJobRequestJobCommand command JobCommand.builder() .pythonVersion(3) .name(glueetl) .scriptLocation(scriptLocation) .build(); CreateJobRequest jobRequest CreateJobRequest.builder() .description(A Job created by using the AWS SDK for Java V2) .glueVersion(2.0) .workerType(WorkerType.G_1_X) .numberOfWorkers(10) .name(jobName) .role(iam) .command(command) .build(); glueClient.createJob(jobRequest);参数要点command.name(glueetl)任务类型为 Glue ETLpythonVersion(3)指定脚本语言与版本scriptLocation指向 S3 中实际执行的 ETL 脚本Python路径glueVersion(2.0)Glue 运行时版本决定 Spark 等组件的版本行为workerType(WorkerType.G_1_X)与numberOfWorkers(10)定义 Worker 类型与数量直接影响任务的并发能力与成本。步骤 8启动 Job runstartJob 通过argumentsMap 向 ETL 脚本传递输入/输出参数这是 Java 侧与 Python 脚本交换信息的标准方式MapString, String myMap new HashMap(); myMap.put(--input_database, inputDatabase); myMap.put(--input_table, inputTable); myMap.put(--output_bucket_url, outBucket); StartJobRunRequest runRequest StartJobRunRequest.builder() .workerType(WorkerType.G_1_X) .numberOfWorkers(10) .arguments(myMap) .jobName(jobName) .build(); StartJobRunResponse response glueClient.startJobRun(runRequest); System.out.println(The request Id of the job is response.responseMetadata().requestId());启动后立即返回本次运行的requestId可用于后续追踪这里再次显式指定workerType与numberOfWorkers可按单次运行覆盖任务定义中的默认值。步骤 910列出任务并跟踪运行状态getAllJobs 调用getJobsmaxResults(10)遍历任务定义getJobRuns 则轮询任务运行状态直到进入终态String jobState jobRun.jobRunState().name(); if (jobState.compareTo(SUCCEEDED) 0) { System.out.println(jobName has succeeded); jobDone true; } else if (jobState.compareTo(STOPPED) 0) { ... } else if (jobState.compareTo(FAILED) 0) { ... } else if (jobState.compareTo(TIMEOUT) 0) { ... } else { // 运行中打印状态、run Id 与 Glue 版本 } TimeUnit.SECONDS.sleep(5);轮询逻辑覆盖SUCCEEDED、STOPPED、FAILED、TIMEOUT四种终态每 5 秒检查一次其余状态视为运行中并持续输出进度是观察 ETL 任务生命周期的典型实现。步骤 1113清理资源场景的最后三步依次调用 deleteJobDeleteJobRequest、deleteDatabaseDeleteDatabaseRequest与 deleteSpecificCrawlerDeleteCrawlerRequest。删除数据库与爬虫之前场景会各等待 5 分钟确保爬虫停止、依赖解除避免清理失败。集成测试以 13 个有序用例驱动场景GlueTest.java 将场景的 13 个步骤映射为带Order(1)至Order(13)注解的 JUnit 5 集成测试每个用例都调用GlueScenario中的公开静态方法并断言不抛出异常assertDoesNotThrow。测试数据不写在代码中而是从 AWS Secrets Manager 读取名为test/glue的 SecretSecretsManagerClient secretClient SecretsManagerClient.builder() .region(Region.US_EAST_1) .build(); String secretName test/glue; GetSecretValueRequest valueRequest GetSecretValueRequest.builder() .secretId(secretName) .build(); GetSecretValueResponse valueResponse secretClient.getSecretValue(valueRequest);Secret 中通过 Gson 反序列化为SecretValues内部类包含IAM、s3Path、cron、locationUri、bucketNameSc等字段部分场景资源名如jobNameSc、crawlerNameSc、dbNameSc会追加UUID.randomUUID()避免并发测试间的命名冲突测试同样保留了 5 分钟等待逻辑GlueTest.java 与 L186-L194与场景主流程时序保持一致。运行测试前需在config.properties或 AWS Secrets Manager 中预先配置所需的全部测试值详见测试类头部注释。测试属于集成测试会真实调用 AWS 服务并产生费用。构建与运行示例示例项目基于 Maven 构建关键配置见 pom.xml编译目标Java 21java.version、maven.compiler.source/target依赖管理通过software.amazon.awssdk:bom:2.35.10统一 SDK 版本核心依赖为software.amazon.awssdk:glue并包含secretsmanager测试读取密钥、sso/ssooidcIAM Identity Center 凭证链路、GsonJSON 解析与 Log4j / SLF4J 日志组件构建插件maven-compiler-plugin编译与maven-surefire-plugin:3.5.2执行测试。在示例目录下执行mvn package即可完成编译与打包。如需将运行所需依赖一并打进可执行 JAR可参照 javav2 README 中maven-shade-plugin的配置方式uber JAR。随后运行完整场景mvn exec:java \ -Dexec.mainClasscom.example.glue.scenario.GlueScenario \ -Dexec.argsiam s3Path cron dbName crawlerName jobName scriptLocation locationUri bucketNameSc按程序提示在每一步输入c回车继续即可观察从建库、爬取、建表到 ETL 执行的完整输出。运行集成测试则使用mvn test运行前务必确保test/glueSecret或config.properties已正确配置并知晓测试会产生真实的 AWS 资源与费用。更多资源AWS Glue 开发者指南了解服务概念、爬虫与 Data Catalog 工作原理AWS Glue API 参考查询所有操作的请求/响应模型SDK for Java 2.x 的 Glue 包参考查看GlueClient及各请求类的完整 API。总结通过 javav2/example_code/glue 目录你可以完整掌握使用 AWS SDK for Java 2.x 驱动 AWS Glue 的核心能力以GlueClient为统一入口按「建库 → 建爬虫 → 爬取编目 → 查询 Data Catalog → 建 Job → 运行与监控 → 清理」的顺序组织 ETL 工作流同时通过轮询模式处理爬虫就绪与任务终态等异步状态并结合 Secrets Manager 与 JUnit 集成测试实现可重复、可自动化的验证闭环。这套代码模式可直接复用到生产级数据集成应用的开发中。赞分享示例工程教程后端【免费下载链接】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 C 操作 AWS Glue 实战从 Crawler 数据爬取到 ETL 作业运行的完整示例解析AWS SDK for C 操作 AWS Glue 实战从 Crawler 数据爬取到 ETL 作业运行的完整示例解析 导读 本文以 cpp/exampl示例工程教程后端aws-doc-sdk-examples用 AWS SDK for Java 2.x 操作 AWS Systems Manager 的完整示例精讲aws doc sdk examples用 AWS SDK for Java 2.x 操作 AWS Systems Manager 的完整示例精讲 本篇技术指示例工程教程后端aws-doc-sdk-examples使用 AWS SDK for Java 2.x 操作 Amazon Timestream 的完整示例与测试指南aws doc sdk examples使用 AWS SDK for Java 2.x 操作 Amazon Timestream 的完整示例与测试指南 Ama示例工程教程后端上一篇GitSavvy与GitLab集成企业级Git管理的完整解决方案下一篇Context7终极指南如何用实时智能文档助手提升3倍编程效率创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考