亚马逊AWS官方博客

Category: Amazon Simple Storage Services (S3)

如何将亚马逊 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

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