S3 跨账户复制:增强云中的灾难恢复计划

您准备好提升您的云和 DevOps 技能了吗?
🐥《云原生devops》专门为您打造,我们精心打造的 30 篇文章库,这些文章涵盖了 Azure、AWS 和 DevOps 方法论的众多重要主题。无论您是希望精进专业知识的资深专业人士,还是渴望学习相关知识的新手,这套资源库都能满足您的需求。

如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
————————————————
                    
原文链接:无缝监控:利用 AWS X-Ray 增强 S3 跨账户复制的可见性-CSDN博客

在当今的数字化环境中,数据是业务运营的基石。企业正在跨多个部门和应用程序生成海量数据,因此迫切需要高效、可靠且可扩展的数据管理解决方案。随着企业采用云技术,尤其是 Amazon Web Services (AWS),将数据存储在多个 AWS 账户中的灵活性越来越受到青睐。然而,这种灵活性也带来了挑战,尤其是在跨不同 AWS 账户的数据访问、同步和共享方面。AWS 提供了完整的解决方案:跨账户 S3 存储桶复制。

什么是跨账户 S3 存储桶复制(CRR)?

跨账户S3存储桶复制架构图

跨账户 S3 存储桶复制 (CRR) 是一项强大的功能,允许企业在位于不同 AWS 账户的 Amazon S3 存储桶之间无缝复制数据。但为什么这项功能至关重要呢?

  1. 增强的数据可访问性和协作性:随着业务的增长,企业通常会将工作负载划分到多个 AWS 账户,以提高管理和安全性。跨账户 S3 复制使团队能够轻松共享关键数据,在维护组织边界的同时促进协作。
  2. 增强数据保护和灾难恢复:在数据泄露和中断可能严重影响业务运营的时代,拥有强大的备份解决方案至关重要。跨账户复制可充当灾难恢复机制,确保数据不仅安全,而且可在另一个 AWS 账户中随时访问,从而提供额外的保护。
  3. 法规合规性和数据主权:许多行业都受到有关数据存储和处理的严格监管要求的约束。跨账户 S3 复制允许企业通过跨区域或司法管辖区复制数据来保持合规性,确保遵守当地法律,同时保持对数据的必要控制。
  4. 成本管理和优化:借助跨账户复制,组织可以根据成本和性能需求在各个账户之间进行策略性存储分配。此功能允许企业集中管理数据,并通过根据需要平衡不同账户之间的工作负载来优化成本。
  5. 简化多账户环境中的数据管理:许多组织将多个 AWS 账户作为其云战略的一部分,这通常是隔离工作负载、管理安全性或分配资源的最佳实践。跨账户 S3 复制通过跨账户自动执行复制过程,降低了数据管理的复杂性,从而节省了宝贵的时间并降低了人为错误的可能性。

CRR的关键技术组件

跨账户 S3 存储桶复制涉及多个技术组件和配置,旨在实现位于不同 AWS 账户的 S3 存储桶之间的无缝数据传输。以下是关键技术方面:

复制配置:

源存储桶和目标存储桶:识别并配置源存储桶(数据来源)和目标存储桶(数据复制的目标)。两个存储桶可以位于不同的 AWS 账户中。
复制规则:在源存储桶中设置复制规则,指定应复制的对象(例如,所有对象或带有特定标签或前缀的对象)。


IAM 角色和权限:

IAM 角色创建:在源账户中创建一个 IAM 角色,该角色授予 S3 服务将对象复制到目标存储桶所需的权限。此角色应包含授予目标存储桶访问权限的策略。
目标存储桶的存储桶策略:目标存储桶必须具有允许源账户中的 IAM 角色访问的存储桶策略。此策略指定源账户角色可以执行的操作(例如 s3:PutObject)。


版本控制:

存储桶版本控制:源存储桶和目标存储桶都必须启用版本控制。这允许存储一个对象的多个版本,这对于在复制期间跟踪更改和管理已删除的对象至关重要。


复制时间控制 (RTC):

指标和报告:Amazon S3 提供 RTC 指标,可深入了解复制过程,包括对象从源复制到目标所需的时间。此功能有助于合规性和性能监控。


事件通知:

S3 事件通知:使用事件通知在对象复制时触发操作或工作流(例如,调用 Lambda 函数或向 SQS 队列发送消息)。这允许与其他 AWS 服务集成以处理复制的数据。


复制状态监控:

监控复制状态:AWS 提供用于监控复制过程状态的工具。这可以通过 S3 控制台、AWS SDK 或 CloudTrail 日志来完成,允许用户跟踪成功或失败的复制事件。


数据一致性模型:

最终一致性:了解 S3 复制具有最终一致性。新增和更新的对象可能需要一些时间才能出现在目标存储桶中,并且在复制配置之后所做的更改可能要等到设置复制规则后才能复制。


处理删除操作:

删除标记和复制:默认情况下,删除标记不会跨账户复制。如果您想复制删除标记,可以在复制规则中进行配置,从而实现跨账户的一致性删除。


跨区域复制:

跨区域注意事项:跨账户复制也可能涉及跨区域设置。用户在跨不同 AWS 区域复制数据时,必须考虑延迟、数据传输成本和监管要求等因素。


实施工具和最佳实践:

AWS 管理控制台、CLI 和 SDK:利用 AWS 管理控制台、命令行界面 (CLI) 或 SDK 自动设置和管理跨账户 S3 复制。
最佳实践:采用最佳实践来配置 IAM 策略、监控成本,并定期审查和更新复制配置,以适应不断变化的数据格局。

CRR的配置

  1. 登录 AWS 管理控制台,并打开 Amazon S3 控制台 https://console.aws.amazon.com/s3/ 。
  2. 在“存储桶”列表中,选择所需的存储桶名称(在本例中,存储桶名称为“cute-doggos-0117”)。

  1. 选择“管理”选项卡,向下滚动到“复制规则”,然后选择“创建复制规则”。
  2. 在“复制规则名称”下,输入规则名称,以便稍后识别规则。该名称是必填项,并且在存储桶内必须是唯一的。
  3. 在“状态”下,确认已选择“已启用”。
  4. 在“源存储桶”部分,选择“应用于存储桶中的所有对象”选项作为规则范围。
  5. 在“目标”下,选择“指定另一个账户中的存储桶”选项,将源存储桶的内容复制到跨账户存储桶,并提供目标账户 ID  和存储桶名称 。选择“将对象所有权更改为目标存储桶所有者”选项,以确保副本归目标存储桶账户所有。

  1. 在“IAM 角色”部分的“从现有 IAM 角色中选择”下,选择“创建新角色”,让 Amazon S3 为您创建新的 IAM 角色。在您的情况下,S3 创建的 IAM 复制角色的 ARN 是arn:aws:iam::654654314383:role/service-role/s3crr_role_for_cute-doggos-0117,并且它具有以下策略。
  2. 信任策略:
{"Version": "2012–10–17","Statement": [{"Effect": "Allow","Principal": {"Service": "s3.amazonaws.com"},"Action": "sts:AssumeRole"}]
}


权限策略s3crr_for_cute-doggos-0117_716c2d:

{"Version": "2012-10-17","Statement": [{"Action": ["s3:ListBucket","s3:GetReplicationConfiguration","s3:GetObjectVersionForReplication","s3:GetObjectVersionAcl","s3:GetObjectVersionTagging","s3:GetObjectRetention","s3:GetObjectLegalHold"],"Effect": "Allow","Resource": ["arn:aws:s3:::cute-doggos-0117","arn:aws:s3:::cute-doggos-0117/*","arn:aws:s3:::cute-doggos-0415","arn:aws:s3:::cute-doggos-0415/*"]},{"Action": ["s3:ReplicateObject","s3:ReplicateDelete","s3:ReplicateTags","s3:ObjectOwnerOverrideToBucketOwner"],"Effect": "Allow","Resource": ["arn:aws:s3:::cute-doggos-0117/*","arn:aws:s3:::cute-doggos-0415/*"]}]
}


10. 您还可以根据用例需要选择其他选项,例如“复制使用 AWS KMS 加密的对象”、“更改复制对象的存储类别”、“删除标记复制”等。

11. 完成后,选择“保存”。

目标存储桶“cute-doggos-0415”上的存储桶策略应包含以下语句以允许复制。

