亚马逊AWS官方博客

Category: Storage

如何将亚马逊 AWS S3 存储桶的访问权限到一个特定IAM角色

如何将亚马逊 AWS S3 存储桶的访问权限到一个特定IAM角色

在本博文中,我们会向您展示如何使用 Conditions(而非 NotPrincipal 元素),将 S3 存储桶的访问权限限制到一个账户内的特定 IAM 角色或用户。即便相同账户中的另一个用户拥有 Admin 策略或带有 s3:* 的策略,只要未被显式列出,也同样会被拒绝。例如,您可以使用此方法配置存储桶,以供 Auto Scaling 组内的实例访问。您还可以使用此方法,限制对具有高级别安全需求的存储桶的访问。

Read More

使用 Amazon Comprehend 和 Amazon Relational Database Service 构建文本分析解决方案

直到现在,从大量非结构化或半结构化内容中提取价值一直都很困难,并且需要机器学习 (ML) 方面的背景。Amazon Comprehend 消除了这些进入障碍,让数据工程师和开发人员可以轻松访问丰富、持续训练的自然语言处理服务。

您可以通过将来自 Amazon Comprehend 的分析与关系业务信息相结合来构建完整的分析解决方案,从而生成有价值的趋势分析。

Read More

S3 Select 和 Glacier Select – 检索对象子集

Amazon Simple Storage Service (S3) 为每个行业的市场领导者使用的数以百万计的应用程序存储数据。其中许多客户还使用 Amazon Glacier 作为安全、持久且成本极低的存档存储。借助 S3,我可以存储任意数量的对象,单一对象最大可达 5 TB。一直以来,对象存储中的数据都是作为整体访问的,也就是说,当您查询一个大小为 5 GB 的对象时,您会获得全部 5 GB 的数据。这是对象存储的工作方式所决定的。今天,我们将宣布 S3 和 Glacier 的两个新功能挑战这一模式 – 它们让您能够使用简单的 SQL 表达式从这些对象中只提取需要的字节。这可从根本上增强访问 S3 或 Glacier 中对象的每一个应用程序。 S3 Select S3 Select (随预览版发布) 让应用程序能够使用简单的 SQL 表达式只检索对象的数据子集。使用 S3 Select 仅检索应用程序所需的数据可大幅提升性能 – 在许多情况下,您可获得多达 400% 的性能提升。 例如,假设您是一家大型零售商的开发人员,您需要分析某个店铺的每周销售数据,但所有 200 家店铺的数据每天都保存在一个新的经过 GZIP 压缩的 CSV 文件中。如果没有 S3 Select,您需要下载、解压缩并处理整个 CSV […]

Read More

Amazon S3 深度实践系列之二:如何实现 S3 数据跨区域高效可靠传输

背景 在Amazon S3 深度实践系列之一:S3 CLI深度解析及性能测试一文中,我们深度剖析了AWS CLI S3相关命令的实际工作原理及单机下载S3数据的基本性能测试情况。在实际工作场景中,很多客户会在AWS多个区域的S3桶里面存储大量数据,而且会遇到将数据批量从一个区域一次转移到另外一个区域的情形;因此,在本篇中,作者和大家一起来探讨下出现这样的需求我们如何进行架构设计及高效实现。 架构设计 存储在S3中的对象随着时间的推移,对象数量逐渐增加,而且总体的数据量也不断膨胀,如果碰到需要将数据从某一个区域的S3存储桶完全复制到另外一个S3存储桶里面,我们会遇到哪些挑战呢? 网络传输带宽的限制 存储桶里面所有对象的分析和列表 源存储桶和目标存储桶权限的设定 传输失败识别和重试的挑战 如何利用并发来加速传输及降低成本 如何判断目标存储桶中的对象和源存储桶中的对象差异及完整性 在通用架构设计环节,我们将复杂的问题分解成一系列的子问题进行分析,并讨论在不同场景下的具体实现时要考虑的因素。如下图所示,我们将该任务分解成独立的五个环节,从图上我们也可以看出来,如何实现大规模数据或任务的并发执行是每个环节能否高效完成的一个很关键的技术要求;而且,只有在步骤三执行数据传输任务时,才会涉及到具体场景中的技术限制,因此我们在执行数据传输任务章节来讨论,同区域不同存储桶之间,AWS海外不同区域存储桶之间,以及AWS海外和国内不同存储桶之间的具体技术考量点。 S3对象“清单” 了解源和目标存储桶里的S3 对象是非常重要的准备工作,该章节我们讨论,如何获得S3存储桶的所有对象列表,包含对象的基本的信息,比如最新版本的对象大小,ETag等等。 Amazon S3本身提供了存储桶管理功能之清单生成功能,该功能是一个异步的AWS后台定期执行,可以实现每天生成一个存储桶清单保存成Excel格式。 同时我们也看到很多用户提问,如何实现一个自定义的清单功能,满足大家对于对象变化比较频繁的存储桶对象的实时统计场景以及更多高级自定义的业务逻辑。 接下来我们来看看这两种方法的具体实现逻辑。 利用S3 CLI实现高效的清单功能 作者利用AWS S3 CLI实现高效的清单功能基于以下两个事实前提: s3api 的 list-objects-v2虽然文档中说明最多返回1000个对象,但实测可以获得所有对象列表 同样利用s3api 的 list-objects-v2的delimiter和prefix参数,我们可以实现类似文件夹目录逐级扫描功能 基于以上两个事实,我们实现桶清单的主要逻辑如下图所示: 输入参数主要是:bucket,region和IAM 配置的profile名字,profile默认为default;另外depth控制扫描的“目录”层级 当depth为零时,我们直接尝试利用list-objects-v2一次性获取存储桶中所有对象列表并生成一个json格式的文件(但当桶里面对象太多时,该操作会超时) 当depth为零即单线程无法直接生成存储桶清单时,我们就尝试如下迭代逻辑: 生成存储桶当前“目录”里面的所有对象和该目录中所有“子目录”列表 遍历上一步的“子目录”列表,迭代生成该目录下的对象列表和“子目录”列表 如果遍历的深度等于输入参数depth=n,或者“子目录”列表为空,那么停止遍历子目录,直接生成该层级“目录”里面所有的对象列表 以下是几个关键点实现的代码说明,首先,生成某个“目录”前缀下所有对象列表的AWS S3 CLI命令参考,如下命令将在操作系统后台执行并生成存储桶jason中“目录”前缀“qwikLabs/”下的所有对象列表(包括所有嵌套“子目录”中的所有对象): $ nohup aws s3api list-objects-v2 –bucket “jason” –prefix “qwikLabs/” –profile […]

Read More

如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 2)

作者:王宇 上一期我们讨论了如何在不关机的前提下实现AWS上实例的数据一致性快照问题,传送门:《如何使用Amazon EC2 Systems Manager自动创建数据一致的EBS快照(Part 1)》 在本文的介绍中,我们将共同探索如何利用Amazon EC2 Systems Manager(SSM)和Microsoft VSS (Volume Shadow Copy Service)来创建数据一致的EBS快照。 SSM + VSS数据一致快照的原理 VSS (Volume Shadow Copy Service)是一个Windows操作系统内置的服务,用来协调与VSS兼容的应用程序(如SQL Server、Exchange Server等)的备份工作,如冻结或释放这些应用程序的I/O操作等。 VSS服务能够启动和监督副本拷贝的创建。“副本拷贝”是指一个逻辑卷在某一个时间点上的数据一致快照。比如:“C:”是一个逻辑卷,它与EBS快照不同。创建副本拷贝的步骤包括: 请求方向VSS发出创建副本拷贝的请求。 VSS provider创建并维护副本拷贝。 VSS写入器(writer)保证数据的一致性。写入器负责在VSS provider创建副本拷贝之前固化临时数据并冻结I/O操作,并在VSS provider完成创建后释放I/O操作。通常情况下,会为每一个与VSS兼容的应用程序分配一个独立的写入器(writer)。 我们可以使用Run Command在windows实例中运行一个PowerShell脚本: $EbsSnapshotPsFileName = “C:/tmp/ebsSnapshot.ps1” $EbsSnapshotPs = New-Item -Type File $EbsSnapshotPsFileName -Force Add-Content $EbsSnapshotPs ‘$InstanceID = Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/instance-id’ Add-Content $EbsSnapshotPs ‘$AZ = […]

Read More