14

It appears as though I can only use tags at the bucket level in S3. That seems to make sense in a way, because you would likely only do billing at that kind of macro level. However, I can see a few use cases for tagging so that different folks get billed for different objects in the same bucket.

Can you tag individual S3 objects?

4

7 回答 7

15

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

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

另请参阅:S3 » 对象 » 对象标记

目前,您似乎无法按标签搜索,或者对象标签会影响计费。

于 2016-12-01T05:24:24.977 回答
5

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

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

于 2012-10-05T05:23:44.830 回答
3

根据文档,您只能标记存储桶:

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

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

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

于 2012-10-04T20:45:32.573 回答
3

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

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

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

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
        )
于 2018-05-05T12:40:32.193 回答
3

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

使用新控制台添加标签。

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

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

于 2016-12-26T11:07:35.423 回答
0

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

也许区分成本分配标签和用标签标记对象很重要。引用亚马逊文档:“成本分配标签只能用于标记存储桶。有关用于标记对象的标签的信息,请参阅对象标记

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

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

标记对象

于 2020-03-20T04:28:19.807 回答
0

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

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

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

于 2015-09-11T09:54:40.850 回答