

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# CREATE LIBRARY
<a name="r_CREATE_LIBRARY"></a>

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

CREATE LIBRARY 無法在交易區塊內 (BEGIN … END) 執行。如需交易的相關資訊，請參閱 [Amazon Redshift 中的隔離層級](c_serial_isolation.md)。

Amazon Redshift 支援 Python 2.7 版。如需詳細資訊，請參閱 [www.python.org](https://www.python.org/)。

如需詳細資訊，請參閱[範例：匯入自訂 Python 程式庫模組](udf-importing-custom-python-library-modules.md)。

## 所需權限
<a name="r_CREATE_LIBRARY-privileges"></a>

以下是 CREATE LIBRARY 所需的權限：
+ 超級使用者
+ 具有 CREATE LIBRARY 權限或具有指定語言權限的使用者

## 語法
<a name="r_CREATE_LIBRARY-synopsis"></a>

```
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>}}’ }
}
```

## Parameters
<a name="r_CREATE_LIBRARY-parameters"></a>

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

 *library\_name*   
要安裝的程式庫名稱。您建立的程式庫不可包含與 Python 標準程式庫模組或 Amazon Redshift 預先安裝 Python 模組同名的模組。如果現有的使用者安裝程式庫使用與所安裝程式庫相同的 Python 套件，則您必須先捨棄現有的程式庫，才能安裝新的程式庫。如需詳細資訊，請參閱[UDF 的 Python 語言支援](udf-python-language-support.md)。

LANGUAGE plpythonu  
要使用的語言。Python (plpythonu) 是唯一支援的語言。Amazon Redshift 支援 Python 2.7 版。如需詳細資訊，請參閱 [www.python.org](https://www.python.org/)。

FROM  
程式庫檔案的位置。您可以指定 Amazon S3 儲存貯體和物件名稱，也可以指定 URL，以從公開網站下載檔案。程式庫必須封裝為 `.zip` 檔案。如需詳細資訊，請參閱 Python 文件中的[建構和安裝 Python 模組](https://docs.python.org/2/library/distutils.html?highlight=distutils#module-distutils)。

 https://*file\_url*   
從公開網站下載檔案的 URL。URL 最多可包含三個重新導向。以下是檔案 URL 的範例。  

```
'https://www.example.com/pylib.zip'
```

 s3://*bucket\_name/file\_name*   
單一 Amazon S3 物件的路徑，物件當中包含程式庫檔案。以下是 Amazon S3 物件路徑的範例。  

```
's3://amzn-s3-demo-bucket/my-pylib.zip'
```
如果您指定 Amazon S3 儲存貯體，則必須同時提供有下載檔案許可之 AWS 使用者的登入資料。  
 如果 Amazon S3 儲存貯體與您的 Amazon Redshift AWS 叢集不在同一個區域中，您必須使用 REGION 選項來指定資料所在的 AWS 區域。*aws\_region* 的值必須符合 COPY 命令[REGION](copy-parameters-data-source-s3.md#copy-region)參數描述中資料表中列出的 AWS 區域。

*authorization*   
此子句指出叢集在身分驗證和授權存取包含程式庫檔案的 Amazon S3 儲存貯體時使用的方法。叢集必須有使用 LIST 和 GET 動作存取 Amazon S3 的許可。  
授權的語法與 COPY 命令授權相同。如需詳細資訊，請參閱[授權參數](copy-parameters-authorization.md)。  

```
IAM_ROLE { default | ‘arn:aws:iam::{{<AWS 帳戶-id>}}:role/{{<role-name>}}’
```
 使用預設關鍵字，讓 Amazon Redshift 使用設定為預設並在執行 CREATE LIBRARY 命令時與叢集關聯的 IAM 角色。  
對叢集進行身分驗證和授權時所使用的 IAM 角色使用 Amazon Resource Name (ARN)。如果指定 IAM\_ROLE，則不能使用 ACCESS\_KEY\_ID 和 SECRET\_ACCESS\_KEY、SESSION\_TOKEN 或 CREDENTIALS。  
或者，如果 Amazon S3 儲存貯體使用的是伺服器端加密，請提供 credentials-args 字串中的加密金鑰。如果您使用的是臨時安全登入資料，請提供 *credentials-args* 字串中的暫時字符。  
如需詳細資訊，請參閱[暫時安全憑證](copy-usage_notes-access-permissions.md#r_copy-temporary-security-credentials)。

 REGION [AS] *aws\_region*   
Amazon S3 儲存貯體所在的 AWS 區域。當 Amazon S3 儲存貯體不在與 Amazon Redshift 叢集相同的 AWS 區域中時，需要 REGION。*aws\_region* 的值必須符合 COPY 命令[REGION](copy-parameters-data-source-s3.md#copy-region)參數描述中資料表中列出的 AWS 區域。  
根據預設，CREATE LIBRARY 會假設 Amazon S3 儲存貯體與 Amazon Redshift 叢集位於相同的 AWS 區域。

## 範例
<a name="r_CREATE_LIBRARY-examples"></a>

以下兩個範例會安裝 [urlparse](https://docs.python.org/2/library/urlparse.html#module-urlparse) Python 模組，它會封裝成名為 `urlparse3-1.0.3.zip` 的檔案。

以下命令會從上傳到位於美國東部區域的 Amazon S3 儲存貯體的封裝，安裝名為 `f_urlparse` 的 UDF 程式庫。

```
create library f_urlparse
language plpythonu
from 's3://amzn-s3-demo-bucket/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';
```