构建多区域应用程序使您可能进步终端用户的延迟时间,在发生意外劫难时实现更高的可用性和弹性,并恪守与数据持久性和数据保留相干的业务要求。例如,您可能心愿缩小后端服务的动静 API 调用的总体提早。或者,您可能心愿缩短单区域部署以解决互联网路由问题、海底电缆故障或区域连贯问题,从而防止老本昂扬的停机工夫。明天,得益于多区域数据复制性能,例如 Amazon DynamoDB 全局表、Amazon Aurora 寰球数据库、 Amazon ElastiCache 全局数据存储和 Amazon Simple Storage Service (Amazon S3) 跨区域复制,您能够跨寰球 25 个亚马逊云科技区域构建多区域应用程序。
- Amazon DynamoDB:
https://aws.amazon.com/dynamodb/ - Amazon Aurora:
https://aws.amazon.com/rds/au… - Amazon ElastiCache
https://aws.amazon.com/elasti… - Amazon Simple Storage Service (Amazon S3)
https://aws.amazon.com/s3/
然而,在施行多区域应用程序时,您通常必须让代码区域感知,并解决与正确的区域资源(无论是最靠近还是最可用的资源)进行迁徙的沉重工作。例如,您可能有三个 Amazon S3 存储桶,对象复制逾越三个亚马逊云科技区域。您的利用程序代码须要晓得存在多少存储桶正本以及它们所在的地位、哪个存储桶与复电人最近,以及在呈现问题时如何回退到其它存储桶。当您向多区域架构中增加新区域,并在寰球配置发生变化后在每个区域中重新部署堆栈时,复杂性就会减少。
近期,咱们很快乐地发表 Amazon S3 多区域拜访点正式公布,这是一项新的 Amazon S3 性能,容许您定义逾越多个亚马逊云科技区域中存储桶的寰球端点。借助 Amazon S3 多区域拜访点,您能够利用单个区域中的雷同简略架构构建多区域应用程序。
- Amazon S3 多区域拜访点:
https://aws.amazon.com/s3/fea…
Amazon S3 多区域拜访点提供内置的网络恢复能力,基于构建 Amazon Global Accelerator 通过亚马逊云科技寰球网络路由 Amazon S3 申请。这对于最大限度地缩小网络拥塞和总体提早,同时放弃简略的应用程序架构尤为重要。Amazon Global Accelerator 会继续监控区域可用性,并能够在几秒钟内将申请转移到另一个区。通过动静将申请路由到最低提早的数据正本,Amazon S3 多区域拜访点可将上载和下载性能进步 60%。这不仅适宜依赖 Amazon S3 读取配置文件或应用程序数据的服务器端应用程序,而且对于须要高性能和牢靠的只写端点的边缘应用程序来说,例如 loT 设施或自驾车,这也是很棒的。
- Amazon Global Accelerator:
https://aws.amazon.com/de/glo…
操作 Amazon S3 多区域拜访点
要开始开启,您能够在 Amazon S3 控制台中,通过 API 或应用 Amazon CloudFormation 创立 Amazon S3 多区域拜访点。
让我向您展现如何应用 Amazon S3 控制台进行创立。每个拜访点都须要一个账户级别惟一的名称。
创立之后,您能够通过其别名来拜访,该别名是主动生成且寰球惟一的。别名看起来像一个以 .mrap 结尾的随机字符串 — 例如 mmqdt41e4bf6x.mrap。也能够通过 https://mmqdt41e4bf6x.mrap.s3…、VPC 或应用Amazon PrivateLink 在本地部署拜访。
- Amazon PrivateLink:
https://aws.amazon.com/privat…
而后,您将多个存储桶(新存储桶或现有存储桶)与拜访点关联,每个区域一个。如果您须要数据复制,则还须要启用存储桶版本控制。
最初,您为拜访点配置公共拜访数据块设置。原定设置下,所有公共拜访都被阻止,这在大多数状况下都能失常运行。
创立过程是异步的,您能够在控制台中查看创立状态,也能够通过 Amazon CLI 列出 Amazon S3 多区域拜访点来查看创立状态。当它变为 就绪 后,您能够为拜访点策略和对象复制配置可选设置。
与惯例拜访点相似,您能够自定义拜访控制策略,以限度与存储桶权限相干的拜访点的应用。请记住,拜访点和底层存储桶都必须容许申请。Amazon S3 多区域拜访点无奈扩大权限,只是限度(或等于)权限。您还能够应用 Amazon IAM Access Analyzer 验证应用 Amazon S3 多区域拜访点的存储桶的私有和跨账户拜访权限,并在部署权限更改之前预览对存储桶的拜访。
Amazon IAM Access Analyzer:
https://aws.amazon.com/iam/fe…
您的 Amazon S3 多区域拜访点拜访策略可能如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Default",
"Effect": "Allow",
"Principal": {"AWS": "YOUR_ACCOUNT_ID"},
"Action": ["s3:GetObject", "s3:PutObject"],
"Resource": "arn:aws:s3::YOUR_ACCOUNT_ID:accesspoint/YOUR_ALIAS/object/*"
}
]
}
要在与 Amazon S3 多区域拜访点一起应用的存储桶之间复制数据,您能够配置 Amazon S3 复制。在某些状况下,您可能心愿在每个存储桶中存储不同的内容,或者有一部分区域存储桶用于寰球端点,其余未被复制和被应用的局部仅用于区域拜访点或间接存储桶拜访。例如,loT 设施配置可能包含对其余区域 API 端点或区域资源的援用,这对于每个存储桶而言都不同。
新的 Amazon S3 控制台提供了两个根本模板,您能够应用这些模板轻松集中地创立复制规定:
- 将对象从一个或多个源存储桶复制到一个或多个源存储桶:这非常适合只读应用案例,其中数据始终在特定亚马逊云科技区域中生成,而且您心愿在所有其余区域中也可应用。
- 在所有指定存储桶之间复制对象:这对于我提到的 loT 场景来说十分现实,在这种状况下,您将定义一个只写访问点,用于设施将数据上载到最近的区域,并且此数据在所有区域都可用。
当然,因为筛选器和条件,您能够创立更简单的复制设置。例如,您可能心愿基于前缀或标签仅复制某些对象。
请记住,必须为跨区域复制启用存储桶版本控制。
控制台将负责创立和配置复制规定及 Amazon IAM 角色。请留神,要增加或移除存储桶,您须要应用订正后的列表创立一个新的 Amazon S3 多区域拜访点。
除了复制规定之外,还能够在这里配置复制选项,例如 复制工夫管制 (RTC)、复制指标和告诉,以及双向同步。对于复制速度很重要的应用案例,RTC 容许您在几秒钟内复制大多数新对象,并在 15 分钟内复制 99.99% 的对象;复制指标容许您监控存储桶在对象和字节数方面的同步水平;双向同步容许您实现双活配置,实用于须要跨存储桶复制对象元数据的大量应用案例。
- 复制工夫管制 (RTC):
https://docs.aws.amazon.com/A… - 复制指标和告诉:
https://docs.aws.amazon.com/A… - 双向同步:
https://docs.aws.amazon.com/A…
配置复制后,您将取得十分有用的视觉和交互式摘要,容许您验证哪些亚马逊云科技区域已启用。您将看到它们在地图上的地位、区域存储桶的名称以及正在利用哪些复制规定。
定义并正确配置 Amazon S3 多区域拜访点后,您能够通过 Amazon S3 API、Amazon CLI 或亚马逊云科技软件开发工具包开启交互。例如,这就是你应用 Amazon CLI 编写和读取新对象的形式(不要遗记降级到最新的 Amazon CLI 版本):
# 创立一个新对象
aws s3api put-object --bucket arn:aws:s3::YOUR_ACCOUNT_ID:accesspoint/YOUR_ALIAS --key test.png --body test.png
# 检索同一个对象
aws s3api get-object --bucket arn:aws:s3::YOUR_ACCOUNT_ID:accesspoint/YOUR_ALIAS --key test.png test.png
最初但并非最不重要的是,您能够应用 Amazon CloudWatch 中的存储桶指标来跟踪用户申请是如何在多个亚马逊云科技区域的存储桶之间散发的。
- Amazon CloudWatch:
https://aws.amazon.com/cloudw…
启动时的 Amazon CloudFormation 反对
明天,您能够开始应用两种新的 Amazon CloudFormation 资源轻松定义 Amazon S3 多区域拜访点:AWS::S3::MultiRegionAccessPoint 和 AWS::S3::MultiRegionAccessPointPolicy。
示例如下:
BlockPublicAcls: true
IgnorePublicAcls: true
BlockPublicPolicy: true
RestrictPublicBuckets: true
MyMultiRegionAccessPointPolicy:
Type: AWS::S3::MultiRegionAccessPointPolicy
Properties:
MrapName: !Ref MyS3MultiRegionAccessPoint
Policy:
Version: 2012-10-17
Statement:
- Action: '*'
Effect: Allow
Resource: !Sub
- 'arn:aws:s3::${AWS::AccountId}:accesspoint/${mrapalias}/object/*'
- mrapalias: !GetAtt
- MyS3MultiRegionAccessPoint
- Alias
Principal: {"AWS": !Ref "AWS::AccountId"}
AWS::S3::MultiRegionAccessPoint 资源仅取决于 Amazon S3 存储桶名称。您无需援用其它区域堆栈,而且能够轻松地将 Amazon S3 多区域拜访点集中定义到本人的堆栈中。另一方面,须要在每个 Amazon S3 存储桶上配置跨区域复制。
老本注意事项
当您应用 Amazon S3 多区域拜访点在亚马逊云科技寰球网络中路由申请时,除了 Amazon S3 申请、存储、数据传输和复制的规范费用外,还需领取 0.0033 美元 /GB 的数据路由费用。如果您的应用程序通过互联网拜访 Amazon S3 多区域拜访点,则还需领取每 GB 的互联网减速老本。此费用取决于传输类型(上载或下载),以及客户端和存储桶位于雷同还是不同的地位。无关详细信息,请拜访 Amazon S3 定价页面并抉择数据传输选项卡。
让我分享一些实例:
- 亚马逊云科技区域内的所有流量:在这个简略的状况下,您的应用程序在美国东部(弗吉尼亚北部)运行,并在美国东部(弗吉尼亚北部)和美国西部(俄勒冈)配置两个 Amazon S3 存储桶。应用程序上载 100GB 的数据,最低提早的存储桶位于美国东部(弗吉尼亚北部)。所有数据都由同一地区的 Amazon S3 多区域拜访点路由,总成本为 0.33 美元。
- 跨两个亚马逊云科技区域的所有流量:在这种状况下,您的应用程序在美国东部(弗吉尼亚北部)运行,并在美国东部(俄亥俄)和美国西部(俄勒冈)配置两个 Amazon S3 存储桶。该应用程序上载 100GB 的数据,最低提早的存储桶位于美国东部(俄亥俄)。所有数据都由 Amazon S3 多区域拜访点在两个亚马逊云科技区域进行路由。100GB 的数据路由老本与后面的示例(0.33 美元)雷同,加上 Amazon S3 数据传输老本为 0.01 美元 /GB,总成本为 1.33 美元。
- 北美、欧洲和亚太地区互联网上的所有流量(下载和上载):在这种状况下,您的应用程序在北美、欧洲和亚洲的客户设施上运行,并在美国东部(弗吉尼亚北部)和欧洲(爱尔兰)配置两个 Amazon S3 存储桶。北美的一个客户上载 50GB 的数据,将其路由到美国东部(弗吉尼亚北部)的存储桶;欧洲的第二个客户从欧洲(爱尔兰)的存储桶下载 50GB 的数据;亚洲的第三个客户从欧洲(爱尔兰)的存储桶下载 50GB 的数据。150GB 的数据路由老本为 0.495 美元。此外,从 Amazon S3 传输到欧洲的数据为 0.09 美元 /GB(9 美元),从北美到美国东部(弗吉尼亚北部)Amazon S3 存储桶的互联网减速老本为 0.0025 美元 /GB(0.125 美元),从欧洲(爱尔兰)Amazon S3 存储桶到欧洲的互联网减速老本为 0.005 美元 /GB(0.25 美元),互联网减速老本为 0.005 美元 /GB(0.25 美元)从欧洲(爱尔兰)的 Amazon S3 存储桶到亚洲的减速老本为 0.05 美元 /GB(2.5 美元)。总成本为 12.37 美元。请留神,此示例旨在展现互联网减速老本在各大洲的运作形式。另请留神,如果在亚洲减少一个 Amazon S3 存储桶,亚洲的互联网减速老本可能会升高一个数量级(请参阅下一个示例)。
- 北美、欧洲和亚太地区的所有互联网流量(仅上载):在这种状况下,咱们思考与后面示例雷同的条件。惟一的区别在于,所有客户只上载数据,而且您在亚太地区(新加坡)配置了额定的存储桶。数据路由老本雷同(0.495 美元)。此外,从北美到美国东部(弗吉尼亚北部)Amazon S3 存储桶的互联网减速老本为 0.0025 美元 /GB(0.125 美元),从欧洲到欧洲(爱尔兰)Amazon S3 存储桶的互联网减速老本为 0.0025 美元 /GB(0.125 美元),以及从亚洲到亚太地区(新加坡)Amazon S3 存储桶的互联网减速老本为 0.01 美元 /GB(0.5 美元)。总成本为 1.24 美元。
换句话说,路由老本很容易预计,不取决于应用程序类型或数据拜访模式。互联网减速老本取决于拜访模式(下载比上载更低廉)、以及绝对于最近的亚马逊云科技区域的客户端地位。对于通过互联网上载或下载数据的寰球应用程序,您能够通过在每个大洲至多配置一个 Amazon S3 存储桶来最大限度地升高互联网减速老本。
现已推出
Amazon S3 多区域拜访点容许您在跨多个亚马逊云科技区域拜访数据时减少弹性并将应用程序性能进步高达 60%。咱们期待收到无关您的应用案例的反馈,以便咱们可能疾速迭代并简化设计和施行多区域应用程序的形式。
您能够开始应用 Amazon S3 API、Amazon CLI、Amazon SDK、Amazon CloudFormation 或 Amazon S3 控制台。此项新增性能在寰球 17 个亚马逊云科技区域提供(请参阅受反对的亚马逊云科技区域的 残缺列表)。
- Amazon S3 控制台:
https://console.aws.amazon.co… - 残缺列表:
https://docs.aws.amazon.com/A…
查看 Amazon S3 多区域拜访点的技术文档。
- 技术文档:
https://docs.aws.amazon.com/A…
本篇作者
Alex Casalboni