Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

CREATE LIBRARY

安装一个 Python 库,在使用 CREATE FUNCTION 命令创建用户定义的函数 (UDF) 时,用户可使用该库进行整合。用户安装的库的总大小不能超过 100MB。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'] }

参数

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 的示例。

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 存储桶不在您的 Amazon Redshift 集群所在的区域内,则必须使用 REGION 选项指定数据所在的区域。在 COPY 命令的 REGION 参数描述中,aws_region 的值必须与表中列出的区域匹配。

authorization

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

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

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

默认情况下,CREATE LIBRARY 假定 Amazon S3 存储桶位于 Amazon Redshift 集群所在的区域。

示例

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

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

本页内容: