Category: News*


AWS 中国 (宁夏) 区域现已开放

今天,我们推出全球第 17 个、中国第二个区域。由宁夏西云数据科技有限公司 (NWCD) 运营的 AWS 中国 (宁夏) 区域现已正式推出,为客户提供了在中国 AWS 上运行应用程序和存储数据的另一种选择。

详细信息
由 NWCD 运营的全新中国 (宁夏) 区域在推出之际支持以下服务:Auto ScalingAWS ConfigAWS CloudFormationAWS CloudTrailAmazon CloudWatchCloudWatch EventsAmazon CloudWatch LogsAWS CodeDeployAWS Direct ConnectAmazon DynamoDBAmazon Elastic Compute Cloud (EC2)Amazon Elastic Block Store (EBS)Amazon EC2 Systems ManagerAWS Elastic BeanstalkAmazon ElastiCacheAmazon Elasticsearch ServiceElastic Load BalancingAmazon EMRAmazon GlacierAWS Identity and Access Management (IAM)Amazon Kinesis StreamsAmazon RedshiftAmazon Relational Database Service (RDS)Amazon Simple Storage Service (S3)Amazon Simple Notification Service (SNS)Amazon Simple Queue Service (SQS)AWS Support APIAWS Trusted AdvisorAmazon Simple Workflow Service (SWF)Amazon Virtual Private CloudVM Import。有关这些服务的更多信息,请访问 AWS 中国产品页面。

该区域支持所有大小的 C4D2M4T2R4I3X1 实例。

查看 AWS 全球基础设施页面,了解有关当前和未来 AWS 区域的更多信息。

运营合作伙伴
为了遵守中国的法律和监管要求,AWS 与 NWCD 建立了战略性技术合作关系,以运营 AWS 中国 (宁夏) 区域并从该区域提供服务。NWCD 成立于 2015 年,是一家经过许可的数据中心和云服务提供商,总部位于中国宁夏。NWCD 加入 AWS 中国 (北京) 区域的运营商 Sinnet 的行列,成为 AWS 在中国的运营合作伙伴。通过这些关系,AWS 为 NWCD 和 Sinnet 提供其业界领先的技术、指导和专业知识,而 NWCD 和 Sinnet 则为本地客户运营和提供 AWS 云服务。尽管在这两个 AWS 中国区域提供的云服务与其他 AWS 区域提供的服务相同,但 AWS 中国区域的不同之处在于,它们与所有其他 AWS 区域隔离,并由 AWS 中国合作伙伴独立于所有其他 AWS 区域单独运营。使用 AWS 中国区域的客户与 Sinnet 和 NWCD 签订客户协议,而不是与 AWS 签订客户协议。

立即使用
由 NWCD 运营的 AWS 中国 (宁夏) 区域开始营业,您可以立即开始使用!从今天开始,中国的开发人员、初创公司、企业以及政府、教育和非营利组织可以利用 AWS 来运行他们的应用程序,并将他们的数据存储到由 NWCD 运营的全新 AWS 中国 (宁夏) 区域。已经在使用由 Sinnet 运营的 AWS 中国 (北京) 区域的客户可以直接从 AWS 管理控制台选择 AWS 中国 (宁夏) 区域,而新客户可以在 www.amazonaws.cn 申请账户以开始使用这两个 AWS 中国区域。

Jeff

re:Invent 回顾—通过 Windows 促进企业创新的公告

我的同事 Sandy Carter 上周在 AWS re:Invent 大会上发表了“企业创新报告”(Enterprise Innovation State of the Union) 演讲。她写了下面这篇客座文章,回顾她在舞台上发布的消息。

Jeff


“我希望我的公司进行创新,但我不确信我们能否成功执行。”在我职业生涯的不同阶段,听到过太多次高管人员流露出的这种恐惧。事实上,Price Waterhouse Coopers 公司发布的最新研究结果表明,虽然 93% 的高管依靠创新来推动增长,但对超过一半的人而言,将创新理念以可扩展的方式迅速推向市场仍是一项挑战。

许多客户都在为如何推动企业创新而苦苦挣扎,我很高兴上周能与一些成功打破这种模式,推动企业创新的高管在 AWS re:Invent 上同台演讲。在此,我要特别感谢 Johnson & Johnson 的 Parag Karnik、Hess Corporation 的 Bill Rothe、Just Eat 的 Dave Williams 以及 Pitney Bowes 的 Olga Lagunova 分享他们关于创新、创意和坚定执行的故事。

在过去一周 AWS 的许多新公告中,让我感到特别兴奋的是我在 re:Invent 上宣布的以下新发布的 AWS 产品和计划,它们可以推动我们企业客户的创新:

AI:EC2 Windows 上全新的深度学习 Amazon 系统映像 (AMI)
正如我在 re:Invent 上分享的,Infor 等客户已在 AWS 上成功利用人工智能工具为其客户交付量身定制的、行业特定的应用程序。我们希望帮助更多的 Windows 开发人员利用基于机器学习的工具和常用的深度学习框架,例如 Apache MXNetTensorFlowCaffe2,快速轻松地开始使用 AI。为了实现这一点,我在 re:Invent 上宣布,AWS 现在推出了一款适用于 Microsoft Windows 的全新深度学习 AMI。该 AMI 经过量身定制,旨在促进深度学习模型的大规模训练,快速轻松地为机器学习应用程序设置基于 Windows Server 的计算资源。

IoT:SQL 和 IoT 数据的可视化与分析
预测显示到 2020 年将会有 310 亿台 IoT 设备投入使用。AWS 希望每个 Windows 客户都能利用从其设备中获得的数据。例如,Pitney Bowes 现在有超过 13 万台 IoT 设备将数据流式传输到 AWS。利用机器学习,Pitney Bowes 丰富了数据并对数据进行分析,以增强其客户体验,提高效率并创建新的数据产品。现在可以利用 AWS IoT Analytics 对 IoT 数据运行分析并获得见解,以帮助您为 IoT 应用程序和机器学习使用案例做出更好、更准确的决定。AWS IoT Analytics 可以通过上下文元数据自动丰富 IoT 设备数据,如 SQL Server 事务数据。

AWS 上针对 .NET 开发人员的新功能
除了因向 AWS 上的 Windows 开发人员提供一流的体验而推出的所有增强功能之外,我们还宣布在 AWS LambdaAWS CodeBuild 中提供 .NET Core 2.0 支持,到明年年初将实现更广泛的使用。.NET Core 2.0 具有许多新功能,如 Razor 页,能够更好地与 .NET 框架兼容,并且 API 数量是以前版本的两倍以上。通过此次发布,您将能够在 Lambda 和 CodeBuild 上利用 .NET Core 所有最新功能,构建以 DevOps 为中心的现代化无服务器解决方案。

