使用 Amazon Data Firehose 控制存取 - Amazon Data Firehose

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

使用 Amazon Data Firehose 控制存取

下列各節說明如何控制對 Amazon Data Firehose 資源的存取。其涵蓋的資訊包括如何授予應用程式存取權,以便將資料傳送至 Firehose 串流。它們也說明了如何授予 Amazon Data Firehose 存取您的 Amazon Simple Storage Service (Amazon S3) 儲存貯體、Amazon Redshift 叢集或 Amazon OpenSearch Service 叢集,以及如果您使用 Datadog、Dynatrace、MongoDB LogicMonitor、New Relic、Splunk 或 Sumo Logic 作為目的地時所需的存取許可。最後,您可以在本主題指南中找到如何設定 Amazon Data Firehose,以便將資料交付至屬於不同 AWS 帳戶的目的地。管理所有這些存取形式的技術為 AWS Identity and Access Management (IAM)。如需 的詳細資訊IAM,請參閱什麼是 IAM?

授予 Firehose 資源的存取權

若要讓您的應用程式存取 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 MSKCreateVpcConnectionAPI操作的許可。

允許 Firehose 擔任IAM角色

本節說明授予 Amazon Data Firehose 擷取、處理和將資料從來源傳遞到目的地的許可和政策。

注意

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

Amazon Data Firehose 會將 IAM角色用於 Firehose 串流處理和交付資料所需的所有許可。請確定下列信任政策已連接至該角色,以便 Amazon Data 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 Data Firehose 從指定 Amazon MSK叢集擷取來源資料的許可。請確定下列信任政策已連接至該角色,以便 Amazon Data 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 Data Firehose 會參考儲存在 中的資料表定義 AWS Glue。若要為 Amazon Data 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 Data Firehose 存取您的 S3 儲存貯體和 AWS KMS 金鑰。如果您未擁有 S3 儲存貯體,請新增 s3:PutObjectAcl 至 Amazon S3 動作清單。這將授予儲存貯體擁有者對 Amazon Data 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:::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: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:::amzn-s3-demo-bucket/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 Data Firehose 對另一個帳戶中 Amazon S3 目的地的存取權,請參閱 跨帳戶交付至 Amazon S3 目的地

授予 Firehose 對 Apache Iceberg 資料表目的地的存取權

您必須先具有 IAM角色,才能使用 建立 Firehose 串流和 Apache Iceberg 資料表 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:GetDatabase", "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 Data Firehose

  4. 在內嵌政策中,取代 amzn-s3-demo-bucket 您的 Amazon S3 儲存貯體名稱, aws-account-id以及資源的有效 AWS 帳戶 編號和區域。

    注意

    此角色會授予資料目錄中所有資料庫和資料表的許可。如果您想要,您只能授予特定資料表和資料庫的許可。

  5. 建立政策後,請開啟IAM主控台,並使用 建立IAM角色AWS 服務作為受信任實體類型

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

  7. 在下一頁中,選擇要連接至此角色的上一個步驟中建立的政策。在檢閱頁面上,您會找到已連接至此角色的信任政策,授予 Firehose 服務擔任此角色的許可。當您建立角色時,Amazon Data Firehose 可以擔任其在 和 S3 儲存貯體上執行 AWS Glue 必要的操作。

授予 Firehose 對 Amazon Redshift 目的地的存取權

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

IAM 角色和存取政策

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

使用下列存取政策,讓 Amazon Data Firehose 存取您的 S3 儲存貯體和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增至 Amazon S3 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者對 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 Serverless 工作群組

如果您的 Amazon Redshift 佈建叢集或 Amazon Redshift Serverless 工作群組位於虛擬私有雲端 (VPC),則必須使用公有 IP 地址公開存取。此外,透過取消封鎖 Amazon Data Firehose IP 地址,授予 Amazon Data Firehose 存取您的 Amazon Redshift 佈建叢集或 Amazon Redshift Serverless 工作群組。Amazon Data 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 Data Firehose 存取您的 S3 儲存貯 OpenSearch體、服務網域和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增至 Amazon S3 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者對 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 Data Firehose 存取另一個帳戶中 OpenSearch 的服務叢集,請參閱 跨帳戶交付至 OpenSearch 服務目的地

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

