

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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/)を参照してください。

# ライブラリを作成する
<a name="r_CREATE_LIBRARY"></a>

[CREATE FUNCTION](r_CREATE_FUNCTION.md) コマンドのユーザー定義関数 (UDF) を作成するときに、ユーザーは Python ライブラリをインストールすることができます。ユーザーがインストールするライブラリの合計サイズは 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>}}’ }
}
```

## パラメータ
<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)」を参照してください。

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 には 3 つまでのリダイレクトを含めることができます。次は 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>}}’
```
 デフォルトキーワードを使用して、CREATE LIBRARY コマンドの実行時にデフォルトとして設定され、クラスターに関連付けられた IAM ロールの使用を、Amazon Redshift に指示します。  
クラスターが認証と認可に使用する IAM ロールの Amazon リソースネーム (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 リージョン。REGION は、Amazon S3 バケットが Amazon Redshift クラスターと同じ AWS リージョンにない場合に必須です。*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>

次の 2 つの例では、`urlparse3-1.0.3.zip`という名前のファイルにパッケージ化されている [urlparse](https://docs.python.org/2/library/urlparse.html#module-urlparse) Python モジュールをインストールします。

次のコマンドは、米国東部リージョンにある 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';
```