为了账号安全,请及时绑定邮箱和手机立即绑定

你用对AWS S3了吗?实现可扩展数据存储的正确姿势

专家技巧和方法助你提高成本效率、优化性能并提升系统可用性

AWS S3 optimization | Cost-efficient AWS S3 storage | AWS S3 lifecycle policies | Multipart uploads in S3 | S3 Transfer Acceleration tips | Cross-Region Replication AWS | AWS S3 best practices

照片由 Christina @ wocintechchat.com 提供 | 图片由作者编辑 | 来自 Unsplash

当谈到云存储时,无论是新手还是经验丰富的云工程师,AWS S3(S3服务)通常是首选的云存储解决方案。然而,仅仅使用S3是不够的——你需要正确地使用它,才能真正发挥其全部潜力。无论你是管理TB级的数据,优化存储成本,还是确保高可用性的同时,接下来要分享的一些技巧都将帮助你最大限度地利用S3。

在这份指南中,我将带你一步步掌握一些专家技巧,这些技巧不仅可以帮你省下成本,还可以提升性能和保证高可用性。到文章结束时,你将全面掌握如何优化你的AWS S3 存储桶,并避开那些可能拖慢数据处理速度或增加成本的常见坑。

1. 了解基础知识:AWS S3 存储桶和对象简介

在我们深入优化之前,让我们确保我们对S3实际是什么有同样的理解。简单来说,AWS S3 是一个可扩展的对象存储服务,您可以将数据存储在“桶”中,并通过唯一的对象键来访问它们。

  • :这些是存放您的数据对象的容器。
  • 对象:这些是存储在桶中的单个文件或数据。

尽管这听起来很简单,但错误配置桶或不妥善存储对象会导致意外的费用和性能瓶颈。

常犯的错误:
  • 使用随机的名字来命名桶会使管理和跟踪变得很困难。相反,可以使用如 项目-地区-环境命名规则(例如 analytics-us-east-1-production,这一串可以是 分析-美国东部-1-生产)。
2. 优化桶配置以降低成本

使用 S3 的一个最大优势是它的 性价比高,但前提是您正确地利用它。下面来看看一些节省成本的方法:

2.1. 使用存储类别:

AWS S3 提供不同的存储类别选项,根据您的数据访问模式:

  • S3 标准:适合频繁访问的数据。
  • S3 不经常访问 (IA) 层:适用于访问不频繁但仍然需要快速检索的数据。
  • S3 Glacier 及 Glacier 深度归档:非常适合极少访问的存档数据。

实用技巧:如果你不确定访问模式是怎么样的,可以考虑使用S3 智能分层。它会自动将数据移动到最经济的存储级别

2.2. 运用生命周期政策

对于那些随着时间推移变得不再那么重要的数据,生命周期策略可以自动将数据迁移到更便宜的存储层,或者在设定的期限后删除它们。

    # 示例生命周期策略
    {  
        "Rules": [  
            {  
                "ID": "将旧日志数据移至Glacier",  
                "Prefix": "logs/",  
                "Status": "已启用",  
                "Transitions": [  
                    {  
                        "Days": 30,  
                        "StorageClass": "StorageClass"  
                    }  
                ]  
            }  
        ]  
    }

常犯的错误

  • 忘记设置生命周期策略可能导致不必要的开支,尤其是对于那些随时间变得无关紧要的日志数据或大型数据集。
3. 提升性能,多部分上传和S3传输加速

当你处理大型文件时,默认的单文件上传可能不是最高效的选择。让我们来看看两种可以提高效率的方法。

3.1. 使用分段上传功能

对于超过100 MB的文件,建议使用多部分上传。这会将文件分成更小的部分并同时进行上传,从而显著加快上传速度。

import boto3  

s3_client = boto3.client('s3')  
multipart_upload = s3_client.create_multipart_upload(Bucket='my-bucket', Key='large-file.zip')  # 分段上传对象
# 上传各个部分
for i in range(1, num_parts + 1):  
    part = s3_client.upload_part(  
        Bucket='my-bucket',  
        Key='large-file.zip',  
        PartNumber=i,  
        UploadId=multipart_upload['UploadId'],  
        Body=file_part  # 文件分段
    )
# 完成分片上传
3.2. 加速传输

您可以使用 S3 传输加速更快地传输数据。

