Como criar 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) em um ambiente existente do AWS Elastic Beanstalk.
Breve descrição
Você pode usar arquivos de configuração do Elastic Beanstalk, chamados .ebextensions, para criar trabalhos 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 na resolução a seguir adicionam um trabalho 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, considere usar o arquivo cron-leaderonly-linux.config para ambientes web. Se você estiver usando um ambiente de trabalho dedicado, considere usar 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 do arquivo myscript.sh nas instâncias do Elastic Beanstalk e as permissões de arquivo necessárias. A chave comandos especifica uma lista de comandos a serem executados nas instâncias.
Faça o download do modelo cron-linux.config no repositório do AWS 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:**Ao nomear seu arquivo de configuração, considere que 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 que está 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 removendo /etc/cron.d/mycron.bak.
Para obter mais informações sobre como personalizar seu ambiente usando .ebextensions, 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:
1. Na raiz da pasta do aplicativo, crie um diretório chamado .ebextensions.
2. Mova o arquivo cron-linux.config que você criou ou atualizou para a pasta .ebextensions.
3. Crie uma pasta zip para os arquivos do aplicativo, incluindo o novo arquivo de configuração.
O exemplo a seguir mostra a estrutura do diretório .ebextensions e do arquivo cron-linux.config no arquivo zip do aplicativo:
|-- .ebextensions | |-- cron-linux.config | |-- other .config files |-- other application files
Informações relacionadas
Como configurar ambientes do Elastic Beanstalk
Conteúdo relevante
- AWS OFICIALAtualizada há 6 meses
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há 2 anos