
示例工程教程后端【免费下载链接】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 仓库中的sap-abap/services/rek模块为主体系统讲解如何通过 AWS SDK for SAP ABAP 在 SAP 系统中调用 Amazon Rekognition实现人脸集合管理、人脸检索比对、标签/文本/名人识别等 15 项核心图像分析能力。读完本文你将掌握 Rekognition 在 SAP ABAP 中的完整调用链路、每个 API 的参数与异常处理模式以及配套 ABAP 单元测试的写法。概述在 SAP 世界里解锁云上图像智能Amazon Rekognition 是一项托管式图像与视频分析服务能够快速为应用程序添加目标检测、人脸识别、文字提取、名人识别与内容安全审查能力。本仓库在 sap-abap/services/rek 目录下提供了一个独立的 SAP ABAP 示例包Package for Rekognition演示如何用 AWS SDK for SAP ABAP 驱动这些能力。核心载体是一个全局 ABAP 类/awsex/cl_rek_actions描述为 Rekognition Code Example它把 Rekognition 的 15 个常用 API 封装为可直接调用的方法并配套一份基于 ABAP 单元测试框架的测试类ltc_awsex_cl_rek_actions。整个示例遵循「会话创建 → 服务工厂获取客户端 → 调用 API → 捕获 AWS 异常」的统一模式非常适合 SAP 开发者在 ABAP 环境中快速上手云图像服务。从源码结构看示例的实现方式可以概括为通过/aws1/cl_rt_session_awscreate( )建立 AWS 会话通过/aws1/cl_rek_factorycreate( lo_session )获取 Rekognition 客户端然后把图片以S3Object Image包装对象的形式传给 API——这与 Rekognition 官方 API 的请求模型保持一致。运行前提与费用须知根据 sap-abap/README.md运行本示例前需要满足拥有 AWS 账户并按 AWS SDK for SAP ABAP 配置全局设置 配置默认凭证与默认 Region在 SAP 系统如 SE24 面向对象编辑器中导入并激活sap-abap/services/rek包下的对象abapGit 序列化格式含package.devc.xml、类源文件、测试源文件。同时需注意原文 ⚠ Important 部分的要点运行本代码可能产生 AWS 费用运行测试同样可能产生费用建议按最小权限原则授权仅授予完成任务所需的最低权限示例代码未在所有 AWS Region 逐一验证请确认目标服务在所选 Region 可用仓库中的单元测试被标记为DANGEROUS会真实创建与删除 AWS 资源只应在合适的测试 AWS 账户中运行。核心实现类与 15 个操作总览/awsex/cl_rek_actions的全部代码位于 sap-abap/services/rek/#awsex#cl_rek_actions.clas.abap类定义第 1–153 行声明了 15 个 PUBLIC 方法按业务功能可划分为四组分组方法源码片段行号集合管理create_collection/delete_collection/describe_collection/list_collectionsL166 / L186 / L206 / L383人脸索引与搜索index_faces/list_faces/search_faces/search_faces_by_image/delete_facesL228 / L267 / L331 / L292 / L358人脸检测与比对detect_faces/compare_facesL405 / L444内容理解与合规detect_labels/detect_moderation_labels/detect_text/recognize_celebritiesL497 / L532 / L566 / L600所有方法均以RAISING /aws1/cx_rt_generic声明即 AWS SDK for SAP ABAP 的通用运行时异常会被抛给调用方方法内部则针对具体业务场景捕获更精确的 Rekognition 异常如cx_rekresourcenotfoundex、cx_rekinvalids3objectex、cx_rekinvalidparameterex、cx_rekresrcalrdyexistsex并通过MESSAGE ... TYPE E或TYPE I向 ABAP 调用环境反馈执行结果。统一调用骨架会话、工厂与 Profile每个方法都遵循相同的初始化三段式以create_collection源码 L160-L177为例CONSTANTS cv_pfl TYPE /aws1/rt_profile_id VALUE ZCODE_DEMO. DATA(lo_session) /aws1/cl_rt_session_awscreate( cv_pfl ). DATA(lo_rek) /aws1/cl_rek_factorycreate( lo_session ). TRY. oo_result lo_rek-createcollection( iv_collectionid iv_collection_id ). MESSAGE Collection created successfully. TYPE I. CATCH /aws1/cx_rekresrcalrdyexistsex. MESSAGE Collection already exists. TYPE E. CATCH /aws1/cx_rekinvalidparameterex. MESSAGE Invalid parameter value. TYPE E. ENDTRY.这里有几个值得注意的实现事实Profile 标识所有方法都硬编码ZCODE_DEMO作为rt_profile_id即本仓库示例约定使用名为ZCODE_DEMO的 AWS 配置 Profile 来承载凭证与 Region 设置。你在实际项目里应替换为自己的 Profile 名称。会话与服务客户端/aws1/cl_rt_session_awscreate( )负责建立与 AWS 的连接会话/aws1/cl_rek_factorycreate( )负责创建 Rekognition 服务的接口客户端接口为/aws1/if_rek测试类中也以同样方式实例化 S3 客户端/aws1/if_s3见 测试类 L85-L88。响应对象多数方法通过EXPORTING oo_result返回类型化的响应类如cl_rekcreatecollresponse、cl_rekdetectlabelsrsp方法内部会调用get_*访问器读取结果字段例如get_facecount( )、get_facerecords( )、get_labels( )。图片的传入方式S3Object 与 Image 包装对象Rekognition 的绝大多数图像分析 API 都要求通过Image参数指定待分析图片而Image可以引用 S3 对象或传入图片字节。本示例统一采用S3 对象引用方式形成固定的两段式构造模式见 index_faces L228-L257 Create S3 object reference for the image DATA(lo_s3object) NEW /aws1/cl_reks3object( iv_bucket iv_s3_bucket iv_name iv_s3_key ). Create image object DATA(lo_image) NEW /aws1/cl_rekimage( io_s3object lo_s3object ). oo_result lo_rek-indexfaces( iv_collectionid iv_collection_id io_image lo_image iv_externalimageid iv_external_id iv_maxfaces iv_max_faces ).由此可以推断出实践前提调用前需要先把待分析图片上传到 S3并把 Bucket 名称与对象 Key 作为方法的输入参数传入。相关参数类型在类定义中都有明确约束例如iv_s3_bucket TYPE /aws1/reks3bucket、iv_s3_key TYPE /aws1/reks3objectname。测试类正是先借助/awsex/cl_utils工具类创建带随机后缀的测试桶再把一张 10×10 灰度 JPEG 以putobject上传见 测试类 class_setup L100-L216。人脸集合管理创建、删除、描述与列出Rekognition 的人脸集合Collection是存储人脸向量的容器是人脸检索功能的前提。本示例提供四个管理操作。创建集合create_collection入参为iv_collection_id TYPE /aws1/rekcollectionid返回cl_rekcreatecollresponse。已存在时捕获cx_rekresrcalrdyexistsex并提示 Collection already exists.参数非法时捕获cx_rekinvalidparameterex。删除集合delete_collection入参同为集合 ID。若集合不存在捕获cx_rekresourcenotfoundex并提示 Collection not found.。描述集合describe_collection返回cl_rekdescrcollresponse源码通过get_facecount( )读取已索引人脸数并拼装消息oo_result lo_rek-describecollection( iv_collectionid iv_collection_id ). DATA(lv_face_count) oo_result-get_facecount( ). DATA(lv_msg) |Collection described: { lv_face_count } face(s) indexed.|. MESSAGE lv_msg TYPE I.列出集合list_collections入参iv_max_results TYPE /aws1/rekpagesize测试中传入 100通过get_collectionids( )获取集合 ID 列表并输出数量。从测试实现看集合创建后并非立即可用测试类专门实现了wait_for_collection_ready轮询逻辑最多 30 次、每次等待 2 秒通过describeCollection是否抛出cx_rekresourcenotfoundex判断就绪状态这一点在编写生产代码时同样值得借鉴——创建集合后应等待其进入 ACTIVE 状态再执行 IndexFaces。人脸索引与检索IndexFaces、ListFaces、SearchFaces、DeleteFaces这一组方法构成了完整的人脸识别闭环index_faces把 S3 图片中的人脸录入指定集合入参包括iv_collection_id、S3 位置、iv_external_id TYPE /aws1/rekexternalimageid外部标识用于业务关联和iv_max_faces TYPE /aws1/rekmaxfacestoindex。通过get_facerecords( )统计成功索引的人脸数。list_faces列出集合内已索引的人脸入参iv_max_results TYPE /aws1/rekpagesize通过get_faces( )读取人脸列表。search_faces以已索引人脸的FaceId类型/aws1/rekfaceid为查询条件在集合内检索相似人脸支持iv_threshold TYPE /aws1/rt_float_as_string相似度阈值测试中取80与iv_max_faces TYPE /aws1/rekmaxfaces。search_faces_by_image直接以一张 S3 图片为查询条件检索集合参数除 S3 位置外同样是阈值与最大返回数通过get_facematches( )获取匹配列表。delete_faces按 FaceId 列表删除集合中的人脸入参it_face_ids TYPE /aws1/cl_rekfaceidlist_wtt_faceidlist需用包装类cl_rekfaceidlist_w构造通过get_deletedfaces( )返回实际删除的 FaceId 列表。测试类展示了完整的测试编排L632-L931先用index_faces建立测试人脸并保存FaceId到类级变量av_indexed_face_id等待索引传播后依次执行list_faces、search_faces_by_image、search_faces、delete_faces。其中delete_faces测试还断言「已删除人脸列表不为空」体现了对返回数据结构的校验。需要说明的是由于测试用的 10×10 灰度 JPEG 不含真实人脸部分测试捕获cx_rekinvimageformatex后以提示信息优雅跳过重点仍在于验证 SDK 调用链路的正确性。人脸检测与比对DetectFaces、CompareFacesdetect_faces检测图片中所有人脸及其属性。实现细节值得关注——它把 Attributes 参数显式设为ALL以请求返回年龄、情绪、姿态、眼镜等全部人脸属性DATA(lt_attributes) VALUE /aws1/cl_rekattributes_wtt_attributes( ). DATA(lo_attr_wrapper) NEW /aws1/cl_rekattributes_w( iv_value ALL ). INSERT lo_attr_wrapper INTO TABLE lt_attributes. oo_result lo_rek-detectfaces( io_image lo_image it_attributes lt_attributes ).结果通过get_facedetails( )读取。compare_faces比较两张图片中的人脸是否为同一人。入参包含源图与目标图的 S3 位置以及iv_similarity TYPE /aws1/rt_float_as_string相似度阈值测试传80。实现会分别构造 source 与 target 两个cl_rekimage对象然后调用comparefaces。结果读取get_facematches( )与get_unmatchedfaces( )并在消息中同时输出匹配与不匹配的人脸数量oo_result lo_rek-comparefaces( io_sourceimage lo_source_image io_targetimage lo_target_image iv_similaritythreshold iv_similarity ). DATA(lv_message) |Face comparison completed: | |{ lv_matched_count } matched face(s), | |{ lv_unmatched_count } unmatched face(s).|. MESSAGE lv_message TYPE I.典型的落地场景包括身份核验、门禁通行、证件比对等。内容理解与合规审核Labels、Moderation、Text、Celebrities这四个方法全部只接收 S3 图片位置输出不同类型的识别结果detect_labels识别图片中的对象与场景标签如人、车、风景入参iv_max_labels TYPE /aws1/rekuinteger测试传 10结果经get_labels( )读取。detect_moderation_labels检测不适宜内容标签成人内容、暴力等常用于 UGC 内容安全审核结果经get_moderationlabels( )读取。detect_text从图片中提取文本结果经get_textdetections( )读取可用于车牌识别、票据 OCR 等场景。recognize_celebrities识别图片中的名人面孔结果经get_celebrityfaces( )读取。以上方法都复用相同的异常处理策略S3 对象非法时捕获cx_rekinvalids3objectex参数非法时捕获cx_rekinvalidparameterex。这四类能力可以组合出不少实用业务媒体库自动打标、社区内容合规过滤、单据影像数字化、媒体资产名人检索等。单元测试与资源生命周期管理测试类定义于 sap-abap/services/rek/#awsex#cl_rek_actions.clas.testclasses.abap声明为FOR TESTING DURATION SHORT RISK LEVEL DANGEROUS与 类定义 XML 中的WITH_UNIT_TESTS标志对应。测试覆盖了除delete_collection外的全部 15 个方法delete_collection使用专门的av_collection_id_for_delete集合。class_setup阶段的资源准备逻辑尤为值得学习L76-L221通过/awsex/cl_utilsget_random_string( )生成随机后缀构造全局唯一的集合 IDsap-abap-rek-{uuid}与测试桶名sap-abap-rek-{uuid}避免并发测试互相干扰调用工具类/awsex/cl_utilscreate_bucket( )创建 S3 桶——该工具类实现见 sap-abap/util/#awsex#cl_utils.clas.abap会根据会话 Region 决定是否携带CreateBucketConfiguration约束在us-east-1不得指定约束其他 Region 则以当前 Region 作为约束为桶与集合打上convert_testtrue标签便于成本归属与资源清理上传两张内置 10×10 灰度 JPEG以 XSTRING 十六进制拼装到测试桶对两个集合执行「最多 30 次、每 2 秒一次」的就绪轮询。class_teardown则负责反向清理删除 S3 对象、调用/awsex/cl_utilscleanup_bucket( )清空并删除桶该工具方法先listobjectsv2枚举对象再用deleteobjects批量删除最后deletebucket最后删除两个测试集合。测试断言上使用了cl_abap_unit_assertassert_bound、assert_equals、assert_not_initial、assert_true等标准 ABAP 单测断言。如何运行示例与测试根据 sap-abap/README.md 的说明每个示例都包含一个或多个可在SE24类构建器中执行的对象先进入对应服务目录查看该服务的 README即本文对应的 sap-abap/services/rek/README.md运行测试前请确认处于合适的测试 AWS 账户因为DANGEROUS级别的测试会真实创建并删除 AWS 资源且可能产生费用测试的运行说明同样以 sap-abap/README.md 为准。延伸阅读Amazon Rekognition Developer Guide服务能力与场景总览Amazon Rekognition API Reference各 API 的完整参数定义SDK for SAP ABAP Amazon Rekognition reference本文示例所用 SAP ABAP 客户端的类与方法参考仓库中其他 AWS SDK for SAP ABAP 服务示例位于 sap-abap/services可与本文对照学习统一的会话与工厂模式。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点击查看免费下载相关推荐ComfyUI-WanVideoWrapper8GB 显卡跑 14B AI 视频模型的完整部署与实操指南ComfyUI WanVideoWrapper8GB 显卡跑 14B AI 视频模型的完整部署与实操指南 ComfyUI WanVideoWrapper 是面示例工程教程后端CubeSandbox 热迁移实战指南Cloud Hypervisor 本地迁移与嵌套虚拟机迁移全流程解析CubeSandbox 热迁移实战指南Cloud Hypervisor 本地迁移与嵌套虚拟机迁移全流程解析 导读 本文以 CubeSandbox 仓库中 hy示例工程教程后端使用 AWS SDK for SAP ABAP 操作 Amazon Kinesis数据流实战指南使用 AWS SDK for SAP ABAP 操作 Amazon Kinesis数据流实战指南 导读 本文基于 sap abab/services/kns/示例工程教程后端上一篇PCL2启动器Java配置终极指南5分钟解决Forge安装难题下一篇如何利用Scan2CAD实现三维扫描到CAD模型的智能转换完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考