【问题标题】:Can you tag individual S3 objects in AWS?您可以在 AWS 中标记单个 S3 对象吗?
【发布时间】:2012-09-25 18:03:41
【问题描述】:

似乎我只能在 S3 的存储桶级别使用标签。这在某种程度上似乎是有道理的,因为您可能只会在这种宏观层面上进行计费。但是,我可以看到一些标记用例,以便不同的人为同一个存储桶中的不同对象计费。

您可以标记单个 S3 对象吗?

【问题讨论】:

  • 你说的是成本分配标签吗?

标签: amazon-s3 amazon-web-services tagging billing


【解决方案1】:

是的,您可以标记对象...但不能用于成本分配:

也许区分成本分配标签和用标签标记对象很重要。引用the Amazon documentation:“成本分配标签只能用于标记桶。有关用于标记对象的标签的信息,请参阅Object Tagging

标签:标记存储桶中的对象:

这些很像用户自己定义的元数据键值对:

【讨论】:

    【解决方案2】:

    现在,我们可以为每个对象添加标签。 使用 AWS S3API,

    aws s3api put-object-tagging --bucket bucket_name --key key_name --tagging 'TagSet=[{Key=type,Value=text1}]'
    

    我们还可以使用 python API 为对象添加标签。以下代码 sn -p 将标签添加到存储桶中的所有对象。如果您只想将标签添加到一个对象,则可以传递对象名称。

    session = aws_session.set_aws_session()
    
    s3 = boto3.Session(aws_access_key_id, aws_secret_access_key)
    
    bucketName = 'bucketName'
    bucket = s3.Bucket(bucketName)
    
    object_list = bucket.objects.all()
    
    s3 = session.client('s3')
    
    
    tagging = {'TagSet' : [{'Key': 'CONF', 'Value':'No'}]}
    
    for obj in object_list:
        s3.put_object_tagging(
            Bucket = bucketName,
            Key = obj.key,
            Tagging = tagging
            )
    

    【讨论】:

    • 请注意:添加标签需要额外的权限。 S3 存储桶上的普通读/写/列出/删除是不够的。如果您没有权限,它甚至不会在 CloudTrail 中记录错误。您只会收到“拒绝访问”的 403 错误。
    • 这也适用于成本分配吗?如果你用不同的标签值标记每个对象,你能看到每个对象的成本吗?
    【解决方案3】:

    S3 标签是 2016 年 11 月 29 日发布的新功能。标签可以添加到存储桶和单个对象上。 S3 标签是令人兴奋的功能,因为您可以保留业务分类数据,甚至控制访问。release of s3 tag feature 可以使用浏览器中的新 s3 控制台添加 s3 标签。要从浏览器添加标签,假设您在新的 s3 控制台上。选择项目 --> 更多 --> 添加标签。

    要查看标签,请使用新控制台单击对象并查看属性。

    Aws S3 cli 当前不支持标签功能。 Aws s3 api 提供了在对象上添加和读取标签的方法。 add tag using s3 api,get tag using s3 api

    【讨论】:

      【解决方案4】:

      对象标记是一项新功能,于 2016 年 12 月宣布。来自the announcement

      使用 S3 对象标记,您可以管理和控制对 Amazon S3 对象的访问。 S3 对象标签是应用于 S3 对象的键值对,可以在对象的生命周期内随时创建、更新或删除。有了这些,您将能够创建身份和访问管理 (IAM) 策略、设置 S3 生命周期策略和自定义存储指标。然后这些对象级标签可以在后台管理存储类之间的转换和过期对象。

      另见:S3 » Objects » Object Tagging

      目前,您似乎无法search by tags,或者对象标记会影响计费。

      【讨论】:

      • 也许 API 文档还没有更新,因为 S3 开发人员指南中的新对象标记部分确实说:“有了标记,你现在有了另一个维度。[...] 你可以还可以通过指定标签过滤器列出存储桶中的对象。”
      • 您现在可以使用 aws athena 进行搜索。
      • 我们可以通过邮递员将对象的 x-amz-tagging 作为标头发送吗?
      【解决方案5】:

      我认为您不能像通常标记资源一样标记 S3 中的单个项目。

      但是,您可以将元数据添加到 S3 中的项目以识别它们。然后,您可以通过以下任一方式报告具有不同类型的项目: - 翻阅桶中的项目(显然相当慢)并整理您想要的有关它们的任何信息 - 在您选择的数据库中存储一个外部元数据,然后您可以使用它来运行报告。例如有多少不同类型的项目,总大小等。​​当然,您要报告的任何内容都必须首先添加到数据库中

      不过,我肯定会对任何更好的解决方案感兴趣!

      【讨论】:

        【解决方案6】:

        这不是出于 AWS 端计费的目的“标记”,但您可以使用对象元数据来存储您想要的对象数据。

        http://docs.amazonwebservices.com/AmazonS3/latest/dev/UsingMetadata.html

        【讨论】:

          【解决方案7】:

          根据documentation你只能标记桶:

          成本分配标记允许您标记 S3 存储桶,以便您可以更多 根据项目或其他标准轻松跟踪他们的成本..

          这与您在管理控制台和 SDK 文档中看到的一致。

          当然,您可以使用文件夹/对象元数据自行进行更精细的“标记”,但我认为您会找到更好的解决方案。

          【讨论】:

          • 可变对象级标签现在可用于 reInvent:2016。请参阅下面 Kobi 的回答。
          猜你喜欢
          • 1970-01-01
          • 2018-09-18
          • 1970-01-01
          • 2012-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多