如果您的 OpenSearch 服務網域位於 中VPC,請確定您授予 Amazon Data Firehose 上一節所述的許可。此外,您需要授予 Amazon Data Firehose 下列許可,讓其能夠存取您 OpenSearch Service 網域的 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 對公 OpenSearch有無伺服器目的地的存取權

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

使用下列存取政策,讓 Amazon Data Firehose 能夠存取您的 S3 儲存貯 OpenSearch體、無伺服器網域和 AWS KMS 金鑰。如果您不擁有 S3 儲存貯體,請新增至 Amazon S3 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者對 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 Serverless 集合位於 中VPC,請確定您授予 Amazon Data Firehose 上一節所述的許可。此外,您需要授予 Amazon Data Firehose 下列許可,讓其能夠存取您 OpenSearch Serverless 集合的 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 Serverless 集合相同的安全群組或不同的安全群組。如果您指定不同的安全群組,請確保它允許傳出HTTPS流量到 OpenSearch Serverless 集合的安全群組。此外, OpenSearch請確定 Serverless 集合的安全群組允許來自您在設定 Firehose 串流時所指定安全群組的HTTPS流量。如果您同時針對 Firehose 串流和 OpenSearch Serverless 集合使用相同的安全群組,請確定安全群組傳入規則允許HTTPS流量。如需安全群組規則的詳細資訊,請參閱 Amazon VPC 文件中的安全群組規則

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

當您使用 Splunk 目的地時,Amazon Data Firehose 會將資料傳遞到您的 Splunk HTTP Event Collector (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 天)。如需如何執行此操作的詳細資訊,請參閱 Classic Load BalancerApplication Load Balancer的持續時間型工作階段黏性。

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

使用下列存取政策,讓 Amazon Data Firehose 存取您的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增至 Amazon S3 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者對 Amazon Data Firehose 交付物件的完整存取權。此政策也授予 Amazon Data Firehose 存取權, CloudWatch 以記錄錯誤,以及 AWS Lambda 授予 以轉換資料。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。Amazon Data 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 服務

在 中存取 Splunk VPC

如果您的 Splunk 平台位於 中VPC,則必須使用公有 IP 地址公開存取。此外,透過取消封鎖 Amazon Data Firehose IP 地址,授予 Amazon Data Firehose 對 Splunk 平台的存取權。Amazon Data 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 Data Firehose 將VPC流程日誌擷取至 Splunk

若要進一步了解如何建立VPC流程日誌訂閱,請發佈至 Firehose,並將VPC流程日誌傳送至支援的目的地,請參閱使用 Amazon Data Firehose 將VPC流程日誌擷取至 Splunk。

存取 Snowflake 或HTTP端點

當目的地為HTTP端點或 Snowflake 公有叢集時,Amazon Data Firehose 沒有特定的 AWS IP 地址範圍子集。

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

注意

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

授予 Firehose 對 Snowflake 目的地的存取權

當您使用 Snowflake 做為目的地時,Firehose 會使用 Snowflake 帳戶 將資料傳遞至 Snowflake 帳戶URL。它也可以將錯誤資料備份到您指定的 Amazon Simple Storage Service 儲存貯體,並且您可以選擇使用您擁有的 AWS Key Management Service 金鑰進行 Amazon S3 伺服器端加密。如果啟用錯誤記錄,Firehose 會將資料交付錯誤傳送到您的 CloudWatch Logs 串流。

