Amazon web services S3中文件的并发上传——防止上传冲突
有没有办法将文件上传到S3并强制在操作中创建对象,而不进行更新?(例如,模拟Amazon web services S3中文件的并发上传——防止上传冲突,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,有没有办法将文件上传到S3并强制在操作中创建对象,而不进行更新?(例如,模拟打开(O_创建| O_排除)) i、 如果文件已经存在,我希望我的PUT对象失败。S3确实提供了强大的“创建后读取”一致性,所以希望有办法利用这一点 抽象地说,我希望实现一个操作create\u s3\u对象(s3\u key,data),任何s3客户端都可以调用该操作,将数据写入s3\u key指定的新s3对象。在发出调用之前,数据和密钥是已知的 如果所有客户端都合作并使用create\u s3\u object(s3
打开(O_创建| O_排除)
)
i、 如果文件已经存在,我希望我的PUT对象失败。S3确实提供了强大的“创建后读取”一致性,所以希望有办法利用这一点
抽象地说,我希望实现一个操作create\u s3\u对象(s3\u key,data)
,任何s3客户端都可以调用该操作,将数据
写入s3\u key
指定的新s3对象。在发出调用之前,数据和密钥是已知的
如果所有客户端都合作并使用create\u s3\u object(s3\u key,data)
创建对象s3\u key
,则调用应提供以下保证:
s3_键
不存在,则创建文件s3_键
,并将数据data
作为其内容,调用成功s3\u key
已存在,则调用失败,并且现有文件未被调用修改。(我可以通过容忍文件s3_key
的存在来放宽这一要求,如果且仅当它包含确切的数据
)s3\u key
不存在,并且使用不同的数据从不同的客户端(和/或同一客户端)同时发出多个调用:即create\u s3\u对象(s3\u key,data1)
,create\u s3\u对象(s3\u key,data2)
,…create\u s3\u对象(s3\u key,dataN)
,然后,这些调用中最多有一个将成功,并且s3_key
的数据将与成功的一个调用提供的数据匹配create\u s3\u object(s3\u key,data)
创建的,并且在创建后从未更新,如果任何客户端在任何时间点(创建之前、期间或之后)执行s3\u key
的GET,则客户端将收到404错误(创建之前)或数据数据,但该文件没有其他版本(例如,s3\u键的某些瞬态)
- 我正在使用boto3(python)
- 发出潜在冲突请求的一组客户端包括:在ECS容器(与bucket相同的区域)上运行、在lambda函数中运行(与bucket相同的区域)以及在aws外部公共internet上的桌面上运行的一个或两个进程