资讯详情

AWS S3 Batch Operations 基础场景实战指南:从 CreateJob 到 DeleteJobTagging 的完整操作流程

📅 2026/10/7 10:23:02 | 华诺云谱 👁 阅读
AWS S3 Batch Operations 基础场景实战指南:从 CreateJob 到 DeleteJobTagging 的完整操作流程
示例工程教程后端【免费下载链接】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 仓库中的 S3 Batch 基础场景文档系统讲解如何通过 AWS SDK 使用 Amazon S3 Batch Operations 对海量对象执行批量标记Tagging任务。读者将掌握从创建批量任务、修改优先级、查询与更新任务标签、取消任务到清理资源的完整调用链并理解 CloudFormation IAM 角色装配、CSV manifest 清单机制等底层实现细节。场景概述S3 Batch Operations 能做什么Amazon S3 Batch Operations 用于对存储在 S3 中的大量对象执行同一类操作例如批量添加、更新或移除对象标签。它由 AWS 自动调度与扩缩容无需手动介入即可处理从几千到上千万对象的规模非常适合成本分摊、生命周期管理、元数据驱动工作流等需要对象级标记一致性的场景。仓库中的基础场景文档scenarios/basics/s3/README.md将这一能力浓缩为一个可交互的完整场景程序通过交互式提示逐步引导用户先后完成批量任务创建、优先级修改、标签查询/更新/删除、任务列举与取消等 8 个 S3 Batch 核心操作并全程借助 AWS CloudFormation 完成 IAM 角色等前置资源的搭建与销毁。场景涉及的服务操作清单原文档列出的服务操作调用如下它们是场景的主干步骤说明S3 Control 操作1创建批量任务Batch JobCreateJob2描述批量任务详情DescribeJob3查询任务关联的标签GetJobTagging4更新任务标签PutJobTagging5列举批量任务ListJobs6修改已创建任务的优先级UpdateJobPriority7取消批量任务UpdateJobStatus状态改为Cancelled8删除任务标签DeleteJobTagging这 8 个操作在仓库的 Python 实现中由 s3_batch_wrapper.py 逐一封装在 Java 2.x 实现中由 S3BatchActions.java 以异步 APICompletableFuture形式提供如createS3JobAsync、updateJobPriorityAsync、cancelJobAsync、putJobTaggingAsync、deleteBatchJobTagsAsync等。注意这些操作均由boto3.client(s3control)对应的 S3 Control 客户端调用而非普通 S3 客户端——S3 Batch Operations 属于 S3 Control 平面的管理能力。前置资源准备CloudFormation 自动创建 IAM 角色批量任务需要一个 IAM 角色该角色会被 S3 的batchoperations.s3.amazonaws.com服务代为承担AssumeRole用于读取 manifest、执行对象标记操作并写入报告。场景文档明确指出程序通过 AWS CloudFormation 模板自动创建该 IAM 角色无需手工在控制台配置。IAM 角色模板的核心内容Python 侧在 cloudformation_helper.py 中以内联模板形式定义资源信任策略Principal指定为服务batchoperations.s3.amazonaws.comAction为sts:AssumeRole允许 S3 Batch Operations 服务代行角色托管策略附加arn:aws:iam::aws:policy/AmazonS3FullAccess内联策略S3BatchOperationsPolicy允许s3:*与s3-object-lambda:*作用于所有资源输出通过Fn::GetAtt将角色 ARN 暴露为堆栈输出S3BatchRoleArn供场景在创建任务时使用。调用侧使用create_stack(..., Capabilities[CAPABILITY_IAM])部署堆栈并借助 waiterstack_create_complete延迟 5 秒、最多 60 次尝试等待创建完成销毁时对应使用delete_stack与stack_delete_completewaiter。Java 版本同样以MyS3Stack为栈名STACK_NAME MyS3Stack通过CloudFormationHelper.deployCloudFormationStack/getStackOutputs获取角色 ARN。实际使用时建议遵循最小权限原则将内联策略的Resource收窄到本次操作涉及的桶与对象前缀而非*。分步操作流程与关键实现第 1 步创建 S3 桶并上传 manifest 清单场景初始化在 s3_batch_scenario.py 的setup_resources中完成生成唯一桶名demo-s3-batch-uuidJava 侧为amzn-s3-demo-bucket需自行替换创建 S3 桶并在非us-east-1区域自动携带CreateBucketConfiguration.LocationConstraint见s3_batch_wrapper.create_bucket上传 5 个文件job-manifest.csv、object-key-1.txt至object-key-4.txt构造 manifest 内容——CSV 每行形如bucket,key例如demo-s3-batch-xxx,object-key-1.txt返回manifest_location arn:aws:s3:::bucket/job-manifest.csv与report_bucket_arn arn:aws:s3:::bucket。manifest 文件的ETag会通过head_object读取并在创建任务时作为清单校验值传给 S3 Control。第 2 步CreateJob 创建批量标记任务create_s3_batch_jobs3_batch_wrapper.py调用s3control_client.create_job核心参数如下AccountId通过 STSget_caller_identity()[Account]获取的账号 ID这也是场景开场要求用户提供账号 ID 的用途OperationS3PutObjectTaggingTagSet为[{Key: BatchTag, Value: BatchValue}]Manifest.Spec格式S3BatchOperations_CSV_20180820字段[Bucket, Key]Manifest.Location传入对象 ARN 与 ETagReport写入同一桶下的batch-op-reports/前缀格式Report_CSV_20180820ReportScope为AllTasksPriority初始值 10RoleArn来自 CloudFormation 输出的角色 ARNConfirmationRequiredTrue任务先进入待确认状态。创建成功后返回response[JobId]。场景随后短暂等待并调用describe_job检查FailureReasons若任务失败会询问用户是否继续。第 3 步UpdateJobPriority 修改优先级update_job_priority先查询当前任务状态仅当状态为Ready或Suspended时允许更新将Priority从 10 提升到 60随后尝试用update_job_status(RequestedJobStatusReady)激活任务。数值越高优先级越高——例如优先级 30 的任务优于优先级 20 的任务。若任务处于Active、Completing、Complete、Cancelled、Failed等状态则不允许修改程序会打印原因并继续后续步骤。第 4 步UpdateJobStatus 取消任务cancel_job同样先检查状态Ready、Suspended、Active状态可取消通过update_job_status(RequestedJobStatusCancelled)实现Completing/Complete状态则无法取消。场景中是否取消由用户输入决定y/n。第 5 步DescribeJob 查看任务详情describe_job_details输出JobId、Description、Status、RoleArn、Priority以及ProgressSummary中的任务总数、成功数与失败数用于确认任务的实际执行结果。第 68 步任务标签的查询、更新与删除GetJobTaggingget_job_tags返回任务标签键值对并逐行打印无标签时提示未找到PutJobTaggingput_job_tags追加两个标签{Key: Environment, Value: Development}与{Key: Team, Value: DataProcessing}ListJobslist_jobs按状态过滤Active、Complete、Cancelled、Failed、New、Paused、Pausing、Preparing、Ready、Suspended输出每个任务的 ID 与优先级DeleteJobTaggingdelete_job_tags删除任务的全部标签是否执行由用户输入决定。运行方式与代码入口Pythonboto3前置条件Python 3.x、已配置 AWS 凭证并安装依赖requirements.txtboto31.26.0、botocore1.29.0pip install -r requirements.txt python s3_batch_scenario.py入口文件 s3_batch_scenario.py 的main()会创建 S3、S3 Control、STS、CloudFormation 四个 boto3 客户端组装S3BatchWrapper与CloudFormationHelper随后调用S3BatchScenario.run_scenario()。Java 2.x入口为 S3BatchScenario.java 中的main方法流程与 Python 版一致先经 CloudFormation 部署角色再创建桶、上传文件、依次执行创建/修改优先级/取消/描述/标签增删查/列举最后按用户选择清理资源。Java 侧使用异步客户端任务创建等调用返回CompletableFuture并通过.join()同步等待结果。集成测试仓库还提供了 pytest 集成测试 test_batch_scenario.py通过pytest.mark.integ标记以input_mocker.mock_answers模拟用户输入对取消任务回答n其余回答y断言场景输出包含has successfully completed可据此验证整条调用链是否端到端贯通。资源清理与异常兜底场景结尾询问是否删除场景中创建的 AWS 资源删除桶内容cleanup_resources逐个删除 5 个业务文件并额外按batch-op-reports/前缀遍历删除任务报告对象再删除整个桶删除堆栈调用destroy_cloudformation_stack(STACK_NAME)销毁 IAM 角色所在的 CloudFormation 堆栈。此外无论正常结束还是中途抛错异常处理器都会尝试执行同样的清理逻辑Python 版在except分支中重复调用清理并销毁堆栈避免失败运行残留计费资源——这是此类含真实 AWS 调用场景的通用最佳实践。小结本场景将 S3 Batch Operations 的核心生命周期完整串成一个可交互、可复跑、可测试的流程CloudFormation 一键装配 IAM 角色 → S3 桶与 CSV manifest 就绪 →CreateJob发起批量标记 →UpdateJobPriority调整任务优先级 →UpdateJobStatus控制取消 →DescribeJob/GetJobTagging观察执行结果 →PutJobTagging/DeleteJobTagging管理任务元数据 → 最终清理资源。对于需要按清单对海量 S3 对象执行标签等操作的开发者场景入口文档、Python 场景实现 与 Java 场景实现 三份材料共同构成了从入门到上手的完整参考。赞分享示例工程教程后端【免费下载链接】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 S3 完整指南从基础动作到高级场景实战AWS SDK for .NET 操作 Amazon S3 完整指南从基础动作到高级场景实战 本文以开源仓库 aws doc sdk examples htt示例工程教程后端使用 AWS SDK for SAP ABAP 管理 Amazon S3 Control 批量操作S3 Batch Operations 完整实战指南使用 AWS SDK for SAP ABAP 管理 Amazon S3 Control 批量操作S3 Batch Operations 完整实战指南 导语示例工程教程后端使用 boto3 实现 Amazon S3 Batch Operations 批处理任务全流程AWS SDK for Python 场景实战使用 boto3 实现 Amazon S3 Batch Operations 批处理任务全流程AWS SDK for Python 场景实战 本文围绕 AW示例工程教程后端创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