Todos os produtos
Search
Central de documentação

MaxCompute:GET_SIGNED_URL_FROM_OSS

Última atualização: Jul 20, 2026

Gera uma URL pré-assinada para um objeto no Object Storage Service (OSS), concedendo acesso temporário para upload (PUT) ou download (GET) do objeto via HTTP sem credenciais separadas.

Casos de uso

O MaxCompute oferece o recurso Object Table, que permite ao mecanismo de data warehouse acessar dados não estruturados e metadados armazenados no OSS. Para mais informações, consulte Object Table definition.

A Object Table armazena metadados de objetos do OSS em um caminho especificado. Use GET_SIGNED_URL_FROM_OSS para gerar dinamicamente uma URL pré-assinada para um objeto, permitindo uploads e downloads de arquivos. Para mais detalhes, consulte Generate a pre-signed URL to upload and download OSS objects.

Limitações

  • Crie Object Tables apenas usando o endpoint interno do OSS.

  • Esta função não oferece suporte à aceleração de consultas MaxQA. Inclua o comando SET odps.mcqa.disable=true; na instrução SQL.

  • Se um bucket do OSS tiver o recurso Block Public Access ativado, a função GET_SIGNED_URL_FROM_OSS não poderá gerar uma URL pré-assinada com acesso público. Verifique se as permissões do bucket permitem gerar e usar URLs pré-assinadas.

Sintaxe

STRING GET_SIGNED_URL_FROM_OSS (
  STRING <full_object_table_name>, 
  STRING <key>
  [, INT <timeToLiveSeconds>] 
  [, DATETIME <expiration>]
  [, STRING <httpMethod>]
)

Parâmetros

Parâmetro

Obrigatório

Tipo

Descrição

Padrão

full_object_table_name

Sim

STRING

Caminho completo da Object Table no modelo de três camadas, incluindo os nomes do projeto e do schema. Exemplo: project.schema.object_table.

Ao selecionar a autenticação RoleARN durante a criação da tabela, o sistema gera automaticamente um token STS para acessar o OSS.

Nenhum

key

Sim

STRING

Nome do objeto a ser acessado na Object Table. Para mais informações sobre o parâmetro key, consulte a descrição nos resultados retornados em View Object Table properties.

Nenhum

timeToLiveSeconds

Não

INT

Tempo de vida da URL pré-assinada em segundos. Mínimo: 1 segundo. Máximo: 604.800 segundos (7 dias). Este parâmetro é mutuamente exclusivo com expiration.

3.600 segundos

expiration

Não

DATETIME

Data e hora de expiração da URL pré-assinada. O valor deve estar entre 1 segundo e 604.800 segundos (7 dias) após o horário atual. Este parâmetro é mutuamente exclusivo com timeToLiveSeconds.

3.600 segundos após o horário atual

httpMethod

Não

STRING

Método HTTP da URL gerada. Define se a operação será de download (leitura) ou upload (escrita) no OSS.

  • GET: Download

  • PUT: Upload

GET

Valor retornado

Retorna a URL pré-assinada gerada como STRING.

Exemplos

O exemplo a seguir gera uma URL pré-assinada para baixar um objeto do OSS a partir de uma instância do Elastic Compute Service (ECS) na região China (Hangzhou).

Antes de executar o código abaixo, substitua project_name e schema_name pelos nomes reais do seu projeto e schema.

Etapa 1: Gerar uma URL de download

  1. Faça login no console do OSS e envie o arquivo de teste signedget.txt para o diretório object-table-test/object_table_folder. Para mais informações, consulte Upload files.

  2. Use um local client (odpscmd) ou crie um MaxCompute SQL node no DataWorks para criar uma Object Table e atualizar o cache de metadados.

    -- Enable the three-layer model to support schemas in a MaxCompute project. 
    SET odps.namespace.schema=true;
    -- Select the MaxCompute project. 
    USE <project_name>;
    -- Select the schema. 
    USE SCHEMA <schema_name>;
    -- Enable the 2.0 data type system in the MaxCompute project. 
    SET odps.sql.type.system.odps2=true;
    -- This function is not supported for MaxQA query acceleration. 
    SET odps.mcqa.disable=true;
    -- Create an Object Table. 
    CREATE OBJECT TABLE IF NOT EXISTS test_get_signed_url_from_oss 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/object-table-test/object_table_folder/';
    -- Refresh the table cache. 
    ALTER TABLE test_get_signed_url_from_oss REFRESH METADATA;
  3. Consulte os metadados na Object Table.

    SELECT * FROM test_get_signed_url_from_oss;

    Saída esperada:

    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
    | key           | size       | type       | last_modified       | storage_class | etag                             | restore_info | owner_id   | owner_display_name |
    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
    | signedget.txt | 38         | Normal     | 2025-06-04 01:36:52 | Standard      | 96D8258845DAB51BC9B****6E61A2563 | NONE         | 13****     | 13****             |
    +---------------+------------+------------+---------------------+---------------+----------------------------------+--------------+------------+--------------------+
  4. Leia os dados do objeto usando a função GET_DATA_FROM_OSS.

    SELECT 
      STRING(   
        GET_DATA_FROM_OSS(
          '<project_name>.<schema_name>.test_get_signed_url_from_oss',
          key
        )
      )
    FROM test_get_signed_url_from_oss;

    Saída esperada:

    +----------------------------------------+
    | _c0                                    |
    +----------------------------------------+
    | test maxcompute download files by url  |
    +----------------------------------------+
  5. Consulte a Object Table e gere uma URL pré-assinada.

    SELECT GET_SIGNED_URL_FROM_OSS(  
      '<project_name>.<schema_name>.test_get_signed_url_from_oss',    
      key) 
    FROM test_get_signed_url_from_oss;

    Saída esperada:

    +------------+
    | _c0        |
    +------------+
    | http://object-table-test.oss-cn-hangzhou-internal.aliyuncs.com/object_table_folder%2Fsignedget.txt?Expires=17490****&OSSAccessKeyId=STS.****&Signature=****&security-token=**** |
    +------------+

Etapa 2: Baixar o objeto do ECS

  1. Acesse o console do ECS. No painel de navegação à esquerda, escolha Instances & Images > Instances.

  2. Na região China (Hangzhou), selecione a instância desejada, clique em Remote Connection e conecte-se à instância usando o Workbench.

  3. No terminal, execute os comandos abaixo para baixar o objeto do OSS:

    -- Change the directory to /opt.
    cd /opt
    -- Download the OSS object by using the pre-signed URL.
    curl -o /opt/ecs_signed.txt "http://object-table-test.oss-cn-hangzhou-internal.aliyuncs.com/object_table_folder%2Fsignedget.txt?Expires=17490****&OSSAccessKeyId=STS.****&Signature=****&security-token=****"

    Saída:

    [xxx] opt]# curl -o /opt/ecs_signed.txt "http://object-table-test.oss-cn-hangzhou-inxxx&SAccessKeyId=STS.xxx&Signature=xxx&security-token=CAIS3gJxxx
    xxx
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
    100    38  100    38    0     0    263      0 --:--:-- --:--:-- --:--:--   265
    opt]# ls
    aliyun-security  ecs_signed.txt
    [root@iZbp1al9u5z0axrqx50mptZ opt]# cat ecs_signed.txt
    test maxcompute download files by url
    xxx opt]#

Funções relacionadas

GET_SIGNED_URL_FROM_OSS é uma função de processamento de dados não estruturados. Para outras funções relacionadas, consulte Functions for processing unstructured data.