ライブラリを作成する
CREATE FUNCTION コマンドのユーザー定義関数 (UDF) を作成するときに、ユーザーは Python ライブラリをインストールすることができます。ユーザーがインストールするライブラリの合計サイズは 100 MB を超えられません。
CREATE LIBRARY は、トランザクションブロック内で実行することはできません (BEGIN … END)。トランザクションの詳細については、「直列化可能分離」を参照してください。
Amazon Redshift は Python バージョン 2.7 をサポートしています。詳細については、www.python.org
詳細については、「カスタム Python ライブラリモジュールのインポート」を参照してください。
必要な権限
CREATE LIBRARY に必要な権限を以下に示します。
スーパーユーザー
CREATE LIBRARY の権限を持つユーザー、または指定した言語の権限を持つユーザー
構文
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 言語のサポート」を参照してください。
- plpythonu 言語
-
使用される言語。サポートされている言語は Python (plpythonu) のみです。Amazon Redshift は Python バージョン 2.7 をサポートしています。詳細については、www.python.org
を参照してください。 - FROM
-
ライブラリファイルの場所。Amazon S3 バケットとオブジェクト名を指定できます。また、公開ウェブサイトからファイルをダウンロードする URL を指定できます。ライブラリは
.zip
ファイルの形式でパッケージ化される必要があります。詳細については、Python ドキュメントから、Python モジュールの構築とインストールを参照してください。 - 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 パラメータの説明に示されている AWS リージョンと一致する必要があります。
- authorization
-
ライブラリファイルを含む Amazon S3 バケットへアクセスするための認証と許可にクラスターが使用する方法を示す句です。クラスターは、LIST と GET のアクションにより Amazon S3 にアクセスするためのアクセス許可が必要です。
認証の構文は COPY コマンドの認証の構文と同じです。詳細については、「認証パラメータ」を参照してください。
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 文字列の一時トークンを指定します。
詳細については、「一時的な認証情報」を参照してください。
- REGION [AS] aws_region
-
Amazon S3 バケットがある AWS リージョン。REGION は、Amazon S3 バケットが Amazon Redshift クラスターと同じ AWS リージョンにない場合に必須です。aws_region の値は、COPY コマンドの REGION パラメータの説明に示されている AWS リージョンと一致する必要があります。
CREATE LIBRARY のデフォルトでは、Amazon S3 バケットが Amazon Redshift クラスターと同じ AWS リージョンにあると見なします。
例
次の 2 つの例では、urlparse3-1.0.3.zip
という名前のファイルにパッケージ化されている urlparse
次のコマンドは、米国東部リージョンにある 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';