如何实现Amazon S3 Intelligent Tiering API并在对象上传时启用
S3 Intelligent Tiering自动启用实现方案
有两种成熟的官方支持的实现方式,均不需要要求第三方上传用户做额外操作,你可以在自有业务侧直接完成配置:
方案1:桶级生命周期规则配置(优先推荐)
这是最省心的方案,不需要修改任何上传相关逻辑:
- 你可以直接给自己的目标S3桶配置生命周期规则,指定所有新上传的对象自动转换到智能分层存储类,规则生效后,所有上传到该桶的对象无论上传方是谁,都会自动应用该策略。
- 配置操作支持S3控制台、AWS CLI、各语言AWS SDK调用,示例CLI命令如下:
aws s3api put-bucket-lifecycle-configuration --bucket <你的桶名称> --lifecycle-configuration file://lifecycle_config.json - 对应的规则配置文件中,只要指定匹配所有对象前缀、上传0天后转换到
INTELLIGENT_TIERING存储类即可。
该配置仅对大于等于128KB的对象生效,小于该大小的对象不会进入智能分层,也不会产生额外的监控费用。
方案2:上传时指定存储类(适合差异化配置场景)
如果你需要对不同对象单独控制是否启用智能分层,可以在上传环节直接指定存储类:
- 如果你是给第三方用户提供预签名URL用于上传,只需要在生成预签名URL时指定
StorageClass参数为INTELLIGENT_TIERING即可,第三方用户使用该URL上传的对象会自动采用智能分层存储类。 - Python boto3生成对应预签名URL的示例代码:
import boto3 s3_client = boto3.client("s3") presigned_upload_url = s3_client.generate_presigned_url( ClientMethod="put_object", Params={ "Bucket": "<你的桶名称>", "Key": "<目标对象存储路径>", "StorageClass": "INTELLIGENT_TIERING" }, ExpiresIn=3600 )
- 如果你的业务是服务端中转第三方用户的上传内容,直接在调用S3的
PutObject接口时传入StorageClass="INTELLIGENT_TIERING"参数即可。
官方S3开发指南和API参考文档中都有对应功能的详细说明,上述提到的所有配置和接口调用能力,所有主流语言的AWS SDK都已封装支持,你可以直接在自有代码库中集成使用。
内容的提问来源于stack exchange,提问作者Samuel Jim Nnamdi
相关产品推荐
相关产品推荐

