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::
<AWS 账户-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://amzn-s3-demo-bucket/my-pylib.zip'
如果您指定 Amazon S3 桶,则还必须为有权下载该文件的 AWS 用户提供凭证。
重要
如果 Amazon S3 桶不在您的 Amazon Redshift 集群所在的 AWS 区域内,则必须使用 REGION 选项指定数据所在的 AWS 区域。aws_region 的值必须匹配 COPY 命令的 REGION 参数描述中的表中所列的 AWS 区域。
- 授权
-
一个子句,指示您的集群在访问包含库文件的 Amazon S3 桶时使用的身份验证和授权方法。您的集群必须有权利用 LIST 和 GET 操作访问 Amazon S3。
authorization 的语法与 COPY 命令 authorization 的语法相同。有关更多信息,请参阅 授权参数。
IAM_ROLE { default | ‘arn:aws:iam::
<AWS 账户-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 桶所在的 AWS 区域。当 Amazon S3 桶与 Amazon Redshift 集群不在同一个 AWS 区域时,需要 REGION。aws_region 的值必须匹配 COPY 命令的 REGION 参数描述中的表中所列的 AWS 区域。
预设情况下,CREATE LIBRARY 假定 Amazon S3 桶位于 Amazon Redshift 集群所在的 AWS 区域。
示例
以下两个示例将安装 urlparseurlparse3-1.0.3.zip
的文件中。
以下命令从已上载到位于美国东部区域的 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';