Aliyun.Oss.Bucket (aliyun_oss v1.0.0)
Bucket 相关操作:
Aliyun.Oss.Bucket
: Bucket 基本操作Aliyun.Oss.Bucket.WORM
: WORM 合规保留策略Aliyun.Oss.Bucket.ACL
: ACL 权限控制Aliyun.Oss.Bucket.Lifecycle
: Lifecycle 生命周期Aliyun.Oss.Bucket.Versioning
: Versioning 版本控制Aliyun.Oss.Bucket.Replication
: Replication 跨区域复制Aliyun.Oss.Bucket.Policy
: Policy 授权策略Aliyun.Oss.Bucket.Inventory
: Inventory 清单Aliyun.Oss.Bucket.Logging
: Logging 日志管理Aliyun.Oss.Bucket.Website
: Website 静态网站Aliyun.Oss.Bucket.Referer
: Referer 防盗链Aliyun.Oss.Bucket.Tags
: Tags 标签Aliyun.Oss.Bucket.Encryption
: Encryption 加密Aliyun.Oss.Bucket.RequestPayment
: RequestPayment 请求者付费Aliyun.Oss.Bucket.CORS
: CORS 跨域资源共享
Link to this section Summary
Functions
DeleteBucket用于删除某个Bucket
GetBucket(ListObject) 接口可用来列出 Bucket中所有Object的信息。
GetBucketInfo 接口用于查看bucket的相关信息。 可查看内容包含如下:
GetBucketLocation GetBucketLocation用于查看Bucket所属的数据中心位置信息。
GetService (ListBuckets) 对于服务地址作Get请求可以返回请求者拥有的所有Bucket。
GetBucketV2(ListObjectsV2) 接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
Link to this section Types
error()
Specs
Link to this section Functions
delete_bucket(bucket, sub_resources \\ %{})
Specs
DeleteBucket用于删除某个Bucket
Examples
iex> Aliyun.Oss.Bucket.delete_bucket("some-bucket")
{:ok,
%Aliyun.Oss.Client.Response{
data: "",
headers: [
{"Server", "AliyunOSS"},
{"Date", "Fri, 11 Jan 2019 05:26:36 GMT"},
{"Content-Length", "0"},
{"Connection", "keep-alive"},
{"x-oss-request-id", "5C38290C41F2DE32412A3A88"},
{"x-oss-server-time", "230"}
]
}}
iex> Aliyun.Oss.Bucket.delete_bucket("unknown-bucket")
{:error,
%Aliyun.Oss.Client.Error{
body: "<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does not exist.</Message>
<RequestId>5C3829B29BF380354CF9C2E8</RequestId>
<HostId>unknown-bucket.oss-cn-shenzhen.aliyuncs.com</HostId>
<BucketName>unknown-bucket</BucketName>
</Error>",
parsed_details: %{
"BucketName" => "unknown-bucket",
"Code" => "NoSuchBucket",
"HostId" => "unknown-bucket.oss-cn-shenzhen.aliyuncs.com",
"Message" => "The specified bucket does not exist.",
"RequestId" => "5C3000000000000000000000"
},
status_code: 404
}}
注:所有 SubResource 相关操作亦可由此接口实现, 即 Bucket.Logging.delete("some-bucket") 等同于 Bucket.delete_bucket("some-bucket", %{"logging" => nil})
get_bucket(bucket, query_params \\ %{}, sub_resources \\ %{})
Specs
GetBucket(ListObject) 接口可用来列出 Bucket中所有Object的信息。
注意:
- 建议使用
Bucket.list_objects
来获取所有 Object 信息 - 所有 SubResource 相关操作亦可由此接口实现, 即 Bucket.Acl.get("some-bucket") 等同于 Bucket.get_bucket("some-bucket", %{}, %{"acl" => nil})
Examples
iex> Aliyun.Oss.Bucket.get_bucket("some-bucket", %{"prefix" => "foo/"})
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"ListBucketResult" => %{
"Contents" => [
%{
"ETag" => ""D410293F000B000D00D"",
"key" => "foo/bar",
"LastModified" => "2018-09-12T02:59:41.000Z",
"Owner" => %{"DislayName" => "11111111", "ID" => "11111111"},
"Size" => "12345",
"StorageClass" => "IA",
"Type" => "Normal"
},
...
],
"Delimiter" => nil,
"IsTruncated" => true,
"Marker" => nil,
"MaxKeys" => 100,
"Name" => "some-bucket",
"NextMarker" => "XXXXX",
"Prefix" => "foo/"
}
},
headers: [
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
iex> Aliyun.Oss.Bucket.get_bucket("unknown-bucket")
{:error,
%Aliyun.Oss.Client.Error{
status_code: 404,
parsed_details: %{
"ListBucketResult" => %{
"BucketName" => "unknown-bucket",
"Code" => "NoSuchBucket",
"HostId" => "unknown-bucket.oss-cn-shenzhen.aliyuncs.com",
"Message" => "The specified bucket does not exist.",
"RequestId" => "5BFF89955E29FF66F10B9763"
}
},
body: "<?xml version="1.0" encoding="UTF-8"?>...</xml>"
}
}
get_bucket_info(bucket)
Specs
GetBucketInfo 接口用于查看bucket的相关信息。 可查看内容包含如下:
- 创建时间
- 外网访问Endpoint
- 内网访问Endpoint
- bucket的拥有者信息
- bucket的ACL(AccessControlList)
Examples
iex> Aliyun.Oss.Bucket.get_bucket_info("some-bucket")
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"BucketInfo" => %{
"Bucket" => %{
"AccessControlList" => %{"Grant" => "private"},
"Comment" => nil,
"CreationDate" => "2018-08-29T01:52:03.000Z",
"DataRedundancyType" => "LRS",
"ExtranetEndpoint" => "oss-cn-shenzhen.aliyuncs.com",
"IntranetEndpoint" => "oss-cn-shenzhen-internal.aliyuncs.com",
"Location" => "oss-cn-shenzhen",
"Name" => "some-bucket",
"Owner" => %{
"DisplayName" => "11111111",
"ID" => "11111111"
},
"StorageClass" => "IA"
}
}
},
headers: [
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"}
]
}
get_bucket_location(bucket)
Specs
GetBucketLocation GetBucketLocation用于查看Bucket所属的数据中心位置信息。
Examples
iex> Aliyun.Oss.Bucket.get_bucket_location("some-bucket")
{:ok, %Aliyun.Oss.Client.Response{
data: %{"LocationConstraint" => "oss-cn-shenzhen"},
headers: [
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"}
]
}
}
list_buckets(query_params \\ %{})
Specs
GetService (ListBuckets) 对于服务地址作Get请求可以返回请求者拥有的所有Bucket。
Examples
iex> Aliyun.Oss.Bucket.list_buckets(%{"max-keys" => 5})
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"Buckets" => %{
"Bucket" => [
%{
"CreationDate" => "2018-10-12T07:57:51.000Z",
"ExtranetEndpoint" => "oss-cn-shenzhen.aliyuncs.com",
"IntranetEndpoint" => "oss-cn-shenzhen-internal.aliyuncs.com",
"Location" => "oss-cn-shenzhen",
"Name" => "XXXXX",
"StorageClass" => "Standard"
},
...
]
},
"IsTruncated" => true,
"Marker" => nil,
"MaxKeys" => 5,
"NextMarker" => "XXXXX",
"Owner" => %{"DislayName" => "11111111", "ID" => "11111111"},
"Prefix" => nil
},
headers: [
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
iex> Aliyun.Oss.Bucket.list_buckets(%{"max-keys" => 100000})
{:error,
%Aliyun.Oss.Client.Error{
status_code: 400,
parsed_details: %{
"ArgumentName" => "max-keys",
"ArgumentValue" => "100000",
"Code" => "InvalidArgument",
"HostId" => "oss-cn-shenzhen.aliyuncs.com",
"Message" => "Argument max-keys must be an integer between 1 and 1000.",
"RequestId" => "5BFF8912332CCD8D560F65D9"
},
body: "<?xml version="1.0" encoding="UTF-8"?>...</xml>"
}
}
list_objects(bucket, query_params \\ %{}, sub_resources \\ %{})
Specs
GetBucketV2(ListObjectsV2) 接口用于列举存储空间(Bucket)中所有文件(Object)的信息。
Examples
iex> Aliyun.Oss.Bucket.list_objects("some-bucket", %{"prefix" => "foo/"})
{:ok, %Aliyun.Oss.Client.Response{
data: %{
"ListBucketResult" => %{
"Contents" => [
%{
"ETag" => ""D410293F000B000D00D"",
"key" => "foo/bar",
"LastModified" => "2018-09-12T02:59:41.000Z",
"Owner" => %{"DislayName" => "11111111", "ID" => "11111111"},
"Size" => "12345",
"StorageClass" => "IA",
"Type" => "Normal"
},
...
],
"Delimiter" => nil,
"IsTruncated" => true,
"Marker" => nil,
"KeyCount" => 100,
"MaxKeys" => 100,
"Name" => "some-bucket",
"NextContinuationToken" => "XXXXX",
"Prefix" => "foo/"
}
},
headers: [
{"Date", "Wed, 05 Dec 2018 02:34:57 GMT"},
...
]
}
}
iex> Aliyun.Oss.Bucket.list_objects("unknown-bucket")
{:error,
%Aliyun.Oss.Client.Error{
status_code: 404,
parsed_details: %{
"ListBucketResult" => %{
"BucketName" => "unknown-bucket",
"Code" => "NoSuchBucket",
"HostId" => "unknown-bucket.oss-cn-shenzhen.aliyuncs.com",
"Message" => "The specified bucket does not exist.",
"RequestId" => "5BFF89955E29FF66F10B9763"
}
},
body: "<?xml version="1.0" encoding="UTF-8"?>...</xml>"
}
}
put_bucket(bucket, headers \\ %{}, sub_resources \\ %{}, body \\ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<CreateBucketConfiguration>\n <StorageClass>Standard</StorageClass>\n</CreateBucketConfiguration>\n")
Specs
put_bucket(String.t(), map(), map(), String.t()) :: {:error, error()} | {:ok, Aliyun.Oss.Client.Response.t()}
PutBucket接口用于创建 Bucket
Examples
iex> Aliyun.Oss.Bucket.put_bucket("new-bucket", %{"x-oss-acl" => "private"})
{:ok,
%Aliyun.Oss.Client.Response{
data: "",
headers: [
{"Server", "AliyunOSS"},
{"Date", "Fri, 11 Jan 2019 04:35:39 GMT"},
{"Content-Length", "0"},
{"Connection", "keep-alive"},
{"x-oss-request-id", "5C381D000000000000000000"},
{"Location", "/new-bucket"},
{"x-oss-server-time", "438"}
]
}}
iex> Aliyun.Oss.Bucket.put_bucket("new-bucket", %{"x-oss-acl" => "invalid-permission"}) # get error
{:error,
%Aliyun.Oss.Client.Error{
parsed_details: %{
"ArgumentName" => "x-oss-acl",
"ArgumentValue" => "invalid-permission",
"Code" => "InvalidArgument",
"HostId" => "new-bucket.oss-cn-shenzhen.aliyuncs.com",
"Message" => "no such bucket access control exists",
"RequestId" => "5C3000000000000000000000"
},
body: "<?xml version="1.0" encoding="UTF-8"?>...</xml>",
status_code: 400
}}
注:所有 SubResource 相关操作亦可由此接口实现, 即 Bucket.Acl.put("some-bucket", "private") 等同于 Bucket.put_bucket("some-bucket", %{"x-oss-acl" => "private"}, %{"acl" => "private"}, "")