選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Amazon Data Firehose 將資料串流至資料表

焦點模式
使用 Amazon Data Firehose 將資料串流至資料表 - Amazon Simple Storage Service

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

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

Amazon Data Firehose 是一項全受管服務,可將即時串流資料交付至目的地,例如 Amazon S3、Amazon Redshift、Amazon OpenSearch Service、、 Apache Iceberg資料表和自訂 HTTP 端點Splunk,或受支援的第三方服務供應商擁有的 HTTP 端點。使用 Amazon Data Firehose,您將不再需要編寫應用程式或管理資源。將您的資料產生來源設定為把資料傳送至 Firehose,它就會將資料自動交付至您指定的目的地。您也可以將 Firehose 設定為在交付資料前轉換您的資料。若要進一步了解 Amazon Data Firehose,請參閱什麼是 Amazon Data Firehose?

將資料表儲存貯體與 AWS 分析服務整合之後,請執行下列動作:

  1. 設定 Firehose 將資料交付到您的 S3 資料表。若要這樣做,您可以建立允許 Firehose 存取資料表的 AWS Identity and Access Management (IAM) 服務角色。

  2. 建立資料表或資料表命名空間的資源連結。

  3. 透過授予資源連結的許可,將 Firehose 服務角色明確許可授予資料表或資料表的命名空間。

  4. 建立將資料路由至資料表的 Firehose 串流。

為 Firehose 建立角色以使用 S3 資料表作為目的地

