Ao usar o AWS re:Post, você concorda com os AWS re:Post Termos de uso

Como crio trabalhos cron em instâncias do Amazon EC2 em ambientes do Elastic Beanstalk?

3 minuto de leitura
0

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:

  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 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

Como personalizar software em servidores Linux

Como personalizar software em servidores Windows

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses