Todos os produtos
Search
Central de documentação

:Initialize an instance using custom data

Última atualização: Jun 26, 2026

Ao criar uma instância do RDS Custom, você pode usar dados personalizados para configurar o sistema automaticamente ou executar scripts. Por exemplo, é possível pré-instalar o Nginx ou o Docker, ou ainda modificar o hostname.

Dados personalizados

Dados personalizados são scripts ou arquivos de configuração passados a uma instância do RDS Custom para executar tarefas de inicialização automatizadas na primeira inicialização. As instâncias do RDS Custom utilizam o componente cloud-init para ler e processar os dados personalizados e aplicar essas configurações. Os formatos de dados mais comuns são:

  • User-Data script: adequado para executar scripts shell simples.

  • Cloud-config data: oferece uma forma estruturada de configurar instâncias usando o formato YAML. É possível gerenciar pacotes, usuários, redes e muito mais.

  • include file: usa a diretiva #include para referenciar uma ou mais URLs que apontam para User-Data scripts ou Cloud-config data, como uma URL do Object Storage Service (OSS).

  • Gzip compressed content: se um User-Data script ou Cloud-config data exceder 32 KB, compacte-o em um arquivo .gz e referencie-o por meio de um include file.

  • MIME multi-part file: agrupa múltiplos tipos de dados — como Cloud-config data e um User-Data script — em um único arquivo.

A frequência de execução dos dados personalizados depende do tipo de dado e do cenário:

Formato de dados

Iniciar instância

Alterar sistema operacional

Reinicializar o disco do sistema

User-Data script

Executado apenas na primeira inicialização da instância. Não é executado em reinicializações subsequentes.

Executado automaticamente.

Executado automaticamente.

Cloud-config data

A execução das tarefas depende da configuração de frequência do módulo correspondente.

  • once-per-instance: executado apenas na primeira inicialização da instância.

  • always: executado toda vez que a instância é iniciada.

Executado automaticamente.

Executado automaticamente.

include file

A execução depende do conteúdo vinculado (User-Data script ou Cloud-config data).

Executado automaticamente.

Executado automaticamente.

Gzip compressed content

A execução depende do conteúdo do arquivo (User-Data script ou Cloud-config data).

Executado automaticamente.

Executado automaticamente.

MIME multi-part file

A execução depende do conteúdo do arquivo (User-Data script ou Cloud-config data).

Executado automaticamente.

Executado automaticamente.

Importante

O script não é executado automaticamente nos seguintes cenários:

  • Ao substituir o sistema operacional por uma imagem personalizada criada a partir da instância original, o sistema não considera essa operação como a primeira inicialização da instância; portanto, o script não é executado.

  • Ao reinicializar o disco do sistema de uma instância criada a partir de uma imagem personalizada, o sistema não reconhece esse processo como primeira inicialização, pois o disco já contém dados. Consequentemente, o script não é executado.

Para obter mais informações sobre os formatos de dados personalizados, consulte a documentação do cloud-init em User-Data Formats.

Limitações

A instância deve usar uma imagem pública ou uma imagem personalizada criada a partir de uma imagem pública. O sistema operacional deve ser um dos seguintes:

Alibaba Cloud Linux, CentOS Stream, Ubuntu, Debian

Usar dados personalizados durante a criação da instância

Etapa 1: Preparar os dados personalizados

User-Data script

  • Formato

    A primeira linha do script deve ser #!.

  • Exemplos de User-Data script

    • Executar um script personalizado. Este exemplo grava a hora do sistema no arquivo userdata_test.txt na primeira inicialização da instância.

      #!/bin/sh
      echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt
    • Personalizar o repositório yum, a configuração do DNS e o serviço de sincronização de tempo

      O exemplo a seguir usa o CentOS Stream 9. Substitua as configurações pelas correspondentes ao seu sistema operacional.

      Importante

      O sistema configura automaticamente o repositório yum padrão, o serviço NTP e o serviço DNS quando a instância é iniciada. Você pode usar dados personalizados da instância para alterar essas configurações padrão. No entanto, observe o seguinte:

      • Ao personalizar o repositório yum, a Alibaba Cloud deixará de oferecer suporte a ele.

      • Ao personalizar o serviço NTP, a Alibaba Cloud deixará de oferecer suporte à sincronização de tempo.

      #!/bin/sh
      # Modify DNS
      echo "nameserver 114.114.114.114" | tee /etc/resolv.conf
      # Modify yum repo and update
      cp /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.bak
      cp /etc/yum.repos.d/centos-addons.repo /etc/yum.repos.d/centos-addons.repo.bak
      sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos.repo
      sed -i "s@http://mirrors.cloud.aliyuncs.com/centos-stream/@https://mirror.stream.centos.org/@g" /etc/yum.repos.d/centos-addons.repo
      yum update -y
      # Modify NTP Server
      echo "server ntp1.aliyun.com" | tee /etc/ntp.conf
      systemctl restart ntpd.service
      Nota

      Neste exemplo, 114.114.114.114 é o endereço do servidor DNS, https://mirror.stream.centos.org é o endereço do repositório yum do CentOS Stream e server ntp1.aliyun.com é o endereço do servidor NTP da Alibaba Cloud. Substitua-os pelos valores reais do seu ambiente.

      Também é possível usar Cloud-config data para alterar o repositório yum. No entanto, esse método é menos flexível e pode não funcionar em cenários em que a Alibaba Cloud já pré-configurou determinados repositórios yum. Recomendamos usar um User-Data script.

    • Criar uma conta de administrador personalizada

      Por padrão, as instâncias do RDS Custom utilizam o usuário root como administrador. Com dados personalizados, você pode criar um usuário administrativo adicional.

      #!/bin/sh
      useradd test-user
      echo "test-user   ALL=(ALL)        NOPASSWD:ALL" | tee -a /etc/sudoers
      mkdir /home/test-user/.ssh
      touch /home/test-user/.ssh/authorized_keys
      echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis****" | tee -a /home/test-user/.ssh/authorized_keys
      Nota

      Substitua a chave pública de exemplo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCRnnUveAis pela sua chave pública.

