Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
如何排程 Amazon Redshift 叢集的查詢?
我想排程在 Amazon Redshift 叢集中執行查詢。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
使用查詢編輯器 v2 為您佈建的 Amazon Redshift 叢集執行、檢視、儲存和排程 SQL 查詢。
設定查詢編輯器權限
在建立排程查詢之前,您必須設定正確的 AWS Identity and Access Management (IAM) 角色和權限。排程查詢需要 Amazon EventBridge 依排程啟動查詢,並需要 Amazon Redshift Data API 在叢集上執行查詢。
建立排程的 IAM 使用者和執行查詢的 IAM 角色都必須具有適當的權限。
IAM 使用者存取權
您可以附加政策,例如 AmazonRedshiftDataFullAccess 和 AmazonEventBridgeFullAccess。
您還可以建立具有更特定權限的自訂政策。如需詳細資訊,請參閱設定權限以排程查詢。
查詢的執行角色
若要執行排程查詢,請為您的 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組識別或建立 IAM 角色。
然後,附加政策 (例如 AmazonRedshiftDataFullAccess 和 AmazonEventBridgeFullAccess),以便 Amazon Redshift 可以承擔該角色並執行排程的動作。
如需詳細資訊,請參閱對 Amazon Redshift 使用身分型政策 (IAM 政策) 。
承擔角色組態
更新角色的信任政策,以允許排程主體承擔該角色。然後,使用 Amazon Redshift 主控台或 modify-cluster-iam-roles AWS CLI 命令,將角色連結到您的 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組。
資料庫驗證
將憑證儲存在您 IAM 角色可以存取的 AWS Secrets Manager 密碼中。
新增適當的標籤以允許使用 Amazon Redshift Data API。設定您的 IAM 角色,以取得臨時 Amazon Redshift 憑證。您的叢集或工作群組 IAM 角色必須信任主體,並且您的資料庫使用者必須具有必要的權限。
如需詳細資訊,請參閱驗證排程查詢。
在 Amazon Redshift 主控台上排程查詢
請完成下列步驟:
- 開啟 Amazon Redshift console (Amazon Redshift 主控台)。
- 在導覽窗格中,選擇 Editor (編輯器),然後選擇 Query editor V2 (查詢編輯器 V2)。
- 連線到叢集中的資料庫。
- 建立查詢排程以執行 SQL 陳述式。
- (選用) 如果您使用Secrets Manager 與 Amazon Redshift,請選取您的金鑰。
- (選用) 如果您使用的是臨時 IAM 使用者憑證,請選擇您的叢集並提供資料庫和使用者名稱。
**注意:**若要呼叫 GetClusterCredentials 動作,您必須擁有最低權限集。
若要查看新建立的排程,請完成以下步驟:
- 開啟 Amazon RedShift console (Amazon RedShift 主控台)。
- 在導覽窗格中,選擇 Editor (編輯器),然後選擇 Query editor V2 (查詢編輯器 V2)。
- 選擇 Scheduled queries (排程查詢)。
您可以開啟 Amazon Simple Notification Service (Amazon SNS) 通知來監控查詢的執行狀態。
如果您啟用了 Amazon SNS,請確保 events.amazonaws.com 存在發布 API 動作。
包含 events.amazonaws.com 發布動作的存取政策範例:
{ "Sid": "Allow_Publish_Events", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-east-1:{ACCOUNT_ID}:{SNS_TOPIC_NAME}" }
如需詳細資訊,請參閱監控排程查詢。
使用 EventBridge 排程查詢
您可以使用 EventBridge 和 Amazon Redshift Data API 來排程 SQL 陳述式。
請完成下列步驟:
-
定義一個名為 **scheduled-refresh-currentEvents 的 EventBridge 事件規則**。
-
使用 EventBridge 主控台排程事件規則,使其定期執行或在特定時間執行。或者,執行以下 put-rule AWS CLI 命令:
aws events put-rule \ --name scheduled-refresh-currentEvents \ --schedule-expression "cron(0/5 * * * ? *)"**注意:**將 5 替換為您希望兩次重新整理之間間隔的分鐘數。
-
使用文字編輯器建立並儲存以下名為 refreshCurrentEvents.json 的 JSON 檔案:
{ "Rule": "scheduled-refresh-currentEvents", "EventBusName": "default", "Targets": [ { "Id": "scheduled-refresh-currentEvents", "Arn": "Clsuter ARN", "RoleArn": "Role ARN", "RedshiftDataParameters": { "SecretManagerArn": "Secrets Manager ARN", "Database": "Database Name", "Sql": "REFRESH MATERIALIZED VIEW currentEvents;", "StatementName": "scheduled-refresh-currentEvents", "WithEvent": true } } ] }**注意:**將 Cluster ARN、Role ARNSecrets Manager ARN 替換為您的 ARN 值。
-
執行以下 put-targets 命令,使用已儲存的 JSON 檔案建立事件目標:
aws events put-targets --cli-input-json file://refreshCurrentEvents.json -
執行以下 remove-targets 命令來移除目標:
aws events remove-targets --rule scheduled-refresh-currentEvents --ids scheduled-refresh-currentEvents -
執行以下 delete-rule 命令來刪除該規則:
aws events delete-rule --name scheduled-refresh-currentEvents
檢視 SQL 狀態和結果
請完成下列步驟:
-
開啟 Amazon RedShift console (Amazon RedShift 主控台)。
-
在導覽窗格中,選擇 Editor (編輯器),然後選擇 Query editor V2 (查詢編輯器 V2)。
-
選擇 Scheduled queries (排程查詢)。
-
選取您的查詢。
-
在 Schedule history (排程歷史記錄) 中,記下 ID,以便在後續步驟中使用。
-
若要擷取查詢結果,請執行下列 assume-role 命令:
aws sts assume-role --role-arn "Role ARN" --role-session-name Example Session Name注意:將 Role ARN (角色 ARN) 替換為您用於排程查詢角色的 ARN,並將Example Session Name (範例工作階段名稱) 替換為您的工作階段名稱。此命令的輸出會傳回存取金鑰 ID、秘私密存取金鑰和工作階段權杖。
-
執行以下匯出命令來設定環境變數:
export AWS_ACCESS_KEY_ID=ExampleRoleAccessKeyID export AWS_SECRET_ACCESS_KEY=ExampleRoleSecretAccessKey export AWS_SESSION_TOKEN=ExampleSessionToken**注意:**將範例值替換為您的值。
-
執行 redshift-data 命令並使用 get-statement-result 來擷取結果:
aws redshift-data get-statement-result --id ID --region Region**注意:**將 ID 替換為您的陳述式 ID,並將 Region 替換為您的 AWS 區域。
相關資訊
為什麼我無法連線至 Amazon Redshift 中的 AmazonRedshiftQueryEditor?
- 語言
- 中文 (繁體)

相關內容
- 已提問 3 年前
- 已提問 1 年前
- 已提問 2 年前