使用 Amazon 資料 Firehose 控制存取 - Amazon 數據 Firehose

將亞馬遜資料 Firehose 串流交付到 Amazon S3 中的 Apache 冰山表格已處於預覽狀態,且可能會有所變更。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon 資料 Firehose 控制存取

以下各節說明如何控制 Amazon 資料 Firehose 資源的存取和存取。它們涵蓋的資訊包括如何授予應用程式存取權限,以便將資料傳送至 Firehose 串流。他們還描述了如何授予 Amazon 數據 Firehose 訪問您的 Amazon 簡單存儲服務(Amazon S3)存儲桶,亞馬遜 Redshift 集群或亞馬遜 OpenSearch 服務集群的訪問權限,以及如果您使用數據多,Dynatrace,MongoDB,新遺物,Splunk 或相撲邏輯作為目的地所需的訪問許可。 LogicMonitor最後,您將在本主題指南中找到如何設定 Amazon Data Firehose,以便將資料傳送到屬於不同 AWS 帳戶的目的地。管理所有這些訪問形式的技術是 AWS Identity and Access Management (IAM)。如需有關的詳細資訊IAM,請參閱什麼是IAM?

授予對您的消防洪資源的存取權

若要讓應用程式存取 Firehose 串流,請使用類似於此範例的政策。您可以透過修改Action區段來調整授與存取權的個別API作業,或使用授與所有作業的存取權"firehose:*"

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:DeleteDeliveryStream", "firehose:PutRecord", "firehose:PutRecordBatch", "firehose:UpdateDestination" ], "Resource": [ "arn:aws:firehose:region:account-id:deliverystream/delivery-stream-name" ] } ] }

授予 Firehose 對您私有 Amazon MSK 叢集的存取權

如果 Firehose 串流的來源是私有 Amazon MSK 叢集,請使用類似於此範例的政策。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": [ "kafka:CreateVpcConnection" ], "Resource": "cluster-arn" } ] }

您必須在叢集的以資源為基礎的政策中新增類似的政策,以授與 Firehose 服務主體叫用 Amazon MSK CreateVpcConnection API 作業的權限。

允許 Firehose 擔任角色 IAM

本節描述授與 Amazon Data Firehose 存取權,以便從來源到目的地擷取、處理和交付資料的權限和政策。

注意

如果您使用主控台建立 Firehose 串流並選擇建立新角色的選項,請將必要的信任原則 AWS 附加至該角色。如果您希望 Amazon Data Firehose 使用現有IAM角色,或者您自行建立角色,請將以下信任政策附加到該角色,以便 Amazon Data Firehose 可以承擔。編輯要取代的策略 account-id 使用您的 AWS 帳戶 ID。如需有關如何修改角色之信任關係的資訊,請參閱修改角色

Amazon 資料 Firehose 會針對 Firehose 串流處理和交付資料所需的所有許可使用IAM角色。請確定已將下列信任政策附加到該角色,以便 Amazon 資料 Firehose 可以承擔。

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "firehose.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "account-id" } } }] }

此政策使用sts:ExternalId條件內容金鑰來確保只有源自您 AWS 帳戶的 Amazon Data Firehose 活動才能擔任此IAM角色。如需有關防止未經授權使用IAM角色的詳細資訊,請參閱《使用IAM者指南》中的混淆副問題

如果您選擇 Amazon MSK 做為 Firehose 串流的來源,則必須指定另一個IAM角色,以授予 Amazon 資料 Firehose 許可,以從指定的 Amazon 叢集擷取來源資料。MSK請確定已將下列信任政策附加到該角色,以便 Amazon 資料 Firehose 可以承擔。

{ "Version": "2012-10-17", "Statement": [ { "Principal": { "Service": [ "firehose.amazonaws.com" ] }, "Effect": "Allow", "Action": "sts:AssumeRole" } ] }

確保這個角色授與 Amazon Data Firehose 許可以從指定的 Amazon MSK 叢集擷取來源資料,並授予以下許可:

{ "Version": "2012-10-17", "Statement": [{ "Effect":"Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "CLUSTER-ARN" }, { "Effect":"Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "TOPIC-ARN" }] }

授予 Firehose 存取權以 AWS Glue 進行資料格式轉換

如果您的 Firehose 串流執行資料格式轉換,Amazon 資料 Firehose 會參考儲存於中的資料表定義。 AWS Glue若要為 Amazon 資料 Firehose 提供必要的存取權限 AWS Glue,請在您的政策中新增以下聲明。如需如何尋找表格ARN的詳細資訊,請參閱指定 AWS Glue 合資源ARNs

[{ "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetTableVersion", "glue:GetTableVersions" ], "Resource": "table-arn" }, { "Sid": "GetSchemaVersion", "Effect": "Allow", "Action": [ "glue:GetSchemaVersion" ], "Resource": ["*"] }]

從結構描述登錄檔取得結構描述的建議原則沒有資源限制。如需詳細資訊,請參閱開發人員指南中的反序列化程 AWS Glue 式IAM範例

授予 Firehose 存取 Amazon S3 目的地

