AWS S3 读取是否保证返回新创建的对象?

2024-01-26

我一直在阅读有关 AWS S3 的写后读一致性的文档,但我仍然不确定这一点。

如果我向 S3 写入一个对象,并在从写入操作获得成功响应后,我立即地尝试读取它,读取操作是否保证返回该对象?

换句话说,有没有可能因为找不到对象而导致读操作失败?因为读取发生在写入之后太快?

我在这里只讨论新的 PUT,而不是对现有对象的更新。


是的,保证返回对象(仅适用于新对象),但有一个警告:

As per AWS 文档 http://docs.aws.amazon.com/AmazonS3/latest/dev/Introduction.html#ConsistencyModel:

Amazon S3 为新数据的 PUTS 提供写后读一致性 所有区域中 S3 存储桶中的对象,但有一点需要注意。警告 是,如果您对键名称发出 HEAD 或 GET 请求(以查找是否 对象存在)在创建对象之前,Amazon S3 提供 写后读的最终一致性。

Amazon S3 为覆盖 PUTS 和 DELETES 提供最终一致性 在所有地区。

编辑:归功于@Michael - sqlbot,更多关于 HEAD(或)GET 警告:

如果在对象存在之前发送 GET 或 HEAD,比如在上传之前检查是否存在对象,那么即使上传完成后,对于读请求来说,上传也不会立即一致,因为 S3 已经做了唯一立即它将对该对象进行一致的内部查询,权威地发现不存在这样的键。对象创建最终变得一致,因为创建必须“覆盖”之前没有找到任何内容的查找。

Based on following table provided in the link, "consistent reads" will never be stale. enter image description here

上面提供的链接有一个关于“写后读一致性”和“最终一致性”如何工作的很好的例子。

我想在此答案中添加此警告注释,以使事情更加清楚:

Amazon S3 通过在 Amazon 数据中心内的多个服务器之间复制数据来实现高可用性。如果 PUT 请求成功,您的数据将被安全存储。但是,有关更改的信息必须在 Amazon S3 上复制,这可能需要一些时间,因此您可能会观察到以下行为:

进程将新对象写入 Amazon S3 并立即列出密钥 在它的桶里。直到更改完全传播为止,该对象 可能不会出现在列表中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS S3 读取是否保证返回新创建的对象? 的相关文章

  • 从 Docker 容器中获取 AWS 实例元数据?

    是否有一种直接的方法可以从 Docker 容器内访问 AWS 实例元数据 例如 当尝试在 EC2 实例上获取 IAM 角色的凭证时 这将适用于实例本身 http 169 254 169 254 latest meta data iam se
  • Django 和 AWS 简单电子邮件服务 [重复]

    这个问题在这里已经有答案了 我正在尝试启动并运行 django 站点 并且正在尝试启用 django 的标准密码重置服务 我的网站由 AWS EC2 托管 因此我想将 AWS SES 用于我的电子邮件服务 但是 我无法使 smtp 连接正常
  • generate_series() 方法在 Redshift 中失败

    当我运行 SQL 查询时 select generate series 0 g from select date date1 date date2 as g from mytable 它返回一个错误 INFO Function genera
  • 从 RabbitMQ 迁移到 Amazon SQS [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们的初创公司目前正在使用RabbitMQ with Python Django 对于消息队列 现在我们计划转移到Amazon SQS其高可用性
  • 当操作系统为 Windows Server 2019 时,ec2 私有子网无法到达 169.254.169.254

    我有多个 ec2 实例在私有子网中运行 仅允许 vpc 内的流量 其中一些实例是自定义操作系统 其中一些实例运行 AWS windows server 2012 ami 有些运行 AWS Windows Server 2019 ami 在所
  • CORS 击败 AWS LAMBDA :(

    我读了很多关于 CORS Lambda AWS API Gateway 配置的文章 包括 AWS 的设置帮助 http docs aws amazon com apigateway latest developerguide how to
  • ECS任务定义中容器之间的通信

    我在 ECS 中运行了一个任务定义awsvpc模式 包含 2 个 docker 容器 我的问题是如何在任务定义中的容器之间进行通信 它们的行为与 docker compose 类似吗 awsvpc 网络模式下的任务中的多个容器将共享任务 E
  • 适用于 AWS 区域的 Cassandra Ec2MultiRegionSnitch 或 GossipingPropertyFileSnitch

    我们在美国 AWS 区域有 3 个 Cassandra 节点 在新加坡 AWS 区域有 3 个节点 如果我必须构建多数据中心 我们是否必须使用 Ec2MultiRegionSnitch 或者我们可以使用 GossipingPropertyF
  • Amazon S3 EPIPE 错误

    UPDATE 让它工作从命令行 http www timkay com aws 向该用户添加完全访问策略权限后 现在 当我使用 Node 执行此操作时 没有错误 但我在 s3 文件管理器中看不到这些文件 我在使用 Amazon 的 S3 服
  • 无法在 AWS Glue PySpark 开发终端节点中正确运行脚本

    我已经配置了一个 AWS Glue 开发终端节点 并且可以在 pyspark REPL shell 中成功连接到它 像这样https docs aws amazon com glue latest dg dev endpoint tutor
  • S3 的 Rails 回形针默认图像

    我尝试在应用程序中使用default url 但我使用S3 存储图像 我不确定我需要在那里输入什么 URL 或者我是否必须创建一个假图像才能将所有内容放在那里 由于我的图像总是通过 S3 渲染 所以我不知道如果我只是在公共文件夹中放入一些默
  • 具有行为路径重定向的多个 Cloudfront 起源

    我有两个 S3 存储桶用作我的 Cloudfront 源服务器 example bucket 1 example bucket 2 两个存储桶的内容都位于这些存储桶的根中 我正在尝试将我的 Cloudfront 发行版配置为基于 URL 模
  • boto3 资源(例如 DynamoDB.Table)的类型注释

    The boto3库提供了几种返回资源的工厂方法 例如 dynamo boto3 resource dynamodb Table os environ DYNAMODB TABLE 我想注释这些资源 以便我可以获得更好的类型检查和完成 但我
  • 有人试图破解我的服务器吗?请告诉我我能做什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在我的服务器日志文件中找到了这些请求 我在亚马逊EC2上使用nodejs manager html manager html manag
  • 如何将 RedShift 上的表卸载到单个 CSV 文件?

    我想将一个表从Amazon RedShift迁移到MySQL 但是使用 unload 会生成多个数据文件 这些数据文件很难直接导入到MySQL中 有什么方法可以将表卸载到单个 CSV 文件中 以便我可以将其直接导入到 MySQL 中吗 为了
  • 如何使用 lambda 和 python 在 s3 上压缩文件

    我需要存档 s3 上存在的多个文件 然后将存档上传回 s3 我正在尝试使用 lambda 和 python 由于某些文件超过 500MB 因此无法在 tmp 中下载 有什么办法可以将文件一一流式传输并将其存档吗 不写入磁盘 流式传输至 S3
  • 从 Grails 控制器渲染视频内容

    毫无疑问又是一个愚蠢的新手问题 我在 Grails 控制器中有一个字节数组 其中包含视频文件 确切地说是 mp4 文件 的内容 我熟悉如何从 grails 控制器渲染 JSON XML 和其他基本类型 但我找不到任何显示如何输出视频的示例
  • 在AWS S3中部署react-redux应用程序

    我在堆栈溢出中遇到了很多类似的问题one https stackoverflow com questions 16267339 s3 static website hosting route all paths to index html
  • 如何在不验证亚马逊 ses 中收件人的情况下发送邮件

    我一直在尝试使用亚马逊 ses 发送邮件 它对所有经过验证的收件人都非常有效 但我现在需要向未经验证的收件人发送邮件 这个怎么做 谢谢 您的 SES 帐户处于沙盒模式 您需要向 AWS 提出请求 以使您的 SES 账户退出沙盒模式 这是有记
  • 在 Amazon Linux 2 上从源代码构建 AWS 开发工具包

    我正在尝试跟进建议aws lambda cpp https github com awslabs aws lambda cpp packaging abi gnu c library oh my降低构建应用程序的复杂性 如果您选择在使用的相

随机推荐

  • 使用 python 和 conda 扩展 openCV 的 GUI

    我在用着开放式CV 3 3 with python3 6 3我安装在conda环境和一段时间 当显示图像时 使用基本的 cv2 函数imshow window name my image 例如 一个小的 GUI 将与图像一起显示 我还能够随
  • 是否可以将默认的类dunder方法转换为类方法?

    为了给你一些背景信息 昨天我遇到了这个帖子 https stackoverflow com q 62031547 5472354 我发现这个问题非常有趣 所以我尝试找到一种解决方案 使语法尽可能接近所要求的内容 这是我想出的 class D
  • GCC:为什么常量变量不放在.rodata中

    我一直相信 GCC 会设立一个static const变量为 rodata段 或 textELF 或此类文件的优化段 但情况似乎并非如此 我目前正在使用gcc GCC 4 7 0 20120505 prerelease 在装有 GNU Li
  • 如何将 select2 与 Meteor 一起使用?

    有人可以向我解释 select2 如何与 Meteor 一起使用吗 我在用zimme select2 bootstrap 3 css https atmospherejs com zimme select2 bootstrap3 css我不
  • 使用Spring将文本文件直接注入到String中

    所以我有这个 Value classpath choice test html private Resource sampleHtml private String sampleHtmlData Before public void rea
  • 撤销个人权限后更新会话

    我试图为用户提供一个通过复选框 Facebook SDK for Android 设置 撤销发布权限的选项 下面提供了代码 一切工作正常 除了在撤销负责检查发布权限的代码后惨遭失败 据我所知 Session 无法知道用户登录后是否撤销了任何
  • div内容加载后获取div高度

    我正在尝试设置一个的高度div等于另一个 我将它们称为左 div 和右 div 正确的div内容并不总是相同 并且使用 jQuery 加载 它是一个过滤器 因此每次单击过滤器时 内容都会发生变化 父级 div 高度也会发生变化 这是我的代码
  • 在 R 中,有没有办法将 RMarkdown v2 html 文件作为电子邮件正文发送

    我开发了一份报告 该报告大量使用了 RMarkdown v2 中的功能 特别是向 html 文档添加 css 类和 id 的功能 以便使用样式表更好地控制输出 我希望通过电子邮件正文发送这些报告 我一直在尝试使用 send mail mai
  • 如何显示搜索视图最近的搜索历史记录

    我尝试使用以下方式但无法显示最近的搜索历史记录 在 ActionBar 上的 SearchView 中创建 历史记录 https stackoverflow com questions 19166537 create history to
  • Java 中的 LDAP 如何针对此 LDAP 进行搜索/身份验证

    我正在使用 LDAP 和 Java 搜索 这是我的 LDIF 导出 组织简单 version 1 dn dc example dc com objectClass organization objectClass dcObject obje
  • 从 C# 访问 Ironpython 字典

    我在 Ironpython 脚本中定义了字典 我想从我的 C 访问该字典 代码 有人可以提供示例代码来实现我的要求 抱歉 之前我没有用代码提及我的问题陈述 import clr clr AddReference System Core im
  • JavaScript 中的重入

    我想提高对可重入这个词的理解 这个函数是可重入的吗 function foo yield 1 yield 2 和这个 function foo return 1 和这个 var x 0 function foo return x 和这个 f
  • 文件写入 - PrintStream 附加

    我试图将一些信息附加到文本文件中 但该文件仅显示最后写入的元素 有许多Engineers 但它仅将读取的最后一个元素打印到文件中 例如 Engineer e new Engineer firstName surName weeklySal
  • 使用多平台模拟 kotlin 中的常见测试

    我无法将通用模拟库 mockk io 与 kotlin 多平台一起使用 在他们的网站上 它说要在 kotlin 多平台中使用 mockk 你只需要将这一行添加到你的 gradle 中 testImplementation io mockk
  • 快速创建和播放声音

    所以我想做的是在 swift 中创建并播放一个声音 当我按下按钮时就会播放 我知道如何在 Objective C 中做到这一点 但是有人知道如何在 Swift 中做到吗 对于 Objective C 来说是这样的 NSURL soundUR
  • 远程服务,旋转时泄漏活动

    我在远程服务中遇到回调问题 注册回调轮换后会导致活动泄漏 你能给我一些建议吗 我做错了什么 IRemoteApi aidl import com example remoteservice IRemoteListener interface
  • Visual Studio 部署项目 - 创建已部署可执行文件的快捷方式

    我意识到可能有一种简单的方法可以做到这一点 但是如何为使用 Visual Studio 部署项目构建的 MSI 部署的可执行文件创建桌面快捷方式 我想我需要使用文件系统编辑器 但是当我在用户桌面上创建快捷方式时 我无法定位可执行文件 我只能
  • 带有彩色海洋的极地立体投影中的 Geopandas 世界地图

    对此添加进一步的要求question https stackoverflow com questions 55646598 polar stereographic projection of geopandas world map 我还需要
  • 解析 XML 并填充到列表框中

    我是 C 新手 我要发展C List box in Windows Form 我发现this http dotnetperls com listbox链接会有帮助 但列表框的输入将是以下格式的 XML
  • AWS S3 读取是否保证返回新创建的对象?

    我一直在阅读有关 AWS S3 的写后读一致性的文档 但我仍然不确定这一点 如果我向 S3 写入一个对象 并在从写入操作获得成功响应后 我立即地尝试读取它 读取操作是否保证返回该对象 换句话说 有没有可能因为找不到对象而导致读操作失败 因为