Como crio trabalhos cron em instâncias do Amazon EC2 em ambientes do Elastic Beanstalk?
Quero criar um trabalho cron que execute um script personalizado em todas as instâncias do Amazon Elastic Compute Cloud (Amazon EC2). As instâncias do Amazon EC2 estão em um ambiente existente do AWS Elastic Beanstalk.
Breve descrição
Use arquivos de configuração do Elastic Beanstalk, chamados .ebextensions, para criar jobs cron que são executados em todas as instâncias do Amazon EC2 em um ambiente do Elastic Beanstalk. No arquivo zip do aplicativo Elastic Beanstalk, crie um diretório chamado .ebextensions. O arquivo zip contém arquivos de configuração que são executados quando o aplicativo é implantado nas instâncias do Amazon EC2.
**Observação:**As etapas neste exemplo adicionam um job cron que é executado em todas as instâncias do Amazon EC2 em um ambiente do Elastic Beanstalk ao mesmo tempo. Se você tiver uma tarefa periódica a ser executada em apenas uma instância, use o arquivo cron-leaderonly-linux.config para ambientes web. Para usar o arquivo cron-leaderonly-linux-config, consulte cron-leaderonly-linux.config no site do GitHub. Se você tiver um ambiente de trabalho dedicado, use tarefas periódicas.
Resolução
Crie ou atualize seu arquivo de configuração
Há duas chaves no arquivo cron-linux.config: arquivos e comandos. A chave arquivos especifica a localização dos arquivos cron mycron e myscript.sh nas instâncias do Elastic Beanstalk com as permissões de arquivo necessárias. A chave comandos especifica uma lista de comandos a serem executados nas instâncias. Baixe o modelo cron-linux.config no site do GitHub. Ou, crie ou atualize um arquivo de configuração existente com base no exemplo a seguir:
files: "/etc/cron.d/mycron": mode: "000644" owner: root group: root content: | * * * * * root /usr/local/bin/myscript.sh "/usr/local/bin/myscript.sh": mode: "000755" owner: root group: root content: | #!/bin/bash date > /tmp/date # Your actual script content exit 0 commands: remove_old_cron: command: "rm -f /etc/cron.d/mycron.bak"
**Observação:**Vários arquivos de configuração no diretório .ebextensions são executados em ordem alfabética por nome de arquivo. Você pode nomear seu arquivo de configuração cron-linux.config.
O arquivo cron-linux.config cria um arquivo cron chamado /etc/cron.d/mycron e é configurado para executar um script a cada minuto. O script myscript.sh gera a data e, em seguida, fecha quando é executado. Toda vez que o arquivo cron-linux.config é aplicado durante as implantações, um backup do arquivo /etc/cron.d/mycron é criado, chamado /etc/cron.d/mycron.bak. O último comando em cron-linux.config limpa o diretório /etc/cron.d e remove /etc/cron.d/mycron.bak. Para obter mais informações, consulte Personalização avançada do ambiente com arquivos de configuração (.ebextensions).
Crie um pacote de origem do aplicativo
Para adicionar o arquivo de configuração ao código-fonte do aplicativo web, conclua as seguintes etapas:
- Na raiz da pasta do aplicativo, crie um diretório chamado .ebextensions.
- Mova o arquivo cron-linux.config que você criou ou atualizou para a pasta .ebextensions.
- Crie uma pasta zip para os arquivos do aplicativo e inclua o novo arquivo de configuração.
Este exemplo mostra a estrutura do diretório .ebextensions e do arquivo cron-linux.config no arquivo zip do aplicativo:
~/my-app/ |-- .ebextensions/ | |-- cron-linux.config | `-- other.config |-- other application files
Informações relacionadas
Como configurar ambientes do Elastic Beanstalk
Conteúdo relevante
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 8 meses
- Como posso carregar arquivos do WordPress maiores que 2 MB para o meu ambiente do Elastic Beanstalk?AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há 2 anos