當您使用 Amazon S3 目的地時,Amazon Data Firehose 會將資料交付到您的 S3 儲存貯體,並且可以選擇性地使用您擁有的 AWS KMS 金鑰進行資料加密。如果啟用了錯誤記錄,Amazon Data Firehose 也會將資料傳送錯誤傳送到您的 CloudWatch 日誌群組和串流。建立 Firehose 串流時,您必須具備IAM角色。Amazon Data Firehose 擔任該IAM角色,並可存取指定的儲存貯體、金鑰以及 CloudWatch 日誌群組和串流。

使用下列存取政策讓 Amazon 資料 Firehose 存取您的 S3 儲存貯體和 AWS KMS 金鑰。如果您未擁有 S3 儲存貯體,請新增 s3:PutObjectAcl 至 Amazon S3 動作清單。這可讓儲存貯體擁有者完全存取 Amazon 資料 Firehose 交付的物件。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

上述政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。如果您使用 Amazon MSK 作為源代碼,則可以用以下命令替換該語句:

{ "Sid":"", "Effect":"Allow", "Action":[ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:cluster/{{mskClusterName}}/{{clusterUUID}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:topic/{{mskClusterName}}/{{clusterUUID}}/{{mskTopicName}}" }, { "Sid":"", "Effect":"Allow", "Action":[ "kafka-cluster:DescribeGroup" ], "Resource":"arn:aws:kafka:{{mskClusterRegion}}:{{mskClusterAccount}}:group/{{mskClusterName}}/{{clusterUUID}}/*" }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

若要了解如何授予 Amazon 資料 Firehose 存取其他帳戶中 Amazon S3 目的地的權限,請參閱跨帳戶交付到 Amazon S3 目的地

授予 Firehose 訪問 Apache 冰山表目的地

在創建 Firehose 流和 Apache 冰山表使IAM用之前,您必須有一個角色。 AWS Glue請使用下列步驟來建立原則和IAM角色。Firehose 擔任此IAM角色並執行必要的動作。

  1. 登入 AWS Management Console 並開啟IAM主控台,位於https://console.aws.amazon.com/iam/

  2. 建立策略並在策略編輯器JSON中選擇。

  3. 新增下列內嵌政策,以授與 Amazon S3 許可,例如讀取/寫入許可、更新資料目錄中資料表的許可等。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetTable", "glue:using-iam-icebergGetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:<region>:<aws-account-id>:catalog", "arn:aws:glue:<region>:<aws-account-id>:database/*", "arn:aws:glue:<region>:<aws-account-id>:table/*/*" ] }, { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:<region>:<aws-account-id>:stream/<stream-name>" }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:<region>:<aws-account-id>:key/<key-id>" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::amzn-s3-demo-bucket/prefix*" } } }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:<region>:<aws-account-id>:log-group:<log-group-name>:log-stream:<log-stream-name>" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:<region>:<aws-account-id>:function:<function-name>:<function-version>" ] } ] }

    此政策具有可讓您存取 Amazon Kinesis Data Streams、叫用 Lambda 函數以KMS及存取金鑰的陳述式。如果您不使用任何這些資源,則可以移除相應的陳述式。

    如果啟用了錯誤記錄,Firehose 也會將資料傳送錯誤傳送到您的記 CloudWatch 錄群組和串流。為此,您必須設定記錄群組和記錄資料流名稱。如需記錄群組和記錄資料流名稱,請參閱使 CloudWatch 用日誌監控 Amazon 數據 Firehose

  4. 在內嵌政策中,取代 DOC-EXAMPLE-BUCKET 使用您的 Amazon S3 儲存貯體名稱,以 aws-account-id 及具有有效 AWS 帳戶 數量和資源區域的區域。

    注意

    此角色授與資料目錄中所有資料庫和資料表的權限。如果需要,您可以僅授予特定資料表和資料庫的權限。

  5. 建立原則之後,請開啟主IAM控台並建立「受信任」實體類型的IAM角色。AWS 服務

  6. 對於服務或使用案例,請選擇 Kinesis。對於使用案例,請選擇 Kinesis Firehose

  7. 在下一頁上,選擇在上一個步驟中建立的策略以附加到此角色。在檢閱頁面上,您會發現此角色已附加信任原則,授予 Firehose 服務擔任此角色的權限。建立角色時,Amazon 資料 Firehose 可假設該角色在 AWS Glue 和 S3 儲存貯體上執行必要的操作。

授予 Firehose 存取 Amazon Redshift 目的地

當您在使用 Amazon Amazon Redshift 目的地時授予 Amazon 資料 Firehose 的存取權時,請參閱以下內容。

IAM角色和存取原則

當您使用 Amazon Redshift 目的地時,Amazon 數據 Firehose 將數據作為中間位置交付到您的 S3 存儲桶。它可以選擇使用您擁有的密 AWS KMS 鑰進行數據加密。然後,亞馬遜數據 Firehose 將資料從 S3 儲存貯體載入到您的 Amazon Redshift 佈建的叢集或 Amazon Redshift 無伺服器工作群組。如果啟用了錯誤記錄,Amazon Data Firehose 也會將資料傳送錯誤傳送到您的 CloudWatch 日誌群組和串流。Amazon 資料 Firehose 會使用指定的 Amazon Redshift 使用者名稱和密碼來存取佈建的叢集或 Amazon Redshift 無伺服器工作群組,並使用IAM角色存取指定的儲存貯體、金鑰、 CloudWatch 日誌群組和串流。建立 Firehose 串流時,您必須具備IAM角色。