{"Version": "2012–10–17","Id": "PolicyForDestinationBucket","Statement": [{"Sid": "Permissions on objects","Effect": "Allow","Principal": {"AWS": "arn:aws:iam::654654314383:role/service-role/s3crr_role_for_cute-doggos-0117"},"Action": ["s3:ReplicateDelete","s3:ReplicateObject","s3:ObjectOwnerOverrideToBucketOwner"],"Resource": "arn:aws:s3:::cute-doggos-0415/*"},{"Sid": "Permissions on bucket","Effect": "Allow","Principal": {"AWS": "arn:aws:iam::654654314383:role/service-role/s3crr_role_for_cute-doggos-0117"},"Action": ["s3:List*","s3:GetBucketVersioning","s3:PutBucketVersioning"],"Resource": "arn:aws:s3:::cute-doggos-0415"}]
}

验证

在源存储桶cute-doggos-0117在上传一个图片sas-4.png

然后登录目标账号,找到目标存储桶cute-doggos-0415,看到图片已经被复制过来了。

S3 存储桶跨账户复制的最佳实践

  • 启用版本控制:

确保源存储桶和目标存储桶都启用了版本控制。这是 S3 跨区域复制 (CRR) 和同区域复制 (SRR) 正常运行的必要条件。

  • 使用 IAM 角色:

在目标账户中创建一个 IAM 角色,该角色授予源账户将对象复制到目标存储桶的权限。此角色应与源账户的 IAM 用户或角色建立信任关系。

  • 设置正确的存储桶策略:

在源存储桶和目标存储桶上定义清晰的存储桶策略。该策略应允许用于复制的 IAM 角色执行必要的操作。

  • 复制对象和删除操作:

如果您的用例需要,请确保为对象和删除操作配置复制 (s3:ReplicateDelete)。

  • 使用 S3 事件通知:

考虑在源存储桶上设置事件通知以监控复制状态。这对于调试或运行监控非常有用。

  • 监控复制状态:

实施一个系统来监控对象的复制状态。使用 Amazon CloudWatch 跟踪对象的复制状态,并在出现错误时采取措施。

  • 测试您的配置:

定期测试您的复制设置,以确保其按预期工作。在源存储桶中创建测试文件,并验证它们是否已成功复制到目标存储桶。

  • 使用标签进行组织:

在存储桶和对象上使用标签,以便有效地对资源进行分类和管理。这有助于报告和成本管理。

  • 实施日志记录:

在源存储桶和目标存储桶上启用 S3 服务器访问日志记录。这提供了有助于故障排除和合规性的审计跟踪。

  • 成本规划:

了解跨账户复制的成本影响,包括 AWS 账户之间的数据传输成本以及目标存储桶中的存储成本。使用 AWS Cost Explorer 监控和管理这些成本。


S3 存储桶跨账户复制的常见陷阱

  • 缺少权限:

如果 IAM 角色或存储桶策略中未提供正确的权限,则复制将无法成功。请确保正确指定所有必需的操作。

  • 存储桶策略不正确:

存储桶策略配置不正确可能会导致复制失败。请务必验证策略语法和参数是否正确。

  • 未启用版本控制:

如果忘记在源存储桶或目标存储桶上启用版本控制,则复制过程将停止。必须启用版本控制才能使复制正常工作。

  • 假设立即复制:

复制可能不会立即进行。请理解复制过程中可能会出现延迟,并在操作流程中对此进行了说明。

  • 已删除对象的复制:

未配置 s3:ReplicateDelete 意味着删除操作将无法复制到目标存储桶,这可能会导致数据不一致。

  • 复杂的 IAM 策略:

过于复杂的 IAM 策略可能会导致混乱,并可能由于策略评估而无意中拒绝访问。请遵循最小权限原则。

  • 命名约定不一致:

为存储桶和对象使用一致的命名约定,以避免混淆,尤其是在处理多个账户和区域时。

  • 错误处理失败:

缺乏处理复制错误或异常的机制可能会导致数据丢失或不一致。请实施复制状态监控。

  • 安全意识淡薄:

未使用安全的身份验证和加密方法可能会导致复制过程中的数据泄露。请始终使用 SSL/TLS 进行数据传输。

  • 未记录复制流程:

缺乏复制流程记录可能会导致知识流失,尤其是在管理设置的人员发生变更时。

结论

