亚马逊AWS官方博客

Amazon S3 更新 – 新存储类以及通用版本 S3 Select

我收到了两条对于在 Amazon Simple Storage Service (S3) 中存储和检索数据的非常重要的新闻:

新 S3 One Zone-IA 存储类 – 这种新存储类比现有的标准-IA 存储类便宜 20%。它设计用于存储不需要通过地理冗余提供额外保护级别的数据。

通用版本 S3 Select – 这种独特的检索选项可让您利用简单 SQL 表达式从 S3 对象检索数据子集,在此流程中性能提高可能达到 400%。

下面我们来看这两种选项!

S3 One Zone-IA(低频访问)存储类
这种新存储类可将数据存储在单 AWS 可用区中,设计为达到十一个 9 级 (99.99999999%) 的数据耐久性,与其他 S3 存储类相似。与其他类不同的是,它不适合用于应对地震或洪水之类的重大事故导致的 AZ 有形损失,在能够损毁 AZ 的罕见事件中数据可能会丢失。S3 One Zone-IA 存储可使用更低的成本为您提供本地数据辅助备份以及可轻松重新创建的数据。您还可以将其用作其他 AWS 区域的 S3 跨区域复制目标。

您可以指定在您向 S3 上传新对象时使用 S3 One Zone-IA 存储:

您还可以将其用作 S3 生命周期规则的一部分:

您可以设置在 30 天或更多天后将先前版本的对象移至 S3 One Zone-IA 的生命周期规则:

您可以修改现有对象的存储类:

您还可以使用 S3 APICLI 和 CloudFormation 模板管理存储类。

S3 One Zone-IA 存储类可用在所有公有 AWS 区域中。此前我曾提到,定价比 S3 标准-IA 存储类低 20%(请参阅 S3 订价页面以了解详细信息)。最短保留期为 30 天,最小对象大小为 128 KB。

通用版本 S3 Select
Randall 去年撰写了 S3 Select 的详细介绍,向您展示如何使用它从 S3 对象中检索所选的数据。在预览期间,我们增加了对服务器端加密的支持以及从 S3 控制台运行查询的功能。

我使用机场代码的 CSV 文件来执行新控制台功能:

此文件包含超过 9100 个机场的列表,因此有利于获得有用的测试数据,但是肯定不会以任何方式测试 S3 Select 的限制。我选择文件,打开“更多”菜单,并选择“选择自”:

控制台根据文件名和加密状态设置文件格式和压缩率。我设置分隔符,并单击“显示文件预览”以验证我的设置正确。然后,我单击“下一步”继续:

我在 SQL 编辑器中输入 SQL 表达式,并单击“运行 SQL”以发出查询:

或者:

我还可以从 AWS SDK 发出查询。我发起选择操作:

s3 = boto3.client('s3', region_name='us-west-2')

r = s3.select_object_content(
        Bucket='jbarr-us-west-2',
        Key='sample-data/airportCodes.csv',
        ExpressionType='SQL',
        Expression="select * from s3object s where s.\"Country (Name)\" like '%United States%'",
        InputSerialization = {'CSV': {"FileHeaderInfo": "Use"}},
        OutputSerialization = {'CSV': {}},
)

然后,我处理结果流:

for event in r['Payload']:
    if 'Records' in event:
        records = event['Records']['Payload'].decode('utf-8')
        print(records)
    elif 'Stats' in event:
        statsDetails = event['Stats']['Details']
        print("Stats details bytesScanned: ")
        print(statsDetails['BytesScanned'])
        print("Stats details bytesProcessed: ")
        print(statsDetails['BytesProcessed'])

S3 Select 可用于所有公有区域,您今天就可以开始使用。定价基于扫描的数据量以及返回的数据量。

Jeff