使用下列存取政策讓 Amazon 資料 Firehose 存取您的 S3 儲存貯體和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon S3 動作清單,以授予儲存貯體擁有者完全存取 Amazon Data Firehose 交付的物件。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

VPC存取 Amazon Redshift 佈建的叢集或 Amazon Redshift 無伺服器工作群組

如果您的 Amazon Redshift 佈建叢集或 Amazon Redshift 無伺服器工作群組位於虛擬私有雲端 (VPC) 中,則必須可透過公用 IP 地址公開存取該叢集。此外,透過解除封鎖 Amazon 資料 Firehose IP 地址,授予亞馬遜資料防 Firehose 存取您的 Amazon Redshift 佈建叢集或亞馬遜 Redshift 無伺服器工作群組的存取權。Amazon 資料 Firehose 目前針對每個可用區域使用一個區CIDR塊。

區域 CIDR塊
美國東部 (俄亥俄)

13.58.135.96/27

美國東部 (維吉尼亞北部) 52.70.63.192/27
美國西部 (加利佛尼亞北部) 13.57.135.192/27
美國西部 (奧勒岡) 52.89.255.224/27
AWS GovCloud (美國東部) 18.253.138.96/27
AWS GovCloud (美國西部) 52.61.204.160/27
加拿大 (中部) 35.183.92.128/27
加拿大西部 (卡加利) 40.176.98.192/27
亞太區域 (香港) 18.162.221.32/27
Asia Pacific (Mumbai) 13.232.67.32/27
亞太區域 (海德拉巴) 18.60.192.128/27
亞太區域 (首爾) 13.209.1.64/27
亞太區域 (新加坡) 13.228.64.192/27
亞太區域 (悉尼) 13.210.67.224/27
亞太區域 (雅加達) 108.136.221.64/27
亞太區域 (東京) 13.113.196.224/27
亞太區域 (大阪) 13.208.177.192/27
中國 (北京) 52.81.151.32/27
中國 (寧夏) 161.189.23.64/27
歐洲 (蘇黎世) 16.62.183.32/27
歐洲 (法蘭克福) 35.158.127.160/27
歐洲 (愛爾蘭) 52.19.239.192/27
歐洲 (倫敦) 18.130.1.96/27
歐洲 (巴黎) 35.180.1.96/27
歐洲 (斯德哥爾摩) 13.53.63.224/27
中東 (巴林) 15.185.91.0/27
南美洲 (聖保羅) 18.228.1.128/27
歐洲 (米蘭) 15.161.135.128/27
非洲 (開普敦) 13.244.121.224/27
中東 (UAE) 3.28.159.32/27
以色列 (特拉維夫) 51.16.102.0/27
亞太區域 (墨爾本) 16.50.161.128/27
亞太區域 (馬來西亞) 43.216.58.0/27

如需如何解鎖 IP 地址的詳細資訊,請參閱《Amazon Redshift 入門指南》中的授予叢集存取步驟

授予 Firehose 進入公共 OpenSearch 服務目的地

當您使用 OpenSearch 服務目的地時,Amazon Data Firehose 會將資料交付到您的 OpenSearch 服務叢集,並同時將故障或所有文件備份到 S3 儲存貯體。如果啟用了錯誤記錄,Amazon Data Firehose 也會將資料傳送錯誤傳送到您的 CloudWatch日誌群組和串流。Amazon Data Firehose 使用IAM角色來存取指定的 OpenSearch服務網域、S3 儲存貯體、 AWS KMS 金鑰以及 CloudWatch 日誌群組和串流。建立 Firehose 串流時,您必須具備IAM角色。

使用下列存取政策讓 Amazon 資料 Firehose 存取您的 S3 儲存貯體、 OpenSearch服務網域和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon S3 動作清單,以授予儲存貯體擁有者完全存取 Amazon Data Firehose 交付的物件。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "es:DescribeDomain", "es:DescribeDomains", "es:DescribeDomainConfig", "es:ESHttpPost", "es:ESHttpPut" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name", "arn:aws:es:region:account-id:domain/domain-name/*" ] }, { "Effect": "Allow", "Action": [ "es:ESHttpGet" ], "Resource": [ "arn:aws:es:region:account-id:domain/domain-name/_all/_settings", "arn:aws:es:region:account-id:domain/domain-name/_cluster/stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_mapping/type-name", "arn:aws:es:region:account-id:domain/domain-name/_nodes", "arn:aws:es:region:account-id:domain/domain-name/_nodes/stats", "arn:aws:es:region:account-id:domain/domain-name/_nodes/*/stats", "arn:aws:es:region:account-id:domain/domain-name/_stats", "arn:aws:es:region:account-id:domain/domain-name/index-name*/_stats", "arn:aws:es:region:account-id:domain/domain-name/" ] }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

要了解如何授予 Amazon 資料 Firehose 存取其他帳戶中 OpenSearch 服務叢集的權限,請參閱跨帳戶交付至 OpenSearch 服務目的地

授予 Firehose 存取 OpenSearch 服務目的地 VPC

