CREATE LIBRARY - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

CREATE LIBRARY

安装一个 Python 库,在使用 CREATE FUNCTION 命令创建用户定义的函数 (UDF) 时,用户可使用该库进行整合。用户安装的库的总大小不能超过 100MB。

CREATE LIBRARY 无法在事务块 (BEGIN … END) 内运行。有关事务的更多信息,请参阅 可序列化的隔离

Amazon Redshift 支持 Python 2.7 版本。有关更多信息,请参阅 www.python.org

有关更多信息,请参阅导入自定义 Python 库模块

所需的权限

以下是 CREATE LIBRARY 所需的权限:

  • Superuser

  • 具有 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::<Amazon Web Services 账户-id>:role/<role-name>’ } }

参数

OR REPLACE

指定如果存在与已存在的库同名的库,则替换现有库。REPLACE 将立即提交。如果依赖于所替换库的 UDF 正在并行运行,UDF 可能失败或返回意外结果,即使 UDF 正在事务中运行也是如此。您必须是所有者或超级用户才能替换库。

library_name

要安装的库的名称。无法创建包含与 Python Standard Library 模块或 Amazon Redshift 预安装的 Python 模块同名的模块的库。如果现有用户安装的库与要安装的库使用相同的 Python 包,则必须先删除现有库,然后再安装新库。有关更多信息,请参阅适用于 UDF 的 Python 语言支持

LANGUAGE plpythonu

要使用的语言。Python (plpythonu) 是唯一支持的语言。Amazon Redshift 支持 Python 2.7 版本。有关更多信息,请参阅 www.python.org

FROM

库文件的位置。您可以指定 Amazon S3 桶和对象名称,也可以指定用于从公共网站下载文件的 URL。必须以 .zip 文件的形式打包库。有关更多信息,请参阅 Python 文档中的构建和安装 Python 模块

https://file_url

用于从公共网站下载文件的 URL。URL 最多可包含三个重定向。以下是文件 URL 的示例。

'https://www.example.com/pylib.zip'
s3://bucket_name/file_name

包含库文件的单个 Amazon S3 对象的路径。以下是 Amazon S3 对象路径的示例。

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

如果您指定 Amazon S3 桶,则还必须为有权下载该文件的 Amazon 用户提供凭证。

重要

如果 Amazon S3 桶不在您的 Amazon Redshift 集群所在的 Amazon 区域内,则必须使用 REGION 选项指定数据所在的 Amazon 区域。aws_region 的值必须匹配 COPY 命令的 REGION 参数描述中的表中所列的 Amazon 区域。

授权

一个子句,指示您的集群在访问包含库文件的 Amazon S3 桶时使用的身份验证和授权方法。您的集群必须有权利用 LIST 和 GET 操作访问 Amazon S3。

authorization 的语法与 COPY 命令 authorization 的语法相同。有关更多信息,请参阅授权参数

IAM_ROLE { default | ‘arn:aws:iam::<Amazon Web Services 账户-id>:role/<role-name>

使用默认关键字让 Amazon Redshift 使用设置为默认值并在 CREATE LIBRARY 命令运行时与集群关联的 IAM 角色。

使用 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 桶所在的 Amazon 区域。当 Amazon S3 桶与 Amazon Redshift 集群不在同一个 Amazon 区域时,需要 REGION。aws_region 的值必须匹配 COPY 命令的 REGION 参数描述中的表中所列的 Amazon 区域。

预设情况下,CREATE LIBRARY 假定 Amazon S3 桶位于 Amazon Redshift 集群所在的 Amazon 区域。

示例

以下两个示例将安装 urlparse Python 模块,该模块会打包到名为 urlparse3-1.0.3.zip 的文件中。

以下命令从已上载到位于美国东部区域的 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';