获取桶策略
Bucket是用于存储对象(Object)的容器,所有的对象都必须隶属于某个Bucket。本文介绍如何获取桶(Bucket)策略。
- GetBucketPolicy
GetBucketPolicy操作用于获取bucket的policy,policy配置功能可以使用户根据需求更精确地定义桶的访问策略。bucket的拥有者可以查看bucket的policy信息。
代码示例:
// 获取桶的策略信息
func GetBucketPolicy(svc *s3.S3) {
getBucketPolicyInput := &s3.GetBucketPolicyInput{
Bucket: aws.String("exampleBucket"),
}
getBucketPolicyOutput, err := svc.GetBucketPolicy(getBucketPolicyInput)
if err != nil {
fmt.Printf("fail to get policy of bucket. %v\n", err)
return
}
fmt.Printf("policy of bucket: %v\n", *getBucketPolicyOutput.Policy)
}
GetBucketPolicyInput可设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
Bucket | *string | 桶的名称。 | 是 |
GetBucketPolicyOutput返回的属性如下:
属性名 | 类型 | 说明 |
---|---|---|
Policy | *string | JSON格式的桶策略信息。 |
- GetBucketPolicyRequest
GetBucketPolicyRequest操作首先生成一个"request.Request"对象,该对象是一个执行GetBucketPolicy操作的请求。通过调用Request对象的Send方法完成获取bucket policy信息的操作。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。
代码示例:
func GetBucketPolicyRequest(svc *s3.S3) {
getBucketPolicyInput := &s3.GetBucketPolicyInput{
Bucket: aws.String("exampleBucket"),
}
req, resp := svc.GetBucketPolicyRequest(getBucketPolicyInput)
err := req.Send()
if err != nil {
fmt.Printf("fail to get bucket policy. %v\n", err)
} else {
fmt.Println(resp)
}
}
响应结果:
HTTP状态 | 响应码 | 描述 |
---|---|---|
200 | Success | 操作成功。 |
403 | AccessDenied | 用户没有权限执行操作。 |
404 | NoSuchBucket | 操作指定的桶不存在。 |