如果您的 OpenSearch 服務網域位於中VPC,請確定您將上一節所述的許可授予 Amazon 資料 Firehose。此外,您需要向 Amazon 數據 Firehose 授予以下許可,以使其能夠訪問您的 OpenSearch VPC服務域。

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

建立 Firehose 串流後,請勿撤銷這些權限。如果您撤銷這些權限,則每當 OpenSearch 服務嘗試查詢或更新時,Firehose 串流都會降級或停止向您的服務網域傳送資料。ENIs

重要

當您指定要以私人方式將資料傳送至目的地的子網路時VPC,請確定所選子網路中有足夠數量的可用 IP 位址。如果指定的子網路中沒有可用的可用 IP 位址,Firehose 就無法建立或新增ENIs私有資料傳遞VPC,且傳遞將會降級或失敗。

當您建立或更新 Firehose 串流時,您必須指定 Firehose 在將資料傳送至您的 OpenSearch 服務網域時使用的安全性群組。您可以使用 OpenSearch Service 網域所使用的相同安全性群組或不同的安全性群組。如果您指定不同的安全性群組,請確定它允許輸出HTTPS流量傳入 OpenSearch Service 網域的安全性群組。同時確保 OpenSearch 服務網域的安全性群組允許您設定 Firehose 串流時指定的安全性群組的流HTTPS量。如果您對 Firehose 串流和 OpenSearch Service 網域使用相同的安全性群組,請確定安全群組輸入規則允許HTTPS流量。如需有關安全群組規則的詳細資訊,請參閱 Amazon VPC 文件中的安全群組規則

授予 Firehose 存取公用 OpenSearch無伺服器目的地

當您使用 OpenSearch 無伺服器目的地時,Amazon Data Firehose 會將資料交付到您的 OpenSearch 無伺服器集合,並同時將故障或所有文件備份到 S3 儲存貯體。如果啟用了錯誤記錄,Amazon Data Firehose 也會將資料傳送錯誤傳送到您的 CloudWatch 日誌群組和串流。Amazon Data Firehose 使用IAM角色來存取指定的 OpenSearch 無伺服器收集、S3 儲存貯體、 AWS KMS 金鑰以及 CloudWatch 日誌群組和串流。建立 Firehose 串流時,您必須具備IAM角色。

使用下列存取政策讓 Amazon Data Firehose 存取您的 S3 儲存貯體、 OpenSearch無伺服器網域和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon S3 動作清單,以授予儲存貯體擁有者完全存取 Amazon Data Firehose 交付的物件。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] }, { "Effect": "Allow", "Action": "aoss:APIAccessAll", "Resource": "arn:aws:aoss:region:account-id:collection/collection-id" } ] }

除了上述政策之外,您還必須將 Amazon Data Firehose 設定為在資料存取政策中指派下列最低許可:

[ { "Rules":[ { "ResourceType":"index", "Resource":[ "index/target-collection/target-index" ], "Permission":[ "aoss:WriteDocument", "aoss:UpdateIndex", "aoss:CreateIndex" ] } ], "Principal":[ "arn:aws:sts::account-id:assumed-role/firehose-delivery-role-name/*" ] } ]

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

授予 Firehose 存取 OpenSearch無伺服器目的地 VPC

如果您的 OpenSearch 無伺服器集合位於中VPC,請確定您將上一節所述的許可授予 Amazon Data Firehose。此外,您需要授予 Amazon 資料 Firehose 下列權限,才能讓它存取您的 OpenSearch 無伺服器集合。VPC

  • ec2:DescribeVpcs

  • ec2:DescribeVpcAttribute

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

  • ec2:DeleteNetworkInterface

重要

建立 Firehose 串流後,請勿撤銷這些權限。如果您撤銷這些權限,則每當 OpenSearch 服務嘗試查詢或更新時,Firehose 串流都會降級或停止向您的服務網域傳送資料。ENIs

重要

當您指定要以私人方式將資料傳送至目的地的子網路時VPC,請確定所選子網路中有足夠數量的可用 IP 位址。如果指定的子網路中沒有可用的可用 IP 位址,Firehose 就無法建立或新增ENIs私有資料傳遞VPC,且傳遞將會降級或失敗。

建立或更新 Firehose 串流時,您可以指定 Firehose 在將資料傳送至 OpenSearch 無伺服器集合時使用的安全性群組。您可以使用 OpenSearch 無伺服器集合所使用的相同安全性群組,或使用不同的安全性群組。如果您指定不同的安全性群組,請確定它允許輸出HTTPS流量傳送至 OpenSearch 無伺服器集合的安全性群組。此外,請確保 OpenSearch無伺服器集合的安全性群組允許來自您設定 Firehose 串HTTPS流時指定之安全性群組的流量。如果您對 Firehose 串流和 OpenSearch 無伺服器集合使用相同的安全性群組,請確定安全群組輸入規則允許HTTPS流量。如需有關安全群組規則的詳細資訊,請參閱 Amazon VPC 文件中的安全群組規則

授予 Firehose 存取 Splunk 目的地的存取權

當您使用 Splunk 目的地時,Amazon 資料 Firehose 會將資料傳送到您的 Splunk HTTP 事件收集器 () 端點。HEC它也會將該資料備份到您指定的 Amazon S3 儲存貯體,您可以選擇性地使用自己擁有的 AWS KMS 金鑰進行 Amazon S3 伺服器端加密。如果啟用了錯誤記錄,Firehose 會將資料傳送錯誤傳送到您的記 CloudWatch錄串流。您也可以使用 AWS Lambda 資料轉換。

如果您使用 AWS 負載平衡器,請確定它是 Classic Load Balancer 或 Application Load Balancer。此外,啟用以持續時間為基礎的黏性工作階段,且針對 Classic Load Balancer 停用 Cookie 到期,且 Application Load Balancer 的到期時間上限 (7 天)。如需如何執行此作業的詳細資訊,請參閱 C lassic Load Balancer 或 Application Load Balancer 載平衡器的持續時間型工作階段黏著性。

建立 Firehose 串流時,您必須具備IAM角色。Firehose 會擔任該IAM角色,並取得指定值區、金鑰、 CloudWatch 記錄群組和串流的存取權。

使用下列存取政策啟用 Amazon 資料 Firehose 存取您的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon S3 動作清單,以授予儲存貯體擁有者完全存取 Amazon Data Firehose 交付的物件。此政策也授予 Amazon 資料 Firehose 存取權以 CloudWatch 進行錯誤記錄和 AWS Lambda 資料轉換。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。Amazon 數據 Firehose 不用IAM於訪問 Splunk。要訪問 Splunk,它使用您的HEC令牌。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

在中訪問溢出 VPC

如果您的 Splunk 平台位於一個VPC,則必須使用公共 IP 地址可公開訪問。此外,透過解除封鎖 Amazon 資料 Firehose IP 地址,授予 Amazon 資料 Firehose 存取您的 Splunk 平台的權限。Amazon 數據 Firehose 目前使用以下CIDR塊。

區域 CIDR塊
美國東部 (俄亥俄)

18.216.68.160/27, 18.216.170.64/27, 18.216.170.96/27\

美國東部 (維吉尼亞北部) 34.238.188.128/26, 34.238.188.192/26, 34.238.195.0/26
美國西部 (加利佛尼亞北部) 13.57.180.0/26
美國西部 (奧勒岡) 34.216.24.32/27, 34.216.24.192/27, 34.216.24.224/27
AWS GovCloud (美國東部) 18.253.138.192/26
AWS GovCloud (美國西部) 52.61.204.192/26
亞太區域 (香港) 18.162.221.64/26
Asia Pacific (Mumbai) 13.232.67.64/26
亞太區域 (首爾) 13.209.71.0/26
亞太區域 (新加坡) 13.229.187.128/26
亞太區域 (雪梨) 13.211.12.0/26
亞太區域 (東京) 13.230.21.0/27, 13.230.21.32/27
加拿大 (中部) 35.183.92.64/26
加拿大西部 (卡加利) 40.176.98.128/26
歐洲 (法蘭克福) 18.194.95.192/27, 18.194.95.224/27, 18.195.48.0/27
歐洲 (愛爾蘭) 34.241.197.32/27, 34.241.197.64/27, 34.241.197.96/27
歐洲 (倫敦) 18.130.91.0/26
歐洲 (巴黎) 35.180.112.0/26
歐洲 (斯德哥爾摩) 13.53.191.0/26
中東 (巴林) 15.185.91.64/26
南美洲 (聖保羅) 18.228.1.192/26
歐洲 (米蘭) 15.161.135.192/26
非洲 (開普敦) 13.244.165.128/26
亞太區域 (大阪) 13.208.217.0/26
中國 (北京) 52.81.151.64/26
中國 (寧夏) 161.189.23.128/26
亞太區域 (雅加達) 108.136.221.128/26
中東 (UAE) 3.28.159.64/26
以色列 (特拉維夫) 51.16.102.64/26
歐洲 (蘇黎世) 16.62.183.64/26
亞太區域 (海德拉巴) 18.60.192.192/26
亞太區域 (墨爾本) 16.50.161.192/26
亞太區域 (馬來西亞) 43.216.44.192/26

使用 Amazon 資料 VPC Firehose 將流程記錄導入 Splunk

若要進一步了解如何建立VPC流程記錄訂閱、發佈到 Firehose,然後將VPC流程日誌傳送到支援的目的地,請參閱使用 Amazon Data Firehose 將VPC流程日誌導入 Splunk

存取雪花或HTTP終點

當目的地為HTTP端點或雪花公用叢集時,沒有 Amazon 資料 Firehose 特定 AWS IP 位址範圍的子集。

若要將 Firehose 新增至公用雪花叢集或公用HTTP或HTTPS端點的允許清單,請將所有目前的 AWS IP 位址範圍新增至輸入規則。

注意

通知不一定來自與其相關主題位於相同地 AWS 區的 IP 位址。您必須包含所有區域的 AWS IP 位址範圍。

授予 Firehose 存取雪花目的地

當您使用雪花作為目的地時,Firehose 會使用您的雪花帳戶將資料傳送至雪花帳戶URL。它也會將錯誤資料備份到您指定的 Amazon 簡單儲存體服務儲存貯體,您也可以選擇使用自己擁有的 AWS Key Management Service 金鑰進行 Amazon S3 伺服器端加密。如果啟用了錯誤記錄,Firehose 會將資料傳送錯誤傳送至您的記 CloudWatch 錄串流。

