Object Storage Service (OSS) é um serviço de armazenamento em nuvem massivo, seguro, econômico e altamente confiável. Monte um bucket do OSS no Function Compute para permitir que sua função interaja com o OSS como se fosse um sistema de arquivos local. Isso simplifica o acesso a recursos e os fluxos de trabalho de processamento de dados.
Limites
Uma função do Function Compute suporta até cinco destinos de montagem NAS e cinco OSS na mesma região.
-
Os diretórios locais para destinos de montagem NAS e OSS devem ser exclusivos no ambiente de execução da função.
Para obter mais informações sobre a configuração de destinos de montagem NAS, consulte Configurar um sistema de arquivos NAS.
Pré-requisitos
-
Object Storage Service (OSS)
-
Function Compute
-
O recurso de montagem do OSS exige uma função do RAM que conceda à sua função permissão para acessar o OSS. Para obter detalhes, consulte Conceder permissões a uma função para acessar outros serviços de nuvem usando uma função de serviço.
-
Procedimento
Etapa 1: Configurar um destino de montagem do OSS
Faça login no console do Function Compute. No painel de navegação à esquerda, escolha .
Na barra de navegação superior, selecione uma região. Na página Functions, clique em o nome da função de destino.
-
Na página de detalhes da função, clique em a aba Configuration. Clique em Advanced Settings à direita de Modify. No painel Advanced Settings, localize a seção Storage, ative a chave de Mount OSS, configure os parâmetros e clique em Deploy.
Parâmetro
Descrição
Exemplo
OSS Mount Target: Configure o destino de montagem do OSS.
Bucket
Selecione um bucket existente. Para criar um novo, clique em Create OSS Bucket para abrir o console do OSS. Para obter informações sobre taxas associadas ao OSS, consulte Visão geral do faturamento do OSS.
example-bucket
Bucket Subdirectory
Especifique um subdiretório no bucket. Use um caminho absoluto. Se este campo estiver vazio ou definido como /, o sistema monta o diretório raiz do bucket.
/files
OSS Endpoint
Ao selecionar um bucket, o sistema seleciona automaticamente seu endpoint. Selecione Custom Endpoint para modificar o endereço do endpoint. Para obter uma lista de endpoints do OSS por região, consulte Regiões e endpoints.
NotaSe o bucket e sua função do Function Compute estiverem na mesma região, use um endpoint interno.
Caso o bucket esteja em uma região diferente, utilize um endpoint público. Isso gera taxas de transferência de dados de saída.
Default Endpoint
Local directory of a function
Defina um diretório local no ambiente de execução da função. O diretório deve ser um subdiretório de /home, /mnt ou /data.
/mnt/oss
Permissions on the local directory of the function
Escolha as permissões para o diretório local. Selecione Read-only ou Read and Write.
Read/write
NotaO recurso de montagem do OSS depende da configuração de rede da função. Se sua função estiver configurada para acessar apenas uma VPC e a opção Allow Default NIC to Access Internet estiver definida como No, a função precisará acessar a internet por meio da VPC especificada para usar um endpoint público do OSS. Para obter detalhes, consulte Configurar um endereço IP público estático.
Etapa 2: Acessar arquivos no diretório montado
Após configurar o destino de montagem do OSS, acesse os arquivos no diretório montado como se fossem locais.
-
Na página de detalhes da função, clique em a aba Code. Escreva seu código no editor e clique em Deploy.
O código a seguir fornece um exemplo.
import os def handler(event, context): # Mount directory mount_path = '/mnt/oss' # List files in the mount directory files = os.listdir(mount_path) print("Files in OSS mount:", files) # Read a specific file from the mount directory file_path = os.path.join(mount_path, 'example.txt') if os.path.exists(file_path): with open(file_path, 'r') as file: content = file.read() print("Content of example.txt:", content) else: print("example.txt does not exist.") # Write a file to the mount directory write_path = os.path.join(mount_path, 'output.txt') with open(write_path, 'w') as file: file.write("Hello, OSS mount!") print("Wrote to output.txt in OSS mount.") return "Function execution completed."NotaNo código, substitua
example.txtpelo nome de um arquivo real existente no diretório OSS montado. -
Após implantar o código, clique em Code na aba Test Function.
Quando a execução for concluída, visualize os resultados na parte inferior da aba Code. A aba Log Output exibe o conteúdo do arquivo
example.txtlido do diretório OSS. Também é possível acessar o console do OSS para verificar se o sistema gravou o arquivooutput.txtno diretório montado correspondente.
Perguntas frequentes
Erro de montagem do OSS: bucket not found
Verifique se o endpoint de acesso do OSS e o nome do bucket estão corretos.
Erro de montagem do OSS: host resolv error ou deadline exceeded
Confirme se o endereço do endpoint está correto.
O erro
host resolv errorocorre quando não é possível resolver o endereço do endpoint.Endpoints internos não funcionam entre regiões diferentes. Utilizar um endpoint interno para uma função em outra região causa timeout de conexão, resultando no erro
deadline exceeded.
Erro de montagem: invalid credentials
Certifique-se de que a função do RAM configurada para sua função possui as permissões necessárias para acessar o OSS. Para obter detalhes, consulte Conceder permissões a uma função para acessar outros serviços de nuvem usando uma função de serviço. As permissões obrigatórias são:
Read-only: Requer as permissões
oss:ListObjectseoss:GetObject.Read and Write: Exige as permissões
oss:ListObjects,oss:GetObject,oss:PutObject,oss:DeleteObject,oss:ListPartseoss:AbortMultipartUpload.
A ação oss:ListObjects é executada no nível do bucket. Portanto, ao conceder acesso a um bucket específico, a política de permissões deve incluir um ARN de recurso no nível do bucket, como acs:oss:*:*:bucketName. Para mais informações, consulte Recurso do OSS.
Input/output error ao ler arquivos montados.
Verifique a classe de armazenamento do seu bucket do OSS. Se a classe for Archive ou Cold Archive, os objetos no bucket estarão congelados e precisarão ser restaurados antes do acesso. Defina a classe de armazenamento do seu bucket do OSS como Standard.
Como visualizar arquivos no diretório local
Na página de detalhes da função, clique em a aba Instance. Na lista de instâncias com estado Running, selecione uma instância e clique em Connect to Instance na coluna Actions.
-
Após conectar-se à instância, execute comandos para visualizar informações sobre os arquivos no diretório local configurado. Por exemplo:

Erro ao acessar o destino de montagem: Transport endpoint is not connected
Esse erro ocorre quando o recurso de montagem do OSS falha devido à memória insuficiente, causada por especificações de memória baixas ou alto uso de memória. Aumente a especificação de memória da sua função conforme suas necessidades de negócio. Recomenda-se um mínimo de 512 MB ao utilizar um destino de montagem do OSS.
Persistência de dados em diretórios de função
O sistema exclui os dados gravados no diretório de uma função quando a instância da função é destruída. Para garantir a persistência dos dados, monte um sistema de arquivos NAS ou um bucket do OSS. Para obter detalhes, consulte Configurar um sistema de arquivos NAS e Configurar uma montagem do OSS.
Acesso somente leitura para um bucket
Acesso de leitura e gravação para um bucket
Acesso somente leitura para um subdiretório
Acesso de leitura e gravação para um subdiretório
Arquivos aparecem vazios durante operações de gravação
Ao gravar em um arquivo por meio de um destino de montagem do OSS, o sistema geralmente carrega o conteúdo para o OSS somente após você chamar explicitamente o método flush() ou fechar o arquivo.
Desempenho lento para compactação ou transferência de arquivos
O OSS não oferece suporte nativo a APIs de sistema de arquivos. Ao montar um bucket do OSS como um diretório, o Function Compute emula o comportamento da API do sistema de arquivos combinando e encapsulando APIs do OSS. Por exemplo, como o OSS não suporta gravações aleatórias, modificar um arquivo existente em um destino de montagem do OSS exige que o Function Compute baixe todo o arquivo de source do OSS, modifique-o e faça o upload novamente.
O desempenho costuma ser bom para operações em que as APIs do sistema de arquivos correspondem diretamente às funções da API do OSS, como leituras e gravações sequenciais de arquivos. No entanto, operações que exigem a combinação de várias APIs do OSS, como as leituras e gravações aleatórias usadas na compactação ou descompactação de arquivos, envolvem numerosas interações com o OSS e, portanto, são mais lentas do que em um sistema de arquivos local.
Sincronização entre instâncias de função
Não. As instâncias de função são independentes umas das outras; portanto, o acesso a um destino de montagem do OSS não é sincronizado entre elas. Por exemplo, se a instância A criar um arquivo no destino de montagem, a instância B poderá não ver esse arquivo imediatamente.