Amazon Redshift 自 2025 年 11 月 1 日起不再支援建立新的 Python UDF。如果您想要使用 Python UDF,請在該日期之前建立 UDF。現有 Python UDF 將繼續正常運作。如需詳細資訊,請參閱部落格文章
使用資料 API 搭配可信身分傳播
身為 Amazon Redshift 帳戶管理員,您可以將 Amazon Redshift 叢集或工作群組與 AWS IAM Identity Center 整合,這樣做可協助您透過單一登入來管理員工對 Amazon Redshift 的存取。如需更多詳細資訊,請參閱 設定 AWS IAM Identity Center 與 Amazon Redshift 整合。Amazon Redshift 資料 API 支援將 IAM Identity Center 使用者身分傳播至 Amazon Redshift 叢集或工作群組,以及傳播至鏈結下的其他服務,例如 AWS Lake Formation。您可以依照使用可信身分傳播以程式設計方式存取 AWS 服務
當您使用來自身分增強型 IAM 角色工作階段的 IAM Identity Center 使用者身分呼叫資料 API 時,您只能存取使用相同 IAM Identity Center 使用者產生的陳述式和陳述式結果。例如,下列 AWS CLI 命令會呼叫 execute-statement 操作,以可信身分傳播執行 SQL 命令。
aws redshift-data execute-statement --sql "select current_user;" --cluster-idmycluster--databasedev
下列 AWS CLI 命令會呼叫 batch-execute-statement 操作,以執行兩個 SQL 命令。
aws redshift-data batch-execute-statement --sqls "select current_user;" "select current_date;" --cluster-idmycluster--databasedev
若要存取由身分增強型 IAM 角色工作階段所提交具有 cancel-statement、describe-statement、get-statement-result 和 get-statement-result-v2 的陳述式,IAM Identity Center 使用者和 IAM 角色必須符合用於執行 execute-statment 或 batch-execute-statement 的憑證。例如,下列 AWS CLI 命令會取得 SQL 陳述式的結果。
aws redshift-data get-statement-result --ida1b2c3d4-5678-90ab-cdef-EXAMPLE11111
若要列出陳述式,則必須提供 cluster-identifier 或 workgroup-name 參數,以確保 IAM Identity Center 使用者只能存取指派給他們的 Amazon Redshift IAM Identity Center 應用程式。例如,下列 AWS CLI 命令會列出特定叢集的陳述式。
aws redshift-data list-statements --cluster-identifiermycluster
您也可以調用資料 API 操作,以使用可信身分傳播來存取叢集或工作群組中的資料庫物件。這包括 list-databases、list-schemas、list-tables 和 describe-table 操作。
IAM Identity Center 使用者發出的 API 呼叫可以在 AWS CloudTrail 中追蹤。CloudTrail 事件的 onBehalfOf 區段會顯示 IAM Identity Center 使用者 ID 和身分存放區 ARN。下列範例示範 CloudTrail 事件的程式碼片段,顯示 onBehalfOf 區段中包含 IAM Identity Center 使用者 ID a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 和身分存放區 ARN arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2。
{ "eventVersion":"1.10", "userIdentity":{ "type":"AssumedRole", ... }, "onBehalfOf":{ "userId":"a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "identityStoreArn":"arn:aws:identitystore::123456789012:identitystore/d-9067bc44d2" } }, "eventTime":"2025-01-13T04:46:27Z", "eventSource":"redshift-data.amazonaws.com", "eventName":"ExecuteStatement", "awsRegion":"us-east-1" }
您可以執行下列 SQL 命令來檢查 IAM Identity Center 使用者提交的查詢。在此範例中,Identity Center 中註冊的電子郵件為 username@example.com。
SELECT h.query_id, h.database_name, h.status, h.query_text, u.usename, h.start_time, h.end_time FROM sys_query_history h LEFT JOIN pg_user u ON h.user_id = u.usesysid where u.usename='awsidc:username@example.com' ORDER BY h.start_time DESC;