CREATE LIBRARY - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

CREATE LIBRARY

安裝 Python 程式庫,使用者可在使用 CREATE FUNCTION 命令建立使用者定義的函數 (UDF) 時採用。使用者安裝的程式庫的總和大小不得超過 100 MB。

CREATE LIBRARY 無法在交易區塊內 (BEGIN … END) 執行。如需交易的詳細資訊,請參閱 可序列化隔離

Amazon Redshift 支援 Python 2.7 版。如需詳細資訊,請參閱「」比通

如需詳細資訊,請參閱 匯入自訂 Python 程式庫模組

必要的權限

以下是創建庫所需的權限:

  • 超級使用者

  • 具有「創建庫」權限或具有指定語言權限的用户

Syntax (語法)

CREATE [ OR REPLACE ] LIBRARY library_name LANGUAGE plpythonu FROM { 'https://file_url' | 's3://bucketname/file_name' authorization [ REGION [AS] 'aws_region'] IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>’ } }

參數

OR REPLACE

指定已有相同名稱的程式庫存在時,取代現有程式庫。REPLACE 會立即遞交。如果倚賴程式庫的 UDF 同時執行,UDF 可能會失敗或傳回意外的結果,即使 UDF 是在交易內執行也一樣。您必須是擁有者或超級使用者才能取代程式庫。

library_name

要安裝的程式庫名稱。您建立的程式庫不可包含與 Python 標準程式庫模組或 Amazon Redshift 預先安裝 Python 模組同名的模組。如果現有的使用者安裝程式庫使用與所安裝程式庫相同的 Python 套件,則您必須先捨棄現有的程式庫,才能安裝新的程式庫。如需詳細資訊,請參閱 UDF 的 Python 語言支援

LANGUAGE plpythonu

要使用的語言。Python (plpythonu) 是唯一支援的語言。Amazon Redshift 支援 Python 2.7 版。如需詳細資訊,請參閱「」比通

FROM

程式庫檔案的位置。您可以指定 Amazon S3 儲存貯體和物件名稱,也可以指定 URL 以從公開網站下載檔案。程式庫必須封裝為 .zip 檔案。如需詳細資訊,請參閱「」構建和安裝 Python 模塊在 Python 文檔中。

https://file_url

從公開網站下載檔案的 URL。URL 最多可包含三個重新導向。以下是檔案 URL 的範例。

'https://www.example.com/pylib.zip'
s3://bucket_name/file_name

單一 Amazon S3 資料元的路徑,其中包含庫檔案。以下是 Amazon S3 資料元路徑的範例。

's3://mybucket/my-pylib.zip'

如果您指定 Amazon S3 儲存儲體,則必須還必須提供AWS擁有下載檔案權限的使用者。

重要

如果 Amazon S3 儲存儲體沒有駐留在同一AWS區域是您的 Amazon Redshift 集羣,您必須使用 REGION 選項來指定AWS數據所在的區域。的值aws_region必須匹配AWS表格中列出的區域REGION參數説明。

authorization

此子句指出叢集在驗證和授權存取包含程式庫檔案的 Amazon S3 儲存貯體時使用的方法。叢集必須有使用 LIST 和 GET 動作存取 Amazon S3 的許可。

授權的語法與 COPY 命令授權相同。如需詳細資訊,請參閱 授權參數

IAM_ROLE { default | ‘arn:aws:iam::<AWS 帳戶-id>:role/<role-name>

使用默認關鍵字讓 Amazon Redshift 使用 IAM 角色,該角色設置為默認角色,並在「創建庫」命令運行時與集羣關聯。

為叢集進行身份驗證和授權時所使用之 IAM 角色使用之 Amazon Resource Name (ARN)。如果指定 IAM_ROLE,則不能使用 ACCESS_KEY_ID 和 SECRET_ACCESS_KEY、SESSION_TOKEN 或 CREDENTIALS。

或者,如果 Amazon S3 儲存貯體使用的是伺服器端加密,請提供 credentials-args 字串中的加密金鑰。如果您使用的是臨時安全登入資料,請提供 credentials-args 字串中的暫時字符。

如需詳細資訊,請參閱 暫時安全憑證

REGION [AS] aws_region

所以此AWSAmazon S3 儲存儲體所在的區域。當 Amazon S3 儲存儲體不在相同AWS區域為 Amazon Redshift 叢集。的值aws_region必須匹配AWS表格中列出的區域REGION參數説明。

預設情況下,CREATE 資料庫假設 Amazon S3 儲存貯體位於相同AWS區域為 Amazon Redshift 叢集。

範例

以下兩個範例會安裝 urlparse Python 模組,它會封裝成名為 urlparse3-1.0.3.zip 的檔案。

以下命令安裝名為f_urlparse已上傳至位於美國東部區域的 Amazon S3 儲存貯體的軟件包。

create library f_urlparse language plpythonu from 's3://mybucket/urlparse3-1.0.3.zip' credentials 'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>' region as 'us-east-1';

下列範例會從網站上的程式庫檔案安裝名為 f_urlparse 的程式庫。

create library f_urlparse language plpythonu from 'https://example.com/packages/urlparse3-1.0.3.zip';