在建立 Firehose 串流之前,您必須具備IAM角色。Firehose 會擔任該IAM角色,並取得指定值區、金鑰和 CloudWatch 記錄群組和串流的存取權。使用下列存取政策來啟用 Firehose 存取您的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon 簡單儲存服務動作清單,以授予儲存貯體擁有者對 Firehose 交付的物件的完整存取權。此政策也會授予 Firehose 存取權以 CloudWatch 進行錯誤記錄。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。Firehose 不會用IAM來存取雪花。對於訪問雪花,它使用您的雪花帳戶網址和 PrivateLink Vpce ID 在私人集群的情況下。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] } ] }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

存取雪花 VPC

如果您的雪花叢集已啟用私人連結,Firehose 會使用 VPC Endpoint 將資料傳遞至您的私人叢集,而無需經過公用網際網路。為此,請創建 Snowflake 網絡規則以允許 AWS 區域 您的集群所在AwsVpceIds的以下內容的輸入。如需詳細資訊,請參閱 S nowflake 使用指南中的建立網路規則

VPC根據叢集所在區域使用的端點 ID
AWS 區域 VPCE IDs
美國東部 (俄亥俄)

Vpce-0d96 咖啡因

VPC-0C343D48f537b

美國東部 (維吉尼亞北部)

vpce-0b4d7e8e141ba8

VPC-0B75cd681fb507352

Vpce-一零三 e63820ec00D8

VPC-0C2CFC51DC2882422

副作用 -06 卡 862f019e056

VPC-020 加拿大氯乙烯

副作用 -0b80504a1a783cd70

Vpce-0289 b9f0b5259a96

VPC-0D7添加8628bd69a12

VPC-02bfb5966cc59b2af

副作用 -09e7074af878b2

vpce-049b52e96cc1a2165

vpce-0bb6c7 b7a8a86bb

視頻 -03 b22d599f51e80f3

視頻 -01 日 60fc106 菲 1

vpce-0186d20a4b24 微分

副作用 -0533906401a36e416

VPC-05111fb13d396710e

Vpce-0694613f4fbd6f514

vp-09b21cb25 肥胖

副作用 -06029c3550e4d2399

VPC-00961862A21b033DA

VPC-01620b9ae33273587

副作用 -078CF4ec226880 交流 9

VPC-0D711bf076ce56381

vpce-066b7e13CBFCA6e

VPC-0674541252D9cc26

vpce-03540b88 德伯

副作用 -0b1828e79ad394b95

VPC-0DC0e6f001fb1a60d

VPC-0D8f82e71a244098a

副作用 -00e374d9e3f1af5

Vpce-0C1e3d6631

美國西部 (奧勒岡)

視頻 -0f60f72da4cd1e7

Vpce-0c60D21 EB8b1669FD

vpce-01c4e3e29 阿夫特夫

vpce-0cc6bf2a88da139

副作用 -0797e08e169e50662

Vpce-033cbe480381b5c0e

Vpce-005 德堡 8f9eb10A5

視頻 -08ec2f386c809e889

視頻 -0856d14310857b545

歐洲 (法蘭克福)

Vpce-068dbb7d71c9460fb

視頻 -0a7a7f0942d4ec9

歐洲 (愛爾蘭)

vpce-06857e59c005a6276

Vpce-04390f4f8b75F2

Vpce-011 fd2b1f0A172FD

亞太區域 (東京)

副作用 -06369e5258144e68a

VPC-0f2363cdb8

亞太區域 (新加坡)

VPC-049cd46cce7a12d52

vpce-0e8965a1a4bdb8941

亞太區域 (首爾)

Vpce-0aa444d9001e1FA1

Vpce-04a49d4dcfd02b884

亞太區域 (悉尼)

vpce-048a60a182c52be63

Vpce-03c19949787fd1859

亞太區域 (孟買)

vpce-0d68CB822f6f0db68

視頻 -0517d32692 芙德 2

歐洲 (倫敦)

VPC-0FD1874A0ba3b9374

VPC-08091b1a85e206029

南美洲 (聖保羅)

vpce-065169b8144e4f12e

VPC-0493699f0e5762D63

加拿大 (中部)

VPC-07E6ed81689d5271

VPC-0f53239730541394c

Europe (Paris)

vpce-09419680077e6488a

視頻 -0ea81ba2c08140c14

亞太區域 (大阪)

vpce-0a9f003e6a7e38c05

Vpce-02886510b897b1c5a

歐洲 (斯德哥爾摩)

VPC-0D96410833219025A

Vpce-060A32f9a75ba969f

亞太區域 (雅加達)

VPC-00A9a25e5C649

Vpce-004ae2de34338a856

授予 Firehose 對HTTP端點目的地的存取權

您可以使用 Amazon 資料 Firehose 將資料傳送到任何HTTP端點目的地。Amazon Data Firehose 也會將該資料備份到您指定的 Amazon S3 儲存貯體,您可以選擇性地使用自己擁有的 AWS KMS 金鑰進行 Amazon S3 伺服器端加密。如果啟用了錯誤記錄,Amazon Data Firehose 會將資料傳送錯誤傳送到您的 CloudWatch 日誌串流。您也可以使用 AWS Lambda 資料轉換。

