Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Crea un' S3-backed AMI Amazon
L’AMI specificata quando avvii l’istanza determina il tipo di volume root.
Per creare un'AMI Amazon S3-backed Linux, inizia da un'istanza che hai lanciato da un'AMI Amazon S3-backed Linux esistente. Dopo avere personalizzato l'istanza in base alle tue esigenze, è necessario creare un bundle del volume e registrare una nuova AMI, che puoi utilizzare per avviare nuove istanze con queste personalizzazioni.
Non puoi creare un'AMI Amazon S3-backed Windows perché le AMI Windows non supportano l'instance store per il volume root.
Importante
Solo i seguenti tipi di istanza supportano un volume di instance store come volume root e richiedono un Amazon S3-backed AMI: C1, C3, D2, I2, M1, M2, M3, R3 e X1.
Il processo di creazione delle AMI è diverso per le EBS-backed AMI Amazon. Per ulteriori informazioni, consulta Crea un' EBS-backed AMI Amazon.
Indice
Panoramica della creazione delle AMI
Il diagramma seguente riepiloga le operazioni necessarie per la creazione di un’AMI a partire da un’istanza con un volume root di archivio dell’istanza.
Innanzitutto, avvia un'istanza da un'AMI che sia simile all'AMI che desideri creare. Puoi connetterti alla tua istanza e personalizzarla. Una volta che è configurata come desideri puoi creare un bundle dell'istanza. Per il completamento di questo processo sono richiesti vari minuti. Al termine del processo avrai un bundle, composto da un manifest delle immagini (image.manifest.xml) e da file (image.part.xx) contenenti un modello per il volume root. Successivamente, carica il bundle nel bucket Amazon S3 e registra l'AMI.
Nota
Per caricare oggetti in un bucket S3 per la tua S3-backed AMI Amazon Linux, gli ACL devono essere abilitati per il bucket. In caso contrario, Amazon EC2 non sarà in grado di impostare le ACL sugli oggetti da caricare. Se il bucket di destinazione utilizza l'impostazione applicata dal proprietario del bucket per S3 Object Ownership, ciò non funzionerà perché le ACL sono disabilitate. Per ulteriori informazioni, consulta Controllo della proprietà degli oggetti e disabilitazione delle ACL per il bucket.
Quando avvii un'istanza con la nuova AMI, viene creato il volume root dell'istanza usando il bundle che hai caricato in Amazon S3. Finché non lo elimini, lo spazio di archiviazione utilizzato dal bundle in Amazon S3 comporta dei costi che vengono addebitati sul tuo account. Per ulteriori informazioni, consulta Annullare la registrazione di un'AMI Amazon EC2.
Se aggiungi dei volumi archivio dell’istanza all’istanza, oltre al volume root, la mappatura dei dispositivi a blocchi per la nuova AMI conterrà informazioni su tali volumi e le mappature dei dispositivi a blocchi per le istanze che avvii dalla nuova AMI conterranno automaticamente le informazioni relative a tali volumi. Per ulteriori informazioni, consulta Mappature dei dispositivi a blocchi per i volumi sulle istanze Amazon EC2.
Prerequisiti
Prima di poter creare un AMI, devi completare le attività seguenti:
-
Installazione degli strumenti AMI. Per ulteriori informazioni, consulta Configurazione degli strumenti dell'AMI Amazon EC2.
-
AWS CLI Installa il. Per ulteriori informazioni, consulta Nozioni di base di AWS CLI.
-
Verificare di disporre di un bucket S3 per il bundle e che il bucket abbia le ACL abilitate. Per ulteriori informazioni sulla configurazione delle ACL, consulta la pagina Configurazione delle ACL.
-
Per creare un bucket S3 utilizzando Console di gestione AWS, apri la console Amazon S3 all'https://console.aws.amazon.com/s3/
indirizzo e scegli Create Bucket. -
Per creare un bucket S3 con AWS CLI, puoi usare il comando mb. Se la versione installata degli strumenti AMI è la 1.5.18 o successiva, per creare il bucket S3 puoi anche usare il comando
ec2-upload-bundle. Per ulteriori informazioni, consulta ec2-upload-bundle.
-
-
Assicurati che i file del tuo bundle non siano crittografati nel bucket S3. Se hai bisogno della crittografia per la tua AMI, puoi invece utilizzare un' EBS-backed AMI. Per ulteriori informazioni, consulta Usa la crittografia con le EBS-backed AMI.
-
Assicurati di avere l'ID AWS del tuo account. Per ulteriori informazioni, consulta Visualizza Account AWS gli identificatori nella Guida di riferimento per la gestione degli AWS account.
-
Assicurati di disporre delle credenziali per utilizzare la AWS CLI. Per ulteriori informazioni, consulta Authentication and access credentials for the AWS CLI nella Guida per l’utente di AWS Command Line Interface .
-
Assicurati di disporre di un X.509 certificato e della chiave privata corrispondente.
-
Se devi creare un X.509 certificato, consultaGestione dei certificati di firma. Il X.509 certificato e la chiave privata vengono utilizzati per crittografare e decrittografare l'AMI.
-
[Cina (Pechino)] Utilizza il certificato
$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem. -
[AWS GovCloud (US-West)] Usa il certificato.
$EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem
-
-
Connessione all'istanza e relativa personalizzazione. Ad esempio, è possibile installare software e applicazioni, copiare i dati, eliminare i file temporanei e modificare la configurazione Linux.
Creare un'AMI da un'istanza Amazon Linux
Le seguenti procedure descrivono come creare un’AMI da un’istanza con un volume root di archivio dell’istanza che esegue Amazon Linux 1. Potrebbero non funzionare per le istanze in esecuzione su altre distribuzioni Linux.
Per prepararsi a utilizzare gli strumenti AMI (solo istanze HVM)
-
Per essere avviati correttamente, gli strumenti AMI necessitano di GRUB Legacy. Utilizzare il comando seguente per installare GRUB:
[ec2-user ~]$sudo yum install -y grub -
Installare i pacchetti di gestione delle partizioni usando il seguente comando:
[ec2-user ~]$sudo yum install -y gdisk kpartx parted
Per creare un’AMI da un’istanza Amazon Linux con un volume root di archivio dell’istanza
Questa procedura presuppone che i prerequisiti indicati in Prerequisiti siano stati soddisfatti.
Nei seguenti comandi, sostituisci ciascuno user input placeholder con le tue informazioni.
-
Caricare le credenziali nell'istanza. Le credenziali servono a garantire l'accesso all'AMI solo da parte dell'utente e da Amazon EC2.
-
Creare una directory temporanea sull'istanza per le credenziali, come segue:
[ec2-user ~]$mkdir /tmp/certIn questo modo è possibile escludere le proprie credenziali dall'immagine creata.
-
Copia il X.509 certificato e la chiave privata corrispondente dal computer alla
/tmp/certdirectory dell'istanza utilizzando uno strumento di copia sicuro come scp. L'-iopzione nel scp comando seguente è la chiave privata che usi per connetterti alla tua istanza con SSH, non la chiave X.509 privata. Esempio: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
In alternativa, poiché questi sono file di testo normale, è possibile aprire il certificato e la chiave in un editor di testo e copiarne il contenuto in nuovi file in
/tmp/cert. -
-
Preparare il bundle da caricare in Amazon S3 eseguendo il comando ec2-bundle-vol dall'istanza. Accertarsi di specificare l'opzione
-eper escludere la directory in cui sono archiviate le proprie credenziali. Per impostazione predefinita, il processo di creazione di bundle esclude i file che possono contenere informazioni sensibili. Tali file includono*.sw,*.swo,*.swp,*.pem,*.priv,*id_rsa*,*id_dsa**.gpg,*.jks,*/.ssh/authorized_keyse*/.bash_history. Per includere tutti questi file, utilizzare l'opzione--no-filter. Per includere alcuni di questi file, utilizzare l'opzione--include.Importante
Per impostazione predefinita, il processo di raggruppamento dell'AMI crea una raccolta codificata di file nella directory
/tmpche rappresenta il volume root. Se non è disponibile sufficiente spazio libero sul disco in/tmpper archiviare il bundle, occorre specificare una posizione diversa per il bundle da archiviare con l'opzione-d. Alcune istanze dispongono di storage temporaneo montato su/path/to/bundle/storage/mnto/media/ephemeral0che è possibile utilizzare; in alternativa, è anche possibile creare, collegare e montare un nuovo volume Amazon EBS per l'archiviazione del bundle. Per ulteriori informazioni, consulta Creare un volume di Amazon EBS nella Guida per l'utente di Amazon EBS.-
Il ec2-bundle-vol comando deve essere eseguito come root. Per la maggior parte dei comandi, è possibile utilizzare sudo per ottenere autorizzazioni elevate, ma in questo caso occorre eseguire sudo -E su per mantenere le variabili di ambiente.
[ec2-user ~]$sudo -E suSi noti che il prompt bash ora identifica l'utente come utente root e il simbolo del dollaro è stato sostituito da un tag hash, a segnalare che ci si trova in una shell root:
[root ec2-user]#
-
Per creare il bundle dell'AMI, eseguire il comando ec2-bundle-vol come segue:
[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
Per le regioni Cina (Pechino) e AWS GovCloud (US-West), utilizza il
--ec2certparametro e specifica i certificati secondo i prerequisiti.Possono essere necessari alcuni minuti per creare l'immagine. Al termine di questo comando, la directory
/tmp(o quella non predefinita) contiene il pacchetto (image.manifest.xmloltre a più file).image.part.xx -
Uscire dalla shell root.
[root ec2-user]#exit
-
-
(Facoltativo) Per aggiungere altri volumi instance store, modificare le mappature dei dispositivi a blocchi nel file
image.manifest.xmldell'AMI. Per ulteriori informazioni, consulta Mappature dei dispositivi a blocchi per i volumi sulle istanze Amazon EC2.-
Creare un backup del file
image.manifest.xml.[ec2-user ~]$sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak -
Riformattare il file
image.manifest.xmlper renderne più semplice la lettura e la modifica.[ec2-user ~]$sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml -
Modificare le mappature dei dispositivi a blocchi in
image.manifest.xmlcon un editor di testo. Il seguente esempio mostra una nuova voce del volume instance storeephemeral1.Nota
Per un elenco dei file esclusi, consulta 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> -
Salvare il file
image.manifest.xmle uscire dall'editor di testo.
-
-
Per caricare il bundle su Amazon S3, eseguire il comando ec2-upload-bundle come segue.
[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
Per registrare l'AMI in una regione diversa da US East (N. Virginia), occorre specificare sia la regione di destinazione con l'opzione
--regionche un percorso del bucket esistente nella regione di destinazione oppure un percorso univoco del bucket che è possibile creare nella regione di destinazione. -
(Facoltativo) Una volta caricato il bundle su Amazon S3, è possibile rimuoverlo dalla directory
/tmpsull'istanza utilizzando il seguente comando rm:[ec2-user ~]$sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/imageImportante
Se si è specificato un percorso con l'opzione
-din Passo 2, utilizzare quel percorso invece di/path/to/bundle/storage/tmp. -
Per registrare l'AMI, eseguire il comando register-image come segue.
[ec2-user ~]$aws ec2 register-image --image-locationamzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --nameAMI_name--virtualization-typehvmImportante
Se precedentemente si è specificata una regione per il comando ec2-upload-bundle, specificarla nuovamente per questo comando.