适用于 Windows 应用程序的简化备份
我们最近通过 Microsoft 卷影拷贝服务 (VSS) 推出了应用程序一致性快照。这让您可以借助 Amazon Elastic Block Store (EBS) 为运行的 Windows 实例拍摄 VSS快照,而无需创建自定义脚本或关闭实例。这会消除与备份 Windows 应用程序相关的开销。

BYOL 的许可证优化
AWS 为您提供了各种最能满足您的工作负载需求的实例类型和系列。如果您正在使用按 vCPU 数量许可的软件,则希望能够进一步调整 vCPU 数目以优化许可证支出。我宣布了我们即将推出优化 EC2 的 CPU 的功能,让您可以在两个方面更好地控制 EC2 实例:

  1. 您可以在启动新实例时指定 vCPU 的自定义数量,以节省基于 vCPU 的许可成本。例如,SQL Server 许可支出。
  2. 您可以针对使用单线程 CPU 运行良好的工作负载禁用超线程技术,如某些高性能计算 (HPC) 应用程序。

使用这些功能,自带许可证 (BYOL) 的客户将能够优化其许可证使用并节省许可证成本。

针对 Hyper-V 虚拟机的服务器迁移服务
正如 Hess Corporation 的 Bill Rothe 在 re:Invent 上分享的一样,Hess 已成功将各种工作负载迁移到了云中,包括 SQL Server、SharePoint、SAP HANA 等等。AWS Server Migration Service (SMS) 现在支持 Hyper-V 虚拟机 (VM) 迁移,以进一步支持此类企业迁移。使用 AWS Server Migration Service,您可以更轻松地协调从本地 Hyper-V 环境到 AWS 的大规模服务器迁移。借助 AWS Server Migration Service,您可以自动化、调度和跟踪活动服务器卷的增量复制。复制的卷会在传输过程中进行加密,并另存为新的 Amazon 系统映像 (AMI),可以作为 AWS 上的 EC2 实例启动。

面向 AWS 最终客户的 Microsoft Premier 支持
我很高兴地宣布,微软和 AWS 开发了支持集成的新领域,以帮助确保出色的客户体验。Microsoft Premier Support 旨在帮助 AWS 协助最终客户。AWS Support 工程师可以代表运行 Microsoft 工作负载的 AWS 客户直接向 Microsoft 支持部门上报。

最佳实践工具:HIPAA 合规性与数字创新研讨会
11 月份,我们更新了以 HIPAA 为主题的白皮书,概述了如何使用 AWS 创建符合 HIPAA 标准的应用程序。明年第一季度,我们将发布 HIPAA 实施指南,它是对 HIPAA 快速入门的详细阐述,使您能够遵循严格的安全性、合规性和风险管理控制措施,来处理常见的医疗保健使用案例。我还很高兴地在我的 re:Invent 讲座中向我们的一个客户授予参加“数字创新研讨会”的机会,我期待看到更多的客户利用这个研讨会。

AWS:持续创新云
我们在客户中看到的一个共同点是,AWS 的持续创新使得他们能够不断进行革新。持续创新意味着您每一天都能获得更新、更好的产品/服务。有时它以全新的服务和功能的形式存在,有时它在您不知不觉的情况下发生着,让您的环境变得越来越好。我邀请您详细了解如何通过最近推出的 AWS 服务AWS 最佳实践加速您的创新旅程。如果您要迁移 Windows 工作负载,请联系您的 AWS 销售代表或 AWS Microsoft 工作负载能力合作伙伴,了解如何利用我们的 re:Think for Windows 计划提供的抵扣金额,开始进行迁移。

– AWS 副总裁 Sandy Carter

AWS DeepLens – 通过新式摄像机获得深度学习实践经验

我以前说过,“活到老,学到老”是我的人生信条之一。技术变革的速度越来越快,您也需要加快学习速度,迅速掌握全新技能。

在我职业生涯的大部分时间里,人工智能一直是一个学术课题,实际应用和实际部署始终是“若即若离”。但随着机器学习 (包括计算机视觉深度学习) 实际应用的不断增多,可以肯定地说,现在是获得实践经验和掌握新技能的时候了!此外,物联网无服务器计算也备受瞩目。虽然这两者的提出时间不算早,但它们必将在未来占据一席之地,是您最该掌握的众多技能之一。

新的 AWS DeepLens
今天我将跟大家介绍一下 AWS DeepLens – 一种直接在设备上运行深度学习模型的新式视频摄像机。您可以使用它构建炫酷的应用程序,同时获得人工智能、物联网和无服务器计算方面的实践经验。AWS DeepLens 结合了先进的硬件和精密的机载软件,让您能够在应用程序中使用 AWS GreengrassAWS Lambda、其他 AWS AI 及基础设施服务。

我们先从硬件谈起。此设备包含众多强大功能。它配备一个可拍摄 1080P 视频的 400 万像素摄像头,以及一个 2D 麦克风阵列。其搭载的 Intel Atom® 处理器提供超过 100 GLOPS 的计算能力,每秒足以通过机载深度学习模型对数十帧传入视频进行运算。DeepLens 具有完善的连接能力,提供双频 Wi-Fi、USB 及微型 HDMI 端口。最后,这部小巧的设备具有 8 GB 内存,能够运行您的预训练模型和代码,提供无与伦比的强大能力。

在软件方面,AWS DeepLens 运行的是 Ubuntu 16.04,预装 Greengrass Core (Lambda 运行时、消息管理器)。它还提供专为此设备优化的 MXNet 版本,并具备使用 TensorFlowCaffe2 等其他框架的灵活性。Intel® clDNN 库提供一套用于计算机视觉和其他人工智能工作负载的深度学习基元,利用 Intel Atom® 处理器的特殊功能加快推理。

我们还为您提供数据!当构建在 AWS DeepLens 上运行的应用程序时,您可以使用一组预训练模型进行图像检测和识别。这些模型将帮助您检测猫、狗、人脸、众多家用和日常物品、动作和行动,甚至是热狗。我们将继续训练和完善这些模型。下面是最初的一组模型:

所有这些硬件、软件和数据汇集到一起,使 AWS DeepLens 成了边缘设备的典型示例。借助这些位于现场和靠近动作的眼睛、耳朵和十分强劲的大脑,它能够通过机载深度学习模型快速、低延迟地运行传入视频和音频,并利用云完成计算密集度更高的高阶处理。例如,您可以在 DeepLens 上进行面部检测,然后让 Amazon Rekognition 处理面部识别工作。

这是个利用现成工具进行学习的绝佳机会!我们还为其提供了大量的示例代码 (Lambda 函数),您可以按原样使用,进行分解和学习,或基于这些示例代码编写自己的函数。当构建出一些很酷且有用的东西时,您可以按生产形式部署它们。我们确保 AWS DeepLens 强大又安全 – 每个设备都有唯一的证书,通过 IAM 精细控制对 AWS 服务和资源的访问。

注册设备
下面,我们演练一下注册设备和使设备做好使用准备的过程。首先,打开 DeepLens 控制台,单击 Register device

