本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Data Firehose 是一項全受管服務,可將即時串流資料
將資料表儲存貯體與 AWS 分析服務整合之後,請執行下列動作:
-
設定 Firehose 將資料交付到您的 S3 資料表。若要這樣做,您可以建立允許 Firehose 存取資料表的 AWS Identity and Access Management (IAM) 服務角色。
-
建立資料表或資料表命名空間的資源連結。
-
透過授予資源連結的許可,將 Firehose 服務角色明確許可授予資料表或資料表的命名空間。
-
建立將資料路由至資料表的 Firehose 串流。
為 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" ] } } ] }
建立資料表命名空間的資源連結
若要存取資料表,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。
-
在 開啟 AWS Lake Formation 主控台https://console.aws.amazon.com/lakeformation/
,並以資料湖管理員身分登入。如需如何建立資料湖管理員的詳細資訊,請參閱《 AWS Lake Formation 開發人員指南》中的建立資料湖管理員。 在導覽窗格中,選擇資料許可,然後選擇授予。
在授予許可頁面的主體下,選擇 IAM 使用者和角色,然後選取您建立以串流至資料表的服務角色。
-
在 LF-標籤或型錄資源下,選擇已命名的的資料型錄資源。
針對目錄,選擇您的帳戶 ID,這是預設目錄。
-
針對資料庫,選擇您為資料表命名空間建立的資源連結。
-
針對資源連結許可,選擇描述。
-
選擇 Grant (授予)。
設定目的地為 S3 資料表的 Firehose 串流
下列程序說明如何設定 Firehose 串流,以使用主控台將資料交付至 S3 資料表。設定目的地為 S3 資料表的 Firehose 串流時,需要達成下列先決條件。
先決條件
-
建立您命名空間的資源連結 成為串流的目的地。
注意
當您為 Firehose 建立資源連結時,名稱只能包含大寫字母、小寫字母和底線 (_)。
授予資料表資源的 Lake Formation 許可 至您建立的 Firehose 服務角色,以串流至 資料表。
注意
您必須分別授予許可給資源連結和目標 (連結) 命名空間或資料表上的 。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 串流名稱。
-
設定您的來源設定。
-
針對目的地設定,選取目前帳戶和您要串流的資料表AWS 區域。
-
使用唯一金鑰組態、JSONQuery 運算式或在 Lambda 函數中設定資料庫和資料表名稱。如需詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的將傳入記錄路由至單一 Iceberg 資料表和將傳入記錄路由至不同的 Iceberg 資料表。
-
在備份設定下,指定 S3 備份儲存貯體。
-
針對進階設定下的現有 IAM 角色,選取您為 Firehose 建立的 IAM 角色。
選擇建立 Firehose 串流。
如需您可以為串流設定之其他設定的詳細資訊,請參閱《Amazon Data Firehose 開發人員指南》中的設定 Firehose 串流。