亚马逊简单存储服务(S3)因其基于对象存储数据而闻名,但是S3 bucket策略可以帮助AWS实现亚马逊S3资源的设置和管理复杂访问权限的时间节省。这篇技巧指南为开发者提供了基本的S3实践。需要指出的是S3通常用和亚马逊Identity and Access Management (IAM身份识别与管理)策略一起使用,IAM用来设置、捕捉和记录用户身份和授权。 你需要一个S3 bucket策略来访问你上传的文件。
如果你没有这个文件,就会受到拒绝访问的错误信息: “This XML file does not appear to have any style information associ……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
亚马逊简单存储服务(S3)因其基于对象存储数据而闻名,但是S3 bucket策略可以帮助AWS实现亚马逊S3资源的设置和管理复杂访问权限的时间节省。这篇技巧指南为开发者提供了基本的S3实践。需要指出的是S3通常用和亚马逊Identity and Access Management (IAM身份识别与管理)策略一起使用,IAM用来设置、捕捉和记录用户身份和授权。
你需要一个S3 bucket策略来访问你上传的文件。如果你没有这个文件,就会受到拒绝访问的错误信息:
“This XML file does not appear to have any style information associated with it. The document tree is shown below”
1 -<error>
2 <code>AccessDenied</code>
3 <message>Access Denied</message>
4 <requestid>F7A33F55E19C8BFA</requestid>
5 -<hostid>
6 UHwvZfsh+B9IczJIyrBQOKG1+JRVsybONoS8+pwo1DZSvscmdb9OIsnZw</hostid>
7 </error>
在你在属性窗口中点击了链接文件名后,弹出这个消息。为了查看这个窗口,点击右侧“All Buckets”窗口的属性标签。
为了解决这个问题,创建一个S3 bucket策略。使用AWS Policy Generator来生成一个脚本,允许你访问你的文件。
我这里有两个脚本示例展示给你如何设置权限。第一个示例是允许任何人访问我的文件的简单脚本。第二个示例是允许所有用户,除了一个之外,来上传其文件到我的bucket的比较长一点的脚本。
第一个示例,有三步要做:
第一步:选择策略类型
选择S3 bucket策略。
这个策略是你可以创建的四种类型的策略中的一种。其余三种为:
•IAM Policy
•SNS Topic Policy
•SQS Queue Policy
第二步:添加声明
声明是一个单一权限的正式描述。一个声明中有五个元素,分别是:
•Effect元素
•Principal元素
•AWS service元素
•Actions元素
•Amazon Resource Name (ARN)元素
Effect元素,选择Allow允许用户读取文件。
Principal元素,添加“ * ”到输入框中。这个通配符允许匿名用户读取这个文件。
AWS Service元素,生成器自动将亚马逊S3插入到输入框中。
Actions元素,检查“Get Object。”这是你需要读一个文件的唯一动作。在这个列表中你不需要任何其他动作。
Amazon Resource Name元素,设置成以下的格式:arn:aws:s3:::<bucket_name>/<key_name>
选择你创建的bucket名称(比如bucket01) 。设置键名为*。在输入框中输入如下内容:arn:aws:s3:::bucket01/*
跳过这个声明的条件,比如日期、位置、版本ID、最大键值和其他的限制。
准备好后点击Add Statement按钮。马上你就会看到添加了什么元素到这个声明的结果。
你如果对这个结果满意,继续下一个步骤。
第三步:创建bucket策略
点击Generate Policy按钮。这个将生成你需要增加到bucket中的策略。这个策略用访问策略语言编写。
{
"Id": "Policy1393570093893",
"Statement": [
{
"Sid": "Stmt1393569661962",
"Action": [
"s3:GetObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket01/*",
"Principal": {
"AWS": [
"*"
]
}
}
]
}
如果脚本显示你提供了一个错误的bucket名,你可以编辑它。一旦你满意这个策略,将其复制到剪贴板。你需要将其粘贴到策略编辑器中。
如何获得策略编辑器:
•在AWS Management Console中打开你的bucket
•进入Properties并点击Permissions
•选择Add bucket policy
编辑器打开后,粘贴这个策略。然后点击保存。编辑器提供了一个示例Bucket策略的链接。
在第二个S3 bucket策略示例中,bucket所有者完全控制所有账户的访问,除了一个之外,让他们可以上传文件。bucket所有者设置了一个具体的条件,有一个账户必须在符合授权和访问条件后才能上传文件。PutObject操作用来添加一个文件到bucket中。
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"111",
"Effect":"Allow",
"Principal":{
"AWS":"123456789"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::bucket01/*"
},
{
"Sid":"112",
"Effect":"Deny",
"Principal":{
"AWS":"123456789"
},
"Action":"s3:PutObject",
"Resource":"arn:aws:s3:::bucket01/*",
"Condition":{
"StringNotEquals":{
"s3:x-amz-grant-full-control":[
"emailAddress=xyz@amazon.com"
]
}
}
}
]
}
这个脚本的开始首先声明,只有第二个声明中的条件不满足时,允许账户123456789上传文件到bucket01。如果账户123456789并没有发邮件给bucket所有者授权给他完全的控制,然后上传文件就失败。
总之,你需要bucket策略授权或者拒绝账户读取和上传文件到你的bucket中。亚马逊提供了运营bucket和对象的参考。
相关推荐
-
2015年云基础设施供应商大比拼
对某家云供应商的可靠性进行评估并不是简单的事,但是有一些资源和工具能够帮助我们完成这项工作。
-
Nasuni基准测试:微软Azure Blob击败亚马逊S3
微软Azure保持了在云计算存储性能测试上对亚马逊简单存储服务(S3)的领先优势,Nasuni针对云计算供应商速度与可用性基准测试的双年度报告称。
-
创建及使用Amazon EC2实例最佳实践
如果你已经准备好使用Amazon Web服务(AWS),那么,至少有两种做法可以用来创建以及使用AWS。一种做法是使用AWS API(应用程序编程接口)调用。
-
如何在AWS云平台上构建千万级用户应用
对于希望基于AWS构建千万级用户应用的开发者而言,不仅需要对区域、可用区和边缘站点等基础设施的分布有所了解,更需要了解不同的AWS服务各自的特点和最佳实践。