为摄像机输入一个名称,然后单击 Next

单击 Download certificate 并将其保存到一个安全的地方:

接下来,创建必要的 IAM 角色 (控制台简化了这一操作),在相应菜单中选择每个角色:

现在我可以正常使用 DeepLens 了!打开电源,将笔记本电脑连接到此设备的网络,然后访问内置门户来完成此过程。控制台概述了以下步骤:

现在,我的 DeepLens 就是一个功能完备的边缘设备。设备上的证书允许其对 AWS 进行安全的签名调用。Greengrass Core 正在运行,准备接受并运行 Lambda 函数。

创建 DeepLens 项目
完成连接和设置工作后,我可以创建第一个项目了。导航到 Projects,然后单击 Create new project

可以选择一个项目模板,或从空白项目开始。我选择了 cat and dog recognition,然后单击 Next

控制台提供了命名和自定义项目的机会。正如您所看到的,这个项目引用了一个 Lambda 函数和我在上文列出的预训练模型之一。默认设置满足我的要求,所以我直接单击 Create

现在,只需将项目部署到摄像机:

猫/狗识别训练
函数在摄像机上运行,将输出发布到 MQTT 主题。下面是从猫/狗识别函数的内部循环中摘录的一段代码 (删除了一些错误处理内容):

while doInfer:
    # 获取视频流中的一帧
    ret, frame = awscam.getLastFrame()
    numFrames += 1

    # 调整帧大小以符合模型输入要求
    frameResize = cv2.resize(frame, (224, 224))

    # 对调整后的帧运行模型推理
    inferOutput = model.doInference(frameResize)

    # 以每 100 帧为单位向云发布消息
    if numFrames >= 10:
        msg = "Infinite inference is running. Sample result of the last frame is\n"
        # 将最后一帧的推理结果输出到云
        # awsca 模型可以分析某些已知模型的输出
        outputProcessed = model.parseResult(modelType, inferOutput)

        # 获取可能性最高的前 5 个结果
        topFive = outputProcessed[modelType][0:2]
        msg += "label    prob"
        for obj in topFive:
            msg += "\n{}   {}".format(outMap[obj["label"]], obj["prob"])

        client.publish(topic=iotTopic, payload=msg)
        numFrames = 0;

就像我之前说的那样,您可以修改此示例代码,也可以从头开始。如您所见,不管使用哪种方式,都可以轻松上手。

我已经迫不及待想要知道您拿到 DeepLens 后会做些什么了。请务必参加在 AWS re:Invent 上举办的 DeepLens 研讨会 (共十六场),不仅可进一步了解 AWS DeepLens,还有机会得到一部 AWS DeepLens 哦!

立即预订
我们将于 2018 年率先向美国市场供应 AWS DeepLens。要了解有关定价和可用性的更多信息,或是想要提前预订,请访问 DeepLens 页面

Jeff

适用于 Kubernetes 的 Amazon Elastic Container Service

关于容器,我的同事 Deepak Singh 可以细细道来!

Jeff


我们有很多 AWS 客户在 AWS 上运行 Kubernetes。实际上,根据 Cloud Native Computing Foundation 的数据,63% 的 Kubernetes 工作负载在 AWS 上运行。尽管 AWS 常用来运行 Kubernetes,客户还是需要进行大量手动配置才能管理其 Kubernetes 群集。您必须安装和运行 Kubernetes 主节点,并配置 Kubernetes 工作节点群集。为了使 Kubernetes 群集实现高可用性,必须跨不同可用区运行至少三个 Kubernetes 主节点。每一个主节点都需要进行配置才能相互通信、可靠地共享信息、均衡负载,在某个主节点发生故障时,才能将故障转移到其他主节点。全部设置完毕并开始运行后,您还必须负责主节点和工作节点软件的升级和修补。这都需要大量的操作知识,工作量巨大,客户要求我们把这一切进行简化。

Amazon EKS 简介
适用于 Kubernetes 的 Amazon Elastic Container Service (Amazon EKS) 是一种完全托管服务,借助该服务,您无需成为管理 Kubernetes 群集的专家,就可以在 AWS 上方便地运行 Kubernetes。我们认为开发人员会很喜欢这项服务的几个特点。首先,Amazon EKS 运行开源 Kubernetes 软件的上游版本,因此您可以使用 Kubernetes 社区的所有现有插件和工具。在 Amazon EKS 上运行的应用程序与在任何标准 Kubernetes 环境 (包括本地数据中心和公有云) 中运行的应用程序完全兼容。这意味着您无需进行任何代码修改,就可以方便地将 Kubernetes 应用程序迁移到 Amazon EKS。其次,Amazon EKS 跨三个可用区使用三个主节点自动运行 K8,以免发生单点故障。在一个 AWS 可用区发生故障时,这种多可用区架构具备复原能力。

第三,Amazon EKS 还可以自动检测和替换运行状况不佳的主节点,并对主节点进行自动版本升级和修补。最后,Amazon EKS 与许多关键 AWS 功能集成,如用于负载分配的 Elastic Load Balancing、用于身份验证的 IAM、用于隔离的 Amazon VPC、用于私有网络访问权限管理的 AWS PrivateLink 和用于日志记录的 AWS CloudTrail。

工作原理
现在,我们看看其中的工作原理。Amazon EKS 通过与 Heptio 协作将 IAM 身份验证与 Kubernetes RBAC (Kubernetes 基于本机角色的访问控制系统) 集成。

您可以直接将 RBAC 角色分配给每个 IAM 实体,这样能精细控制对 Kubernetes 主节点的访问权限。因此,您可以使用标准 Kubernetes 工具 (如 kubectl) 方便地管理 Kubernetes 群集。

如果您需要直接从自己的 Amazon VPC 访问 Kubernetes 主节点,还可以使用 PrivateLink。通过 PrivateLink,Kubernetes 主节点和 Amazon EKS 服务终端节点将成为 Amazon VPC 中具有私有 IP 地址的弹性网络接口。

这样您无需使用公有 IP 地址,也无需通过 Internet 传输流量,就可以从自己的 Amazon VPC 直接访问 Kubernetes 主节点和 Amazon EKS 服务。

最后,我们还构建了一个开源 CNI 插件,任何人都可以在 AWS 上将它用于 Kubernetes 群集。这样您可以在本地将 Amazon VPC 与 Kubernetes Pod 联网。

通过 Amazon EKS,启动 Kubernetes 群集非常简单,只需在 AWS 管理控制台中单击几次。Amazon EKS 负责其余工作:升级、修补和高可用性。Amazon EKS 现在提供预览版。我们期待收到您的反馈意见。

— AWS Container Services 总经理 Deepak Singh

AWS Fargate 简介 – 运行容器无需管理基础设施

