View a markdown version of this page

CREATE LIBRARY - Amazon Redshift

O Amazon Redshift deixará de oferecer suporte ao uso de UDFs em Python após 30 de junho de 2026. Começaremos a aplicar essa alteração em fases. Consulte mais informações sobre os detalhes do fim da vida útil do Python e as opções de migração na publicação do blog publicada em 30 de junho de 2025.

CREATE LIBRARY

Instala uma biblioteca Python, que fica disponível para os usuários incorporarem ao criar uma função definida pelo usuário (UDF) com o comando CREATE FUNCTION. O tamanho total das bibliotecas instaladas pelo usuário não pode exceder 100 MB.

CREATE LIBRARY não pode ser executado em um bloco de transação (BEGIN … END). Para obter mais informações sobre transações, consulte Níveis de isolamento no Amazon Redshift.

O Amazon Redshift é compatível com Python versão 2.7. Para obter mais informações, acesse www.python.org.

Para obter mais informações, consulte Exemplo: importar módulos personalizados da biblioteca Python.

Privilégios obrigatórios

A seguir estão os privilégios obrigatórios para CREATE LIBRARY:

  • Superusuário

  • Usuários com o privilégio CREATE LIBRARY ou com o privilégio da linguagem especificada

Sintaxe

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::<Conta da AWS-id>:role/<role-name>’ } }

Parâmetros

OR REPLACE

Especifica que, se uma biblioteca com o mesmo nome que a atual já existe, a biblioteca existente será substituída. REPLACE é confirmado imediatamente. Se uma UDF que depende da biblioteca estiver em execução simultaneamente, a UDF poderá falhar ou retornar resultados inesperados, mesmo se a UDF estiver sendo executada em uma transação. É necessário ser o proprietário ou um superusuário para substituir uma biblioteca.

nome_biblioteca

Nome da biblioteca a ser instalada. Você não pode criar uma biblioteca que contenha um módulo com o mesmo nome que um módulo da biblioteca padrão Python ou de um módulo do Python pré-instalado pelo Amazon Redshift. Se uma biblioteca instalada pelo usuário existente usa o mesmo pacote Python que a biblioteca a ser instalada, é necessário remover a biblioteca existente antes de instalar a nova biblioteca. Para obter mais informações, consulte Suporte da linguagem Python para UDFs.

LANGUAGE plpythonu

A linguagem a ser usada. O Python (plpythonu) é a única linguagem compatível. O Amazon Redshift é compatível com Python versão 2.7. Para obter mais informações, acesse www.python.org.

FROM

Localização do arquivo da biblioteca. É possível especificar um nome de bucket e de objeto do Amazon S3, ou um URL para baixar o arquivo de um site público. A biblioteca deve ser compactada na forma de um arquivo .zip. Para obter mais informações, acesse Criar e instalar módulos Python na documentação do Python.

https://file_url

URL para baixar o arquivo de um site público. O URL pode conter até três redirecionamentos. Veja a seguir um exemplo de URL de arquivo.

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

O caminho para um único objeto do Amazon S3 que contém o arquivo de biblioteca. Veja a seguir um exemplo de um caminho de objeto do Amazon S3.

's3://amzn-s3-demo-bucket/my-pylib.zip'

Se você especificar um bucket do Amazon S3, também deve fornecer credenciais de um usuário da AWS com permissão para baixar o arquivo.

Importante

Se o bucket do Amazon S3 não residir na mesma região da AWS que seu cluster do Amazon Redshift, use a opção REGION para especificar a região da AWS na qual os dados estão localizados. O valor da aws_region deve corresponder a uma região da AWS listada na tabela na descrição do parâmetro REGION para o comando COPY.

authorization

Cláusula que indica o método que o cluster usa na autenticação e autorização para acessar o bucket do Amazon S3 que contém o arquivo da biblioteca. Seu cluster deve ter permissão para acessar o Amazon S3 com as ações LIST e GET.

A sintaxe para autorização é a mesma para a autorização do comando COPY. Para obter mais informações, consulte Parâmetros de autorização.

IAM_ROLE { default | ‘arn:aws:iam::<Conta da AWS-id>:role/<role-name>

Use a palavra-chave padrão para que o Amazon Redshift use a função do IAM definida como padrão e associada ao cluster quando o comando CREATE LIBRARY for executado.

Use o nome do recurso da Amazon (ARN) de uma função do IAM que seu cluster usa para autenticação e autorização. Se especificar IAM_ROLE, você não poderá usar ACCESS_KEY_ID e SECRET_ACCESS_KEY, SESSION_TOKEN ou CREDENTIALS.

Como opção, se o bucket do Amazon S3 usar criptografia no lado do servidor, forneça a chave de criptografia na string credentials-args. Se você usar credenciais de segurança temporárias, forneça o token temporário na string credentials-args.

Para obter mais informações, consulte Credenciais de segurança temporárias.

REGION [AS] aws_region

A região da AWS em que o bucket do Amazon S3 está localizado. REGION é necessário quando o bucket do Amazon S3 não está na mesma região da AWS que o cluster do Amazon Redshift. O valor da aws_region deve corresponder a uma região da AWS listada na tabela na descrição do parâmetro REGION para o comando COPY.

Por padrão, CREATE LIBRARY pressupõe que o bucket do Amazon S3 esteja localizado na mesma região da AWSque o cluster do Amazon Redshift.

Exemplos

Os dois exemplos a seguir instalam o módulo Python urlparse, que é compactado em um arquivo chamado urlparse3-1.0.3.zip.

O comando a seguir instala uma biblioteca de UDF chamada f_urlparse a partir de um arquivo compactado carregado no bucket do Amazon S3 localizado na região leste dos EUA.

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

O exemplo a seguir instala uma biblioteca chamada f_urlparse a partir de um arquivo de biblioteca em um site.

create library f_urlparse language plpythonu from 'https://example.com/packages/urlparse3-1.0.3.zip';