Cloud-config data

  • Formato

    • A primeira linha deve ser #cloud-config, sem espaços no início.

    • O conteúdo deve usar sintaxe YAML válida.

  • Exemplos de Cloud-config data

    • Personalizar o repositório de software

      Para configurar um repositório de software personalizado, insira o conteúdo a seguir na área Custom Data. Este exemplo é para uma imagem Ubuntu. Ao usar uma imagem diferente, substitua o conteúdo pela configuração de módulo adequada.

      #cloud-config
      apt:
        preserve_sources_list: false
        disable_suites:
          - $RELEASE-updates
          - backports
          - $RELEASE
          - mysuite
        primary:
          - arches:
              - amd64
              - i386
              - default
            uri: http://us.archive.ubuntu.com/ubuntu
    • Instalar o serviço nginx automaticamente

      Insira o conteúdo a seguir na área Custom Data para instalar o serviço nginx automaticamente.

      #cloud-config
      packages: 
       - nginx 
      runcmd: 
       - systemctl start nginx.service
    • Configurar um hostname personalizado

      Insira o conteúdo a seguir na área Custom Data para definir um hostname personalizado.

      #cloud-config
      hostname: my-instance
      fqdn: my-instance.localdomain
    • Executar um script personalizado automaticamente

      Insira o conteúdo a seguir na área Custom Data para executar um script shell automaticamente toda vez que a instância for iniciada.

      #cloud-config
      bootcmd:
      - echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt

Include file

  • Formato

    A primeira linha deve ser #include, sem espaços no início.

  • Exemplo de include file. Este exemplo apresenta uma URL que aponta para um script armazenado em um bucket do Object Storage Service (OSS) na região China (Hangzhou).

    #include
    https://ecs-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.sh

Gzip compressed content

  • Formato

    A primeira linha deve ser #include, sem espaços no início.

  • Exemplo de Gzip compressed content. Este exemplo apresenta uma URL que aponta para um arquivo compactado em Gzip armazenado em um bucket do Object Storage Service (OSS) na região China (Hangzhou).

    #include
    https://rc-image-test.oss-cn-hangzhou.aliyuncs.com/userdata/myscript.gz

MIME multi-part file

  • Formato

    • A primeira linha deve ser Content-Type: multipart/mixed; boundary="****", sem espaços no início. O boundary pode ser personalizado.

    • A segunda linha, MIME-Version: 1.0, especifica a versão. Esse campo geralmente é obrigatório em todas as mensagens MIME.

  • Exemplo de MIME multi-part file

    Content-Type: multipart/mixed; boundary="//"
    MIME-Version: 1.0
    --//
    Content-Type: text/cloud-config; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="cloud-config.txt"
    #cloud-config
    runcmd:
    - [ mkdir, /test-cloudinit ]
    write_files:
    - path: /test-cloudinit/cloud-init.txt
      content: |
        Created by cloud-init
      append: true
    --//
    Content-Type: text/x-shellscript; charset="us-ascii"
    MIME-Version: 1.0
    Content-Transfer-Encoding: 7bit
    Content-Disposition: attachment; filename="userdata.txt"
    #!/bin/bash
    mkdir test-userscript
    touch /test-userscript/userscript.txt
    echo "Created by bash shell script" >> /test-userscript/userscript.txt
    --//--

    Este exemplo de MIME multi-part file contém diretivas do cloud-init e um script Bash shell:

    • As diretivas do cloud-init criam um arquivo (/test-cloudinit/cloud-init.txt) e gravam Created by cloud-init nele.

    • O script Bash shell cria um arquivo (/test-userscript/userscript.txt) e grava Created by bash shell script nele.

Etapa 2: Usar os dados personalizados

  • Criar uma instância no console

    Ao criar uma instância do RDS Custom, expanda a seção More e insira os dados personalizados na área Custom Data.

    Importante

    Se os dados personalizados já estiverem codificados em Base64, selecione The preceding input is Base64-encoded.. O tamanho dos dados antes da codificação não pode exceder 32 KB. Caso os dados não estejam codificados, deixe essa opção desmarcada — o sistema codificará o conteúdo automaticamente.

  • Criar uma instância usando a API

    Ao criar uma instância via API, especifique o parâmetro UserData na operação RunRCInstances.

Etapa 3 (Opcional): Verificar a execução dos dados personalizados

Esta seção usa o seguinte User-Data script como exemplo.

#!/bin/sh
echo "Hello World. The time is now $(date -R)!" | tee /root/userdata_test.txt

Neste exemplo, o User-Data script grava a hora atual do sistema no arquivo userdata_test.txt na primeira inicialização da instância. Para verificar o resultado, execute o comando cat userdata_test.txt e visualize a saída do script.

Visualizar dados personalizados

Chame a operação DescribeRCInstanceAttribute para consultar os dados personalizados de uma instância do RDS Custom.

Documentação relacionada

Criar uma instância do RDS Custom