メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

ライブラリを作成する

CREATE FUNCTION コマンドのユーザー定義関数 (UDF) を作成するときに、ユーザーは Python ライブラリをインストールすることができます。 ユーザーがインストールするライブラリの合計サイズは 100 MB を超えられません。 CREATE LIBRARY は、トランザクションブロック内で実行することはできません (BEGIN … END)。 詳細については、「カスタム Python ライブラリモジュールのインポート」を参照してください。

Amazon Redshift は Python のバージョン 2.7 をサポートしています。詳細については、www.python.org を参照してください。

構文

Copy
CREATE [ OR REPLACE ] LIBRARY library_name LANGUAGE plpythonu FROM { 'https://file_url' | 's3://bucketname/file_name' authorization [ REGION [AS] 'aws_region'] }

Parameters

OR REPLACE

このライブラリと同じ名前のライブラリがすでに存在する場合、既存のライブラリが置き換えられることを指定します。 REPLACE は即座にコミットされます。 ライブラリに依存する UDF が同時に実行されている場合、UDF がトランザクション内で実行されていても、UDF は失敗するか、予期しない結果を返す場合があります。 ライブラリを置き換えるには、所有者またはスーパーユーザーである必要があります。

library_name

インストールされるライブラリの名前。 Python 標準ライブラリモジュール、またはインストール済みの Amazon Redshift Python モジュールと同じ名前のモジュールを含むライブラリを作成することはできません。 ユーザーがインストールした既存のライブラリがインストールするライブラリと同じ Python パッケージを使用している場合は、新しいライブラリをインストールする前に既存のライブラリを削除する必要があります。 詳細については、「UDF のための Python 言語のサポート」を参照してください。

plpythonu 言語

使用される言語。 Python (plpythonu) のみがサポートされる言語です。 Amazon Redshift は Python のバージョン 2.7 をサポートしています。詳細については、www.python.org を参照してください。

FROM

ライブラリファイルの場所。 Amazon S3 バケットとオブジェクト名を指定できます。また、公開ウェブサイトからファイルをダウンロードする URL を指定できます。 ライブラリは .zip ファイルの形式でパッケージ化される必要があります。 詳細については、Python ドキュメントから、Building and Installing Python Modules を参照してください。

https://file_url

公開ウェブサイトからファイルをダウンロードする URL。 URL には 3 つまでのリダイレクトを含めることができます。 次は URL ファイルの例です。

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

s3://bucket_name/file_name

ライブラリファイルを含む単一の Amazon S3 オブジェクトのパス。 以下は、Amazon S3 オブジェクトパスの例です。

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

Amazon S3 バケットを指定する場合、ファイルをダウンロードする権限を持つ AWS のユーザーの認証情報を指定する必要があります。

重要

Amazon S3 S3 バケットが Amazon Redshift クラスターと同じリージョンに存在しない場合は、REGION オプションを使用して、データがあるリージョンを指定する必要があります。aws_region の値は、COPY コマンドの REGION パラメータの説明に示されているリージョンと一致する必要があります。

authorization

ライブラリファイルを含む Amazon S3 バケットへアクセスするための認証と許可にクラスターが使用する方法を示す句です。 クラスターは、LIST と GET のアクションにより Amazon S3 にアクセスするためのアクセス許可が必要です。

認証の構文は COPY コマンドの認証の構文と同じです。詳細については、「認証パラメータ」を参照してください。

IAM ロールを指定するには、以下に示すように、<account-id><role-name>を、CREDENTIALS の credentials-args 文字列のアカウント ID およびロール名と置き換えます。

Copy
'aws_iam_role=arn:aws:iam::<aws-account-id>:role/<role-name>'

必要に応じて、Amazon S3 バケットがサーバー側の暗号化を使用する場合は、credentials-args 文字列の暗号化キーを指定します。一時的なセキュリティ認証情報を使う場合は、credentials-args 文字列の一時トークンを指定します。

キーに基づくアクセスコントロールを指定するには、次の形式で credentials-args を指定します。

Copy
'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>'

一時トークン認証情報を使用するには、一時アクセスキー ID、一時秘密アクセスキー、および一時トークンを提供する必要があります。credentials-args 文字列は次の形式になります。

Copy
WITH CREDENTIALS AS 'aws_access_key_id=<temporary-access-key-id>;aws_secret_access_key=<temporary-secret-access-key>;token=<temporary-token>'
詳細については、「一時的セキュリティ認証情報」を参照してください。

REGION [AS] aws_region

Amazon S3 バケットがある AWS リージョン。REGION は、Amazon S3 バケットが Amazon Redshift クラスターと同じリージョンにない場合に必須です。aws_region の値は、COPY コマンドの REGION パラメータの説明に示されているリージョンと一致する必要があります。

デフォルトでは、CREATE LIBRARY は Amazon S3 バケットが Amazon Redshift クラスターと同じリージョンにあると見なします。

次の 2 例では、urlparse3-1.0.3.zip 名のファイルにパッケージ化された Python モジュール urlparse をインストールします。

次のコマンドは、米国東部リージョンにある Amazon S3 バケットにアップロードされたパッケージから f_urlparse 名の UDF ライブラリをインストールします。

Copy
create library f_urlparse language plpythonu from 's3://mybucket/urlparse3-1.0.3.zip' credentials 'aws_access_key_id=<access-key-id>;aws_secret_access_key=<secret-access-key>' region as 'us-east-1';

次の例では、ウェブサイトのライブラリから f_urlparse 名のライブラリをインストールします。

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

このページの内容: