Object Storage Service (OSS) é um service de armazenamento em cloud de grande escala, seguro, econômico e altamente confiável. Você pode montar um bucket do OSS no Function Compute, o que permite 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 aceita até cinco pontos de montagem NAS e cinco pontos de montagem OSS na mesma região.
-
Os diretórios locais para os pontos de montagem NAS e OSS devem ser exclusivos no ambiente de execução da função.
Para obter mais informações sobre como configurar pontos de montagem NAS, consulte {{XREF_0}}.
Pré-requisitos
-
Object Storage Service (OSS)
-
Function Compute
-
O recurso de montagem do OSS requer uma função do RAM que conceda à sua função permissão para acessar o OSS. Para obter detalhes, consulte {{XREF_4}}.
-
Procedimento
Etapa 1: Configurar um ponto 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 no nome da função de destino.
-
Na página de detalhes da função, clique na aba Configuration. Clique em Advanced Settings à direita de Modify. No painel Advanced Settings, localize a seção Storage, ative a opção Mount OSS, configure os parâmetros e clique em Deploy.
Parâmetro
Descrição
Exemplo
OSS Mount Target: Configure o ponto 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 as taxas associadas ao OSS, consulte {{XREF_5}}.
example-bucket
Bucket Subdirectory
Especifique um subdiretório no bucket. Este deve ser um caminho absoluto. Se você deixar este campo vazio ou defini-lo como /, o diretório raiz do bucket será montado.
/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 {{XREF_6}}.
NotaSe o bucket e sua função do Function Compute estiverem na mesma região, use um endpoint interno.
Se o bucket estiver em uma região diferente, use um endpoint público. Isso gera taxas de transferência de dados de saída.
Default Endpoint
Local directory of a function
Especifique 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
Selecione as permissões para o diretório local. Você pode escolher 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 através da VPC especificada para usar um endpoint público do OSS. Para obter detalhes, consulte {{XREF_7}}.
Etapa 2: Acessar arquivos no diretório montado
Após configurar o ponto de montagem do OSS, você pode acessar os arquivos no diretório montado como se fossem locais.
-
Na página de detalhes da função, clique na 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 que exista no seu diretório OSS montado. -
Após a implantação do código, clique em Code na aba Test Function.
Após a conclusão da execução, visualize os resultados na parte inferior da aba Code. A aba Log Output mostra o conteúdo do arquivo
example.txtlido do diretório OSS. Você também pode acessar o console do OSS para verificar se o arquivooutput.txtfoi gravado no 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
Verifique se o endereço do endpoint está correto.
O erro
host resolv errorocorre quando o endereço do endpoint não pode ser resolvido.Endpoints internos não podem ser usados entre regiões. O uso de um endpoint interno para uma função em uma região diferente causa um tempo limite de conexão, resultando no erro
deadline exceeded.
Erro de montagem: invalid credentials
Verifique se a função do RAM configurada para sua função possui as permissões necessárias para acessar o OSS. Para obter detalhes, consulte {{XREF_8}}. As permissões necessárias são as seguintes:
Read-only: Requer as permissões
oss:ListObjectseoss:GetObject.Read and Write: Requer 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ão deve incluir um ARN de recurso no nível do bucket, como acs:oss:*:*:bucketName. Para obter mais informações, consulte {{XREF_9}}.
Input/output error ao ler arquivos montados.
Verifique a classe de armazenamento do seu bucket do OSS. Se a classe de armazenamento for Archive ou Cold Archive, os objetos no bucket estarão em um estado congelado e precisarão ser restaurados antes de poderem ser acessados. 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 na aba Instance. Na lista de instâncias que estão no 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:
root@sr-65b30dd4-4f47295574cd41849c5f:/code# cd /mnt/oss root@sr-65b30dd4-4f47295574cd41849c5f:/mnt/oss# ls my.zip output.txt 's (1).yaml' 下载.html 下载.json root@sr-65b30dd4-4f47295574cd41849c5f:/mnt/oss# cd ../ root@sr-65b30dd4-4f47295574cd41849c5f:/mnt# ls oss root@sr-65b30dd4-4f47295574cd41849c5f:/mnt#
Erro ao acessar o ponto de montagem: Transport endpoint is not connected
Esse erro ocorre quando o recurso de montagem do OSS falha devido à memória insuficiente, o que pode ser causado por especificações de memória baixas ou alto uso de memória. Aumente a especificação de memória da sua função com base nas suas necessidades de negócios. Recomenda-se um mínimo de 512 MB ao usar um ponto de montagem do OSS.
Persistência de dados em diretórios de função
Os dados gravados no diretório de uma função são excluídos 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 {{XREF_10}} e {{XREF_11}}.
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
Os arquivos aparecem vazios durante as operações de gravação
Ao gravar em um arquivo através de um ponto de montagem do OSS, o sistema normalmente carrega o conteúdo no 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 as APIs do OSS. Por exemplo, como o OSS não aceita gravações aleatórias, a modificação de um arquivo existente em um ponto de montagem do OSS exige que o Function Compute baixe todo o arquivo de origem do OSS, modifique-o e, em seguida, faça o upload novamente.
O desempenho geralmente é 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 operações de leitura e gravação aleatórias usadas na compactação ou descompactação de arquivos, envolvem inúmeras 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 ponto de montagem do OSS não é sincronizado entre elas. Por exemplo, se a instância A criar um arquivo no ponto de montagem, a instância B poderá não ver esse arquivo imediatamente.