创建桶
Bucket是用于存储对象(Object)的容器,所有的对象都必须隶属于某个Bucket。本文介绍如何创建桶(Bucket)。
- CreateBucket
CreateBucket操作用于创建bucket,每个用户可以拥有多个bucket。Bucket的名称在媒体存储范围内必须是全局唯一的,一旦创建之后无法修改名称。Bucket的创建者默认是bucket的拥有者,对bucket拥有FULL_CONTROL权限,可以通过设置参数的方式为其他用户配置创建bucket的权限。bucket的命名规范如下:
-
只能使用小写字母、数字和短横线(-);
-
必须以小写字母或者数字开头和结尾;
-
长度必须在3-63字节之间。
代码示例:
// 创建一个桶
func CreateBucket(svc *s3.S3) {
bucketName := "exampleBucket"
// 创建桶
createBucketInput := &s3.CreateBucketInput{
Bucket: aws.String(bucketName),
}
createBucketOutput, err := svc.CreateBucket(createBucketInput)
if err != nil {
fmt.Printf("Unable to create bucket %s, %v\n", bucketName, err)
}
// 等待桶创建
fmt.Printf("Waiting for bucket %s to be created...\n", bucketName)
err = svc.WaitUntilBucketExists(&s3.HeadBucketInput{
Bucket: aws.String(bucketName),
})
if err != nil {
fmt.Printf("Error occurred while waiting for bucket to be created, %v", createBucketOutput)
}
fmt.Printf("Bucket %s successfully created\n", bucketName)
}
CreateBucketInput可设置的参数如下:
参数 | 类型 | 说明 | 是否必要 |
---|---|---|---|
ACL | *string | 配置创建bucket预定义的标准ACL信息,例如private,public-read等。 | 否 |
Bucket | *string | 创建bucket的名称。 | 是 |
GrantFullControl | *string | 用于自定义用户对此bucket的READ、WRITE、READ_ACP、WRITE_ACP权限信息。 | 否 |
GrantRead | *string | 用于自定义用户对此bucket的READ权限信息。 | 否 |
GrantReadACP | *string | 用于自定义用户对此bucket的READ_ACP权限信息。 | 否 |
GrantWrite | *string | 用于自定义用户对此bucket的WRITE权限信息。 | 否 |
GrantWriteACP | *string | 用于自定义用户对此bucket的WRITE_ACP权限信息。 | 否 |
- CreateBucketRequest
CreateBucketRequest操作首先生成一个"request.Request"对象,该对象是一个执行CreateBucket操作的请求。通过调用Request对象的Send方法完成创建bucket的操作。该方法可以生成定制化的请求,例如自定义请求头部请求超时重试设置。
代码示例:
func CreateBucketRequest(svc *s3.S3) {
createBucketInput := &s3.CreateBucketInput{
Bucket: aws.String("exampleBucket"),
}
req, resp := svc.CreateBucketRequest(createBucketInput)
err := req.Send()
if err != nil {
fmt.Printf("fail to create bucket. %v\n", err)
} else {
fmt.Println(resp)
}
}
响应结果:
HTTP状态 | 响应码 | 描述 |
---|---|---|
200 | Success | 操作成功。 |
400 | InvalidBucketName | 创建桶的名字不合法。 |
403 | AccessDenied | 用户没有权限执行操作。 |
409 | BucketAlreadyExists | 当前创建的桶的名字已经被其他用户使用。 |