跨账户 S3 存储桶复制是 AWS 的一项强大功能,它使组织能够增强不同账户之间的数据持久性、可访问性和合规性。此复制功能允许将对象从一个 AWS 账户中的源 S3 存储桶自动异步复制到另一个账户中的目标存储桶。通过实施跨账户复制,企业可以支持数据治理策略、创建备份策略并促进灾难恢复计划。

为了有效地设置跨账户复制,应遵循一些最佳实践。首先,必须在源存储桶和目标存储桶上启用版本控制,因为这是复制的先决条件。正确配置的 IAM 角色和存储桶策略对于授予必要的权限以确保复制顺利进行至关重要。组织还应使用 Amazon CloudWatch 监控复制状态,并设置事件通知以便及时更新。此外,启用服务器访问日志记录有助于维护全面的审计跟踪,以实现合规性。

尽管跨账户复制有很多好处,但组织必须警惕常见的陷阱。缺少权限、存储桶策略不正确以及假设立即复制都可能导致数据不一致。此外,忽视错误处理机制和安全协议可能会使数据面临风险。为了确保跨账户复制设置稳健,详尽的文档记录和定期测试至关重要。

总而言之,如果管理得当,跨账户 S3 存储桶复制可以成为数据管理策略的重要组成部分,从而实现跨 AWS 账户安全、高效且合规的数据存储和访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/78464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程与进程深度解析:从fork行为到生产者-消费者模型

线程与进程深度解析:从fork行为到生产者-消费者模型 一、多线程环境下的fork行为与线程安全 1. 多线程程序中fork的特殊性 核心问题:fork后子进程的线程模型 当多线程程序中的某个线程调用fork时: 子进程仅包含调用fork的线程&#xff1…

Circular Plot系列(五): circle plot展示单细胞互作

这是我们circle系列的最后一节,我想常见的弦图是绕不开的,所以最后从前面介绍的circle plot思路,做一遍弦图。其实前面的内容如果消化了,plot互作弦图也就不成什么问题了。 效果如下: #cellchat提取互作结果&#xff…

(11)Vue-Router路由的详细使用

本系列教程目录:Vue3Element Plus全套学习笔记-目录大纲 文章目录 第2章 路由 Vue-Router2.1 Vue路由快速入门2.1.1 创建项目2.1.2 路由运行流程 2.2 传递参数-useRoute2.2.1 路径参数-params1)普通传参2)传递多个参数3)对象方式传…

react + antd 实现后台管理系统

文章目录 完整路由搭建Layout 和 Aside组件引入 AntdAside组件实现 项目效果图 项目完整代码地址 https://gitee.com/lyh1999/react-back-management 项目完整代码地址 react依赖安装 最好采用yarn 安装 react-router 安装依赖 配置路由 history模式 / // src/router/…

基于AWS Marketplace的快速解决方案:从选型到部署实战

1. 引言:为什么选择AWS Marketplace? 在数字化转型的背景下,企业需要快速获取成熟的软件工具和服务以降低开发成本。AWS Marketplace 作为亚马逊云科技的官方应用商店,提供超过万款预配置的第三方和AWS原生解决方案,涵…

2021年第十二届蓝桥杯省赛B组C++题解

2021年第十二届蓝桥杯省赛B组C题解 关键词:蓝桥杯、省赛、题解、C、算法 一、个人见解 第十二届蓝桥杯省赛B组共有10道题目,包含5道填空题(T1-T5)和5道编程题(T6-T10),总分150分。比赛时长4小…

日语学习-日语知识点小记-进阶-JLPT-N1阶段(1):语法单词

