如何從 Amazon OpenSearch Service 網域的另一個 AWS 帳戶還原資料?
我希望從 Amazon OpenSearch Service 網域的另一個 AWS 帳戶還原資料。該如何進行?
簡短描述
如要從 OpenSearch Service 網域的另一個 AWS 帳戶還原資料,您需要設定跨帳戶存取。您必須在您的 OpenSearch Service 網域與您嘗試還原資料的網域之間建立跨帳戶存取權。您還必須允許您的網域存取儲存資料的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。
若要建立跨帳戶存取,請執行下列步驟:
1. 在帳戶 A 中設定下列項目:
**Source:**設有精細存取控制的 OpenSearch Service 網域
**Source:**Amazon S3 儲存貯體
2. 在帳戶 B 中設定設有精細存取控制的目標 (OpenSearch Service 網域)。
**注意:**您不需要在目標 (帳戶 B) 中創建 S3 儲存貯體。使用單一 S3 儲存貯體來還原不同 AWS 帳戶的資料。此設定也適用於沒有精細存取控制的 OpenSearch Service 網域。
解決方案
**注意:**本文中的範例使用 Python 和 Postman 程式碼。
設定帳戶 A 的跨帳戶存取
1. 在與 OpenSearch Service 網域相同的區域中,建立帳戶 A 的 S3 儲存貯體。
2. 建立 AWS Identity Access Management (IAM) 政策以提供 S3 儲存貯體的存取許可:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::snapshot" ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::snapshot/*" ] }] }
**注意:**以步驟 1 中的儲存貯體 ARN 替換 "arn:aws:s3:::snapshot"。
3. 建立 IAM 角色並選取 Amazon Elastic Compute Cloud (Amazon EC2) 作為您的服務。
4. 將步驟 2 中建立的 IAM 政策加入您新建立的 IAM 角色。
5. 開啟您的 IAM 角色並選擇 Trust relationships (信任關係)。
6. 更新下列政策的信任關係:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
**注意:**以 "Service": "es.amazonaws.com" 替換 "Service": "ec2.amazonaws.com"。此外,請記錄角色 ARN,您在稍後的步驟中將會需要有關資料。
7. 選擇下列其中一個選項:
更新步驟 2 的政策,加入 "iam:PassRole" 許可,將政策附加至您的 IAM 角色。此許可讓 OpenSearch 服務具有對 S3 儲存貯體的寫入存取權。
-或-
建立新的 IAM 政策,將政策附加至您的 IAM 角色。
**注意:**您可以透過更新政策,將所有許可放置在同一個 IAM 角色中。或者,如果您希望建立新的 IAM 政策並分開放置許可,您可以在其他使用案例中重複使用 IAM 政策。
以下是具有所需 IAM 許可的政策範例:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::Account A:role/cross" }, { "Effect": "Allow", "Action": "es:ESHttpPut", "Resource": "arn:aws:es:us-east-1:Account A:domain/srestore/*" }] }
此政策必須附加至用來簽署 HTTP 請求的 IAM 使用者或角色。
注意:以步驟 3 中建立的角色替換 "arn:aws:iam::Account A:role/cross"。此外,將 "arn:aws:es:us-east-1:Account A:domain/srestore/*" 更新為帳戶 A 中Source (來源) 所列出的 OpenSearch Service 網域。帳戶 A 中的 Source (來源) 會用作建立叢集快照。
8. 建立 IAM 使用者並附加您在步驟 2 中建立的政策 (其中包括存取 Amazon S3 所需的許可)。此 IAM 使用者必須擁有帳戶 A 中 OpenSearch Service 網域的管理員存取權,才能存取使用 FGAC 的讀/寫 API。如需有關使用精細存取控制的詳細資訊,請參閱 OpenSearch Dashboards 的快照角色映射 (在使用精細存取控制的情況下)。
9. (選用) 如果您使用 Python 程式碼將 S3 儲存貯體註冊至 OpenSearch Service,請在帳戶 A 中啟動 Amazon EC2 機器,然後附加在步驟 3 中建立的 IAM 角色。
**注意:**請確定您的安全群組可以存取 OpenSearch Service 網域。
將 S3 儲存貯體註冊至帳戶 A 中的來源
若要將 S3 儲存貯體註冊至帳戶 A 中的來源網域,請執行下列步驟:
1. 使用包含 OpenSearch Service 網域端點和 S3 儲存貯體名稱的 URL 更新 PUT 欄位。例如:
https://endpointofdomain.amazonaws.com/_snapshot/snapshot
2. 選擇 Authorization (授權) 標籤。
3. 更新 IAM 使用者的 AccessKey 和 SecretKey。
4. 更新 AWS Region (AWS 區域) 和 Service Name (服務名稱)。
5. 選擇 Save (儲存)。
6. 選擇 Headers (標題) 標籤。
7. 選擇 Content-Type (內容類型) 作為金鑰類型。
8. 選擇 Application/JSON (應用程式/JSON) 作為鍵值。
9. 選擇 Save (儲存)。
10. 選擇 Body (主題) 標籤。
11. 使用以下程式碼:
{ "type": "s3", "settings": { "bucket": "snapshot", "region": "us-east-1", "role_arn": "arn:aws:iam::Account A:role/cross" } }
12. 選擇 Send (傳送),以透過 OpenSearch Service 主控台提交查詢。註冊完成後,您會收到 Status Code: 200 OK (狀態碼:200 OK) 的訊息。
13. 在帳戶 A 中登入 OpenSearch Dashboards,然後檢查 S3 儲存貯體上的可用資料。
14. 使用下列命令來建立新的快照:
PUT /_snapshot/<registered_snapshot_repository>/<snapshot_name>
下列是輸出範例:
GET _cat/snapshots/casnapshot today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
此輸出會驗證是否已經將 S3 儲存貯體註冊至帳戶 A 中的 OpenSearch Service 網域。
設定帳戶 B 的跨帳戶存取
1. 在帳戶 B 中建立政策和 IAM 角色,並指定與帳戶 A 相同的 S3 儲存貯體 ARN:
{ "Version": "2012-10-17", "Statement": [{ "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::snapshot" --> S3 bucket ARN from Account A ] }, { "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject", "iam:PassRole" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::snapshot/*" ] }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::Account B:role/cross" --> Role created in Account B }, { "Effect": "Allow", "Action": "es:*", "Resource": "arn:aws:es:us-east-1:Account B:domain/restore/*" --> Destination ES domain in Account B }] }
以下是您角色的信任政策範例:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": "sts:AssumeRole" }] }
2. 將您先前建立的 IAM 角色附加至帳戶 B 中的 IAM 使用者。該 IAM 使用者必須擁有帳戶 B 中 目的地 (具有 FGAC 的網域) 的管理員存取權。如需有關更新 IAM 使用者存取的詳細資訊,請參閱註冊手動快照儲存庫。
3. 更新帳戶 A 中儲存貯體的 S3 儲存貯體政策,為帳戶 B 提供儲存貯體的存取權:
{ "Version": "2012-10-17", "Id": "Policy1568001010746", "Statement": [{ "Sid": "Stmt1568000712531", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B }, "Action": "s3:*", "Resource": "arn:aws:s3:::snapshot" }, { "Sid": "Stmt1568001007239", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B }, "Action": "s3:*", "Resource": "arn:aws:s3:::snapshot/*" }] }
4. 在帳戶 B 中,將 S3 儲存貯體註冊到您的網域。
**注意:**您必須使用帳戶 B 中 IAM 使用者的身分驗證憑證。請務必選擇 OpenSearch Service 作為您的目標。
{ "type": "s3", "settings": { "bucket": "snapshot", "region": "us-east-1", "role_arn": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B. } }
5. 在帳號 B 中登入 OpenSearch Dashboards。
6. 檢查 S3 儲存貯體中可用的帳戶 A 快照:
GET _cat/snapshots/casnapshot
以下是一個輸出的範例:
today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
此輸出會確認是否成功在帳戶 B 中建立跨帳戶存取。
相關資訊

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