容器是开发人员用来开发、封装和部署其应用程序的一种强大方法。AWS 每周启动超过十万 ECS 群集和数亿新容器。这相当于从 2016 年以来实现了超过 400% 的客户增长。Amazon ECS 和 Kubernetes 这样的容器编排解决方案让部署、管理和扩展这些容器工作负载变得更简单,从而增强敏捷性。但是,如果使用这些容器管理解决方案中的任何一个,您都仍然要负责底层基础设施的可用性、容量和维护。AWS 从中发现机会,致力于消除部分重复性的繁重工作。我们希望您能充分利用容器提供的速度、敏捷性和不变性,集中精力构建应用程序,而不必管理基础设施。

AWS Fargate

AWS Fargate 是一种在 AWS 上部署容器的简单方法。简单地说,Fargate 像 EC2,只是它提供的是容器而不是虚拟机。通过这种技术,您可将容器用作基础计算基元,而不必管理基础实例。您只需构建容器映像,指定 CPU 和内存要求,定义联网和 IAM 策略,以及启动。Fargate 提供灵活的配置选项,可以极为一致地满足应用程序需求,计费可精确到秒。

最大的好处?您仍然可以使用所有相同的 ECS 基元、API 和 AWS 集成。Fargate 提供与 Amazon Virtual Private CloudAWS Identity and Access Management (IAM)Amazon CloudWatch 和负载均衡器的原生集成。Fargate 任务使用 AWSVPC 联网模式,在 VPC 中配置弹性网络接口 (ENI) 与资源安全通信。通过 AWS 命令行界面 (CLI) 启动 Fargate 任务非常简单。

ecs run-task --launch-type FARGATE --cluster BlogCluster --task-definition blog --network-configuration "awsvpcConfiguration={subnets=[subnet-b563fcd3]}"

使用该控制台来创建任务定义和运行 Fargate 启动类型的任务也很简单。

启动一些任务之后,可以看到它们在群集中运行。

可以看到 ECS 群集是异构的。它们可以包含在 Fargate 中和 EC2 上运行的任务。

如果深入看看其中某个任务,可以看到一些有用的信息,包括 Fargate 在 VPC 中配置的 ENI 以及该任务使用的所有容器。使用记录选项卡也可以方便访问 CloudWatch Logs 以查看该任务的相关信息。

我们介绍一下 Fargate 的配置选项和定价详情。

定价

AWS Fargate 使用按需定价模型。应用程序使用的 vCPU 和内存资源量是按秒计费的。每个 vCPU 的价格是 0.00084333 USD/秒 (0.0506 USD/小时),每 GB 内存的价格是 0.00021167 USD/秒 (0.0127 USD/小时)。使用 Fargate,您可以对 vCPU 和内存使用 50 个配置选项来支持各种工作负载。配置选项如下。

CPU (vCPU) 内存值 (GB)
0.25 0.5、1、2
0.5 1、2、3
1 最小2GB,最大8GB,以 1GB 为增量
2 最小4GB,最大16GB,以 1GB 为增量
4 最小8GB,最大30GB,以 1GB 为增量

需知信息

  • 您可以将 Fargate 配置为高度一致地满足应用程序的资源要求,仅为容器所需的资源付费。您可以在几秒钟内启动数十个到数万个容器。
  • Fargate 任务的运行方式与在 EC2 上运行的任务相似。您可以将它们添加到 VPC、配置负载均衡器和分配 IAM 角色。

关于路线图

我不能透露所有信息,不过对于 AWS Fargate,我们有非常令人激动的路线图。我们计划在 2018 年使用 Amazon EKS 支持在 Fargate 上启动容器。与往常一样,我们期待您提供反馈。请在 Amazon ECS 论坛留言,告诉我们您的想法。

Fargate 今天在美国东部 (弗吉尼亚北部) 区域发布。

Randall

Amazon DynamoDB 更新 – 全局表和按需备份

各行各业的 AWS 客户都在使用 Amazon DynamoDB 存储关键任务数据。金融服务、商业、广告技术、物联网和游戏应用程序 (仅举几例) 每秒向包含数百 TB 数据和数万亿项目的表发起数百万个请求,依靠 DynamoDB 在十毫秒内返回结果。

今天,我们介绍两个强大且必将受到欢迎的新功能:

全局表 – 现在您可以创建跨两个或更多 AWS 区域自动复制的表,可完全支持只需几次点击即可实现的多主表写入。这让您能够为全球用户群构建快速、大规模扩展的应用程序,而无需管理复制过程。

按需备份 – 现在您可以一键创建 DynamoDB 表的完整备份,并且对性能或可用性没有任何影响。您的应用程序保持在线状态全速运行。备份适用于长期保留和存档,可帮助您满足法规要求。

全局表
DynamoDB 已将您的表复制到三个可用区,为您提供持久、高度可用的存储。现在,您可以使用全局表在两个或更多 AWS 区域间复制表 – 只需几次点击操作即可完成设置。您将获得极高的读写性能,并可进一步扩展,满足要求最苛刻的全球应用程序的需求。

您无需对现有代码进行任何更改,只需将写入请求和最终一致性读取请求发送到任意指定区域的 DynamoDB 终端节点即可 (与强一致性读取关联的写入应共享一个公共终端节点)。DynamoDB 在后台实施多主表写入,确保以对特定项目的最后一次写入为准。使用全局表时,每个项目将包含一个时间戳属性,用于表示最近一次写入的时间。更新通过 DynamoDB Streams 异步传播到其他区域,通常在一秒内完成 (可以使用新的 ReplicationLatency 和 PendingReplicationCount 指标跟踪这一过程)。

入门很简单。按照常规方式创建表,然后一键添加到其他区域的复制。必须从空表开始,且所有表都具有相同的名称和键配置 (哈希和可选排序键)。所有表还应共享一组一致的 Auto Scaling、TTL、本地二级索引、全局二级索引、预配置吞吐量设置和 IAM 策略。为方便起见,系统为新全局表自动启用 Auto Scaling。

如果不使用 DynamoDB Auto Scaling,您应该预配置充足的读取容量,以应对本地读取;预配置充足的写入容量,以容纳组中所有表的写入;并为源自本地区域的每个应用程序写入预配置额外的系统 写入。系统写入用于支持“以最后一次写入为准”模型。

下面,我们创建一个跨三个区域的全局表。先按照常规方式创建表,然后单击 Global Tables 选项卡:

DynamoDB 对表进行检查,确保其满足要求。它指出需要启用 DynamoDB Streams,于是我照做。接下来,单击 Add region,选择 EU (Frankfurt),然后单击 Continue

数秒内,表创建完毕:

再次执行上述操作,现在我有了一个跨三个 AWS 区域的全局表:

我在欧洲 (爱尔兰) 创建一个项目:

欧洲 (法兰克福) 即刻也显示了此项目:

跨区域复制过程添加 aws:rep:updateregionaws:rep:updatetime 属性;它们对应用程序可见,但您不应修改它们。

