View a markdown version of this page

Solução de problemas do S3 Files - Amazon Simple Storage Service

Solução de problemas do S3 Files

Esta página ajuda a diagnosticar e resolver problemas comuns no S3 Files.

O comando de montagem falha

O comando mount -t s3files falha e exibe um erro.

Causas comuns e ações:

  • “mount.s3files: command not found”: o cliente do S3 Files (amazon-efs-utils) não está instalado ou a versão é anterior à 3.0.0. Instale ou atualize o cliente. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.

  • “Failed to resolve file system DNS name”: não há destino de montagem na zona de disponibilidade em que a instância do EC2 está sendo executada. Crie um destino de montagem nessa zona de disponibilidade ou execute a instância em uma zona de disponibilidade que tenha um destino de montagem. Para obter mais informações, consulte Criar destinos de montagem.

  • A conexão atingiu o tempo limite: a configuração do grupo de segurança não está permitindo tráfego NFS. Verifique se o grupo de segurança do destino de montagem permite TCP de entrada na porta 2049 do grupo de segurança da instância e se o grupo de segurança da instância permite TCP de saída na porta 2049 para o grupo de segurança do destino de montagem. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.

  • “Access denied” durante a montagem: o perfil do IAM anexado ao recurso de computação não tem as permissões necessárias do S3 Files. Verifique se o perfil tem a política gerenciada AmazonS3FilesClientFullAccess ou AmazonS3FilesClientReadOnlyAccess anexada ou, no mínimo, a permissão s3files:ClientMount. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.

  • O botocore não está instalado: o auxiliar de montagem requer que o botocore interaja com serviços da AWS. Instale o botocore seguindo as instruções no README do amazon-efs-utils no GitHub.

Permissão negada em operações de arquivo

É possível montar o sistema de arquivos, mas receber erros “Permission denied” ou “Operation not permitted” ao ler, gravar ou acessar arquivos.

Causas comuns e ações:

  • Permissão de gravação ausente: se você consegue ler, mas não escrever, verifique se o perfil do IAM associado ao recurso de computação inclui a permissão s3files:ClientWrite ou anexe a política gerenciada AmazonS3FilesClientReadWriteAccess ou AmazonS3FilesClientFullAccess. Para ter mais informações, consulte Políticas gerenciadas da AWS para o Amazon S3 Files.

  • Acesso raiz ausente: se você receber erros de permissão ao acessar arquivos pertencentes à raiz (UID 0), seu perfil do IAM talvez não tenha a permissão s3files:ClientRootAccess. Sem essa permissão, todas as operações são executadas como usuário anônimo do NFS (normalmente nfsnobody), que talvez não tenha acesso aos arquivos. Anexe a política gerenciada AmazonS3FilesClientFullAccess ou adicione s3files:ClientRootAccess à sua política.

  • A política do sistema de arquivos está negando acesso: se você anexou uma política de sistema de arquivos, verifique se ela não está negando as ações das quais os clientes precisam. Uma “permissão” na política baseada em identidade ou na política do sistema de arquivos é suficiente para o acesso. Para obter mais informações, consulte Como o S3 Files funciona com o IAM.

  • Incompatibilidade de permissões POSIX: o S3 Files impõe permissões POSIX padrão (proprietário, grupo, outros) em arquivos e diretórios. Se a aplicação for executada como um usuário que não corresponde ao proprietário ou ao grupo do arquivo, o acesso poderá ser negado mesmo que as permissões do IAM estejam corretas. Use um ponto de acesso para impor um UID/GID específico para todas as solicitações. Para obter mais informações, consulte Criar pontos de acesso para um sistema de arquivos do S3.

O roteamento inteligente de leitura não está funcionando

