使用aws cli获取S3桶的ARN


72

是否可以通过AWS命令行获取S3存储桶的ARN?

我已经浏览了文档,aws s3api ...并且aws s3 ...没有找到执行此操作的方法。


2
不能相信这是真实的。多年以来,一直没有办法从CLI获取确切的ARN。
theaws.blog

亚马逊网络服务讨厌它的用户
兰迪大号

Answers:


154

总是这样arn:PARTITION:s3:::NAME-OF-YOUR-BUCKET。如果您知道存储桶的名称以及它所在的分区,则知道ARN。无需从任何地方“获取”它。

分区将是awsaws-us-gov或,aws-cn具体取决于您分别是AWS,GovCloud还是中国。


6
也许为什么您的AWS S3存储桶名称必须是全局唯一的;但是以这种方式将它们耦合在一起是一种可怕的疣。将帐户ID插入该ARN会更好。:(
吉姆·丹尼斯

4
希望找到一种方法,而无需对ARN格式做任何假设。cn-north-1地区的存储桶是arn:aws-cn:s3 ::: BUCKET_NAME,我希望避免不得不“知道” Amazon如何分配ARN,以防Amazon更改规则。
ljcundiff '16

6
显然,ARN是一个不透明的,可构造的标识符,显然是设计使然。他们根本不可能更改S3 ARN格式书面规则。该cn-north-1区域与GovCloud一样是特殊情况,因为这些区域完全与全局aws分区隔离,无法使用相同的密钥集进行访问。如果您在多个分区中工作,则必须知道要处理哪个分区。
Michael-sqlbot

1
通常必须BUCKET_NAME/*在AFAIK末尾添加“ / *”
boldnik

一些S3 API不支持此ARN,例如:aws s3api get-bucket-acl --bucket arn:aws:s3:::mybucket将返回存储桶名称错误,抱怨它与正则表达式之一不符:<...> or be an ARN matching the regex "^arn:(aws).*:s3:[a-z\-0-9]+:[0-9]{12}:accesspoint[/:][a-zA-Z0-9\-]{1,63}$|^arn:(aws).*:s3-outposts:[a-z\-0-9]+:[0-9]{12}:outpost[/:][a-zA-Z0-9\-]{1,63}[/:]accesspoint[/:][a-zA-Z0-9\-]{1,63}$"
Aivaras


3

AWS文章阐明了arn格式,但从不说去这里看看。突出显示我的s3存储桶,并看到Copy Bucket ARN使我保持理智了几个小时。


1
您的答案比该主题上的aws文档更有用,后者在无休止地讨论存储桶ARN,但是如果您只是想复制它,实际上并没有告诉您要去哪里
stevec
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.