Supporto modello di avvio - AWS Batch

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

Supporto modello di avvio

AWS Batch supporta l'utilizzo di modelli di lancio di Amazon EC2 con i tuoi ambienti di calcolo EC2. Con i modelli di avvio, puoi modificare la configurazione predefinita delle tue risorse di AWS Batch calcolo senza dover creare AMI personalizzate.

Nota

I modelli di avvio non sono supportati nelle risorse AWS Fargate.

È necessario creare un modello di avvio prima di associarlo a un ambiente di calcolo. Puoi creare un modello di lancio nella console Amazon EC2. In alternativa, puoi utilizzare AWS CLI o un AWS SDK. Ad esempio, il seguente file JSON rappresenta un modello di avvio che ridimensiona il volume di dati Docker per l'AMI della risorsa di AWS Batch calcolo predefinita e lo imposta anche per la crittografia.

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

È possibile creare il modello di avvio precedente salvando il codice JSON in un file chiamato lt-data.json ed eseguendo il comando seguente. AWS CLI

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

Per ulteriori informazioni sui modelli di lancio, consulta Launching an Instance from a Launch Template nella Amazon EC2 User Guide.

Se si utilizza un modello di avvio per creare il tuo ambiente di calcolo, è possibile spostare i seguenti parametri di ambiente di calcolo esistenti sul modello di avvio:

Nota

Supponiamo che uno qualsiasi di questi parametri (ad eccezione dei tag Amazon EC2) sia specificato sia nel modello di avvio che nella configurazione dell'ambiente di calcolo. Quindi, i parametri dell'ambiente di calcolo hanno la precedenza. I tag Amazon EC2 vengono uniti tra il modello di lancio e la configurazione dell'ambiente di calcolo. In caso di collisione sulla chiave del tag, il valore nella configurazione dell'ambiente di calcolo ha la precedenza.

  • Coppia di chiavi Amazon EC2

  • ID AMI Amazon EC2

  • ID gruppo di sicurezza

  • Tag Amazon EC2

I seguenti parametri del modello di avvio vengono ignorati da: AWS Batch

  • Tipo di istanza (specificare i tipi di istanza desiderati al momento della creazione dell'ambiente di calcolo)

  • Ruolo istanza (specificare il ruolo di istanza desiderato al momento della creazione dell'ambiente di calcolo)

  • Sottoreti dell'interfaccia di rete (specificare i tipi di sottoreti desiderati al momento della creazione dell'ambiente di calcolo)

  • Opzioni di mercato delle istanze (AWS Batch deve controllare la configurazione dell'istanza Spot)

  • Disattiva la terminazione dell'API (AWS Batch deve controllare il ciclo di vita dell'istanza)

AWS Batch aggiorna il modello di lancio solo con una nuova versione del modello di avvio durante gli aggiornamenti dell'infrastruttura. Per ulteriori informazioni, consulta Aggiornamento degli ambienti di elaborazione.

Dati utente di Amazon EC2 nei modelli di lancio

Puoi fornire i dati utente di Amazon EC2 nel tuo modello di lancio eseguito da cloud-init all'avvio delle istanze. I tuoi dati utente possono eseguire scenari di configurazione comuni, tra cui, a titolo esemplificativo ma non esaustivo, i seguenti:

I dati utente di Amazon EC2 nei modelli di avvio devono essere in formato di archivio multiparte MIME. Questo perché i dati utente vengono uniti ad altri dati AWS Batch utente necessari per configurare le risorse di elaborazione. È possibile unire più blocchi di dati utente in un unico blocco, detto file MIME in più parti. Ad esempio, potresti voler combinare un cloud boothook che configura il daemon Docker con uno script di user data shell che scrive informazioni di configurazione per l'agente container Amazon ECS.

Se lo utilizzi AWS CloudFormation, il AWS::CloudFormation::Inittipo può essere utilizzato con lo script di supporto cfn-init per eseguire scenari di configurazione comuni.

Un file MIME in più parti è composto dai seguenti elementi:

  • Il tipo di contenuto e la dichiarazione di delimitazione della parte: Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • La dichiarazione della versione MIME: MIME-Version: 1.0

  • Uno o più blocchi di dati utente che contengono i seguenti componenti:

    • Il limite di apertura che segnala l'inizio di un blocco di dati utente:--==BOUNDARY==. È necessario mantenere vuota la linea prima di questo limite.

    • La dichiarazione del tipo di contenuto per il blocco: Content-Type: text/cloud-config; charset="us-ascii". Per ulteriori informazioni sui tipi di contenuto, consulta la documentazione di cloud-init. È necessario lasciare vuota la riga dopo la dichiarazione del tipo di contenuto.

    • Il contenuto dei dati utente, ad esempio un elenco di comandi o cloud-init direttive di shell.

  • Il limite di chiusura che segnala la fine del file multiparte MIME:. --==BOUNDARY==-- È necessario mantenere vuota la linea prima del limite di chiusura.

Di seguito sono riportati alcuni esempi di file MIME multiparte che è possibile utilizzare per crearne di personalizzati.

Nota

Se aggiungi dati utente a un modello di lancio nella console Amazon EC2, puoi incollarli come testo semplice. In alternativa, puoi caricarli da un file. Se utilizzi AWS CLI o un AWS SDK, devi prima base64 codificare i dati utente e inviare quella stringa come valore del UserData parametro quando chiami CreateLaunchTemplate, come mostrato in questo file JSON.

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }

Esempio: monta un file system Amazon EFS esistente

Questo esempio di file multiparte MIME configura la risorsa di calcolo per installare il amazon-efs-utils pacchetto e montare un file system Amazon EFS esistente su. /mnt/efs

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" packages: - amazon-efs-utils runcmd: - file_system_id_01=fs-abcdef123 - efs_directory=/mnt/efs - mkdir -p ${efs_directory} - echo "${file_system_id_01}:/ ${efs_directory} efs tls,_netdev" >> /etc/fstab - mount -a -t efs defaults --==MYBOUNDARY==--

Esempio: sovrascrivi la configurazione predefinita dell'agente container Amazon ECS

Questo esempio di file MIME in più parti sostituisce le impostazioni predefinite per la pulizia di un'immagine Docker per una risorsa di calcolo.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/x-shellscript; charset="us-ascii" #!/bin/bash echo ECS_IMAGE_CLEANUP_INTERVAL=60m >> /etc/ecs/ecs.config echo ECS_IMAGE_MINIMUM_CLEANUP_AGE=60m >> /etc/ecs/ecs.config --==MYBOUNDARY==--

Esempio: montaggio di un file system Amazon FSx for Lustre esistente

Questo file MIME multiparte di esempio configura la risorsa di calcolo per installare il lustre2.10 pacchetto dalla libreria Extras e montare un file system FSx for Lustre esistente su e un nome di montaggio di. /scratch fsx Questo esempio è per Amazon Linux 2. Per istruzioni di installazione per altre distribuzioni Linux, consulta Installazione del client Lustre nella Guida per l'utente di Amazon FSx for Lustre. Per ulteriori informazioni, consulta Mounting your Amazon FSx file system automaticamente nella Amazon FSx for Lustre User Guide.

MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="==MYBOUNDARY==" --==MYBOUNDARY== Content-Type: text/cloud-config; charset="us-ascii" runcmd: - file_system_id_01=fs-0abcdef1234567890 - region=us-east-2 - fsx_directory=/scratch - amazon-linux-extras install -y lustre2.10 - mkdir -p ${fsx_directory} - mount -t lustre ${file_system_id_01}.fsx.${region}.amazonaws.com@tcp:fsx ${fsx_directory} --==MYBOUNDARY==--

Nei volumi e nei membri MountPoints delle proprietà del contenitore, i punti di montaggio devono essere mappati nel contenitore.

{ "volumes": [ { "host": { "sourcePath": "/scratch" }, "name": "Scratch" } ], "mountPoints": [ { "containerPath": "/scratch", "sourceVolume": "Scratch" } ], }