您必須先具有 IAM角色,才能建立 Firehose 串流。Firehose 會擔任該IAM角色,並存取指定的儲存貯體、金鑰和 CloudWatch Logs 群組和串流。使用下列存取政策,讓 Firehose 存取您的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增至 Amazon Simple Storage Service 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者 Firehose 交付物件的完整存取權。此政策也會授予 Firehose 對 的存取權 CloudWatch ,以進行錯誤記錄。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。Firehose 不會用來IAM存取 Snowflake。若要存取 Snowflake,它會在私有叢集的情況下使用您的 Snowflake 帳戶 Url 和 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 服務

在 中存取 Snowflake VPC

如果您的 Snowflake 叢集已啟用私有連結,Firehose 會使用VPC端點將資料傳遞至您的私有叢集,而無需透過公有網際網路。為此,請建立 Snowflake 網路規則,以允許AwsVpceIds AWS 區域 叢集所在的從下列項目傳入。如需詳細資訊,請參閱 Snowflake 使用者指南中的建立網路規則

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

vpce-0d96cafcd96a50aeb

vpce-0cec34343d48f537b

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

vpce-0b4d7e8478e141ba8

vpce-0b75cd681fb507352

vpce-01c03e63820ec00d8

vpce-0c2cfc51dc2882422

vpce-06ca862f019e4e056

vpce-020cda0cfa63f8d1c

vpce-0b80504a1a783cd70

vpce-0289b9ff0b5259a96

vpce-0d7add8628bd69a12

vpce-02bfb5966cc59b2af

vpce-09e707674af878bf2

vpce-049b52e96cc1a2165

vpce-0bb6c7b7a8a86cdbb

vpce-03b22d599f51e80f3

vpce-01d60dc60fc106fe1

vpce-0186d20a4b24ecbef

vpce-0533906401a36e416

vpce-05111fb13d396710e

vpce-0694613f4fbd6f514

vpce-09b21cb25fe4cc4f4

vpce-06029c3550e4d2399

vpce-00961862a21b033da

vpce-01620b9ae33273587

vpce-078cf4ec226880ac9

vpce-0d711bf076ce56381

vpce-066b7e13cbfca6f6e

vpce-0674541252d9ccc26

vpce-03540b88dedb4b000

vpce-0b1828e79ad394b95

vpce-0dc0e6f001fb1a60d

vpce-0d8f82e71a244098a

vpce-00e374d9e3f1af5ce

vpce-0c1e3d6631ddb442f

美國西部 (奧勒岡)

vpce-0f60f72da4cd1e4e7

vpce-0c60d21eb8b1669fd

vpce-01c4e3e29afdafbef

vpce-0cc6bf2a88da139de

vpce-0797e08e169e50662

vpce-033cbe480381b5c0e

vpce-00debbdd8f9eb10a5

vpce-08ec2f386c809e889

vpce-0856d14310857b545

歐洲 (法蘭克福)

vpce-068dbb7d71c9460fb

vpce-0a7a7f095942d4ec9

歐洲 (愛爾蘭)

vpce-06857e59c005a6276

vpce-04390f4f8778b75f2

vpce-011fd2b1f0aa172fd

亞太區域 (東京)

vpce-06369e5258144e68a

vpce-0f2363cdb8926fbe8

亞太區域 (新加坡)

vpce-049cd46cce7a12d52

vpce-0e8965a1a4bdb8941

亞太區域 (首爾)

vpce-0aa444d9001e1faa1

vpce-04a49d4dcfd02b884

亞太區域 (悉尼)

vpce-048a60a182c52be63

vpce-03c19949787fd1859

亞太區域 (孟買)

vpce-0d68cb822f6f0db68

vpce-0517d32692ffcbde2

歐洲 (倫敦)

vpce-0fd1874a0ba3b9374

vpce-08091b1a85e206029

南美洲 (聖保羅)

vpce-065169b8144e4f12e

vpce-0493699f0e5762d63

加拿大 (中部)

vpce-07e6ed81689d5271f

vpce-0f53239730541394c

Europe (Paris)

vpce-09419680077e6488a

vpce-0ea81ba2c08140c14

亞太區域 (大阪)

vpce-0a9f003e6a7e38c05