Firehose 需要具有特定許可的 IAM 服務角色,才能存取 AWS Glue 資料表並將資料寫入 S3 資料表。當您建立 Firehose 串流時,您需要提供此 IAM 角色。

  1. 開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在左側導覽窗格中選擇政策

  3. 選擇建立政策,然後在政策編輯器中選擇 JSON

  4. 新增下列內嵌政策,授予資料目錄中的所有資料庫和資料表的許可。如有需要,您可以只授予特定資料表和資料庫的許可。若要使用此政策,請以您自己的資訊取代 user input placeholders

    { "Version": "2012-10-17", "Statement": [ { "Sid": "S3TableAccessViaGlueFederation", "Effect": "Allow", "Action": [ "glue:GetTable", "glue:GetDatabase", "glue:UpdateTable" ], "Resource": [ "arn:aws:glue:region:account-id:catalog/s3tablescatalog/*", "arn:aws:glue:region:account-id:catalog/s3tablescatalog", "arn:aws:glue:region:account-id:catalog", "arn:aws:glue:region:account-id:database/*", "arn:aws:glue:region:account-id:table/*/*" ] }, { "Sid": "S3DeliveryErrorBucketPermission", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::error delivery bucket", "arn:aws:s3:::error delivery bucket/*" ] }, { "Sid": "RequiredWhenUsingKinesisDataStreamsAsSource", "Effect": "Allow", "Action": [ "kinesis:DescribeStream", "kinesis:GetShardIterator", "kinesis:GetRecords", "kinesis:ListShards" ], "Resource": "arn:aws:kinesis:region:account-id:stream/stream-name" }, { "Sid": "RequiredWhenDoingMetadataReadsANDDataAndMetadataWriteViaLakeformation", "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess" ], "Resource": "*" }, { "Sid": "RequiredWhenUsingKMSEncryptionForS3ErrorBucketDelivery", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": [ "arn:aws:kms:region:account-id:key/KMS-key-id" ], "Condition": { "StringEquals": { "kms:ViaService": "s3.region.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::error delivery bucket/prefix*" } } }, { "Sid": "LoggingInCloudWatch", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region:account-id:log-group:log-group-name:log-stream:log-stream-name" ] }, { "Sid": "RequiredWhenAttachingLambdaToFirehose", "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:region:account-id:function:function-name:function-version" ] } ] }

    此政策具有允許存取 Kinesis Data Streams、叫用 Lambda 函數和存取 AWS KMS 金鑰的陳述式。如果您不使用任何這些資源,您可以移除個別的陳述式。

    如果啟用錯誤記錄,Firehose 也會一併將資料交付錯誤傳送至 CloudWatch 日誌群組與串流。為此,您必須設定日誌群組和日誌串流名稱。如需日誌群組和日誌串流名稱,請參閱使用 CloudWatch Logs 監控 Amazon Data Firehose

  5. 建立政策後,請使用 AWS 服務建立 IAM 角色,以作為信任的實體類型

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

  7. 選取下一步,然後選取您稍早建立的政策。

  8. 為您的角色命名。檢閱您的角色詳細資料,並選擇建立角色。角色會擁有下列信任政策。

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

若要存取資料表,Amazon Data Firehose 需要以資料表命名空間為目標的資源連結。資源連結是資料目錄物件,可作為另一個資料目錄資源 (例如資料庫或資料表) 的別名或指標。連結會儲存在建立該連結之帳戶或區域的資料目錄中。如需詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的資源連結的運作方式

將資料表儲存貯體與 AWS 分析服務整合之後,您可以建立資源連結,以在 Firehose 中使用資料表。

您可以建立資料表命名空間的資源連結,然後提供 Firehose 連結的名稱,以便 Firehose 可以使用連結的資料表。

下列 AWS CLI 命令會建立資源連結,您可以使用該連結將 S3 資料表連線至 Firehose。若要使用此範例命令,請以您自己的資訊取代 user input placeholders

aws glue create-database --region us-east-1 \ --catalog-id "111122223333" \ --database-input \ '{ "Name": "resource-link-name", "TargetDatabase": { "CatalogId": "111122223333:s3tablescatalog/amzn-s3-demo-table-bucket", "DatabaseName": "my_namespace" }, "CreateTableDefaultPermissions": [] }'
注意

您必須分別授予許可給資源連結和目標 (連結) 命名空間。如需詳細資訊,請參閱授予資源連結的許可

當您使用資源連結存取資料表時,您必須分別授予資源連結和目標 (連結) 命名空間或資料表的許可。您可以透過 Lake Formation 主控台或 ,授予連結至資料表命名空間之資源連結的 IAM 主體 Lake Formation 許可 AWS CLI。

Console
  1. 在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/,並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員

  2. 在導覽窗格中,選擇資料許可,然後選擇授予

  3. 授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選取您建立以串流至資料表的服務角色。

  4. LF-標籤或型錄資源下,選擇已命名的的資料型錄資源

  5. 針對目錄,選擇您的帳戶 ID,這是預設目錄

  6. 針對資料庫,選擇您為資料表命名空間建立的資源連結。

  7. 針對資源連結許可,選擇描述

  8. 選擇 Grant (授予)。

CLI
  1. 請確定您以資料湖管理員身分執行 AWS CLI 命令。如需詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員

  2. 執行下列命令,將 S3 資料表儲存貯體中資料表的 Lake Formation 許可授予 IAM 主體,以便主體可以存取資料表。若要使用此範例,請以您自己的資訊取代 user input placeholders。此DataLakePrincipalIdentifier值可以是 IAM 使用者或角色 ARN。

    aws lakeformation grant-permissions \ --principal DataLakePrincipalIdentifier=arn:aws:iam::account-id:role/role-name \ --resource Database='{CatalogId=account-id, Name=database-name}' \ --permissions DESCRIBE
  1. 在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/,並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員

  2. 在導覽窗格中,選擇資料許可,然後選擇授予

  3. 授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選取您建立以串流至資料表的服務角色。

  4. LF-標籤或型錄資源下,選擇已命名的的資料型錄資源

  5. 針對目錄,選擇您的帳戶 ID,這是預設目錄

  6. 針對資料庫,選擇您為資料表命名空間建立的資源連結。

  7. 針對資源連結許可,選擇描述

  8. 選擇 Grant (授予)。

設定目的地為 S3 資料表的 Firehose 串流

下列程序說明如何設定 Firehose 串流,以使用主控台將資料交付至 S3 資料表。設定目的地為 S3 資料表的 Firehose 串流時,需要達成下列先決條件。

先決條件

若要在設定串流時為 Firehose 提供路由資訊,您可以使用您為命名空間建立的資源連結名稱來作為資料庫名稱,以及該命名空間中資料表的名稱。您可以在 Firehose 串流組態的唯一鍵區段中使用這些值,將資料路由到單一資料表。您也可以使用此值,透過 JSON Query 表達式路由至資料表。如需詳細資訊,請參閱將傳入記錄路由至單一 Iceberg 資料表

設定目的地為 S3 資料表的 Firehose 串流 (主控台)
  1. 開啟位於 https://console.aws.amazon.com/firehose/ 的 Firehose 主控台。

  2. 選擇建立 Firehose 串流

  3. 針對來源,選擇下列其中一個來源:

    • Amazon Kinesis Data Streams

    • Amazon MSK

    • 直接 PUT

  4. 針對目的地,選擇Apache Iceberg資料表

  5. 輸入 Firehose 串流名稱

  6. 設定您的來源設定

  7. 針對目的地設定,選取目前帳戶和您要串流的資料表AWS 區域

  8. 使用唯一金鑰組態、JSONQuery 運算式或在 Lambda 函數中設定資料庫和資料表名稱。如需詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的將傳入記錄路由至單一 Iceberg 資料表和將傳入記錄路由至不同的 Iceberg 資料表

  9. 備份設定下,指定 S3 備份儲存貯體

  10. 針對進階設定下的現有 IAM 角色,選取您為 Firehose 建立的 IAM 角色。

  11. 選擇建立 Firehose 串流

如需您可以為串流設定之其他設定的詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的設定 Firehose 串流。

下一個主題:

AWS Glue ETL

上一個主題:

Amazon QuickSight
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。