API从版本 1 到版本 2 的 S3 事件通知的变化 - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

API从版本 1 到版本 2 的 S3 事件通知的变化

本主题详细介绍了 S3 事件通知API从版本 1.x (v1) 到版本 2.x (v2) 的更改。 Amazon SDK for Java

高级别更改

结构性变化

V1 对EventNotificationRecord类型及其属性使用静态内部类,而 v2 对类型使用单独的公共类。EventNotificationRecord

命名约定变更

在 v1 中,属性类名称包含后缀 Ent it y,而 v2 为了更简单的命名而省略了此后缀:例如,而不是。eventDataeventDataEntity

依赖关系、包和类名的变化

在 v1 中,S3 事件通知API类与 S3 模块 () artifactId aws-java-sdk-s3 一起以传递方式导入。但是,在 v2 中,你需要添加对s3-event-notifications工件的依赖关系。

更改 v1 v2

Maven 依赖项

<dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-bom</artifactId> <version>1.X.X</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-s3</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>bom</artifactId> <version>2.X.X1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>software.amazon.awssdk</groupId> <artifactId>s3-event-notifications</artifactId> </dependency> </dependencies>
软件包名称 com.amazonaws.services.s3.event software.amazon.awssdk.eventnotifications.s3.model
类名

S3 EventNotification

S3 EventNotification .S3 EventNotificationRecord

S3 EventNotification。 GlacierEventDataEntity

S3 EventNotification。 IntelligentTieringEventDataEntity

S3 EventNotification。 LifecycleEventDataEntity

S3 EventNotification。 ReplicationEventDataEntity

S3 EventNotification。 RequestParametersEntity

S3 EventNotification。 ResponseElementsEntity

S3 EventNotification。 RestoreEventDataEntity

S3 EventNotification .S3 BucketEntity

S3 EventNotification .S3Entity

S3 EventNotification .S3 ObjectEntity

S3 EventNotification。 TransitionEventDataEntity

S3 EventNotification。 UserIdentityEntity

S3 EventNotification

S3 EventNotificationRecord

GlacierEventData

IntelligentTieringEventData

LifecycleEventData

ReplicationEventData

RequestParameters

ResponseElements

RestoreEventData

S3Bucket

S3

S3OBJECT

TransitionEventData

UserIdentity

1 最新版本

API改变

JSON转向S3EventNotification和反向

应用场景 v1 v2
S3EventNotification从JSON字符串创建
S3EventNotification notification = S3EventNotification.parseJson(message.body());
S3EventNotification notification = S3EventNotification.fromJson(message.body());
S3EventNotification转换为JSON字符串
String json = notification.toJson();
String json = notification.toJson();

的访问属性 S3EventNotification

应用场景 v1 v2
从通知中检索记录
List<S3EventNotification.S3EventNotificationRecord> records = notifcation.getRecords();
List<S3EventNotificationRecord> records = notification.getRecords();
从记录列表中检索记录
S3EventNotification.S3EventNotificationRecord record = records.stream().findAny().get();
S3EventNotificationRecord record = records.stream().findAny().get();
检索 Glacier 事件数据
S3EventNotification.GlacierEventDataEntity glacierEventData = record.getGlacierEventData();
GlacierEventData glacierEventData = record.getGlacierEventData();
从 Glacier 事件中检索恢复事件数据
S3EventNotification.RestoreEventDataEntity restoreEventData = glacierEventData.getRestoreEventDataEntity();
RestoreEventData restoreEventData = glacierEventData.getRestoreEventData();
检索请求参数
S3EventNotification.RequestParametersEntity requestParameters = record.getRequestParameters();
RequestParameters requestParameters = record.getRequestParameters();
检索智能分层事件数据
S3EventNotification.IntelligentTieringEventDataEntity tieringEventData = record.getIntelligentTieringEventData();
IntelligentTieringEventData intelligentTieringEventData = record.getIntelligentTieringEventData();
检索生命周期事件数据
S3EventNotification.LifecycleEventDataEntity lifecycleEventData = record.getLifecycleEventData();
LifecycleEventData lifecycleEventData = record.getLifecycleEventData();
以枚举形式检索事件名称
S3Event eventNameAsEnum = record.getEventNameAsEnum();
//getEventNameAsEnum does not exist; use 'getEventName()' String eventName = record.getEventName();
检索复制事件数据
S3EventNotification.ReplicationEventDataEntity replicationEntity = record.getReplicationEventDataEntity();
ReplicationEventData replicationEventData = record.getReplicationEventData();
检索 S3 存储桶和对象信息
S3EventNotification.S3Entity s3 = record.getS3();
S3 s3 = record.getS3();
检索用户身份信息
S3EventNotification.UserIdentityEntity userIdentity = record.getUserIdentity();
UserIdentity userIdentity = record.getUserIdentity();
检索响应元素
S3EventNotification.ResponseElementsEntity responseElements = record.getResponseElements();
ResponseElements responseElements = record.getResponseElements();

S3EventNotification使用aws-lambda-java-events库进行迁移。

如果您习惯在 Lambda 函数中处理 S3 通知事件,我们建议您升级到最新的 3.x.x 版本。aws-lambda-java-events最新版本消除了 S3 事件通知API中对 Amazon SDK for Java 1.x 的所有依赖关系。