LibOss.Core.Tagging (lib_oss v0.3.0)

View Source

标签管理模块

负责:

  • 对象标签:put_object_tagging, get_object_tagging, delete_object_tagging
  • 标签验证和处理

Summary

Functions

获取对象标签数量

检查对象是否有标签

获取标签限制信息

更新对象标签(合并现有标签)

验证标签是否符合OSS规范

Types

err_t()

@type err_t() :: {:error, LibOss.Exception.t()}

Functions

delete_object_tagging(name, bucket, object)

@spec delete_object_tagging(
  module(),
  LibOss.Typespecs.bucket(),
  LibOss.Typespecs.object()
) ::
  :ok | err_t()

删除对象标签

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称

返回值

  • :ok | {:error, Exception.t()}

示例

iex> LibOss.Core.Tagging.delete_object_tagging(MyOss, "my-bucket", "my-object")
:ok

相关文档

https://help.aliyun.com/document_detail/114878.html

get_object_tagging(name, bucket, object)

@spec get_object_tagging(
  module(),
  LibOss.Typespecs.bucket(),
  LibOss.Typespecs.object()
) ::
  {:ok, [map()]} | err_t()

获取对象标签

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称

返回值

  • | {:error, Exception.t()}

返回标签列表,每个标签包含key和value字段

示例

iex> LibOss.Core.Tagging.get_object_tagging(MyOss, "my-bucket", "my-object")
{:ok, [%{key: "env", value: "prod"}, %{key: "team", value: "backend"}]}

相关文档

https://help.aliyun.com/document_detail/114878.html

get_tag_count(name, bucket, object)

@spec get_tag_count(module(), LibOss.Typespecs.bucket(), LibOss.Typespecs.object()) ::
  {:ok, non_neg_integer()} | err_t()

获取对象标签数量

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称

返回值

  • | {:error, Exception.t()}

示例

iex> LibOss.Core.Tagging.get_tag_count(MyOss, "my-bucket", "my-object")
{:ok, 2}

has_tags?(name, bucket, object)

检查对象是否有标签

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称

返回值

  • boolean()

示例

iex> LibOss.Core.Tagging.has_tags?(MyOss, "my-bucket", "my-object")
true

put_object_tagging(name, bucket, object, tags)

@spec put_object_tagging(
  module(),
  LibOss.Typespecs.bucket(),
  LibOss.Typespecs.object(),
  LibOss.Typespecs.dict() | keyword()
) :: :ok | err_t()

设置对象标签

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称
  • tags: 标签map或关键字列表

标签限制

  • 最多10个标签
  • 标签键最长128字符
  • 标签值最长256字符

返回值

  • :ok | {:error, Exception.t()}

示例

iex> LibOss.Core.Tagging.put_object_tagging(MyOss, "my-bucket", "my-object", %{"env" => "prod", "team" => "backend"})
:ok

iex> LibOss.Core.Tagging.put_object_tagging(MyOss, "my-bucket", "my-object", [{"env", "prod"}, {"team", "backend"}])
:ok

相关文档

https://help.aliyun.com/document_detail/114878.html

tag_limits()

@spec tag_limits() :: map()

获取标签限制信息

返回值

  • map()

示例

iex> LibOss.Core.Tagging.tag_limits()
%{
  max_tags: 10,
  max_key_length: 128,
  max_value_length: 256
}

update_object_tagging(name, bucket, object, new_tags)

@spec update_object_tagging(
  module(),
  LibOss.Typespecs.bucket(),
  LibOss.Typespecs.object(),
  LibOss.Typespecs.dict() | keyword()
) :: :ok | err_t()

更新对象标签(合并现有标签)

参数

  • name: Agent进程名称
  • bucket: 存储桶名称
  • object: 对象名称
  • new_tags: 新的标签map或关键字列表

返回值

  • :ok | {:error, Exception.t()}

该函数会先获取现有标签,然后与新标签合并后更新

示例

iex> LibOss.Core.Tagging.update_object_tagging(MyOss, "my-bucket", "my-object", %{"version" => "1.0"})
:ok

validate_tags(tags)

@spec validate_tags(LibOss.Typespecs.dict() | keyword()) ::
  :ok | {:error, LibOss.Exception.t()}

验证标签是否符合OSS规范

参数

  • tags: 标签map或关键字列表

返回值

  • :ok | {:error, Exception.t()}

验证规则

  • 标签数量不超过10个
  • 标签键长度不超过128字符
  • 标签值长度不超过256字符
  • 标签键不能为空

示例

iex> LibOss.Core.Tagging.validate_tags(%{"key1" => "value1"})
:ok

iex> LibOss.Core.Tagging.validate_tags(%{})
:ok