AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
如何設定從 Kinesis Data Firehose 至 Amazon OpenSearch Service 的跨帳戶串流?
我想要設定 Amazon Kinesis Data Firehose 串流,以將資料傳送至另一個帳戶中的 Amazon OpenSearch Service 叢集。
簡短描述
設定 Kinesis Data Firehose 及其相依性 (例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon CloudWatch),以跨不同的帳戶進行串流。無論是否開啟精細的存取控制 (FGAC),串流資料交付都適用於可公開存取的 OpenSearch Service 叢集。
若要設定 Kinesis Data Firehose 串流,以便將資料傳送至 OpenSearch Service 叢集,請完成下列步驟:
- 在帳戶 A 中建立 Amazon S3 儲存貯體。
- 在帳戶 A 中建立 CloudWatch 日誌群組和日誌串流。
- 在帳戶 A 中建立 Kinesis Data Firehose 角色和政策。
- 在帳戶 B 中建立可公開存取的 OpenSearch Service 叢集,以便帳戶 A 中的 Kinesis Data Firehose 角色在其中對資料進行串流。
- (選用) 如果已開啟 FGAC,請登入 OpenSearch 儀表板並新增角色映射。
- 更新帳戶 A 中您的 Kinesis Data Firehose 角色的 AWS Identity Access Management (IAM) 角色政策,以將資料傳送至帳戶 B。
- 在帳戶 A 中建立 Kinesis Data Firehose 串流。
- 測試 OpenSearch Service 叢集的跨帳戶串流。
解決方案
在帳戶 A 中建立 Amazon S3 儲存貯體
在帳戶 A 中建立 S3 儲存貯體。Amazon S3 儲存貯體會產生 Amazon Resource Name (ARN)。
**注意事項:**稍後使用完整的 ARN 授予 Kinesis Data Firehose 存取權,以儲存和擷取 Amazon S3 儲存貯體中的記錄。
在帳戶 A 中建立 CloudWatch 日誌群組和日誌串流
若要建立 CloudWatch 日誌群組,請完成下列步驟:
- 開啟 CloudWatch 主控台。
- 在導覽窗格中,選擇日誌,然後選擇日誌群組。
- 選擇建立日誌群組。
- 輸入日誌群組名稱。
- 選擇建立日誌群組按鈕以儲存新的日誌群組。
- 搜尋新建立的日誌群組,然後進行選取。
若要建立 Amazon CloudWatch 日誌串流,請完成下列步驟:
- 選擇建立日誌串流。
- 輸入日誌串流名稱。
- 選擇建立日誌串流。
**重要事項:**在建立 Kinesis Data Firehose 角色政策時,需要 CloudWatch 日誌群組和 CloudWatch 日誌串流名稱。
在帳戶 A 中建立 Kinesis Data Firehose 角色和政策
- 開啟 AWS Identity and Access Management (IAM) 主控台。
- 建立 IAM 政策,以允許 Kinesis Data Firehose 執行下列操作:
將串流日誌儲存至 CloudWatch
記錄至 Amazon S3
對 OpenSearch Service 叢集的資料進行串流
範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "<Bucket ARN>", "<Bucket ARN>/*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>:<account-id>:log-group:/aws/kinesisfirehose/<Firehose Name>:log-stream:*" ] } ] }
**注意事項:**稍後,您可以將串流許可附加至 OpenSearch Service 叢集政策。但是,您必須先在帳戶 B 中建立叢集。
- 儲存政策。
- 選擇建立角色。
- 將政策新增至您的 Kinesis Data Firehose 角色。
在帳戶 B 中建立可公開存取的 OpenSearch Service 叢集,以便帳戶 A 中的 Kinesis Data Firehose 角色對資料進行串流
- 在帳戶 B 中建立可公開存取的 OpenSearch Service 叢集。
- 記錄 OpenSearch Service 網域 ARN。您可以在稍後的步驟中使用 ARN。
- 設定叢集的安全設定。
**重要事項:**您必須設定 OpenSearch Service 安全設定,以允許帳戶 A 中的 Kinesis Data Firehose 角色串流至您的 OpenSearch Service 叢集。
若要設定安全設定,請執行下列步驟:
-
在 OpenSearch Service 中,導覽至存取政策。
-
選取 JSON 定義的存取政策。您的政策必須具有下列許可:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "es:*", "Resource": "<ES Domain ARN in Account B>/*", "Condition": { "IpAddress": { "aws:SourceIp": "<Your IP Address for OpenSearch Dashboards access>" } } }, { "Effect": "Allow", "Principal": { "AWS": "<Firehose Role ARN in Account A>" }, "Action": [ "es:ESHttpPost", "es:ESHttpPut" ], "Resource": [ "<ES Domain ARN in Account B>", "<ES Domain ARN in Account B>/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "<Firehose Role ARN in Account A>" }, "Action": "es:ESHttpGet", "Resource": [ "<ES Domain ARN in Account B>/_all/_settings", "<ES Domain ARN in Account B>/_cluster/stats", "<ES Domain ARN in Account B>/index-name*/_mapping/type-name", "<ES Domain ARN in Account B>/roletest*/_mapping/roletest", "<ES Domain ARN in Account B>/_nodes", "<ES Domain ARN in Account B>/_nodes/stats", "<ES Domain ARN in Account B>/_nodes/*/stats", "<ES Domain ARN in Account B>/_stats", "<ES Domain ARN in Account B>/index-name*/_stats", "<ES Domain ARN in Account B>/roletest*/_stats" ] } ] }如需有關 OpenSearch Service 政策內許可的詳細資訊,請參閱跨帳戶交付至 OpenSearch Service 目的地。
-
(選用) 如果已為您的叢集開啟 FGAC,請登入 OpenSearch 儀表板並新增角色映射。角色映射可讓 Kinesis Data Firehose 角色將請求傳送至 OpenSearch Service。
若要登入 OpenSearch 儀表板並新增角色映射,請完成下列步驟:
- 開啟儀表板。
- 選擇安全索引標籤。
- 選擇角色。
- 選擇 all_access 角色。
- 選擇映射的使用者標籤。
- 選擇管理映射。
- 在後端角色區段中,輸入 Kinesis Data Firehose 角色。
- 選擇映射。
更新帳戶 A 中您的 Kinesis Data Firehose 角色的 IAM 角色政策,以將資料傳送至帳戶 B
若要將資料從帳戶 A 中的 Kinesis Data Firehose 角色傳送至帳戶 B 中的 OpenSearch Service 叢集,請更新 Kinesis Data Firehose 政策。
範例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "<Bucket ARN>", "<Bucket ARN>/*" ] }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>:<account-id>:log-group:/aws/kinesisfirehose/<Firehose Name>:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpPost", "es:ESHttpPut", "es:DescribeDomain", "es:DescribeDomains", "es:DescribeDomainConfig" ], "Resource": [ "<Domain ARN in Account B>", "<Domain ARN in Account B>/*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpGet" ], "Resource": [ "<Domain ARN in Account B>/_all/_settings", "<Domain ARN in Account B>/_cluster/stats", "<Domain ARN in Account B>/index-name*/_mapping/superstore", "<Domain ARN in Account B>/_nodes", "<Domain ARN in Account B>/_nodes/stats", "<Domain ARN in Account B>/_nodes/*/stats", "<Domain ARN in Account B>/_stats", "<Domain ARN in Account B>/index-name*/_stats" ] } ] }
如需詳細資訊,請參閱授予 Kinesis Data Firehose 對 Amazon OpenSearch Service 目的地的存取權。
在帳戶 A 中建立 Kinesis Data Firehose 串流
若要建立可跨帳戶存取 OpenSearch Service 叢集的 Kinesis Data Firehose 串流,請使用並設定 AWS Command Line Interface (AWS CLI)。
檢查以確定您使用最新的 AWS CLI:
aws --version
**注意事項:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱 對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
建立稱為 input.json 的檔案,包含下列內容:
{ "DeliveryStreamName": "<Firehose Name>", "DeliveryStreamType": "DirectPut", "ElasticsearchDestinationConfiguration": { "RoleARN": "", "ClusterEndpoint": "", "IndexName": "local", "TypeName": "TypeName", "IndexRotationPeriod": "OneDay", "BufferingHints": { "IntervalInSeconds": 60, "SizeInMBs": 50 }, "RetryOptions": { "DurationInSeconds": 60 }, "S3BackupMode": "FailedDocumentsOnly", "S3Configuration": { "RoleARN": "", "BucketARN": "", "Prefix": "", "BufferingHints": { "SizeInMBs": 128, "IntervalInSeconds": 128 }, "CompressionFormat": "UNCOMPRESSED", "CloudWatchLoggingOptions": { "Enabled": true, "LogGroupName": "/aws/kinesisfirehose/<Firehose Name>", "LogStreamName": "S3Delivery" } }, "CloudWatchLoggingOptions": { "Enabled": true, "LogGroupName": "/aws/kinesisfirehose/<Firehose Name>", "LogStreamName": "ElasticsearchDelivery" } } }
確定在 ClusterEndpoint 屬性欄位中正確輸入端點值。
**注意事項:**在 Elasticsearch 7.x 版中,類型已棄用。對於 Elasticsearch 7.x 版,從 input.json 檔案中移除 TypeName 屬性。
然後,在與 input.json 檔案位置相同的目錄中執行下列命令:
aws firehose create-delivery-stream --cli-input-json file://input.json
此命令語法會在帳戶 A 中建立 Kinesis Data Firehose 串流,目的地為帳戶 B 中的 OpenSearch Service 叢集。
測試 OpenSearch Service 叢集的跨帳戶串流
使用 Kinesis Data Generator (KDG) 將記錄串流到帳戶 A 中的 Kinesis Data Firehose 串流。
KDG 每秒產生許多記錄。此生產力等級可讓 OpenSearch Service 具有足夠的資料點來確定記錄結構的正確映射。
以下是 Kinesis Data Generator 中使用的範本結構:
{ "device_id": {{random.number(5)}}, "device_owner": "{{name.firstName}} {{name.lastName}}", "temperature": {{random.number( { "min":10, "max":150 } )}}, "timestamp": "{{date.now("DD/MMM/YYYY:HH:mm:ss Z")}}" }
若要確認跨帳戶串流成功,請檢閱叢集的索引標籤下的索引項目。檢查是否存在使用字首 "local" 和目前日期的索引名稱。您也可以檢查 OpenSearch 儀表板中是否存在記錄。
**注意事項:**OpenSearch Service 需要幾分鐘的時間來確定正確的映射。
相關資訊
- 語言
- 中文 (繁體)