全局表于今日在美国东部 (弗吉尼亚北部)美国东部 (俄亥俄)欧洲 (爱尔兰)欧洲 (法兰克福) 区域推出,并将于 2018 年扩展到更多区域。您需要支付常规 DynamoDB 价格的读取容量和存储费用,以及跨区域复制的数据传输费。写入容量按复制的写入容量单位计费。

按需备份
此功能旨在帮助您满足法规对长期存档和数据保留的要求。您可以通过点击操作 (或 API 调用) 创建备份,而不消耗预置的吞吐容量或影响应用程序的响应能力。备份以高持久性方式存储,可用于创建新表。

现在,DynamoDB 控制台包含 Backups 部分:

我只需单击 Create backup 并为备份输入一个名称:

即可立即生成备份!备份使用 Amazon 托管密钥加密,并包含所有表数据、预配置容量设置、本地和全局二级索引设置以及流。它不包括 Auto Scaling 或 TTL 设置、标签、IAM 策略、CloudWatch 指标或 CloudWatch 警报。

考虑到有些客户的表大小接近 0.5 PB,您可能会对此功能为何能即刻生成备份感到好奇。事实上,DynamoDB 在后台创建完整快照并保存所有更改日志。因此,生成备份就变得十分简单,只需保存时间戳和表的当前元数据即可。

下面是我的备份:

我通过以下方式将备份还原到新表:

下面是需要牢记的关于 DynamoDB 备份的一些事项:

设置 – 创建新表后,DynamoDB 必须先完成一些设置工作 (大概需要一顿饭的工夫),然后才能开始创建第一个备份。

还原 – 还原时间视表大小而定。对于非常大的表,完成还原可能需要半小时到数小时的时间。

可用性 – 我们将尽快逐账户部署此项新功能,美国东部 (弗吉尼亚北部)美国东部 (俄亥俄)美国西部 (俄勒冈)欧洲 (爱尔兰) 区域率先部署。

定价 – 备份存储费用以每月千兆字节为单位计算,还原费用基于还原数据量计算。

Jeff

AWS Cloud9 – 云开发人员环境

就像任何工匠一样,您在开始编程时首先要了解的一点就是您的工具非常重要。Notepad.exe 可能无法很好地完成工作。一个强大的编辑器和测试管道可提高您的生产力。我仍然记得第一次学习使用 Vim,并且能够在系统和复杂的程序中进行压缩。您还记得在新计算机上设置所有编译器和依赖项有多难吗?您在匹配版本、摆弄配置,然后编写文档以便对项目的新开发人员进行入职培训上浪费了多少个周期?

今天,我们推出了 AWS Cloud9,它是一种用于在您的 Web 浏览器中编写、运行和调试代码的集成开发环境 (IDE)。Cloud9 自带了适用于许多常用编程语言 (Javascript、Python、PHP 等) 的基本工具,因此,您不必安装各种编译器和工具链。Cloud9 还提供了使用无服务器应用程序的无缝体验,使您能够快速地在本地和远程测试或调试之间切换。AWS Cloud9 以常用开放源 Ace Editor 和 c9.io IDE (我们去年已收购) 为基础,旨在使通过极其强大的结对编程功能进行的协作式云开发变得轻松。提供的功能比我在这篇文章中提及的功能多得多,为了快速细分,我将 IDE 划分为 3 个部分:编辑器、AWS 集成和协作。

编辑


Ace Editor 是 Cloud9 的核心,可让您快速、轻松和出色地编写代码。它遵循做一件事情就做好的 UNIX 哲学:编写代码。

它具有您期待的所有典型的 IDE 功能:实时语法检查、自动缩进、自动完成、代码折叠、拆分窗格、版本控制集成、多个光标和选择,并且它还有一些我想重点说明的独特功能。首先,它的速度很快,即使对于大型 (100000 行以上) 文件也是如此。键入时无滞后或其他问题。它内置了 20 多个主题 (过度曝光!),并且您也可以从 Sublime Text 或 TextMate 中引入您喜欢的所有主题。它内置了对项目的 40 多种语言模式和可自定义的运行配置的支持。但最重要的是,它具有 Vim 模式 (或 emacs,前提是您指定通过这种方式工作)。它还具有键绑定编辑器,可让您按需更改编辑器。

该编辑器支持强大的键盘导航和命令 (类似于 Sublime Text 或 vim 插件 (如 ctrlp))。在 Mac 上,借助 ⌘+P ,您可以使用模糊搜索在环境中打开任何文件。借助 ⌘+. ,您可以打开命令窗格,此窗格允许您通过键入名称来调用任何编辑器命令。它还有助于在窗格中显示命令的键绑定,例如,要打开到终端,您可按 ⌥+T。噢,我是否提过有一个终端?它附带了为访问资源而预配置的 AWS CLI。

该环境还附带了适用于许多常用语言的预安装调试工具 – 但并未限定您使用已安装的工具。可轻松添加新程序和定义新的运行配置。

不过,此编辑器只是一个公认的 IDE 中的重要组件。我想为您演示其他一些引人注目的功能。

AWS 集成

AWS Cloud9 IDE 是我用过的第一个真正的“原生云”IDE。该服务是免费提供的,您只需为基础计算和存储资源付费。在创建环境时,系统将提示您选择:实例类型和自动休眠时间,或对所选计算机的 SSH 访问权。

如果您是在 AWS 中运行,则自动休眠功能将在您停止使用 IDE 后立即停止您的实例。对于运行一个更持久的开发人员桌面来说,这样做可节省大量成本。您还可在 VPC 中启动它,以使它能够安全访问您的开发资源。如果您要在 AWS 之外或现有实例上运行 Cloud9,可提供对它将用于在外部计算机上创建环境的服务的 SSH 访问权限。您的环境已预置对您的 AWS 账户的自动和安全访问权限,因此,您不必担心复制凭证。我再说一遍:您可在任何地方运行 Cloud9。

使用 AWS Cloud9 进行无服务器开发

我在 Twitch 上花了很多时间来开发无服务器应用程序。我已部署几百种 lambda 函数和 API。Cloud9 使得对所有这些函数的使用都令人愉快。下面我为您演示其工作原理。


如果您看编辑器的右上角,将看到一个 AWS“Resources”选项卡。打开此选项卡后,您会看到您区域中的所有 lambda 函数 (可通过调整 AWS 首选项窗格中的区域首选项来查看其他区域中的函数)。

您只需双击这些远程函数,即可将它们导入您的本地工作区。这使您能够完全本地编辑、测试和调试您的无服务器应用程序。您还可轻松创建新的应用程序和函数。如果您单击窗格右上角的 Lambda 图标,系统将提示您创建新的 lambda 函数,并且 Cloud9 还将自动为您创建无服务器应用程序模型模板。IDE 附带了对预安装的常用 SAM 本地工具的支持。这是我将在我的大多数本地测试和无服务器开发中使用的工具。由于您具有终端,因此安装其他工具和使用其他无服务器框架都很简单。