O S3 Files executa um roteamento inteligente de leitura, pois encaminha automaticamente as solicitações de leitura à camada de armazenamento mais adequada para elas, mantendo a semântica completa do sistema de arquivos, inclusive consistência, bloqueio e permissões POSIX. Leituras pequenas e aleatórias de arquivos usados ativamente são fornecidas pelo armazenamento de alta performance para oferecer baixa latência. Grandes leituras sequenciais e leituras de dados que não estão no sistema de arquivos são fornecidas diretamente do bucket do S3 para oferecer alto throughput, sem cobrança de dados do sistema de arquivos.

O roteamento inteligente de leitura pode não funcionar se uma das métricas de conectividade do cliente (NFSConnectionAccessible, S3BucketAccessible e S3BucketReachable) mostrar 0 ou se você não estiver vendo o throughput de leitura esperado.

Causas comuns e ações:

  • Política em linha do S3 ausente no perfil de computação: o perfil do IAM anexado ao recurso de computação deve incluir uma política em linha que conceda s3:GetObject e s3:GetObjectVersion no bucket vinculado do S3. Sem essa política, o auxiliar de montagem não pode ler diretamente do S3 e todas as leituras passam pelo sistema de arquivos. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.

  • O bucket do S3 não está acessível: verifique a métrica S3BucketReachable. Se ela mostrar 0, verifique se o recurso de computação tem acesso de rede ao S3 (por exemplo, por meio de um endpoint da VPC ou gateway NAT).

  • O arquivo foi modificado: as leituras só são fornecidas diretamente do S3 quando o arquivo não foi modificado pelo sistema de arquivos. Se você gravou no arquivo e as alterações ainda não foram sincronizadas com o S3, as leituras passarão pelo sistema de arquivos até que a sincronização seja concluída.

O sistema de arquivos exibe erros de servidor NFS de modo consistente

Um sistema de arquivos criptografado retorna erros de servidor NFS de modo consistente. Esses erros podem ocorrer quando o S3 Files não consegue recuperar sua chave do AWS KMS por um dos seguintes motivos:

  • A chave foi desativada.

  • A chave foi excluída.

  • A permissão para o S3 Files usar a chave foi revogada.

  • O AWS KMS está temporariamente indisponível.

Medida a ser tomada

Primeiro, confirme se a chave do AWS KMS está habilitada. É possível visualizar suas chaves no console do AWS KMS. Para obter mais informações, consulte Viewing Keys no Guia do desenvolvedor do AWS Key Management Service.

Se a chave não estiver habilitada, habilite-a. Para obter mais informações, consulte Enabling and Disabling Keys no Guia do desenvolvedor do AWS Key Management Service.

Se exclusão da chave estiver pendente, cancele a exclusão e reabilite-a. Consulte mais informações sobre programação e cancelamento de exclusão de chaves no Guia do desenvolvedor do AWS Key Management Service.

Se a chave estiver habilitada e você ainda estiver enfrentando problemas, entre em contato com o AWS Support.

Objeto ausente no bucket do S3 após a gravação do sistema de arquivos

Você gravou um arquivo por meio do sistema de arquivos e esperava que ele aparecesse como um objeto no bucket do S3, mas o objeto não está lá. Os S3 Files agrupa as alterações em lote por aproximadamente 60 segundos antes de copiá-las no S3. Se o objeto ainda não aparecer, a exportação pode ter falhado. Nesse caso, você vê o aumento da métrica do FailedExports CloudWatch.

Medida a ser tomada

Verifique o status de exportação do arquivo usando atributos estendidos:

getfattr -n "user.s3files.status;$(date -u +%s)" missing-file.txt --only-values

O carimbo de data/hora no nome do atributo garante que você obtenha o status mais recente. Resultado do exemplo:

S3Key: s3://bucket/prefix/missing-file.txt ExportError: PathTooLong

ExportError não será exibido se não houver falha na exportação. S3Key estará vazio se um objeto do S3 nunca tiver sido vinculado ao arquivo.

A seguinte tabela lista todos os valores ExportError possíveis.