建立 Firehose 串流時,您必須具備IAM角色。Amazon Data Firehose 擔任該IAM角色,並可存取指定的儲存貯體、金鑰以及 CloudWatch 日誌群組和串流。

使用下列存取政策可讓 Amazon 資料 Firehose 存取您為資料備份指定的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增s3:PutObjectAcl至 Amazon S3 動作清單,以授予儲存貯體擁有者完全存取 Amazon Data Firehose 交付的物件。此政策也授予 Amazon 資料 Firehose 存取權以 CloudWatch 進行錯誤記錄和 AWS Lambda 資料轉換。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。

重要

Amazon 資料 Firehose 不會用IAM於存取受支援的第三方服務提供者擁有的HTTP端點目的地,包括資料多、啟發、MongoDB LogicMonitor、新遺物、濺射或相撲邏輯。若要存取受支援的第三方服務供應商所擁有的指定HTTP端點目的地,請聯絡該服務供應商以取得啟用資料從 Amazon Data Firehose 傳遞至該服務所需的金API鑰或存取金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] }, { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::bucket-name/prefix*" } } }, { "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

如需有關允許其他 AWS 服務存取您的 AWS 資源的詳細資訊,請參閱《IAM使用指南》中的建立角色以將權限委派給 AWS 服務

重要

目前,Amazon 數據 Firehose 確實NOT支持將數據交付到HTTP. VPC

Amazon 的跨帳戶交付 MSK

當您從 Firehose 帳戶(例如,帳戶 B)建立 Firehose 串流,而您的來源是另一個 AWS 帳戶(帳戶 A)中的MSK叢集時,您必須具備下列設定。

帳戶 A:

  1. 在 Amazon 主MSK控台中,選擇佈建的叢集,然後選擇「屬性」

  2. [網路設定] 下,選擇 [編輯],然後開啟 [多重VPC連線]。

  3. 安全性設定下,選擇編輯叢集

    1. 如果叢集尚未設定政策,請勾選包含 Firehose 服務主體啟用 Firehose 跨帳戶 S3 交付。 AWS Management Console 會自動產生具有適當權限的策略。

    2. 如果叢集已設定政策,請將下列許可新增至現有政策:

      { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20" // ARN of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::arn:role/mskaasTestDeliveryRole" }, "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*"//topic of the cluster }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::233450236687:role/mskaasTestDeliveryRole" }, "Action": "kafka-cluster:DescribeGroup", "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }
  4. AWS 主體下,輸入帳戶 B 的主要 ID。

  5. 在「主題」下,指定您希望 Firehose 串流從中擷取資料的 Apache Kafka 主題。建立 Firehose 串流之後,您就無法更新此主題。

  6. 選擇 Save changes (儲存變更)

帳戶 B:

  1. 在 Firehose 主控台中,選擇使用帳戶 B 建立 Firehose 串流

  2. 來源下,選擇 Amazon Managed Streaming for Apache Kafka

  3. 來源設定下,對於 Apache Kafka 叢集的 Amazon 受管串流,在帳戶 A ARN 中輸入 Amazon MSK 叢集的。

  4. 在「主題」下,指定您希望 Firehose 串流從中擷取資料的 Apache Kafka 主題。建立 Firehose 串流之後,您就無法更新此主題。

  5. 在 [傳送串流名稱] 中,指定 Firehose 串流的名稱。

在帳戶 B 中,當您建立 Firehose 串流時,您必須具有一個IAM角色 (在使用時預設建立 AWS Management Console),該角色會授予 Firehose 串流對已設定主題之跨帳戶 Amazon MSK 叢集的「讀取」存取權。

以下是由 AWS Management Console設定的內容:

{ "Sid": "", "Effect": "Allow", "Action": [ "kafka:GetBootstrapBrokers", "kafka:DescribeCluster", "kafka:DescribeClusterV2", "kafka-cluster:Connect" ], "Resource": "arn:aws:kafka:us-east-1:arn:cluster/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeTopic", "kafka-cluster:DescribeTopicDynamicConfiguration", "kafka-cluster:ReadData" ], "Resource": "arn:aws:kafka:us-east-1:arn:topic/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/mskaas_test_topic" //topic of the cluster }, { "Sid": "", "Effect": "Allow", "Action": [ "kafka-cluster:DescribeGroup" ], "Resource": "arn:aws:kafka:us-east-1:arn:group/DO-NOT-TOUCH-mskaas-provisioned-privateLink/xxxxxxxxx-2f3a-462a-ba09-xxxxxxxxxx-20/*" //topic of the cluster }, }

接下來,您可以完成設定記錄轉換和記錄格式轉換的選用步驟。如需詳細資訊,請參閱(選擇性) 設定記錄轉換和格式轉換

跨帳戶交付到 Amazon S3 目的地

您可以使用 AWS CLI 或亞馬遜數據火管APIs,在一個帳戶中使用不同 AWS 帳戶中的 Amazon S3 目的地建立 Firehose 串流。下列程序顯示設定帳戶 A 擁有的 Firehose 串流以將資料傳送至帳戶 B 所擁有的 Amazon S3 儲存貯體的範例。

  1. 使用授予 Firehose 存取 Amazon S3 目的地中所述的步驟,在帳戶 A 下建立IAM角色。

    注意

    存取政策中指定的 Amazon S3 儲存貯體在此範例中為 B 帳戶所有。請務必在存取政策中新增 s3:PutObjectAcl Amazon S3 動作清單,以便授予帳戶 B 對 Amazon Data Firehose 交付之物件的完整存取權。跨帳戶交付需要此許可。Amazon 數據 Firehose 將請求上的 x-amz-acl「」標題設置為「bucket-owner-full-control」。

  2. 若要允許從先前建立的IAM角色存取,請在帳戶 B 下建立 S3 儲存貯體政策,以下程式碼是儲存貯體政策的範例。如需詳細資訊,請參閱使用儲存貯體政策和使用者政策

    { "Version": "2012-10-17", "Id": "PolicyID", "Statement": [ { "Sid": "StmtID", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::accountA-id:role/iam-role-name" }, "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }
  3. 使用您在步驟 1 中建立的IAM角色,在帳戶 A 下建立 Firehose 串流。

跨帳戶交付至 OpenSearch 服務目的地

您可以使用 AWS CLI 或 Amazon 資料 Firehose APIs 在一個帳戶中建立 Firehose 串流,其中包含不同 AWS 帳戶的 OpenSearch 服務目的地。下列程序顯示如何在帳戶 A 下建立 Firehose 串流,並將其設定為將資料傳送至帳戶 B 所擁有的 OpenSearch 服務目的地的範例。

  1. 使用中所述的步驟,在帳戶 A 下建立IAM角色授予 Firehose 進入公共 OpenSearch 服務目的地

  2. 若要允許從您在上一個步驟中建立的IAM角色存取,請在帳戶 B 下建立 OpenSearch 服務原則,以下JSON是範例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::Account-A-ID:role/firehose_delivery_role " }, "Action": "es:ESHttpGet", "Resource": [ "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_all/_settings", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_cluster/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_mapping/roletest", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_nodes/*/stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/roletest*/_stats", "arn:aws:es:us-east-1:Account-B-ID:domain/cross-account-cluster/" ] } ] }
  3. 使用您在步驟 1 中建立的IAM角色,在帳戶 A 下建立 Firehose 串流。當您建立 Firehose 串流時,請使用 AWS CLI 或 Amazon 資料 Firehose,APIs並指定ClusterEndpoint欄位而不是用DomainARN於 OpenSearch 服務。

注意

若要在不同帳戶中具有 OpenSearch 服務目標的 AWS 帳戶中建立 Firehose 串流,您必須使用 AWS CLI 或 Amazon 資料 Fire APIs hose。您無法使用建 AWS Management Console 立這種跨帳戶設定。

使用標籤控制存取

您可以在IAM政策中使用可選Condition元素 (或Condition區塊),根據標籤金鑰和值微調對 Amazon Data Firehose 操作的存取。以下小節說明如何針對不同的 Amazon 資料 Firehose 作業執行此操作。如需有關使用Condition元素和可在其中使用之運算子的詳細資訊,請參閱IAMJSON原則元素:條件

CreateDeliveryStream

若是 CreateDeliveryStream 操作,請使用 aws:RequestTag 條件金鑰。在下方範例中,MyKeyMyValue 分別表示標籤的金鑰和對應值。如需詳細資訊,請參閱 瞭解標籤的基本

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "firehose:CreateDeliveryStream", "firehose:TagDeliveryStream" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/MyKey": "MyValue" } } }] }

TagDeliveryStream

若是 TagDeliveryStream 操作,請使用 aws:TagKeys 條件金鑰。在下方範例中,MyKey 為標籤金鑰範例。​

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:TagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

UntagDeliveryStream

若是 UntagDeliveryStream 操作,請使用 aws:TagKeys 條件金鑰。在下方範例中,MyKey 為標籤金鑰範例。​

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "firehose:UntagDeliveryStream", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "MyKey" } } } ] }

ListDeliveryStreams

ListDeliveryStreams 無法搭配使用​以標籤為基礎的存取控制。

其他操作

對於除、、和以外的所有 Firehose 作業 CreateDeliveryStream TagDeliveryStream UntagDeliveryStreamListDeliveryStreams,請使用aws:RequestTag條件鍵。在下方範例中,MyKeyMyValue 分別表示標籤的金鑰和對應值。

ListDeliveryStreams」中,使用firehose:ResourceTag條件鍵根據該 Firehose 串流上的標籤來控制存取。

在下方範例中,MyKeyMyValue 分別表示標籤的金鑰和對應值。此原則僅適用於具有名稱為MyKey值為的MyValue標籤的資料 Firehose 串流。如需有關根據資源標籤控制存取的詳細資訊,請參閱《使用指南》中的〈使用標籤控制 AWS 資源存。IAM

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "firehose:DescribeDeliveryStream", "Resource": "*", "Condition": { "StringEquals": { "firehose:ResourceTag/MyKey": "MyValue" } } } ] }