php s3 创建bucket,AWS管理控制台:五步创建S3 bucket策略

亚马逊简单存储服务(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 -

2 AccessDenied

3 Access Denied

4 F7A33F55E19C8BFA

5 -

6 UHwvZfsh+B9IczJIyrBQOKG1+JRVsybONoS8+pwo1DZSvscmdb9OIsnZw

7

在你在属性窗口中点击了链接文件名后,弹出这个消息。为了查看这个窗口,点击右侧“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名称(比如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和对象的参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值