文档中心 > PutBucketPolicy
PutBucketPolicy

最近更新时间:2021-10-08

创建或者修改目标bucket的权限策略。如果您使用的是该bucket的非owner的账号,则需要PutBucketPolicy权限才能成功进行请求。

如果您使用的账号没有PutBucketPolicy权限,请求时会返回报错:403 Access Denied。

如果您的账号有PutBucketPolicy权限,但是该账号不属于目标bucket的owner账号,请求时返回报错:405 Method Not Allowed。


请求

请求语法

PUT /?policy HTTP/1.1
Host: examplebucket.region.unicloudsrv.com
Date: Tue, 04 Apr 2010 20:34:56 GMT  
Authorization: authorization string

{ Policy in JSON format }


请求参数

参数

描述

Host

bucket的名称,bucket-name.region.unicloudsrv.com


请求Body参数

请使用json格式。

请求Body的具体内容可以参考下文的示例

参数

描述

Version

固定值,请使用"2012-10-17"

Effect

Allow or Deny

Principal

指定该ploicy适用的用户账号,具体的账号使用uuid,请保持"Principal":   {'AWS': []}的结构不变

Action

赋予的具体权限,具体请参考下文

Resource

资源列表,具体请参考下文


具体权限列表_ACTION参数

参数

描述

s3:CreateBucket

创建bucket

s3:DeleteBucket

删除bucket

s3:DeleteBucketPolicy

删除bucket的策略

s3:DeleteBucketWebsite

删除静态网站设置

s3:DeleteObject

删除目标bucket中的对象

s3:DeleteObjectVersion

删除bucket中对象的多版本中的某个版本

s3:GetBucketAcl

获取bucket的ACL信息

s3:GetBucketCORS

获取bucket的CORS配置

s3:GetBucketWebsite

获取静态网站设置

s3:GetBucketLocation

访问获取bucket所在的region名称的api接口

s3:GetBucketLogging

获取bucket的logging的配置

s3:GetBucketNotification

获取bucket的事件通知配置

s3:GetBucketPolicy

获取bucket的权限策略表

s3:GetBucketVersioning

获取bucket的多版本管理状态

s3:GetEncryptionConfiguration

获取bucket的默认的加密配置信息

s3:GetLifecycleConfiguration

获取bucket的生命周期配置信息

s3:GetObject

访问bucket中的对象的元数据和对象的数据内容

s3:GetObjectAcl

获取bucket中对象的ACL信息

s3:GetObjectVersion

获取特定版本的对象

s3:GetObjectVersionAcl

获取特定版本的对象ACL

s3:ListAllMyBuckets

列出所有的bucket

s3:ListBucket

执行ListObjects接口,列出所有的对象

s3:ListBucketMultipartUploads

获取正在运行中的分片上传的任务列表信息

s3:ListBucketVersions

执行ListObjectVersions,列出所有对象版本

s3:ListMultipartUploadParts

列出某个分片上传的所有分片

s3:PutBucketAcl

修改bucket的ACL配置

s3:PutBucketCORS

修改bucket的CORS配置

s3:PutBucketLogging

修改bucket的日志记录配置

s3:PutBucketNotification

修改bucket的事件通知配置

s3:PutBucketPolicy

修改bucket的权限策略

s3:PutBucketVersioning

修改bucket多版本设置

s3:PutBucketWebsite

修改bucket静态网站设置

s3:PutEncryptionConfiguration

修改bucket的加密配置

s3:PutLifecycleConfiguration

修改buckt的生命周期配置

s3:PutObject

创建对象

s3:PutObjectAcl

修改bucket中对象的ACL配置

s3:PutObjectVersionAcl

修改特定版本对象的ACL配置

s3:RestoreObject

对bucket中的归档型对象进行解冻


Resource参数组成

Resource指代公有云资源,该api主要是针对bucket。

  • Resource组成说明:arn:partition:service:region:namespace:relative-id

    参数

    描述

    arn

    固定字符串,请不要修改

    partition

    bucket所在地域代号

    Service

    固定值S3

    region

    空即可

    namespace

    空即可

    Relative ID

    bucket-name或者bucket-name/object-key,可以使用通配符

     

  • 关于通配符的使用

    通配符可以使用或者?。其中指代所有结果。?指代任何一个字符。

  • Resource示例:

    描述

    示例

    bucket中的某个对象

    arn:aws:s3:::bucket_name/key_name

    bucket中的所有对象

    arn:aws:s3:::bucket_name/*

 

响应

响应元素

响应httpcode

HTTP/1.1 200


示例

赋予uuid1和uuid2的账号对bucket下所有对象的所有权限。

PUT /?policy HTTP/1.1
Host: examplebucket.region.unicloudsrv.com
Date: Tue, 04 Apr 2010 20:34:56 GMT  
Authorization: authorization string

{
"Version":"2012-10-17",
"Statement" : [
  {
      "Effect":"Allow",
      "Principal" : {
          "AWS":["uuid1","uuid2"]
      },
      "Action":["s3:*"],
      "Resource":"arn:aws:s3:::bucket/*"
  }
]
}