首页 > 其他分享 >对象业务的重命名接口

对象业务的重命名接口

时间:2024-06-09 15:55:49浏览次数:28  
标签:重命名 存储 对象 AWS 接口 S3 操作

依据AWS S3,没有定义重命名对象的操作。

本文有如下假定:

  • 对象存储服务基于文件语义实现。

接口定义

依据前述,业界主流对象存储服务比如AWS S3并未定义重命名对象的操作,而国内的各家公有云对象存储服务,提供了对象的重命名操作。

国内的公有云对象存储服务,相关操作的文档的链接(排名不分先后),如下:

华为云OBS重命名对象为例,接口定义如下:

POST /ObjectName?name=Name&rename HTTP/1.1
Host: bucketname.obs.region.myhuaweicloud.com
Authorization: authorization
Date: date

本接口的关键参数,如下:

  • 对象名,指定对象名。
  • 目标对象名,指定修改后的对象名。
  • 操作名,参数名为rename,不需要指定参数值。

实现思路

重命名对象的操作,采用Linux命令模拟时,可以有如下方式:

  • 方案一,即先复制、再删除原文件。
    cp A B
    rm -f A
    
  • 方案二,移动文件。
    mv A B
    

不涉及文件系统中inode的变化,仅处理文件系统中目录的元数据,因此基本不受文件大小的影响。

ETag

参考AWS S3数据一致性ETag基于对象的数据,使用MD5算法计算得到。

由于修改名称不涉及数据的变更,因此无需更新对象的ETag

多版本

按照AWS S3多版本中的说明,多版本特性的开关作用在桶级,包含如下状态:

Buckets can be in one of three states:

  • Unversioned (the default)
  • Versioning-enabled
  • Versioning-suspended

原对象关联的所有版本,均需要关联到最新的对象名。

分级

参考AWS S3 归档AWS S3 分级中的说明,处于归档状态的对象,需要先取回才能访问。
显而易见,此处为了维护对象语义,照顾对象存储服务的实现,当对象处于归档状态时,不允许更新对象。

WORM

参考AWS S3 Object Lock中的说明,开启WORM后:

  • 在保护期内的对象,不允许修改,不允许删除。
  • 在保护期外的对象,不允许修改,允许删除。

因此从维护对象语义的角度讲,在保护期内的对象、保护期外的对象,均不允许修改对象。

生命周期

参考AWS S3 Lifecycle,修改元数据操作的对象可能符合生命周期规则,从而被恰好正在运行的后台任务删除掉。
此时有如下选择:

  • 生命周期的后台任务具备更高的优先级,提前中断操作,正常删除掉对象,对象存储服务对客户应用返回操作失败。
  • 生命周期的后台任务优先级相对较低,跳过当前对象,待下次运行时再决策是否删除。

数据加密

依据SSE-C的说明,客户应用在执行PUT/GET/Head/Copy操作时,均需要提供加密数据的密钥。

即在发起请求时,提供如下头部:

  • x-amz-copy-source​-server-side​-encryption​-customer-algorithm
  • x-amz-copy-source​-server-side​-encryption​-customer-key
  • x-amz-copy-source-​server-side​-encryption​-customer-key-MD5

如前所述,本操作只涉及对象名的变更,不涉及元数据和数据的变化,因此不涉及加密的处理。

事件通知

依据AWS S3 事件通知中的说明,对象存储服务可以提供事件通知,目前支持的事件类型见文档,显然不包括重命名操作,可以扩展事件名,比如s3:ObjectUpdated:Put

并发一致性

依据AWS S3 data consistency model的说明,对象存储服务提供read-after-write的模型。

当多客户端对相同对象并发的发起重命名操作时,参照文件语义,提供最终一致性。

标签:重命名,存储,对象,AWS,接口,S3,操作
From: https://www.cnblogs.com/jackieathome/p/18239638

相关文章

  • 对象业务的截断接口
    依据AWSS3,没有定义截断对象的操作。本文有如下假定:对象存储服务基于文件语义实现。接口定义依据前述,业界主流对象存储服务比如AWSS3并未定义截断对象的操作,而国内的各家公有云对象存储服务,提供了对象的截断操作。国内的公有云对象存储服务,相关操作的文档的链接(排名不分先......
  • 对象业务的修改数据接口
    依据AWSS3,没有定义修改数据的操作,修改数据时,均需要重新上传对象的数据和元数据。本文有如下假定:对象存储服务基于文件语义实现。接口定义依据前述,业界主流对象存储服务比如AWSS3并未定义修改对象数据的操作,而国内的各家公有云对象存储服务,提供了对象的修改对象数据的操作......
  • 简单再谈谈java中的类和接口 20240609
    当我们谈论Java中的类和接口时,我们实际上是在讨论面向对象编程(Object-OrientedProgramming,OOP)的核心概念。OOP是一种编程范式,它将程序视为一组对象的集合,这些对象可以相互交互,通过消息传递来处理数据。让我们从头开始慢慢介绍。类(Class)在Java中,一个类是对象的蓝图或模板。它描......
  • 【JAVASE】面向对象编程综合案例--------模仿电影信息系统
    需求:(1)展示系统中的全部电影(每部电影展示:名称、价格)(2)允许用户根据电影编号(ID)查询出某个电影的详细信息。目标:使用所学的面向对象编程实现以上两个需求。代码:Movie.javaMovieOperator.javaTest.java代码运行;......
  • SpringBoot3集成Knife4j生成接口文档
    导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId><version>4.4.0</version></dependency>注意:SpringBoot......
  • 【V-Tiger】自动调整控制器增益,以优化建立时间、过冲和稳定性裕度、使用被控对象输入
    ......
  • Java入门基础11:面向对象高级一(static、extends继承)
    Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。我会将它分为三章详细讲,本章主要讲静态和继承staticstatic叫静态,可以修饰成员变量、成员方法。类变量(静态成员变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象......
  • 【C++】类和对象(上)
    类和对象初步认识面向过程与对象类的引入类的定义类的封装类的访问限定符类的作用域类的实例化类的大小this指针this指针的特性初步认识面向过程与对象在之前初步学习C语言后,可以了解到C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题......
  • 淘宝/天猫商品信息获取与搜索优化:详解API接口在商品详情获取与关键字搜索中的应用
    在数字化时代,电商平台的API接口成为了连接商家、开发者与消费者的重要桥梁。淘宝和天猫作为中国领先的电商平台,提供了丰富的API接口,使得商家和开发者能够更加便捷地获取商品信息和实现商品搜索功能。本文将详细介绍淘宝/天猫的商品详情API接口和按关键字搜索商品API接口,探讨如......
  • Renesas MCU之SCI_SPI接口驱动LCD
    目录概述1软硬件介绍1.1软件版本信息1.2 ST7796-LCD1.3 MCUIO与LCDPIN对应关系2FSP配置项目2.1配置项目参数2.2生成项目框架3代码实现 3.1SPI的库函数3.1.1R_SCI_SPI_Open()3.1.2 R_SCI_SPI_Read()3.1.3  R_SCI_SPI_Write()3.2应用函数接口3.......