Erro Causa
S3AccessDenied O perfil do IAM que o S3 Files assume não tem permissões suficientes para gravação no bucket do S3. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.
S3BucketNotFound O bucket de origem do S3 não existe mais ou foi renomeado. Verifique se ele existe na região e conta esperadas da AWS.
InternalError Ocorreu um erro de sistema interno.
S3UserMetadataTooLarge O limite de tamanho dos metadados do usuário do S3 foi excedido. Para ter mais informações sobre esses limites, consulte Cotas, limites e recursos não compatíveis.
FileSizeExceedsS3Limit O tamanho do arquivo excede o limite de tamanho de objeto do S3. Para ter mais informações sobre esses limites, consulte Cotas, limites e recursos não compatíveis.
EncryptionKeyInaccessible A chave de criptografia usada pelo bucket do S3 está inacessível ao S3 Files. Conceda ao S3 Files acesso à sua chave de criptografia. Para obter mais informações, consulte Criptografia.
RoleAssumptionFailed Não foi possível assumir o perfil. Verifique suas políticas de confiança. Para obter mais informações, consulte Pré-requisitos referentes ao S3 Files.
KeyTooLongToBreakCycle O S3 Files não conseguiu resolver uma dependência circular (por exemplo, devido à renomeação de dois arquivos com o nome um do outro) porque o caminho do arquivo excede o limite de tamanho de chave do S3. Encurte o caminho do diretório para resolver este erro.
PathTooLong O caminho do arquivo excede o limite de tamanho de chave do S3. Para ter mais informações sobre esses limites, consulte Cotas, limites e recursos não compatíveis.
DependencyExportFailed Uma entidade pai ou uma dependência apresentou uma falha de exportação irreversível. Verifique o status da entidade pai ou de qualquer dependência usandogetfattr.
S3ObjectArchived O objeto do S3 está arquivado (S3 Glacier Flexible Retrieval ou S3 Glacier Deep Archive) e não pode ser lido. Restaure o objeto usando primeiro as APIs do S3.

O S3 Files repete automaticamente as exportações com falha. ExportError é exibido somente para erros irreversíveis.

Objeto do S3 não visível no sistema de arquivos

