Criação de uma AMI baseada no Amazon S3
A AMI especificada no momento da inicialização da instância define o tipo do volume raiz para a instância.
Para criar uma AMI do Linux baseada no Amazon S3, comece com uma instância iniciada a partir de uma AMI do Linux baseada no Amazon S3 existente. Depois de personalizar a instância para atender às suas necessidades, empacote o volume e registre uma nova AMI, que é possível usar para executar novas instâncias com essas personalizações.
Não é possível criar uma AMI do Windows baseada no Amazon S3, já que as AMIs do Windows não permitem usar armazenamento de instância como volume raiz.
Importante
Somente os seguintes tipos de instância são compatíveis com um volume de armazenamento de instância como volume raiz e exigem uma AMI baseada no Amazon S3: C1, C3, D2, I2, M1, M2, M3, R3 e X1.
O processo de criação da AMI é diferente para AMIs baseadas no Amazon EBS. Para obter mais informações, consulte Criação de uma AMI baseada no Amazon EBS.
Conteúdo
Visão geral da criação de uma AMI
O diagrama apresentado a seguir resume o processo de criação de uma AMI usando uma instância com volume raiz de armazenamento de instância.
Primeiro, execute uma instância de uma AMI semelhante à AMI que você deseja criar. É possível conectá-la à sua instância e personalizá-la. Quando a instância estiver configurada da forma como você deseja, é possível empacotá-la. Demora vários minutos para o processo de empacotamento ser concluído. Depois de o processo ser concluído, você terá um pacote, que consiste em um manifesto de imagem (image.manifest.xml) e nos arquivos (image.part.xx) que contêm um modelo para o volume raiz. Em seguida, você carrega o pacote para seu bucket Amazon S3 e registra sua AMI.
nota
Para fazer upload de objetos em um bucket do S3 da AMI do Linux baseada no Amazon S3, é necessário que as ACLs estejam habilitadas no bucket. Caso contrário, o Amazon EC2 não poderá definir ACLs nos objetos a serem carregados. Se o bucket de destino usar a configuração imposta pelo proprietário do bucket para propriedade de objeto do S3, isso não funcionará, porque as ACLs estarão desabilitadas. Para obter mais informações, consulte Controlar a propriedade de objetos e desabilitar ACLs para seu bucket.
Quando você executa uma instância usando a nova AMI, criamos o volume do dispositivo raiz da instância usando o pacote que você carregou para o Amazon S3. O espaço de armazenamento usado pelo pacote no Amazon S3 gera cobranças na sua conta até que você o exclua. Para obter mais informações, consulte Cancelar o registro de uma AMI do Amazon EC2.
Se além do volume raiz, você adicionar volumes de armazenamento de instância à sua instância, o mapeamento de dispositivos de blocos da nova AMI conterá informações sobre esses volumes, e os mapeamentos de dispositivos de blocos das instâncias que você iniciar usando a nova AMI conterão automaticamente informações sobre esses volumes. Para obter mais informações, consulte Mapeamento de dispositivos de blocos para volumes em instâncias do Amazon EC2.
Pré-requisitos
Antes que você crie uma AMI, é preciso concluir as tarefas seguir:
-
Instale as ferramentas da AMI. Para obter mais informações, consulte Configurar as ferramentas de AMIs do Amazon EC2.
-
Instale o AWS CLI. Para obter mais informações, consulte Conceitos básicos do AWS CLI.
-
Verifique se você tem um bucket do S3 para o pacote e se o bucket tem ACLs habilitadas. Para obter mais informações sobre a configuração de ACLs, consulte Configuração de ACLs.
-
Para criar um bucket do S3 usando o AWS Management Console, abra o console do Amazon S3 em https://console.aws.amazon.com/s3/
e escolha Criar bucket. -
Para criar um bucket do S3 com a AWS CLI, é possível usar o comando mb. Se a versão instalada das ferramentas da AMI for 1.5.18 ou posterior, também será possível usar o comando
ec2-upload-bundlepara criar o bucket do S3. Para obter mais informações, consulte ec2-upload-bundle.
-
-
Certifique-se de que os arquivos em seu pacote não estejam criptografados no bucket do S3. Caso precise de criptografia para sua AMI, será possível usar uma AMI baseada no EBS em vez disso. Para obter mais informações, consulte Usar criptografia com AMIs com EBS.
-
Verifique se você tem seu ID de conta da AWS. Para obter mais informações, consulte Visualizar identificadores de Conta da AWS no Guia de referência de gerenciamento de contas da AWS.
-
Certifique-se de ter credenciais para usar o AWS CLI. Para obter mais informações, consulte Credenciais de acesso e autenticação para o AWS CLI no Guia do usuário do AWS Command Line Interface.
-
Verifique se você tem um certificado x.509 e a chave privada correspondente.
-
Se você precisar criar um certificado X.509, consulte Gerenciar certificados de assinatura. O certificado X.509 e a chave privada são usados para criptografar e descriptografar sua AMI.
-
[China (Pequim)] Use o certificado
$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem. -
[AWS GovCloud (US-West)] Use o certificado
$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem.
-
-
Conecte-se à sua instância e personalize-a. Por exemplo, é possível instalar softwares e aplicações, copiar dados, excluir arquivos temporários e modificar a configuração do Linux.
Criar uma AMI de uma instância do Linux da Amazon
Os procedimentos apresentados a seguir explicam como criar uma AMI usando uma instância com um volume raiz de armazenamento de instância que está executando o Amazon Linux 1. Eles podem não funcionar para instâncias em execução em outras distribuições do Linux.
Para se preparar para usar as ferramentas da AMI (somente instâncias do HVM)
-
As ferramentas de AMI exigem GRUB Legacy para inicializarem corretamente. Use o comando a seguir para instalar o GRUB:
[ec2-user ~]$sudo yum install -y grub -
Instale os pacotes de gerenciamento de partição com o seguinte comando:
[ec2-user ~]$sudo yum install -y gdisk kpartx parted
Para criar uma AMI usando uma instância do Amazon Linux com volume raiz de armazenamento de instância
Este procedimento pressupõe que você atendeu aos pré-requisitos de Pré-requisitos.
Nos comandos a seguir, substitua cada espaço reservado para entrada do usuário por suas próprias informações.
-
Carregue suas credenciais para sua instância. Usamos essas credenciais para garantir que só você e o Amazon EC2 possam acessar sua AMI.
-
Crie um diretório temporário na sua instância para suas credenciais, da seguinte forma:
[ec2-user ~]$mkdir /tmp/certIsso permite que você exclua suas credenciais da imagem criada.
-
Copie o certificado X.509 e a chave privada correspondente do seu computador para o diretório
/tmp/certna sua instância usando uma ferramenta de cópia segura, como scp. A opção-ino comando scp é a chave privada que você usa para se conectar à sua instância com o SSH, não a chave privada X.509. Por exemplo:my-private-key.pemyou@your_computer:~ $scp -imy-private-key.pem/path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem/path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pemec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717 0.7KB/s 00:00 cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 685 0.7KB/s 00:00
Como alternativa, por serem arquivos de texto simples, é possível abrir o certificado e a chave em um editor de texto e copiar o conteúdo para novos arquivos em
/tmp/cert. -
-
Prepare o pacote para carregar para o Amazon S3 executando o comando ec2-bundle-vol em sua instância. Não se esqueça de especificar a opção
-epara de excluir o diretório onde suas credenciais estão armazenadas. Por padrão, o processo de colocação em pacotes exclui arquivos que possam conter informações confidenciais. Esses arquivos incluem*.sw,*.swo,*.swp,*.pem,*.priv,*id_rsa*,*id_dsa**.gpg,*.jks,*/.ssh/authorized_keyse*/.bash_history. Para incluir todos os arquivos, use a opção--no-filter. Para incluir alguns dos arquivos, use a opção--include.Importante
Por padrão, o processo de empacotamento da AMI cria um conjunto de arquivos compactados e criptografados no diretório
/tmpque representa o volume raiz. Se você não tem o espaço em disco suficiente em/tmppara armazenar o pacote, precisa especificar um local diferente para o pacote ser armazenado com a opção-d. Algumas instâncias têm armazenamento temporário montado em/path/to/bundle/storage/mntou/media/ephemeral0que você pode usar, ou você pode também criar, associar e montar um novo volume do Amazon EBS para armazenar o pacote. Para obter mais informações, consulte Criar um volume do Amazon EBS no Guia do usuário do Amazon EC2.-
Execute o comando ec2-bundle-vol como raiz. Na maioria dos comandos, é possível usar sudo para ganhar permissões elevadas, mas neste caso, é necessário executar sudo -E su para manter as variáveis do ambiente.
[ec2-user ~]$sudo -E suObserve que prompt bash agora identifica você como usuário raiz, e o cifrão foi substituído por uma hashtag, sinalizando que você está em um shell raiz:
[root ec2-user]#
-
Para criar o pacote de AMIs, execute o comando ec2-bundle-vol da seguinte forma:
[root ec2-user]#ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem-c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem-u123456789012-r x86_64 -e /tmp/cert --partitiongptnota
Para as regiões China (Pequim) e AWS GovCloud (US-West), use o parâmetro
--ec2certe especifique os certificados de acordo com os pré-requisitos.Pode demorar alguns minutos para criar a imagem. Quando esse comando for concluído, o diretório
/tmp(ou não padrão) conterá o pacote (image.manifest.xml, além de vários arquivosimage.part.xx). -
Saída do shell raiz.
[root ec2-user]#exit
-
-
(Opcional) Para adicionar mais volumes de armazenamento de instâncias, edite os mapeamentos de dispositivos de blocos no arquivo
image.manifest.xmlpara sua AMI. Para obter mais informações, consulte Mapeamento de dispositivos de blocos para volumes em instâncias do Amazon EC2.-
Crie um backup do seu arquivo
image.manifest.xml.[ec2-user ~]$sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak -
Reformate o arquivo
image.manifest.xmlpara que seja mais fácil ler e editar.[ec2-user ~]$sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml -
Edite os mapeamentos de dispositivos de blocos em
image.manifest.xmlcom um editor de texto. O exemplo abaixo mostra uma nova entrada para o volume do armazenamento de instânciasephemeral1.nota
Para obter uma lista dos arquivos excluídos, consulte ec2-bundle-vol.
<block_device_mapping> <mapping> <virtual>ami</virtual> <device>sda</device> </mapping> <mapping> <virtual>ephemeral0</virtual> <device>sdb</device> </mapping><mapping> <virtual>ephemeral1</virtual> <device>sdc</device> </mapping><mapping> <virtual>root</virtual> <device>/dev/sda1</device> </mapping> </block_device_mapping> -
Salve o arquivo
image.manifest.xmle saia do seu editor de texto.
-
-
Para fazer upload do pacote para o Amazon S3, execute o comando ec2-upload-bundle da seguinte forma.
[ec2-user ~]$ec2-upload-bundle -bamzn-s3-demo-bucket/bundle_folder/bundle_name-m /tmp/image.manifest.xml -ayour_access_key_id-syour_secret_access_keyImportante
Para registrar a AMI em uma região diferente de US East (N. Virginia), é preciso especificar tanto a região de destino com a opção
--regionquanto um caminho do bucket que já exista na região de destino, ou um caminho de bucket exclusivo que possa ser criado na região de destino. -
(Opcional) Depois de o pacote ser carregado para o Amazon S3, é possível removê-lo do diretório
/tmpna instância usando o comando rm a seguir:[ec2-user ~]$sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/imageImportante
Se você tiver especificado um caminho com a opção
-dem Passo 2, use esse caminho em vez de/path/to/bundle/storage/tmp. -
Para registrar a AMI, execute o comando register-image da seguinte maneira.
[ec2-user ~]$aws ec2 register-image --image-locationamzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --nameAMI_name--virtualization-typehvmImportante
Se você tiver especificado previamente uma região para o comando ec2-upload-bundle, especifique essa região novamente para esse comando.