从 AWS CodeStar 启动环境

有了 AWS CodeStar,您可轻松预置端到端持续交付工具链以便在 AWS 上进行开发。Codestar 提供了使用 AWS CodeCommit、CodeBuild、CodePipeline 和 CodeDeploy 服务套件构建、测试、部署和管理应用程序的一致体验。现在,只需几次单击,便能预置 Cloud9 环境以开发您的应用程序。将使用已签出 CodeStar 应用程序的代码和已配置的 Git 凭证预配置您的环境。

您可轻松与同事共享此环境,这让我发现了另一组非常有用的功能。

协作

将 AWS Cloud9 与其他编辑器区分开来的许多因素之一是丰富的协作工具。您可通过几次单击来邀请 IAM 用户加入您的环境。

您可查看他们处理的文件、其光标所在的位置甚至共享终端。聊天功能也很有用。

需知信息

  • 对于此服务,超出基础计算和存储的部分不会产生任何额外费用。
  • c9.io 将继续为现有用户运行。您可继续使用 c9.io 的所有功能并添加新团队成员 (如果您具有团队账户)。不久以后,我们将提供工具以便将您的 c9.io 工作区轻松迁移到 AWS Cloud9。
  • AWS Cloud9 已在美国西部 (俄勒冈)、美国东部 (俄亥俄)、美国东部 (弗吉尼亚北部)、欧洲 (爱尔兰) 和亚太地区 (新加坡) 区域提供。

我迫不及待想看到您使用 AWS Cloud9 创作的作品!

Randall

AWS PrivateLink 更新 – 适用于您自己的应用程序和服务的 VPC 终端节点

本月早些时候,我的同事 Colm MacCárthaigh 向大家介绍了 AWS PrivateLink,并展示了如何使用它通过 VPC 终端节点访问 Amazon Kinesis StreamsAWS Service CatalogEC2 Systems ManagerEC2 API 以及 ELB API 等 AWS 服务。终端节点 (由一个或多个弹性网络接口表示,这种接口简称 ENI) 驻留在您的 VPC 内,其 IP 地址来自 VPC 的子网,无需 Internet 或 NAT 网关。这个模型非常清晰,易于理解,而且还具有安全和可扩展的特点!

用于私有连接的终端节点
目前,我们正在构建 PrivateLink 初始发布模型,并对其进行扩展,让您能够设置并使用 VPC 终端节点来访问您自己的以及其他方提供的服务。在我们发布适用于 AWS 服务的 PrivateLink 之前,就收到了许多要求提供此功能的请求,所以我预计它将会广受欢迎。例如,一名客户告诉我们,他们计划创建数百个 VPC,每一个都用于托管并提供单一微服务 (请阅读 AWS 上的微服务了解更多信息)。

公司现在可以创建服务并销售给其他 AWS 客户,以便通过私有连接进行访问。还可以创建接受 TCP 流量的服务,将其托管在网络负载均衡器后方,然后直接提供或通过 AWS Marketplace 提供此服务。如有新的订阅请求,各公司会收到通知,并可以按需选择接受或拒绝。我认为,这一功能将在 2018 年为服务提供商创造一个富有活力的强大生态系统。

服务提供商和服务使用者位于不同的 VPC 中,使用不同的 AWS 账户,仅通过终端节点进行通信,所有流量都位于 Amazon 私有网络内部。服务使用者不必担心 IP 地址重叠,VPC 对等的安排或使用 VPC 网关等问题。您还可以使用 AWS Direct Connect 将现有的数据中心与一个 VPC 连接,让云中的应用程序与本地运行的服务实现互相访问。

提供服务及使用服务
这个新功能将使您的能力大大增强。您可以使用 VPC APIVPC CLIAWS 管理控制台进行所有设置。我将使用控制台向您展示如何提供和使用服务。我会使用同一 AWS 账户执行这两项任务,但这仅限于演示目的。

先来看看如何提供服务。服务必须在网络负载均衡器后方运行,必须可通过 TCP 进行访问。可以在 EC2 实例、ECS 容器或本地 (配置为 IP 目标) 托管此服务,而且它应该能够扩展,以满足预期的需求。我们建议使用的 NLB,其目标应在所在区域的每个可用区中,以实现低延迟和容错能力。请看以下我的示例:

我打开 VPC 控制台,导航到 Endpoint Services,然后单击 Create Endpoint Service

我选择我的 NLB (在本例中只有一个,但我可以选择两个或多个,它们将以轮询方式与各使用者相对应)。单击 Acceptance required,我即针对每个请求获得对终端节点的访问控制权:

我单击 Create service,我的服务将立即就绪:

如果我要在 AWS Marketplace 中提供此服务,现在即可开始创建列表。因为在这篇博文中我既是提供者也是使用者,所以我将跳过这一步。但我会复制 Service name 以在下一步中使用。

我返回 VPC 控制面板,导航到 Endpoints,然后单击 Create endpoint。然后我选择 Find service by name,粘贴服务名称,再单击 Verify 转到下一步。接下来我选择所需的可用区,并在每个可用区中选择一个子网,选取安全组,然后单击 Create endpoint

因为我在创建终端节点服务时勾选了“Acceptance required”,因此连接处于“pending acceptance”状态:

返回终端节点服务端 (通常位于另一 AWS 账户中),我可以看到待处理的请求并接受它:

终端节点将在大约一分钟之内变为可用状态。如果我创建服务并销售其访问权限,接受请求会是新客户购买及加入的大型工作流 (可能是自动流程) 中的一部分。

作为使用者,我可通过以下 DNS 名称访问新终端节点:

由 AWS 提供的服务及 AWS Marketplace 中的服务均可通过水平分割 DNS 进行访问。通过此名称访问服务会将区域和可用区纳入考虑范围,从而解析至“最佳”终端节点。

使用 Marketplace
如我之前提到的,这一全新 PrivateLink 功能为 AWS Marketplace 中的新卖家和现有卖家创造了一个商机。以下 SaaS 已作为终端节点提供,我认为未来将有更多 (请阅读入门材料通过 AWS Marketplace 销售):

CA TechnologiesCA App Experience Analytics Essentials

Aqua SecurityAqua Container Image Security Scanner

DynatraceCloud-Native Monitoring powered by AI

Cisco StealthwatchPublic Cloud Monitoring – MeteredPublic Cloud Monitoring – Contracts

SigOptML 优化及微调

当前可用
全新的 PrivateLink 功能现已推出,您可以立即开始使用!

Jeff

Amazon AppSync 简介 – 使用实时和离线功能构建数据驱动型应用