如果你的用户在全球范围内访问数据,可以考虑启用 S3 传输加速功能,利用 Amazon CloudFront 全球分布的边缘位置来减少延迟时间。

如何开启

  1. 进入 S3 控制台
  2. 选择你的桶,然后转到 传输加速 选项。
  3. 点击 启用 按钮。

使用Python的Boto3库来自动化任务可以简化重复性任务。

提示:使用Python脚本自动处理标签、生命周期配置和备份等,以实现自动化。

4. 增强安全性:桶策略、加密和 IAM 角色权限,
桶政策

防止未经授权访问桶级别的权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "拒绝",
            "Principal": "主体",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Condition": { "布尔": { "aws:安全传输": "false" } }
        }
    ]
}

// 这段 JSON 表示拒绝所有用户进行不安全传输的 S3 操作。

加密技术

使用服务器端加密(SSE-S3)或自带客户端加密来保护您的数据。

IAM 角色(Role)

为不同的应用程序创建特定的IAM角色,以遵循最小权限策略。

5: 确保高可用性通过S3复制

数据冗余和可用性 对关键任务应用程序来说至关重要。AWS S3 提供 跨区域复制功能(CRR)同区域复制功能(SRR),以便在不同区域或同一区域内复制数据,从而实现灾难恢复。

例子:设置跨区域的备份
{
    "规则列表": [  
        {  
            "ID": "跨区域副本",  
            "状态": "已开启",  
            "前缀": "",  
            "目标位置": {  
                "存储桶": "arn:aws:s3:::my-replica-bucket"  
            }  
        }  
    ]  
}

常见的用法:

  • 将数据复制到另一个区域以实现灾难恢复目的
  • 使用同区域备份来维护备份以符合合规要求。
6. 使用对象标记和版本管理高效组织数据
6.1. 使用对象标记实现更好的数据管理

标签帮助你整理和分类你的数据,使其更易于搜索、筛选和管理大量数据。比如,可以根据项目、环境或部门给对象打标签。

s3_client.put_object_tagging(  
    Bucket='my-bucket',  
    Key='data/report.csv',  
    Tagging={'TagSet': [{'Key': 'Project', 'Value': 'Analytics'}]}  
)
6.2. 开启数据保护中的版本管理

如果你担心不小心删错文件或覆盖重要文件,这时开启版本历史功能就很有帮助。此功能会存储文件的多个版本,让你在需要时可以恢复数据。

基于优化大规模数据传输成本的技巧 #7

在将大量数据传输进出S3时,成本可能迅速增加。这里有一些策略可以帮助你降低这些成本:

  • 使用 VPC 终端节点来连接到 S3,以避免 VPC 和 S3 之间的数据传输费用。
  • 在上传之前压缩文件,以减少存储和传输所需的空间。
  • 使用 Amazon CloudFront 缓存经常访问的数据,降低对 S3 的访问频率。
  1. 解决 AWS S3 的常见问题
访问被拒错误

确保桶策略正确配置,并且IAM角色设置妥当。

多部分上传失败情况
  • 使用 重试 并监控进度来处理多部分上传期间的中断。
高延迟问题
  • 使用 S3 Transfer Acceleration 优化数据检索过程,并利用 CloudFront 进行缓存。
结尾:

通过运用本指南中的技术,可以让您的 AWS S3 使用更上一层楼。无论您是 云工程师数据架构师 ,还是仅仅想优化云存储策略的用户,这些最佳实践将帮助您降低成本、提高性能并确保数据的可用性。

随意试试这些策略,然后告诉我感觉怎么样。如果你有任何疑问或者需要更多帮助,随时可以留言或者直接联系我。

❤️ 觉得这有用吗?与需要它的朋友分享吧!给点掌声 👏👏👏👏 也超级赞——这能让更多人发现这篇内容,也是对你喜欢的内容的一种肯定。当然,我也很想知道你的看法!

🎯谢谢阅读!如果喜欢的话,请点击_关注我 按钮,获取我的最新文章。你也可以通过_请我喝杯咖啡_支持我。

🚀 想联系我吗?欢迎在LinkedIn上联系我!

🔔 我经常撰写有关数据工程的核心概念、SQL、Python、数据分析和数据科学等主题的博客。欢迎在我的个人主页上浏览更多文章。

一个直接了当的英语解释

感谢你成为我们的一员!在你离开前,我们想对你说……

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消