在 Amazon OpenSearch Service 中进行手动快照并在跨越不同区域和账户的不同域
在不同域中手动拍摄快照并跨多个区域和账号恢复 Amazon OpenSearch 服务
作者:Madhan Kumar Baskaran 和 Priyanshi Omer 发布于2024年10月11日 高级 (300), Amazon OpenSearch 服务, Amazon 简单存储服务 (S3), AWS 身份与访问管理 (IAM), 技术教程
永久链接 评论 分享
小熊加速器免费关键要点
快照的重要性:手动快照用于数据备份和灾难恢复,可将域索引和集群状态在特定时间点备份到可靠存储位置如 S3。数据完整性:通过合理的快照策略,减轻数据丢失风险,简化灾难恢复流程。手动快照的实用场景:数据恢复、迁移、测试和开发、备份控制、长期归档。快照对于在 Amazon OpenSearch 服务 中备份数据和灾难恢复至关重要。这些快照使您能够在特定时刻生成域索引和集群状态的备份,并将其保存在可靠的存储位置,如 Amazon 简单存储服务 (Amazon S3)。
快照在提供 OpenSearch 服务域的数据可用性、完整性和恢复能力方面起着关键作用。通过实施健全的快照策略,您可以降低与数据丢失相关的风险,优化灾难恢复过程,并保持数据管理最佳实践的合规性。
这篇文章提供了有关如何有效捕获和管理 OpenSearch 服务中手动快照的详细说明。它涵盖了拍摄数据快照、在不同 AWS 区域和账户中安全传输以及在新域中恢复的基本步骤。该指南旨在帮助您在 OpenSearch 服务的复杂多区域和多账户环境中维护数据完整性和连续性。
有关索引快照的详细信息,请参阅 开发者指南。
理解手动快照
手动快照是用户启动的 OpenSearch 服务域的即时备份。与根据 OpenSearch 服务指定的保留策略定期自动进行的快照不同,手动快照允许您在需要时随时进行备份,无论是针对整个集群还是单个索引。当您希望保留特定的数据状态以供将来参考,或在对域实施重大更改之前,手动快照尤为有用。
快照并不是瞬时完成的。它们需要时间完成,并且并不代表完美的即时视图。在快照进行时,您仍然可以索引文档和进行其他请求,但新文档及对现有文档的更新通常不会包含在快照中。快照包含的是在启动快照过程时主分片的状态。
以下是手动快照发挥重要作用的一些场景:
场景描述数据恢复快照的主要目的是在发生故障或数据丢失时提供恢复数据的手段。迁移手动快照可用于想要将数据从一个域迁移到另一个域。测试和开发使用快照为测试或开发目的创建数据副本。备份控制手动快照对备份过程提供更多控制。长期归档手动快照可以保存更长时间,适合长期数据归档需求。解决方案概述
以下部分概述了在不同域中手动拍摄快照并跨多个区域和账户恢复的过程。高层步骤如下:
创建 AWS 身份与访问管理 (IAM) 角色和用户。注册手动快照存储库。进行手动快照。设置 S3 桶复制。在目标账户中创建 IAM 角色和用户。添加桶政策。在目标域注册存储库并恢复快照。前提条件
本篇文章假设您已经设置以下资源:
一个正在运行的 OpenSearch 服务域。一个用于存储 OpenSearch 服务域手动快照的 S3 桶。该桶必须位于与 OpenSearch 服务域托管区域相同的区域内。创建 IAM 角色和用户
完成以下步骤以创建您的 IAM 角色和用户:
创建一个 IAM 角色,以授予 OpenSearch 服务所需的权限。本文中,我们将角色命名为 TheSnapshotRole。使用以下代码创建新的策略并将其附加到该角色,以允许访问 S3 桶。json { Version 20121017 Statement [ { Action [s3ListBucket] Effect Allow Resource [arnawss3s3bucketname] } { Action [ s3GetObject s3PutObject s3DeleteObject iamPassRole ] Effect Allow Resource [arnawss3s3bucketname/] } ] }
编辑 TheSnapshotRole 的信任关系以指定 OpenSearch 服务在 Principal 语句中,如以下示例所示。在 Condition 块中,我们建议您使用 awsSourceAccount 和 awsSourceArn 条件密钥来防止 混淆代表问题。源账户是拥有者,源 ARN 是 OpenSearch 服务域的 ARN。json { Version 20121017 Statement [ { Sid Effect Allow Principal { Service esamazonawscom } Action stsAssumeRole Condition { StringEquals { awsSourceAccount accountid } ArnLike { awsSourceArn arnawsesregionaccountiddomain/domainname } } } ] }
生成一个 IAM 用户以注册快照存储库。本文中,我们将用户命名为 TheSnapUser。为注册快照存储库,您需要将 TheSnapshotRole 传递给 OpenSearch 服务。此外,您还需要访问 esESHttpPut。要授予这两项权限,请将以下策略附加到用于签署请求的 IAM 角色。
json { Version 20121017 Statement [ { Effect Allow Action iamPassRole Resource arnawsiam123456789012role/TheSnapshotRole } { Effect Allow Action esESHttpPut Resource arnawsesregion123456789012domain/domainname/ } ] }
注册手动快照存储库
完成以下步骤在 OpenSearch 仪表板中映射快照角色和用户如果使用细粒度访问控制:
导航到连接您 OpenSearch 服务域的 OpenSearch 仪表板终端。使用管理员用户或具有 securitymanager 角色的用户登录。从主菜单选择 安全,选择 角色,并选择 managesnapshots 角色。选择 映射用户,然后选择 管理映射。为 后端角色 添加 TheSnapshotRole 的 ARN,为 用户 添加 TheSnapUser 的 ARN:arnawsiam123456789123role/TheSnapshotRolearnawsiam123456789123user/TheSnapUser选择 映射 并确认用户和角色出现在 映射用户 下。要注册快照存储库,通过像 Postman 或 Insomnia 这样的 API 平台向 OpenSearch 服务域终端发送 PUT 请求。有关更多详细信息,请参见注册手动快照存储库。注意:在使用 Postman 或 Insomnia 执行本文中提到的 API 调用时,选择 AWS IAM v4 作为身份验证方法,并在授权部分输入您的 IAM 凭证。确保使用具有 “allaccess” OpenSearch 角色的 OpenSearch 用户凭证。
bashcurl XPUT domainendpoint/snapshot/mysnapshotreponame{ type s3 settings { bucket s3bucketname region region rolearn arnawsiam123456789012role/TheSnapshotRole }}
如果您的域位于虚拟私有云 (VPC) 中,您必须连接到该 VPC,才能成功注册快照存储库。访问 VPC 的方式因网络配置而异,但通常涉及连接到 VPN 或企业网络。要检查您是否能够访问 OpenSearch 服务域,请在网页浏览器中访问 https//ltyourvpcdomainregiongtesamazonawscom,确认您收到默认的 JSON 响应。
拍摄手动快照
如果另一个快照正在进行,则无法执行拍照。此外,Ultrawarm 存储层迁移过程也利用快照在热存储和冷存储之间转移数据,该过程在后台运行。另外,自动快照根据服务为集群配置的调度进行拍摄。有关保护 Amazon S3 数据的详细信息,请参见 保护数据与加密。
为了确认,请运行以下命令:
bashcurl XGET domainendpoint/snapshot/status
确认没有快照正在运行后,运行以下命令以拍摄手动快照:
bashcurl XPUT domainendpoint/snapshot/repositoryname/snapshotname
运行以下命令以验证您域的所有快照状态:
bashcurl XGET domainendpoint/snapshot/repositoryname/allpretty
设置 S3 桶复制
在开始之前,请确保以下内容已就绪:
找到将数据复制到的目标桶。如果没有,则在与源桶的区域不同的区域中创建新的 S3 桶。由于目标 OpenSearch 服务域在不同的账户中,您需要为桶启用 访问控制列表 (ACL),以允许其他 AWS 账户访问此桶中的对象。ACLs 将用于指定和管理该桶及其对象的访问权限。完成以下步骤以设置 S3 桶复制。有关更多信息,请参见 示例:配置复制的示例。
在 Amazon S3 控制台中,选择导航窗格中的 桶。选择要复制的桶包含快照的源桶。在 管理 选项卡中,选择 创建复制规则。复制需要对源桶启用版本控制,因此选择 启用桶版本控制 并启用版本控制。提供以下详细信息:在 规则 ID 中,输入规则名称。在 状态 中,选择 启用。在 规则范围 中,指定要复制的数据。在 目标 S3 桶 中,输入数据将要复制的目标桶名称。在 IAM 角色 中,选择 创建新角色。选择 保存。在 复制现有对象 弹出窗口中,选择 是,复制现有对象 以开始复制。选择 提交。您将看到源 S3 桶的 管理 选项卡中的复制表中出现新的活动复制规则。
在目标账户中创建 IAM 角色和用户
完成以下步骤以在目标账户中创建您的 IAM 角色和用户。
创建一个 IAM 角色,以授予目标 OpenSearch 服务的权限。本文中,将角色命名为 DestinationSnapshotRole。使用以下代码创建新的策略并附加到角色 DestinationSnapshotRole,以允许访问目标 S3 桶。json { Version 20121017 Statement [ { Action [s3ListBucket] Effect Allow Resource [arnawss3s3bucketname] // 复制的 S3 桶 } { Action [ s3GetObject s3PutObject s3DeleteObject iamPassRole ] Effect Allow Resource [arnawss3s3bucketname/] // 复制的 S3 桶 } ] }
编辑 DestinationSnapshotRole 的信任关系,指定 OpenSearch 服务在 Principal 语句中,如以下示例所示。json { Version 20121017 Statement [ { Sid Effect Allow Principal { Service esamazonawscom } Action stsAssumeRole Condition { StringEquals { awsSourceAccount accountid // 目标账户 } ArnLike { awsSourceArn arnawsesregionaccountiddomain/domainname/ // 目标 OpenSearch 域 } } } ] }
生成一个 IAM 用户以注册快照存储库。本文中,我们将用户命名为 DestinationSnapUser。为注册快照存储库,您需要将 DestinationSnapshotRole 传递给 OpenSearch 服务。此外,您还需要访问 esESHttpPut。要授予这两项权限,请将以下策略附加到用于签署请求的 IAM 角色。json { Version 20121017 Statement [ { Effect Allow Action iamPassRole Resource arnawsiam123456789012role/DestinationSnapshotRole } { Effect Allow Action esESHttpPut Resource arnawsesregion123456789012domain/domainname/ // 目标 OpenSearch 域 } ] }
完成以下步骤在目标 OpenSearch 仪表板中映射快照角色和用户如果使用细粒度访问控制:
导航至连接您的 OpenSearch 服务域的 OpenSearch 仪表板终端。使用管理员用户或具有 securitymanager 角色的用户登录。从主菜单选择 安全,选择 角色,并选择 managesnapshots 角色。选择 映射用户,然后选择 管理映射。为 后端角色 添加 DestinationSnapshotRole 的 ARN,为 用户 添加 DestinationSnapUser 的 ARN:arnawsiam123456789123role/DestinationSnapshotRolearnawsiam123456789123user/DestinationSnapUser选择 映射 并确认用户和角色出现在 映射用户 下。添加桶政策
在目标 S3 桶详情页面,在 权限 选项卡中,选择 编辑,然后添加以下桶政策。此政策允许来自另一个 AWS 账户的目标 OpenSearch 服务域访问由不同 AWS 账户
使用 Amazon Lex 和 Amazon CloudWatch Logs 检测和保护敏感数据 机
使用 Amazon Lex 和 Amazon CloudWatch Logs 检测和保护敏感数据在数字化时代,保护个人可识别信息PII不仅是合规要求,更是消费者信任和商业诚信的基石。组织采用像 Amazon Lex 这样的先进自然语言检测服务来构建对话接口,并通过 Amazon CloudWatch...