本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon Data Firehose 將資料串流至資料表
Amazon Data Firehose 是一項全受管服務,可將即時串流資料
請完成下列步驟,以設定 Firehose 串流至 S3 資料表儲存貯體中的資料表:
-
設定 Firehose 將資料交付到您的 S3 資料表。若要這樣做,您可以建立允許 Firehose 存取資料表的 AWS Identity and Access Management (IAM) 服務角色。
-
將 Firehose 服務角色明確許可授予資料表或資料表命名空間。如需詳細資訊,請參閱授予資料表資源的 Lake Formation 許可。
為 Firehose 建立角色以使用 S3 資料表作為目的地
Firehose 需要具有特定許可的 IAM 服務角色,才能存取 AWS Glue 資料表並將資料寫入 S3 資料表。您需要在建立 Firehose 串流時提供此 IAM 角色。
前往 https://console.aws.amazon.com/iam/
開啟 IAM 主控台。 -
在左側導覽窗格中選擇政策。
-
選擇建立政策,然後在政策編輯器中選擇 JSON。
-
新增下列內嵌政策,授予資料目錄中的所有資料庫和資料表的許可。如有需要,您可以只授予特定資料表和資料庫的許可。若要使用此政策,請以您自己的資訊取代
。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。
-
建立政策後,請使用 AWS 服務建立 IAM 角色,以作為信任的實體類型。
-
針對服務或使用案例,選擇 Kinesis。針對使用案例,選擇 Kinesis Firehose。
-
選取下一步,然後選取您稍早建立的政策。
-
為您的角色命名。檢閱您的角色詳細資料,並選擇建立角色。角色會擁有下列信任政策。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Principal": { "Service": [ "firehose.amazonaws.com" ] } } ] }
建立至 S3 資料表的 Firehose 串流
下列程序說明如何建立 Firehose 串流,以使用主控台將資料交付至 S3 資料表。設定目的地為 S3 資料表的 Firehose 串流時,需要達成下列先決條件。
先決條件
將 Lake Formation 許可授予您建立來存取資料表的 Firehose 服務角色。
若要在設定串流時提供路由資訊給 Firehose,您可以使用命名空間做為資料庫名稱和該命名空間中資料表的名稱。您可以在 Firehose 串流組態的唯一鍵區段中使用這些值,將資料路由到單一資料表。您也可以使用此值,透過 JSON Query 表達式路由至資料表。如需詳細資訊,請參閱將傳入記錄路由至單一 Iceberg 資料表。
設定目的地為 S3 資料表的 Firehose 串流 (主控台)
開啟位於 https://console.aws.amazon.com/firehose/
的 Firehose 主控台。 -
選擇建立 Firehose 串流。
-
針對來源,選擇下列其中一個來源:
-
Amazon Kinesis Data Streams
-
Amazon MSK
-
直接 PUT
-
-
針對目的地,選擇Apache Iceberg資料表。
-
輸入 Firehose 串流名稱。
-
設定您的來源設定。
-
針對目的地設定,選擇目前帳戶以串流至您帳戶中的資料表,或選擇另一個帳戶中的跨帳戶資料表。
對於目前帳戶中的資料表,請從目錄下拉式清單中選取您的 S3 資料表目錄。
對於跨帳戶中的資料表,輸入您要串流到另一個帳戶中之目錄的目錄 ARN。
-
使用唯一金鑰組態、JSONQuery 運算式或在 Lambda 函數中設定資料庫和資料表名稱。如需詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的將傳入記錄路由到單一 Iceberg 資料表和將傳入記錄路由到不同的 Iceberg 資料表。
-
在備份設定下,指定 S3 備份儲存貯體。
-
針對進階設定下的現有 IAM 角色,選取您為 Firehose 建立的 IAM 角色。
選擇建立 Firehose 串流。
如需有關您可以為串流設定之其他設定的詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的設定 Firehose 串流。