vpce-02886510b897b1c5a

歐洲 (斯德哥爾摩)

vpce-0d96410833219025a

vpce-060a32f9a75ba969f

亞太區域 (雅加達)

vpce-00add4b9a25e5c649

vpce-004ae2de34338a856

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

您可以使用 Amazon Data 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 Data Firehose 存取您為資料備份指定的 S3 儲存貯體。如果您不擁有 S3 儲存貯體,請新增至 Amazon S3 動作s3:PutObjectAcl清單,這會授予儲存貯體擁有者對 Amazon Data Firehose 交付物件的完整存取權。此政策也授予 Amazon Data Firehose 存取權, CloudWatch 以記錄錯誤,以及 AWS Lambda 授予 以轉換資料。此政策亦有允許存取 Amazon Kinesis Data Streams 的陳述式。如果您不使用 Amazon Kinesis Data Streams 作為資料來源,可移除該陳述式。

重要

Amazon Data Firehose 不會用來存取受支援的第三方服務供應商擁有IAM的HTTP端點目的地,包括 Datadog、Dynatrace LogicMonitor、MongoDB 、New Relic、Splunk 或 Sumo Logic。若要存取受支援的第三方服務供應商擁有的指定HTTP端點目的地,請聯絡該服務供應商以取得 APIAmazon Data 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "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:::amzn-s3-demo-bucket/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 Data 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 Managed Streaming 叢集 ,在帳戶 A 中輸入 Amazon MSK叢集ARN的 。

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

  5. 交付串流名稱中指定 Firehose 串流的名稱。

在帳戶 B 中,當您建立 Firehose 串流時,您必須具有角色 (使用 時預設建立 AWS Management Console),該IAM角色會授予 Firehose 串流 'read' 對已設定主題跨帳戶 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 或 Amazon Data Firehose APIs 在不同帳戶中具有 Amazon S3 目的地的帳戶中 AWS 建立 Firehose 串流。下列程序顯示設定帳戶 A 擁有的 Firehose 串流,將資料交付至帳戶 B 擁有的 Amazon S3 儲存貯體的範例。

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

    注意

    存取政策中指定的 Amazon S3 儲存貯體在此範例中為 B 帳戶所有。請務必s3:PutObjectAcl將 新增至存取政策中的 Amazon S3 動作清單,該政策會授予帳戶 B 對 Amazon Data Firehose 交付之物件的完整存取權。跨帳戶交付需要此許可。Amazon Data 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:::amzn-s3-demo-bucket", "arn:aws:s3:::amzn-s3-demo-bucket/*" ] } ] }
  3. 使用您在步驟 1 中建立IAM的角色,在帳戶 A 下建立 Firehose 串流。

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

您可以使用 AWS CLI 或 Amazon Data FirehoseAPIs,在具有 AWS 不同帳戶之 OpenSearch 服務目的地的帳戶中建立 Firehose 串流。下列程序顯示如何在帳戶 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 Data Firehose,APIs並指定ClusterEndpoint欄位,而不是 DomainARN OpenSearch Service 的欄位。

注意

若要在不同 AWS 帳戶中具有 OpenSearch 服務目的地的帳戶中建立 Firehose 串流,您必須使用 AWS CLI 或 Amazon Data Firehose APIs。您無法使用 AWS Management Console 來建立這種跨帳戶組態。

使用標籤控制存取

您可以在IAM政策中使用選用Condition元素 (或Condition區塊 ),根據標籤索引鍵和值微調對 Amazon Data Firehose 操作的存取。下列子節說明如何針對不同的 Amazon Data 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 無法搭配使用​以標籤為基礎的存取控制。

其他操作

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

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

在下方範例中,MyKeyMyValue 分別表示標籤的金鑰和對應值。此政策僅適用於標籤名為 MyKey且值為 的 Data Firehose 串流MyValue。如需根據資源標籤控制存取的詳細資訊,請參閱 IAM 使用者指南 中的使用標籤控制 AWS 資源的存取

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