日语学习-日语知识点小记-进阶-JLPT-N1阶段(1):语法单词 1、前言(1)情况说明(2)工程师的信仰(3)高级语法N1语法和难点一、N1语法学习内容(高级语法&#xff…

Python|Pyppeteer实现自动登录小红书(32)

前言 本文是该专栏的第32篇,结合优质项目案例持续分享Pyppeteer的干货知识,记得关注。 本文中,笔者以小红书为例,基于Pyppeteer实现自动登录“小红书”。 需要注意的是,对Pyppeteer不太熟悉的同学,可往前翻阅本专栏前面介绍的Pyppeteer知识点,本专栏将带你了解并熟练使…

【翻译、转载】【转载】LLM 的函数调用与 MCP

来源: https://www.dailydoseofds.com/p/function-calling-mcp-for-llms/ 【代码以图像显示的是原文内容,以代码形式显示的是大模型给出的参考】 LLM 的函数调用与 MCP 在 MCP 变得像现在这样主流(或流行)之前,大多…

【QT】QT中http协议和json数据的解析-http获取天气预报

QT中http协议和json数据的解析 1.http协议的原理2.QT中http协议的通信流程2.1 方法步骤 3.使用http协议(通过http下载图片和获取天气预报信息)3.1 http下载网络上的图片(下载小文件)3.1.1 示例代码3.1.2 现象 3.2 获取网络上天气预报3.2.1 免费的天气预报…

hot100:链表倒数k个节点- 力扣(LeetCode)

题目: 实现一种算法,找出单向链表中倒数第 k 个节点。返回该链表中倒数第k个节点。 示例一: 输入:{1,2,3,4,5},2 返回值:{4,5} 说明:返回倒数第2个节点4,系统会打印后面所有的节点来比较。 …

Spring AI 实战:第十一章、Spring AI Agent之知行合一

引言:智能体的知行辩证法 “知为行之始,行为知之成”,王阳明的哲学智慧在AI时代焕发光彩。智能体(LLM Agent)的进化之路,正是"认知-决策-执行"这一闭环的完美诠释: 知明理:融合大语言模型的推理能力与知识图谱的结构化认知行致用:基于ReAct模式的动态工具调…

365打卡第R6周: LSTM实现糖尿病探索与预测

🍨 本文为🔗365天深度学习训练营中的学习记录博客 🍖 原作者:K同学啊 🏡 我的环境: 语言环境:Python3.10 编译器:Jupyter Lab 深度学习环境:torch2.5.1 torchvision0…

W-TinyLFU缓存驱逐算法解析

文章目录 1. 背景与概述1.1 什么是缓存驱逐算法1.2 W-TinyLFU 的定义与价值 2. 核心思想与设计理念2.1 时间局部性与频率局部性的结合2.2 高效的频率统计2.3 窗口机制的引入 3. 架构设计与组件3.1 整体架构3.2 窗口缓存(Window Cache)3.3 主缓存&#xf…

[特殊字符] 人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总) [特殊字符]

Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓 "语言模型",就是只用来处理语言文字(或者符号…

文章记单词 | 第60篇(六级)

一,单词释义 liar:英 [ˈlaɪə(r)];美 [ˈlaɪər];n. 说谎者verbal:英 [ˈvɜːbl];美 [ˈvɜːrbl];adj. 言语的;文字的;口头的;动词的comprehension&…

AI日报 · 2025年04月30日|OpenAI 回滚 GPT-4o 更新以解决“谄媚”问题

过去24小时,全球人工智能领域持续快速发展。从模型行为调整到平台工具更新,再到行业安全规范的探讨,以下是为您精选的重点动态: 1、OpenAI 回滚 GPT-4o 更新以解决“谄媚”问题 针对用户反馈最新版 GPT-4o 模型表现出过度“谄媚…

Linux54 源码包的安装、修改环境变量解决 axel命令找不到;getfacl;测试

始终报错 . 补充链接 tinfo 库时报错软件包 ncurses-devel-5.9-14.20130511.el7_4.x86_64 已安装并且是最新版本 没有可用软件包 tinfo-devel。 无须任何处理 make LDLIBS“-lncurses"报错编译时报错make LDLIBS”-lncurses" ? /opt/rh/devtoolset-11/roo…

FPGA----基于ZYNQ 7020实现EPICS通信系统

1、本实验过程来自博b站大神《神电测控》,原文地址: EPICS实战(上位机篇):基于LV ZYNQ实现的EPICS通信系统(大物理) - 哔哩哔哩https://www.bilibili.com/opus/933476043369480224EPICS实战(下位机篇):基于LV ZYNQ实现的EPICS通信…

实验四 增强型可靠文件传输系统

一、实验目的和任务 掌握基于队列的多文件传输机制理解断点续传的实现原理学习文件传输完整性保障方法 二、实验内容 基础功能验证 单文件传输功能测试服务器状态监控测试传输日志记录验证 新增功能实现 多文件队列传输功能断点续传支持 三、实验步骤 4.1 客户端功能扩…