Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何從另一個 AWS 帳戶中的 OpenSearch Service 網域還原資料?
我想要從另一個帳戶中的 Amazon OpenSearch Service 網域還原資料。
簡短說明
若要從另一個帳戶中的 OpenSearch Service 網域還原資料,您必須為下列網域設定跨帳戶存取權:
- 您要從中還原資料的來源網域(帳戶 A)
- 您的 OpenSearch Service 目的地網域(帳戶 B)
您還必須為網域設定權限以存取儲存資料的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。
注意: 您不需要在目的地 (帳戶 B) 中建立 Amazon S3 儲存貯體。OpenSearch Service 使用單一 Amazon S3 儲存貯體來還原您各個帳戶的資料。
解決方法
注意: OpenSearch Service 使用帳戶 A 中的來源網域進行叢集快照。
首先,在與 OpenSearch Service 目的地網域相同的 AWS 區域中的帳戶 A 中,建立 Amazon S3 儲存貯體。然後,完成以下步驟來設定跨帳戶存取權。您必須同時完成帳戶 A 和帳戶 B 的步驟。
在兩個帳戶中設定對 S3 儲存貯體的存取權
請完成下列步驟:
-
建立 AWS Identity and Access Management (IAM) 角色,授予 OpenSearch Service 存取 S3 儲存貯體的權限。然後,在服務選取 Amazon Elastic Compute Cloud (Amazon EC2)。
-
建立以下授予 S3 儲存貯體存取權的 IAM 政策,然後將該政策附加到 IAM 角色:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::AccountA_S3_Bucket_Name" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::AccountA_S3_Bucket_Name/*" ] }] }
注意: 將 arn:aws:s3:::Account AWS_S3_Bucket\Name 替換為您儲存貯體的 ARN。
-
使用下列陳述式更新帳戶 A 的儲存貯體政策,以授予帳戶 B 中的 IAM 角色跨帳戶儲存貯體存取權:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Permission for AccountB role", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::account-B-id:role/AccountB-role" }, "Action": [ "s3:GetLifecycleConfiguration", "s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::AccountA-bucket", "arn:aws:s3:::AccountA-bucket/*" ] } ] }
-
更新角色的信任政策以包含以下信任關係:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
注意: 請記下角色的 ARN,以在後續步驟中使用。
-
若要授予 OpenSearch Service 對 S3 儲存貯體的寫入權限,請執行下列其中一項:
若要將所有權限分組到一個 IAM 角色下,請在現有的 IAM 政策中包含 iam:PassRole 權限。
-或-
若要分割權限,請建立具有 iam:PassRole 權限的新 IAM 政策。
注意: 您必須將 IAM 政策附加到用於簽署 HTTP 請求的 IAM 角色。
以下範例政策包含所需的 IAM 權限:{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::Account:snapshot role" }, { "Effect": "Allow", "Action": "es:ESHttpPut", "Resource": "arn:aws:es:us-east-1:Account:domain/srestore/*" }] }
注意: 將 arn:aws:iam::Account:snapshot-role 替換為您的 IAM 角色。另外,將 arn:aws:es:us-east-1:Account:domain/restore/* 替換為帳戶 A 或帳戶 B 中的 OpenSearch Service 網域。
-
如果您為網域啟用了更精細的存取控制權,則必須將 IAM 角色對應到 OpenSearch 儀表板。IAM 角色使用更精細的存取控制權來提供對讀取或寫入 API 的存取權。
-
(選用) 如果您使用帳戶 A 中的 Python 用戶端將儲存貯體註冊到 OpenSearch Service,則在帳戶 A 中啟動 EC2 執行個體。
注意: 確保您的安全群組可以存取 OpenSearch Service 網域。
在兩個帳戶中將 S3 儲存貯體註冊為快照儲存庫
重要: 對於帳戶 B,您必須使用帳戶 B 的 IAM 使用者驗證憑證,然後選擇 OpenSearch Service 作為您的目的地。
若要註冊儲存貯體,請使用 Postman 應用程式發出 HTTP PUT 請求。要安裝該應用程式,請參閱 Postman 網站上的下載 Postman。
請完成下列步驟:
- 對於 PUT,輸入包含 OpenSearch Service 域端點和 S3 儲存貯體名稱的 URL,例如 your-domain-endpoint.amazonaws.com/_snapshot/your-snapshot-repository-name。
- 選擇 Authorization (授權) 索引標籤。
- 在 Postman 下,在 Type (類型) 中,選擇 AWS Signature (AWS 簽章)。對於 AccessKey 和 SecretKey,輸入 IAM 使用者的存取金鑰。
- 在 AWS Region (AWS 區域) 中,輸入您的區域。
- 在 Service Name (服務名稱) 中,輸入 es。
- 選擇 Save (儲存)。
- 選擇 Headers (標題) 索引標籤。
- 在 Key type (金鑰類型) 中,選擇 Content-Type。
- 在 Key value (索引鍵值) 中,選擇 Application/JSON。
- 選擇 Save (儲存)。
- 選擇 Body (內文) 索引標籤。
- 將 S3 儲存貯體註冊為快照儲存庫:
{ "type": "s3", "settings": { "bucket": "snapshot", "region": "us-east-1", "role_arn": "arn:aws:iam::Account:role/cross" } }
注意: 將 snapshot (快照) 替換為您的 S3 儲存貯體名稱,將 us-east-1 替換為您的區域,並將 arn:aws:iam::Account:role/cross 替換為帳戶 A 或帳戶 B 中的 IAM 角色。 若要提交查詢,請選擇 Send (傳送)。
註冊完成後,您將收到狀態碼: 200 確定訊息。
驗證快照儲存庫設定是否正確
在帳戶 A 中,完成以下步驟:
- 開啟 OpenSearch Dashboards,然後檢查儲存貯體上的可用資料。
- 執行以下命令來拍攝新的快照:
注意: 將 my-snapshot-repo-name 替換為您的 S3 儲存貯體名稱,將 snapshot name (快照名稱) 替換為您的快照名稱。PUT /_snapshot/my-snapshot-repo-name/snapshot_name
以下範例輸出驗證了帳戶 A 中對 OpenSearch Service 網域的 S3 儲存貯體的完整註冊:GET _cat/snapshots/my-snapshot-repo-name SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
在帳戶 B 中,完成下列步驟:
-
開啟 OpenSearch 儀表板。
-
執行以下命令以查看 S3 儲存貯體中可用的帳戶 A 快照:
GET _cat/snapshots/my-snapshot-repo-name
注意: 將 my-snapshot-repo-name 替換為您的快照儲存庫。
下列範例輸出確認您在帳戶 B 中設定跨帳戶存取權:today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
-
若要還原資料,請執行以下命令:
POST /_snapshot/my-snapshot-repo-name/snapshotID/_restore
注意: 將 my-snapshot-repo-name 替換為您的快照儲存庫,將 snapshotID 替換為您的快照名稱。
-
若要還原特定索引,請執行以下命令:
POST /_snapshot/my-snapshot-repo-name/snapshot ID/_restore { "indices": "index name1,index name2" }
注意: 將 my-snapshot-repo-name 替換為您的快照儲存庫,將 snapshotID 替換為您的快照名稱。另外,將 index name1 和 indexname2 替換為您的索引。
-
若要驗證還原的索引,請執行下列命令:
GET _cat/indices?v
相關資訊
如何將資料從某個 OpenSearch Service 網域遷移到另一個網域?
步驟 1.3: 附加儲存貯體政策,以向帳戶 B 授予跨帳戶權限

相關內容
- 已提問 5 個月前lg...
- 已提問 2 年前lg...
- 已提問 2 年前lg...
- AWS 官方已更新 3 年前
- AWS 官方已更新 5 個月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 4 年前