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

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

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

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

請完成下列步驟,以設定 Firehose 串流至 S3 資料表儲存貯體中的資料表:

  1. 整合資料表儲存貯體與 AWS 分析服務

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

  3. 將 Firehose 服務角色明確許可授予資料表或資料表命名空間。如需詳細資訊,請參閱授予資料表資源的 Lake Formation 許可

  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" ] } } ] }

建立至 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. 針對目的地設定,選擇目前帳戶以串流至您帳戶中的資料表,或選擇另一個帳戶中的跨帳戶資料表。

    • 對於目前帳戶中的資料表,請從目錄下拉式清單中選取您的 S3 資料表目錄

    • 對於跨帳戶中的資料表,輸入您要串流到另一個帳戶中之目錄的目錄 ARN

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

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

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

  11. 選擇建立 Firehose 串流

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