Crontab + AWS: “Não é possível localizar credenciais”

1

Eu tenho um Linode (Ubuntu 16.04) do qual estou tentando copiar arquivos para um bucket do AWS S3 por meio de um cron job chamando um script, mas o log gera: upload failed: ../path/file.ext to s3://bucket/prefix/file.ext Unable to locate credentials

O script tar s um diretório e, em seguida, carrega esse tar no meu depósito s3

  • O script começa a ser concluído se eu o chamar diretamente por meio de sudo
  • Como uma tarefa cron do root, o tar funciona, mas o aws upload não (com o erro mencionado acima)
  • Como uma tarefa agendada de [usuário], o tar falha (relacionado a permissões intencionais), mas o aws de upload é bem-sucedido.
  • Quando instalei o AWS CLI, esqueci exatamente como ele foi redigido, mas optei por instalá-lo para todos os usuários

Coisas que tentei

  1. Ter meu script chama aws diretamente em /usr/local/bin/aws
  2. Adicionando /usr/local/bin/aws ao PATH no crontab e também no meu script
  3. Adicionando AWS_CONFIG_FILE="/home/[user]/.aws/config" no crontab e também no meu script
  4. Repetindo aws configure como raiz
  5. Seguindo esta dica e comparando cron e ambientes interativos. Meu env.cron PATH inclui tudo o que está listado em meu env.interactive PATH , além de mais alguns, até mesmo alguns duplicados - isso é ruim?

Existem muitas mais declarações no meu env.interactive (1810 linhas) em comparação com o meu env.cron (36 linhas). Deve ser algo nas minhas diferenças de ambiente, certo? Eu pesquisei meu env.interactive para qualquer instância de aws , mas não há nenhum, mesmo que o env funcione bem. Alguma dica sobre outros itens específicos para procurar lá?

Todas as ideias e ajuda são apreciadas! Obrigado!

    
por apex 29.01.2017 / 01:03

2 respostas

1

Se você deseja executar um comando específico usando user com sudo e ter a configuração read de seu diretório pessoal em vez do seu, execute-o com sudo -H -u user ... para o sudo para atualizar a variável HOME para o chamado usuário automaticamente.

Nesse caso, isso implicará um valor válido para AWS_CONFIG_FILE e AWS_CREDENTIALS será gerado automaticamente.

    
por 29.05.2017 / 13:52
0

Eu copiei o diretório .aws de /home/[user/ para /root/ e isso pareceu resolvê-lo.

Existe algum problema de segurança / outras preocupações em torno dos arquivos de configuração serem duplicados para a pasta raiz?

    
por 29.01.2017 / 02:22