Existe um objeto no bucket do S3, mas ele não aparece no sistema de arquivos. O nome da chave do objeto talvez não esteja associado a um caminho de arquivo POSIX válido. O S3 Files não permite o acesso a nomes de chave do S3 com componentes de caminho vazios (foo//bar), componentes de caminho relativo (foo/./bar e foo/../bar), nomes de chave que contêm bytes nulos ou nomes de chave em que qualquer componente de caminho exceda 255 bytes. Objetos com nomes de chave incompatíveis não são importados para o sistema de arquivos.

Estão aparecendo arquivos no diretório de achados e perdidos

Apareceram arquivos no diretório .s3files-lost+found-file-system-id, no diretório raiz do sistema de arquivos. Nesse caso, você vê o aumento da métrica do LostAndFoundFiles CloudWatch. Isso ocorre quando surge um conflito de sincronização. Um conflito ocorre quando o mesmo arquivo é modificado por meio do sistema de arquivos e o objeto do S3 correspondente é alterado antes de o S3 Files sincronizar as alterações do sistema de arquivos de volta para o S3. O S3 Files trata o bucket do S3 como a fonte de referência, move o arquivo conflitante para o diretório de achados e perdidos e importa a versão mais recente do bucket do S3 para o sistema de arquivos.

Identificação de arquivos no diretório de achados e perdidos

Quando o S3 Files move um arquivo para o diretório de achados e perdidos, ele acrescenta um identificador hexadecimal ao nome do arquivo para distinguir várias versões do mesmo arquivo que podem ser movidas ao longo do tempo. Nomes de arquivo com mais de 100 caracteres são truncados para criar espaço para esse identificador. O caminho do diretório original do arquivo não é preservado no diretório de achados e perdidos.

Medida a ser tomada

Obtenha o caminho original do arquivo e a chave de objeto do S3 correspondente:

getfattr -n "user.s3files.status;$(date -u +%s)" .s3files-lost+found-fs-12345678/abcdef1234_report.csv --only-values

Resultado do exemplo:

S3Key: s3://bucket/prefix/report.csv FilePath: /data/report.csv
Campo Descrição
S3Key Caminho do S3 completo do objeto que causou o conflito ou campo vazio se o objeto tiver sido excluído no bucket do S3.
FilePath Caminho relativo do arquivo antes do conflito.

Em seguida, você pode manter a versão mais recente do bucket do S3 e excluir o arquivo do diretório de achados e perdidos ou copiar o arquivo do diretório de achados e perdidos de volta para o caminho original a fim de substituir a versão do S3.

nota

Os arquivos no diretório de achados e perdidos permanecem lá indefinidamente e são contabilizados nos custos de armazenamento do sistema de arquivos. Exclua os arquivos do diretório de achados e perdidos quando eles não forem mais necessários.

A sincronização está atrasada

A métrica do PendingExports CloudWatch está aumentando, o que indica que a workload está gerando alterações mais depressa do que o S3 Files é capaz de sincronizá-las com o S3.

Isso significa que a workload pode estar excedendo a taxa de sincronização. O S3 Files exporta até oitocentos arquivos por segundo por sistema de arquivos. Considere a possibilidade de reduzir a taxa de modificações de arquivo ou distribuir o trabalho em vários sistemas de arquivos. Monitore a métrica PendingExports ao longo do tempo. Se ela estabilizar ou diminuir, isso significa que o S3 Files está conseguindo acompanhar. Se continuar aumentando, entre em contato com o AWS Support.

Habilitar logs de depuração de cliente

Se estiver solucionando problemas de montagem, conectividade ou desvio de leitura, é possível habilitar o registro em log em nível de depuração em clientes do S3 Files para capturar mais detalhes.

Auxiliar de montagem e logs de vigilância

Edite /etc/amazon/efs/s3files-utils.conf e altere o nível de registro em log de INFO para DEBUG:

[DEFAULT] logging_level = DEBUG

Desmonte e remonte o sistema de arquivos para que a alteração entre em vigor:

sudo umount /mnt/s3files sudo mount -t s3files file-system-id:/ /mnt/s3files

Os logs são gravados em /var/log/amazon/efs/. O log do auxiliar de montagem é mount.log.

Logs de proxy (efs-proxy)

O proxy lida com o tráfego NFS e o desvio de leitura do S3. Para habilitar o registro em log de depuração para o proxy, edite /etc/amazon/efs/s3files-utils.conf:

[proxy] proxy_logging_level = DEBUG

Desmonte e remonte para que a alteração entre em vigor. Os logs do proxy são gravados em /var/log/amazon/efs/.

Logs do túnel TLS (stunnel)

Os logs de túnel TLS estão desabilitados por padrão. Para habilitá-los, edite /etc/amazon/efs/s3files-utils.conf e defina o seguinte:

[mount] stunnel_debug_enabled = true

Para salvar todos os logs de stunnel de um sistema de arquivos em um único arquivo, também remova o comentário da linha stunnel_logs_file:

stunnel_logs_file = /var/log/amazon/efs/{fs_id}.stunnel.log

Limites de tamanho de log

Os arquivos de log são rotacionados automaticamente. É possível configurar o tamanho máximo e o número de arquivos rotacionados em s3files-utils.conf.

[DEFAULT] logging_max_bytes = 1048576 logging_file_count = 10

O padrão é 1 MB por arquivo de log com 10 arquivos rotacionados, com um limite máximo de 10 MB por tipo de log.

Compartilhamento de logs com o AWS Support

Ao entrar em contato com o AWS Support, colete os logs e a configuração do cliente em um único arquivo:

sudo tar -czf /tmp/s3files-support-logs.tar.gz \ /var/log/amazon/efs/ \ /etc/amazon/efs/s3files-utils.conf

Inclua /tmp/s3files-support-logs.tar.gz em seu caso de suporte.