关于AWS-S3-Bucket-Console-Web控制页面上的Creation date与命令行-API方式如何获取到真正的CreationDate

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于AWS-S3-Bucket-Console-Web控制页面上的Creation date与命令行-API方式如何获取到真正的CreationDate相关的知识,希望对你有一定的参考价值。

首先,说明一下,在AWS S3 Bucket Console web 界面看到的Create date 这个日期是真正的s3 桶子的创建的日期

当s3 桶子过多时,我们需要统一收集创建日期,这就需要使用到aws cli 或者 AWS SDK for Python (Boto3) 等方式了

但是笔者在使用命令行及编程的方式获取到的日期,和页面对比后,发现有的是不一样的

从这里可以看出创建日期为:November 24, 2022, 09:47:32 (UTC+08:00)

但是笔者又通过aws cli 的方式查询了一下(AWS SDK for Python (Boto3))效果也是一样的,指定不同的region,得到不同的时间

[qq-5201351@localhost ~]$ aws s3 ls --region cn-north-1 |grep aws-bucket$
2022-11-24 09:47:32 aws-bucket
[qq-5201351@localhost ~]$ aws s3 ls --region cn-northwest-1 |grep aws-bucket$
2023-03-01 13:52:42 aws-bucket
[qq-5201351@localhost ~]$

首先这个S3 桶是创建在cn-northwest-1 宁夏Region的,从宁夏Region的查询出来的居然和console页面上的创建日期不一样

而且奇怪的是,反而当我们指定cn-north-1,北京Region时,查询出来的才是真正的创建日期

然后笔者还以为会不会有个规律,在宁夏创建的s3桶子,就得需要去北京Region才能看到创建日期,反之也一样

不过观察了几个其他的S3桶子,发现并不是这个规则,最后查询了官网的一些文档、才有了如下的了解

1、S3 服务在console上并没有区分Region的,通过命令无论指定北京还是宁夏,也都能查询出相同的文件对象

2、但是我们在AWS S3 bucket在创建时,必须指定Region的,这个是约束我们s3的数据存储在那个物理区域,而且不能修改

3、我们在通过aws cli 或者 api的方式指定不同的Region获取到的日期可能会有不同,笔者在API文档界面也看到如下一段说明

其中理解一下,也就是说,CreateDate是创建日期,但是当我们对bucket作出一些更改时,如修改policy,这个日期会变化

笔者也试过,就算修改一个s3的tag都会发生变化,但是页面上的CreateDate肯定也是来自于此,那就只能有如下一种解释和理解了,可用于编程查询中

通过不同的Region查询出来的CreateDate,时间更早的那一个肯定就是真正的创建日期,其他Region查询出来的最晚的就是s3 bucket的改变日期

因此如果我们需要通过aws cli 或者AWS SDK for Python (Boto3) 的试获取s3 桶真正的创建日期,就需要查询每个Region日期,取最小值,即最早的那个日期

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/17216425.html

 

以上是关于关于AWS-S3-Bucket-Console-Web控制页面上的Creation date与命令行-API方式如何获取到真正的CreationDate的主要内容,如果未能解决你的问题,请参考以下文章

json AWS-S3-Prevent删除

将标头发送到客户端后无法设置标头-Nodejs + AWS-S3 getObject

json AWS-S3-静态网站托管桶政策

sh aws-s3-calculate-size.sh

json AWS S3 Bucket策略#aws#aws-s3

[AWS-S3] POST 上的预签名 URL 被 CORS 阻止,尽管 CORS 配置启用它