Amazon Kinesis Data Streams 匯入主題可讓您持續從 Amazon Kinesis Data Streams 擷取資料,做為外部來源並匯入 Pub/Sub。接著,您就能將資料串流至 Pub/Sub 支援的任何目的地。
如要進一步瞭解匯入主題,請參閱「關於匯入主題」。
事前準備
進一步瞭解 Pub/Sub 發布程序。
設定 Workload Identity Federation,讓Cloud de Confiance 可以存取外部影視串流服務。
必要角色和權限
如要取得建立及管理 Amazon Kinesis Data Streams 匯入主題所需的權限,請要求管理員授予您主題或專案的 Pub/Sub 編輯者 (roles/pubsub.editor) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這個預先定義的角色具備建立及管理 Amazon Kinesis Data Streams 匯入主題所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要建立及管理 Amazon Kinesis Data Streams 匯入主題,您必須具備下列權限:
- 建立匯入主題: pubsub.topics.create
- 刪除匯入主題: pubsub.topics.delete
- 取得匯入主題:pubsub.topics.get
- 列出匯入主題: pubsub.topics.list
- 發布至匯入主題: pubsub.topics.publish 和 pubsub.serviceAgent
- 更新匯入主題:pubsub.topics.update
- 取得匯入主題的 IAM 政策:pubsub.topics.getIamPolicy
-
設定匯入主題的 IAM 政策:
pubsub.topics.setIamPolicy
您可以在專案層級和個別資源層級設定存取控管。
設定聯合身分以存取 Amazon Kinesis Data Streams
Workload Identity Federation 可讓 Cloud de Confiance 服務存取 Cloud de Confiance外部執行的工作負載。透過身分聯盟,您不必維護或傳遞憑證,即可存取其他雲端中的資源。 Cloud de Confiance 而是使用工作負載本身的身分驗證 Cloud de Confiance 及存取資源。
在「 Cloud de Confiance」中建立服務帳戶
這個步驟可以省略。如果您已有服務帳戶,可以在這個程序中使用該帳戶,不必建立新的服務帳戶。如果您使用現有服務帳戶,請前往記錄服務帳戶專屬 ID,以進行下一個步驟。
如果是 Amazon Kinesis Data Streams 匯入主題,Pub/Sub 會使用服務帳戶做為身分,從 AWS 存取資源。
如要進一步瞭解如何建立服務帳戶,包括必要條件、必要角色和權限,以及命名規範,請參閱「建立服務帳戶」。建立服務帳戶後,您可能需要等待 60 秒以上才能使用該帳戶。發生這種情況是因為讀取作業最終會保持一致,因此需要一段時間才能顯示新的服務帳戶。
記下服務帳戶專屬 ID
您需要服務帳戶專屬 ID,才能在 AWS 中設定角色。
前往 Cloud de Confiance 控制台的「Service account details」(服務帳戶詳細資料) 頁面。
按一下您剛建立的服務帳戶,或打算使用的服務帳戶。
在「服務帳戶詳細資料」頁面中,記錄專屬 ID 號碼。
您需要這組 ID,才能在 AWS 中設定角色。
將服務帳戶權杖建立者角色新增至 Pub/Sub 服務帳戶
服務帳戶權杖建立者角色 (roles/iam.serviceAccountTokenCreator) 可讓主體為服務帳戶建立短期憑證。這些權杖或憑證可用於模擬服務帳戶。
如要進一步瞭解服務帳戶模擬功能,請參閱「服務帳戶模擬」。
您也可以在這個程序中新增 Pub/Sub 發布者角色 (roles/pubsub.publisher)。如要進一步瞭解這個角色和新增原因,請參閱「將 Pub/Sub 發布者角色新增至 Pub/Sub 服務帳戶」。
前往 Cloud de Confiance 控制台的「IAM」(身分與存取權管理) 頁面。
勾選「Include S3NS-provided role grants」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com的服務帳戶。點選這個服務帳戶的「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並點選「服務帳戶權杖建立者」角色 (
roles/iam.serviceAccountTokenCreator)。按一下 [儲存]。
建立識別資訊提供者
在 AWS 管理主控台中,為 Service Account Credentials API 建立身分提供者 (IdP),步驟如下:
在導覽窗格中,按一下「身分識別提供者」。
按一下「新增供應商」。
在「供應商類型」部分,選取「OpenID Connect」。
在「Provider URL」部分,輸入端點:
https://iamcredentials.s3nsapis.fr。在「Audience」(目標對象) 部分,輸入服務帳戶的專屬 ID。
按一下「新增提供者」。
在 AWS 中建立政策
您必須在 AWS 中建立政策,允許 Pub/Sub 向 AWS 進行驗證,以便 Pub/Sub 從 Amazon Kinesis Data Streams 擷取資料。
建立 AWS 政策前,請先建立 Kinesis 資料串流,並在其中註冊消費者。建議您採取這項做法,將權限限制在特定串流。
如要進一步瞭解如何建立 Amazon Kinesis Data Streams,請參閱「Kinesis 資料串流」。
如要進一步瞭解用於註冊消費者的 Amazon Kinesis Data Streams API,請參閱「RegisterStreamConsumer」。
- 如要瞭解如何在 AWS 中建立政策,請參閱「建立 IAM 政策」。
如要在 AWS 中建立政策,請按照下列步驟操作:
登入 AWS 管理主控台並開啟 IAM 控制台。
在 IAM 控制台的導覽窗格中,依序點選「Access Management」(存取權管理) >「Policies」(政策)。
按一下「建立政策」。
在「Select a service」(選取服務) 中,按一下「Kinesis」。
在「允許的動作」部分,按一下下列選項:
List > ListShards。
這項動作會授予列出串流中分片的權限,並提供每個分片的相關資訊。
Read > SubscribeToShard。
這項動作會授予權限,以強化扇出功能監聽特定分片。
Read > DescribeStreamConsumer。
這項動作會授予權限,可取得已註冊串流消費者的說明。
這些權限涵蓋從串流讀取資料。Pub/Sub 僅支援使用串流 SubscribeToShard API,從具有增強型擴散傳遞功能的 Kinesis 串流讀取資料。
按一下「新增更多權限」。
在「Select a service」(選取服務) 中,按一下「STS」。
在「允許的動作」中,依序點選「寫入」>「AssumeRoleWithWebIdentity」
這項動作會授予權限,讓 Pub/Sub 透過身分同盟向 Amazon Kinesis Data Streams 驗證身分,並取得一組暫時性安全憑證。
點選「下一步」。
輸入政策名稱和說明。
點選「建立政策」。
使用自訂信任政策在 AWS 建立角色
您必須在 AWS 中建立角色,Pub/Sub 才能向 AWS 驗證身分,從 Amazon Kinesis Data Streams 擷取資料。
登入 AWS 管理主控台,然後開啟 IAM 控制台。
在 IAM 控制台的導覽窗格中,按一下「Roles」(角色)。
按一下「建立角色」。
在「Select trusted entity」部分,按一下「Custom trust policy」。
在「自訂信任政策」部分,輸入或貼上下列內容:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "ARN" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "iamcredentials.s3nsapis.fr:sub": "SERVICE_ACCOUNT_NUMBER" } } } ] }替換下列內容:
ARN:您在上一個步驟中建立的身分識別提供者 Amazon Resource Name (ARN)。SERVICE_ACCOUNT_NUMBER:服務帳戶的專屬 ID。
點選「下一步」。
在「新增權限」中,搜尋並點選您剛建立的自訂政策。
點選「下一步」。
輸入角色名稱和說明。
按一下「建立角色」。
將 Pub/Sub 發布者角色新增至 Pub/Sub 主體
如要啟用發布功能,您必須將發布者角色指派給 Pub/Sub 服務帳戶,這樣 Pub/Sub 才能發布至 Amazon Kinesis Data Streams 匯入主題。
將 Pub/Sub 服務代理角色新增至 Pub/Sub 服務帳戶
如要允許 Pub/Sub 使用匯入主題專案的發布配額,Pub/Sub 服務代理必須具備匯入主題專案的 serviceusage.services.use 權限。
如要提供這項權限,建議您將 Pub/Sub 服務代理角色新增至 Pub/Sub 服務帳戶。
如果 Pub/Sub 服務帳戶沒有 Pub/Sub 服務代理角色,可以按照下列步驟授予:
前往 Cloud de Confiance 控制台的「IAM」(身分與存取權管理) 頁面。
按一下「包含 S3NS提供的角色授予項目」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com的服務帳戶。按一下這個服務帳戶的「編輯主體」按鈕。
視需要點選「新增其他角色」。
搜尋並點選「Pub/Sub 服務代理」角色 (
roles/pubsub.serviceAgent)。按一下 [儲存]。
允許從所有主題發布
如果您尚未建立任何 Amazon Kinesis Data Streams 匯入主題,請使用這個方法。
前往 Cloud de Confiance 控制台的「IAM」(身分與存取權管理) 頁面。
勾選「Include S3NS-provided role grants」核取方塊。
找出格式為
service-{PROJECT_NUMBER}@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com的服務帳戶。按一下這個服務帳戶的「編輯主體」按鈕。
視需要按一下「新增其他角色」。
搜尋並按一下 Pub/Sub 發布者角色 (
roles/pubsub.publisher)。按一下 [儲存]。
啟用從單一主題發布的功能
只有在 Amazon Kinesis Data Streams 匯入主題已存在的情況下,才能使用這個方法。
在 Cloud de Confiance 控制台中啟用 Cloud Shell。
Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
執行
gcloud pubsub topics add-iam-policy-binding指令:gcloud pubsub topics add-iam-policy-binding TOPIC_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.s3ns-system.iam.gserviceaccount.com" \ --role="roles/pubsub.publisher"
更改下列內容:
TOPIC_ID:Amazon Kinesis Data Streams 匯入主題的主題 ID。PROJECT_NUMBER:專案編號。如要查看專案編號,請參閱「識別專案」。
將服務帳戶使用者角色新增至服務帳戶
「服務帳戶使用者」角色 (roles/iam.serviceAccountUser) 包含 iam.serviceAccounts.actAs 權限,可讓主體將服務帳戶附加至 Amazon Kinesis Data Streams 匯入主題的擷取設定,並將該服務帳戶用於聯合身分。
前往 Cloud de Confiance 控制台的「IAM」(身分與存取權管理) 頁面。
針對發出建立或更新主題呼叫的主體,按一下「編輯主體」按鈕。
視需要點選「新增其他角色」。
搜尋並按一下「Service account user role」(服務帳戶使用者角色) (
roles/iam.serviceAccountUser)。按一下 [儲存]。
使用 Amazon Kinesis Data Streams 主題
您可以建立新的匯入主題,也可以編輯現有主題。
注意事項
- 如果分開建立主題和訂閱項目,即使快速連續執行,也可能導致資料遺失。主題會在短時間內存在,但沒有訂閱項目。如果在這段期間有任何資料傳送至主題,資料就會遺失。先建立主題和訂閱項目,再將主題轉換為匯入主題,即可確保匯入過程中不會遺漏任何訊息。
建立 Amazon Kinesis Data Streams 匯入主題
如要進一步瞭解與主題相關聯的屬性,請參閱「主題屬性」。
請確認已完成下列程序:
如要建立 Amazon Kinesis Data Streams 匯入主題,請按照下列步驟操作:
控制台
前往 Cloud de Confiance 控制台的「Topics」(主題) 頁面。
按一下「建立主題」。
在「Topic ID」(主題 ID) 欄位中,輸入 Amazon Kinesis Data Streams 匯入主題的 ID。
如要進一步瞭解如何命名主題,請參閱「命名規範」。
選取「Add a default subscription」(新增預設訂閱)。
選取「啟用擷取功能」。
選取「Amazon Kinesis Data Streams」做為擷取來源。
輸入下列詳細資訊:
Kinesis 串流 ARN:您打算擷取至 Pub/Sub 的 Kinesis Data Stream ARN。ARN 格式如下:
arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}。Kinesis Consumer ARN:已向 AWS Kinesis Data Stream 註冊的消費者資源 ARN。ARN 格式如下:
arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimestamp}。AWS 角色 ARN:AWS 角色的 ARN。角色的 ARN 格式如下:
arn:aws:iam::${Account}:role/${RoleName}「Service account」(服務帳戶):您在「在 Cloud de Confiance中建立服務帳戶」建立的服務帳戶。
按一下「建立主題」。
gcloud
在 Cloud de Confiance 控制台啟用 Cloud Shell。
Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
執行
gcloud pubsub topics create指令:gcloud pubsub topics create TOPIC_ID \ --kinesis-ingestion-stream-arn KINESIS_STREAM_ARN \ --kinesis-ingestion-consumer-arn KINESIS_CONSUMER_ARN \ --kinesis-ingestion-role-arn KINESIS_ROLE_ARN \ --kinesis-ingestion-service-account PUBSUB_SERVICE_ACCOUNT更改下列內容:
TOPIC_ID:主題 ID。KINESIS_STREAM_ARN:您打算擷取至 Pub/Sub 的 Kinesis Data Streams ARN。ARN 格式如下:arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}。KINESIS_CONSUMER_ARN:已向 AWS Kinesis Data Stream 註冊的消費者資源 ARN。ARN 格式如下:arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimestamp}。KINESIS_ROLE_ARN:AWS 角色的 ARN。角色的 ARN 格式如下:arn:aws:iam::${Account}:role/${RoleName}。PUBSUB_SERVICE_ACCOUNT:您在「在 Google Cloud 中建立服務帳戶」中建立的服務帳戶。
C++
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 C++ 設定說明操作。詳情請參閱 Pub/Sub C++ API 參考文件。
Go
下列範例使用 Go Pub/Sub 用戶端程式庫的主要版本 (v2)。如果您仍在使用第 1 版程式庫,請參閱第 2 版遷移指南。如要查看第 1 版程式碼範例清單,請參閱 已淘汰的程式碼範例。
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Go 設定說明操作。詳情請參閱 Pub/Sub Go API 參考文件。
Java
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Java 設定操作說明進行操作。詳情請參閱 Pub/Sub Java API 參考文件。
Node.js
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定操作說明進行操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
Node.ts
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Node.js 設定說明操作。詳情請參閱 Pub/Sub Node.js API 參考文件。
Python
在試用這個範例之前,請先按照「快速入門導覽課程:使用用戶端程式庫」中的 Python 設定操作說明進行操作。詳情請參閱 Pub/Sub Python API 參考文件。
如要進一步瞭解 ARN,請參閱「Amazon Resource Name (ARN)」和「IAM 識別碼」。
如果遇到問題,請參閱「排解 Amazon Kinesis Data Streams 匯入主題問題」。
編輯 Amazon Kinesis Data Streams 匯入主題
您可以編輯 Amazon Kinesis Data Streams 匯入主題的擷取資料來源設定。 請執行下列步驟:
控制台
-
前往 Cloud de Confiance 控制台的「Topics」(主題) 頁面。
-
按一下 Amazon Kinesis Data Streams 匯入主題。
-
在主題詳細資料頁面中,按一下「編輯」。
-
更新要變更的欄位。
-
按一下「Update」。
gcloud
-
在 Cloud de Confiance 控制台啟用 Cloud Shell。
Cloud de Confiance 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。
為避免遺失匯入主題的設定,請務必在每次更新主題時加入所有設定。如果省略任何項目,Pub/Sub 會將設定重設為原始預設值。
使用下列範例中提及的所有旗標,執行
gcloud pubsub topics update指令:gcloud pubsub topics update TOPIC_ID
--kinesis-ingestion-stream-arn KINESIS_STREAM_ARN
--kinesis-ingestion-consumer-arn KINESIS_CONSUMER_ARN
--kinesis-ingestion-role-arn KINESIS_ROLE_ARN
--kinesis-ingestion-service-account PUBSUB_SERVICE_ACCOUNT更改下列內容:
-
TOPIC_ID 是主題 ID。這個欄位無法更新。
-
KINESIS_STREAM_ARN 是您打算擷取至 Pub/Sub 的 Kinesis Data Streams ARN。ARN 格式如下:
arn:${Partition}:kinesis:${Region}:${Account}:stream/${StreamName}。 -
KINESIS_CONSUMER_ARN 是向 AWS Kinesis Data Streams 註冊的消費者資源 ARN。ARN 格式如下:
arn:${Partition}:kinesis:${Region}:${Account}:${StreamType}/${StreamName}/consumer/${ConsumerName}:${ConsumerCreationTimestamp}。 -
KINESIS_ROLE_ARN 是 AWS 角色的 ARN。角色的 ARN 格式如下:
arn:aws:iam::${Account}:role/${RoleName}。 -
PUBSUB_SERVICE_ACCOUNT 是您在「在 Cloud de Confiance中建立服務帳戶」中建立的服務帳戶。
-
Amazon Kinesis Data Streams 匯入主題的配額和限制
匯入主題的發布者輸送量受限於主題的發布配額。詳情請參閱「Pub/Sub 配額與限制」。
後續步驟
為主題選擇訂閱類型。
瞭解如何將訊息發布至主題。
使用 gcloud CLI、REST API 或用戶端程式庫建立或修改主題。