ライブラリを作成する - Amazon Redshift

ライブラリを作成する

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://mybucket/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 Python モジュールをインストールします。

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

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';