在当今时代,我们几乎都会利用移动设备和应用来让我们的生活更加轻松惬意。随着我们对手机的依赖程度不断增加,移动应用市场已呈爆炸式增长,数百万个应用竞相吸引我们的注意力。对于移动开发人员,这意味着我们必须确保我们构建的应用能够提供应用用户所需的质量和实时体验。因此,开发包括多用户数据同步、离线网络支持和数据发现等功能的移动应用已变得至关重要。我最近通过阅读 InfoQDZone 等出版物和移动开发博客 AlleviateTech 上的几篇文章,了解了移动开发趋势,我认为提供上述功能的关键要素之一是云驱动型移动应用。这似乎完全正确,因为它涉及到移动数据同步和数据存储。

既然如此,我认为现在是我宣布新服务 AWS AppSync 的最佳时机,该服务用于构建由云中的数据密集型服务驱动的创新移动应用。AWS AppSync 是一项完全托管的无服务器式 GraphQL 服务,可提供实时数据查询、同步、通信和离线编程功能。对于那些不熟悉开放式 GraphQL 规范的人,让我简要分享一些相关信息。GraphQL 是一种响应式数据查询语言和服务器端运行时,用于查询可检索实时数据和执行动态查询的数据源。您可以使用 GraphQL 构建响应式 API,以便在构建客户端应用程序时使用。GraphQL 在应用程序层工作,并提供用于定义架构的类型系统。这些架构可用作规范,以定义应如何对数据执行操作,以及在检索时应如何设置数据结构。此外,GraphQL 还有一个声明性编码模型,它受许多客户端库和框架 (包括 React、React Native、iOS 和 Android) 的支持。

现在,GraphQL 开放标准查询语言的强大功能正在通过 AWS AppSync向您提供丰富的托管服务。借助 AppSync ,开发人员可以轻松简化跨多个数据源的数据检索和处理操作,从而使其能够快速建立原型,构建和创建强大的协作式多用户应用程序。AppSync 在设备处于连接状态时保持数据更新,但使开发人员能够通过在本地缓存数据并在连接可用时同步本地数据,来构建脱机工作的解决方案。

我们来讨论 AWS AppSync 的一些关键概念以及该服务的工作原理。

AppSync 概念

  • AWS AppSync 客户端:定义操作、封装请求的授权详细信息以及管理离线逻辑的服务客户端。
  • 数据源:数据存储系统或用于存储数据的触发器
  • 身份:随 GraphQL 代理的请求一起提供的一组包含权限和标识上下文的凭证
  • GraphQL 代理:用于处理和映射请求、处理冲突解决方法以及管理精细访问控制的 GraphQL 引擎组件
  • 操作:AppSync 中支持的三种 GraphQL 操作之一
    • 查询:对数据的只读获取调用
    • 更改:获取之后写入数据,
    • 订阅:为响应事件而接收数据的持续连接。
  • 操作:已连接订阅者收到的 GraphQL 订阅通知。
  • Resolver:使用请求和响应映射模板来转换和执行数据源负载的函数

如何使用

创建一个架构来定义所需 GraphQL API 的类型和功能,并将其绑定到 Resolver 函数。可以创建架构来镜像现有数据源,或者 AWS AppSync 可以基于架构定义自动创建表。开发人员还可以使用 GraphQL 功能进行数据发现,而无需了解后端数据源。建立架构定义之后,可以使用操作请求 (如查询操作) 来配置 AWS AppSync 客户端。客户端向 GraphQL 代理提交操作请求以及标识上下文和凭证。GraphQL 代理将此请求传递给 Resolver,该函数会根据预先配置的 AWS 数据服务 (如 Amazon DynamaoDB 表、AWS Lambda 函数,或使用 Amazon Elasticsearch 的搜索功能) 映射和执行请求负载。Resolver 在单个网络调用中执行对其中一个或全部服务的调用,从而最大限度地减少 CPU 周期和带宽需求,并将响应返回到客户端。此外,客户端应用程序还可以在代码中按需更改数据要求,而 AppSync GraphQL API 将相应地动态映射数据请求,从而允许设计原型和加快开发速度。

为快速了解该服务,我将转到 Amazon AppSync 控制台。然后单击 Create API 按钮开始使用。

当出现 Create new API 屏幕时,我会将新 API 命名为 TarasTestApp,由于我只是想了解该新服务,因此我将选择 Sample schema 选项。您可能会从屏幕上的信息性公告对话框中注意到,在使用示例架构时,AWS AppSync 将自动为我创建 DynamoDB 表和 IAM 角色。它还将代表我部署 TarasTestApp API。查看控制台提供的示例架构之后,单击 Create 按钮来创建我的测试 API。

创建 TaraTestApp API 并代表我预置关联的 AWS 资源之后,我可以更新架构、数据源或将我的数据源连接到解析程序。我还可以通过从 GitHub 克隆示例存储库并下载随附的 GraphQL 架构,将我的 GraphQL API 集成到 iOS、Android、Web 或 React Native 应用程序中。这些应用程序示例非常有用,可以帮助您入门,并且它们经过预先配置,可在离线情况下运行。

如果在控制台上选择 Schema 菜单选项,就可以更新并查看 TarasTestApp GraphQL API 架构。


此外,如果我在控制台中选择“Data Sources”菜单选项,就可以看到现有数据源。在此屏幕中,我可以根据需要更新、删除或添加数据源。

接下来,选择 Query 菜单选项,然后便会转到用于编写和测试查询的控制台工具。由于我选择了示例架构,并且 AWS AppSync 服务为我完成了大部分繁重的工作,因此我会尝试对我的新 GraphQL API 进行查询。

我将使用一项更改为我的架构中的事件类型添加数据。由于这是一项更改并且它首先写入数据,然后读取数据,因此我希望该查询返回 name 和 where 的值。

如果我转到为架构中的事件类型创建的 DynamoDB 表,将会看到查询中的值已成功写入该表。现在,基于来自数据源的 GraphQL API 架构编写和检索数据是一项非常简单的任务,您也这样认为吧。


 总结

AWS AppSync 现已可用,目前支持 iOS、Android 和 JavaScript 应用开发。立即开始使用,并通过访问 AWS AppSync 控制台利用此托管 GraphQL 服务,或者通过在 AWS AppSync 产品页面上查看有关该服务的更多详细信息,或在有关该服务的 AWS 文档中阅读教程,了解更多信息。

Tara

Amazon Neptune – 完全托管的图形数据库服务

在我们用来支持现代生活的所有数据结构和算法中,图形不断改变着世界。各企业不断产生和获取关系复杂的丰富数据。然而,开发人员仍然不得不在传统数据库中对这些复杂关系进行建模。这导致查询极为复杂,并且成本高昂,随着关系的增加,性能也会不断下降。我们希望能简化这些越来越复杂的新式数据集、关系和模式的处理。

欢迎 Amazon Neptune

今天,我们要发布 Amazon Neptune 有限预览版,这是一个快速可靠的图形数据库服务,可供客户轻松洞悉高度连接的数据集之间的关系。Amazon Neptune 的核心是专门构建的高性能图形数据库引擎,它进行了优化,可存储数十亿关系并将图形查询延迟减至毫秒级。Amazon Neptune 作为完全托管的数据库提供,让客户能够腾出手来集中精力开发其应用程序,而不用忙于执行枯燥的重复性操作,如维护、修补、备份和恢复。该服务支持快速故障转移、时间点恢复以及多可用区部署,从而实现高可用性。它支持多达 15 个只读副本,您可以将查询吞吐量扩展到每秒数十万个查询。Amazon Neptune 在 Amazon Virtual Private Cloud 内运行,因此您可以加密静态数据,可完全控制传输中数据和静态数据的完整性。

这项服务有很多有趣的功能,不过可能很多人还不熟悉图形数据库,因此我们首先介绍一下概念。

图形数据库

图形数据库用于存储顶点 (节点) 和边缘 (关系或连接),这两种元素都可以键值对的形式存储其属性。对于连接的上下文关系驱动数据,图形数据库很有用。一些典型的应用包括社交媒体网络、推荐引擎、驾车路线、物流、诊断、欺诈检测以及基因测序。

Amazon Neptune 支持两种开放式图形描述和查询标准:

  • 使用 Gremlin 查询的 Apache TinkerPop3 样式属性图。Gremlin 是一种图形遍历语言,在这种语言中,查询是由沿着边缘到节点的离散步骤组成的遍历。通过用于 TinkerPop 的现有工具和客户端,可以快速开始使用 Neptune。
  • 使用 SPARQL 查询的资源描述框架 (RDF)。SPARQL 是一种声明式语言,它基于 W3C 的 Semantic Web 标准。它遵从“主->谓->宾”模型。具体地说,Neptune 支持以下标准:RDF 1.1、SPARQL Query 1.1、SPARQL Update 1.1 和 SPARQL Protocol 1.1。

如果现有应用程序可使用 SPARQL 或 TinkerPop,则只需更新这些应用程序所连接的终端节点,就可以开始使用 Neptune。

我们介绍一下如何启动 Amazon Neptune。

启动 Amazon Neptune

首先导航到 Neptune 控制台,然后单击“Launch Neptune”打开启动向导。

在第一个屏幕上,只需命名实例和选择实例类型。接下来配置高级选项。如果您以前启动过基于实例的 AWS 数据库服务,如 Amazon Relational Database Service (RDS)Amazon ElastiCache,现在的很多步骤您可能会觉得很熟悉。

Amazon Neptune 在 VPC 内安全运行,可以创建它自己的安全组,您可以添加 EC2 实例以便访问。

现在,我们可以配置其他一些选项,如参数组、端口和群集名称。

在下一个屏幕上,我们可以启用基于 KMS 的静态加密、故障转移优先级和备份保留时间。

与 RDS 类似,数据库维护可由该服务处理。

实例配置完毕后,您可以在群集的“Details”页面上找到连接终端节点。在我这个例子中是 triton.cae1ofmxxhy7.us-east-1.rds.amazonaws.com

使用 Amazon Neptune

如上所述,Amazon Neptune 可以使用两个不同的查询引擎。

要连接到 Gremlin 终端节点,可通过 /gremlin 使用终端节点执行某些操作,如:


curl -X POST -d '{"gremlin":"g.V()"}' https://your-neptune-endpoint:8182/gremlin

同样,可以通过 /sparql 连接到 SPARQL 终端节点


curl -G https://your-neptune-endpoint:8182/sparql --data-urlencode 'query=select ?s ?p ?o where {?s ?p ?o}'

我们需要先填充数据库,然后才能查询数据。假设我们对 AWS re:Invent 建模,使用批量加载 API 插入一些数据。
对于属性图,Neptune 支持使用存储在 Amazon Simple Storage Service (S3) 中的 CSV 来加载节点、节点属性、边缘和边缘属性。

典型的顶点 CSV 看起来是这样的:

~label,name,email,title,~id
Attendee,George Harrison,george@thebeatles.com,Lead Guitarist,1
Attendee,John Lennon,john@thebeatles.com,Guitarist,2
Attendee,Paul McCartney,paul@thebeatles.com,Lead Vocalist,3

边缘 CSV 看起来是这样的:

~label,~from,~to ,~id
attends,2,ARC307,attends22
attends,3,SRV422,attends27

现在将一个结构类似的 CSV 加载到 Neptune 中,运行如下代码:

curl -H 'Content-Type: application/json' \
https://neptune-endpoint:8182/loader -d '
{
    "source": "s3://super-secret-reinvent-data/vertex.csv",
    "format": "csv",
    "region": "us-east-1",
    "accessKey": "AKIATHESEARENOTREAL",
    "secretKey": "ThEseARE+AlsoNotRea1K3YSl0l1234coVFefE12"  
}'

将返回:

{
    "status" : "200 OK",
    "payload" : {
        "loadId" : "2cafaa88-5cce-43c9-89cd-c1e68f4d0f53"
    }
}

我使用该返回结果,查询加载状态: curl https://neptune-endpoint:8182/loader/2cafaa88-5cce-43c9-89cd-c1e68f4d0f53

{
    "status" : "200 OK",
    "payload" : {
        "feedCount" : [{"LOAD_COMPLETED" : 1}],
        "overallStatus" : {
            "fullUri" : "s3://super-secret-reinvent-data/stuff.csv",
            "runNumber" : 1,
            "retryNumber" : 0,
            "status" : "LOAD_COMPLETED",
            "totalTimeSpent" : 1,
            "totalRecords" : 987,
            "totalDuplicates" : 0,
            "parsingErrors" : 0,
            "datatypeMismatchErrors" : 0,
            "insertErrors" : 0
        }
    }
}

对于此数据序列化格式,我对各边缘重复执行此加载过程。

对于 RDF,Neptune 支持四种序列化:Turtle、N-Triples、N-Quads 和 RDF/XML。我可以通过同一个加载 API 加载以上所有对象。

现在,我的数据库中已经有数据了,可以运行查询。我们用 Gremlin 以图形遍历形式编写查询。我是 Paul McCartney 的忠实粉丝,我需要查找他将举行的所有演唱会:
g.V().has("name","Paul McCartney").out("attends").id()

这样就定义了一个图形遍历,它查找属性“name”的值为“Paul McCartney”的所有节点 (只有一个!)。接下来,它从该节点沿所有类型为“attends”的边缘查找,获取结果节点的 ID。


==>ENT332
==>SRV422
==>DVC201
==>GPSBUS216
==>ENT323

Paul 看起来很忙。

希望这个例子能让您简要了解图形数据库的功能。图形数据库为很多客户带来了各种全新可能,而 Amazon Neptune 让大规模存储和查询数据变得更简单。我很高兴看到我们的客户构建出精彩的新产品。

Randall

附:非常感谢 Brad Bebee 和 Divij Vaidya 为我写作这篇文章提供帮助!