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à.
Creazione di immagini di container per ambienti Beanstalk Cluster
Un ambiente Beanstalk Cluster esegue un'applicazione da un'immagine contenitore. Come con Beanstalk Standard, una versione dell'applicazione viene distribuita nell'ambiente. In un ambiente Beanstalk Cluster, la versione dell'applicazione fornisce un'immagine che Elastic Beanstalk esegue così com'è o una fonte che Elastic Beanstalk crea in un'immagine. Questo argomento tratta i prerequisiti, i percorsi di creazione, lo stato di elaborazione e il comportamento di eliminazione specifici degli ambienti Beanstalk Cluster. La distribuzione, l'etichettatura e le quote di versione funzionano allo stesso modo in entrambe le modalità, così come le procedure generali di creazione ed eliminazione. Consulta Gestione delle versioni delle applicazioni e Tagging delle versioni delle applicazioni.
Per una distribuzione di Beanstalk Cluster, crea la versione dell'applicazione con un nome che includa esattamente uno ImageConfiguration dei due membri. Sourceidentifica un'immagine del contenitore già creata e Build specifica in che modo Elastic Beanstalk crea un'immagine da un bundle sorgente. Elastic Beanstalk rifiuta una CreateApplicationVersion richiesta che ImageConfiguration fornisce entrambi i membri o nessuno dei due, una richiesta che fornisce entrambi e un ImageConfiguration.Source e una richiesta che si combina ImageConfiguration con il parametroSourceBundle, che configura le versioni dell'applicazione per Beanstalk Standard. BuildConfiguration AWS CodeBuild Le sezioni seguenti descrivono ogni percorso.
Prerequisiti
Gli esempi in questo argomento utilizzano il AWS CLI. Installalo e configuralo prima di eseguire i comandi; utilizzano l'account e la AWS regione nella AWS CLI configurazione. Consulta Prima di iniziare.
Prepara le seguenti risorse e accedi:
-
Per una compilazione del codice sorgente, il codice
CodeBuildServiceRolerichiesto daImageConfiguration.Build. Questo è il ruolo di creazione dell'immagine dell'ambiente, creato dalla console Elastic Beanstalk.aws-elasticbeanstalk-eks-image-build-rolePer il servizio e le politiche affidabili e per i confini dei ruoli, vedi e. Ruoli che fornisci Autorizzazioni per Beanstalk Cluster -
Per esempio
ImageConfiguration.Source, un'immagine del contenitore che è già stata inserita nel suo registro. Il ruolo del nodo utilizzato dall'ambiente deve essere in grado di estrarre l'immagine. Consulta Ruoli che fornisci. -
Per una build sorgente, a
SourceBundle, un oggetto Amazon S3 contenente il codice sorgente dell'applicazione. Crea l'archivio come descritto inCrea un bundle di sorgenti dell'applicazione Elastic Beanstalk, caricalo in un bucket Amazon S3 nel tuo account e passa il bucket e la chiave dell'oggetto come e.S3BucketS3KeyImpostaProcesspertrueiniziare la compilazione; in caso contrario, la versione rimane invariata.UNPROCESSED
Inserimento dell'immagine del contenitore
Fornisci ImageConfiguration un Source membro per un'immagine del contenitore che è già stata creata e inviata a un registro. Elastic Beanstalk esegue l'immagine senza una fase di compilazione. SourceTrasporta un singolo campoUri, che punta all'immagine. L'immagine può trovarsi in Amazon Elastic Container Registry (Amazon ECR) o in qualsiasi registro che consenta un pull non autenticato. Per un'immagine privata, usa Amazon ECR: il ruolo del nodo dell'ambiente si autentica su di essa. Una versione dell'applicazione creata da un'immagine fornita non richiede alcuna compilazione, quindi Elastic Beanstalk la registra con lo stato UNPROCESSED ed è pronta per la distribuzione in un ambiente Beanstalk Cluster.
Elastic Beanstalk registra l'URI esattamente come lo fornisci, sia che nomini un tag o un digest. Un'immagine creata da Elastic Beanstalk viene registrata tramite digest.
Usa questa forma quando una pipeline separata crea l'immagine o quando viene distribuita un'immagine prodotta da una versione precedente dell'applicazione. Affinché Elastic Beanstalk crei l'immagine, fornisci un pacchetto sorgente e un membro come descritto di seguito. Build
Fornisci il codice sorgente per la compilazione di Elastic Beanstalk
Indica SourceBundle quando Elastic Beanstalk deve creare l'immagine del contenitore dal sorgente dell'applicazione. SourceBundleIdentifica l'archivio di origine in Amazon Simple Storage Service (Amazon S3) con due campi e. S3Bucket S3Key Un pacchetto sorgente richiede inoltre che un ImageConfiguration Build membro specifichi in che modo Elastic Beanstalk converte il sorgente in un'immagine. Impostato Process su true nella CreateApplicationVersion richiesta di avvio della compilazione; con, usa. AWS CLI--process Se si omette questa impostazione, la versione dell'applicazione basata sui sorgenti rimane UNPROCESSED e la compilazione non viene avviata. All'avvio dell'elaborazione, Elastic Beanstalk crea l'immagine e la invia ad Amazon Elastic Container Registry nel tuo account. Per i tipi di build Docker e buildpack e le relative impostazioni, consulta. Configurazione della build
Nota
Su macOS, crea l'archivio di origine zip -X -r ../my-app.zip . dall'interno della directory dei sorgenti. Il comando Compress del Finder aggiunge delle voci di __MACOSX metadati e la compilazione di un buildpack può fallire su una di quelle voci con zip: not a valid zip file il nome di un file che non hai creato.
Mentre la build è in esecuzione, la versione dell'applicazione riporta lo stato. BUILDING Passa a PROCESSED quando l'immagine viene creata e inviata o FAILED se la compilazione non ha esito positivo.
Configurazione della build
Il Build membro di ImageConfiguration accompagna un pacchetto di sorgenti e controlla il modo in cui Elastic Beanstalk crea l'immagine. Include i seguenti campi oltre al tipo di build descritto di seguito:
-
CodeBuildServiceRole, il ruolo IAM che AWS CodeBuild presuppone l'esecuzione della build nel tuo account. Questo campo è obbligatorio per una build sorgente. -
ComputeType, la dimensione opzionale del calcolo di compilazione:BUILD_GENERAL1_SMALL,BUILD_GENERAL1_MEDIUM, oBUILD_GENERAL1_LARGE. Se lo ometti, Elastic Beanstalk utilizza.BUILD_GENERAL1_MEDIUM -
TimeoutInMinutes, il numero opzionale di minuti dopo i quali Elastic Beanstalk interrompe una build che non è terminata. Il valore può essere compreso tra 3 e 7.5480Se lo ometti, Elastic Beanstalk utilizza i minuti.60
Il Build membro seleziona uno dei due tipi di build tramite il relativo Type campo, che è obbligatorio:
-
docker, Elastic Beanstalk crea l'immagine da un Dockerfile nel codice sorgente. ImpostaDockerfileLocationil percorso del Dockerfile; se lo ometti, Elastic Beanstalk lo utilizza alla radice del sorgente.Dockerfile -
buildpack, Elastic Beanstalk crea l'immagine con Cloud Native Buildpacks. ImpostatoBuildpacksull'immagine del builder utilizzata dalla build, ad esempiopaketobuildpacks/builder-jammy-base; Elastic Beanstalk passa il valore alla build alla build alla lettera. Il builder è necessario per la compilazione di un buildpack. Elastic Beanstalk non ne rileva una e una build del buildpack senza il set di compilazione fallisce.
Il Architecture campo imposta l'architettura CPU di destinazione dell'immagine, o. amd64 arm64 Se lo ometti, Elastic Beanstalk compila per. amd64 Compila per la stessa architettura dell'archimpostazione dell'ambiente, anch'essa predefinita. amd64 Un'immagine creata per un'architettura non viene eseguita sull'altra. Per arch, consulta Opzioni di configurazione per ambienti Beanstalk Cluster.
Ispeziona e monitora lo stato dell'elaborazione
Una versione basata sui sorgenti riporta i report BUILDING mentre Elastic Beanstalk crea la propria immagine. Distribuiscila solo dopo averla segnalata. PROCESSED Uno stato di FAILED indica che la compilazione non è stata completata e che la versione non può essere distribuita. Uno stato di UNPROCESSED indica che l'elaborazione non è stata avviata, ad esempio quando la CreateApplicationVersion richiesta è stata Process omessa. Viene visualizzata anche una versione dell'applicazione creata da un'immagine fornitaUNPROCESSED, ma è pronta per la distribuzione poiché l'immagine non richiede alcuna compilazione.
La descrizione di una versione dell'applicazione riporta lo stato dell'immagine come due membri ImageSource eImageBuildConfiguration. Per una versione basata sui sorgenti, ImageBuildConfiguration fa eco alle impostazioni di compilazione ed ImageSource è assente durante i report della versione. BUILDING Quando la compilazione ha esito positivo, ImageSource restituisce l'URI aggiunto al digest dell'immagine prodotta e inviata dalla build.
Controlla lo stato di elaborazione di una versione basata sui sorgenti con. DescribeApplicationVersions Impostato operation_start sul timestamp registrato immediatamente prima della CreateApplicationVersion richiesta; le query relative agli eventi che seguono lo utilizzano per definire l'ambito degli eventi relativi alla build.
$ aws elasticbeanstalk describe-application-versions \
--application-name my-app \
--version-labels v1-build \
--query 'ApplicationVersions[0].Status' \
--output text
Ripeti questo comando finché la versione non raggiunge lo stato di terminale. BUILDINGsignifica che la build è ancora in esecuzione. Distribuisci la versione solo dopo averla segnalataPROCESSED; lo stato FAILED o UNPROCESSED indica che la versione non può essere distribuita.
Per una versione basata sui sorgenti, uno PROCESSED stato e un evento di completamento della creazione dell'immagine confermano che Elastic Beanstalk ha creato e registrato l'immagine. Recupera gli eventi per la versione specifica per distinguere un errore del terminale da una build ancora in esecuzione:
$ aws elasticbeanstalk describe-events \
--application-name my-app \
--version-label v1-build \
--start-time "$operation_start" \
--max-items 20
Se la versione arrivaFAILED, aggiungila --severity ERROR per recuperare gli eventi di errore. Gli eventi distinguono gli errori come il download del codice sorgente, l'assunzione di ruoli, l'autenticazione Amazon ECR e gli errori di creazione o invio di immagini:
$ aws elasticbeanstalk describe-events \
--application-name my-app \
--version-label v1-build \
--severity ERROR \
--start-time "$operation_start" \
--max-items 20
Gli eventi identificano quale fase non è riuscita. Per capire perché la compilazione stessa non è riuscita, utilizza i BuildArn report riportati da una versione basata sui sorgenti, che identificano l' AWS CodeBuildesecuzione che ha eseguito la build. Passalo al seguente comando per ottenere lo stato della build e la posizione dei suoi log:
$ aws codebuild batch-get-builds \
--ids build-arn \
--query 'builds[0].{status:buildStatus,logGroup:logs.groupName,logStream:logs.streamName}'
La risposta contiene anche un logs.deepLink messaggio che apre il flusso di log della build nella CloudWatch console Amazon.
Correggi la posizione di origine, la configurazione della build o la configurazione del ruolo identificata dall'evento. Crea una nuova versione dell'applicazione con una nuova etichetta e Process imposta sutrue, quindi esegui il polling suPROCESSED. Non distribuire una versione in. FAILED Il successo dell'elaborazione dimostra solo che l'immagine è disponibile per la versione dell'applicazione; non verifica la distribuzione dell'ambiente.
L'applicazione di esempio
Una versione dell'applicazione è facoltativa quando si crea un ambiente Beanstalk Cluster. Quando CreateEnvironment viene chiamato senza un'etichetta di versione (o con un'etichetta vuota), Elastic Beanstalk distribuisce un'applicazione di esempio per fornire un ambiente di esecuzione. Elastic Beanstalk supporta l'esempio con un'immagine del contenitore precompilata, quindi l'implementazione non richiede alcuna fase di compilazione. L'applicazione di esempio non può essere selezionata o configurata come applicazione del cliente; Elastic Beanstalk la distribuisce quando non viene specificata alcuna etichetta di versione. Per distribuire un'applicazione, create una versione dell'applicazione come descritto in questo argomento e passate la relativa etichetta di versione a. CreateEnvironment Per la creazione dell'ambiente, vedereGuida introduttiva a Beanstalk Cluster.
Esempi
La CreateApplicationVersion richiesta seguente fornisce un'immagine del contenitore esistente. Elastic Beanstalk esegue l'immagine così com'è, senza compilazione.
aws elasticbeanstalk create-application-version \ --application-name my-app \ --version-label v1-image \ --image-configuration Source={Uri=111122223333.dkr.ecr.us-east-1.amazonaws.com/my-app:v1}
La richiesta seguente fornisce invece un pacchetto sorgente in Amazon S3 e una configurazione di build che crea l'immagine da un Dockerfile per l'architettura. arm64 Per eseguire questa immagine, imposta anche l'archopzione dell'ambiente suarm64.
operation_start=$(date -u +%Y-%m-%dT%H:%M:%SZ) aws elasticbeanstalk create-application-version \ --application-name my-app \ --version-label v1-build \ --process \ --source-bundle S3Bucket=my-source-bucket,S3Key=my-app/v1.zip \ --image-configuration '{ "Build": { "Type": "docker", "DockerfileLocation": "Dockerfile", "Architecture": "arm64", "CodeBuildServiceRole": "arn:aws:iam::111122223333:role/my-build-role", "ComputeType": "BUILD_GENERAL1_SMALL", "TimeoutInMinutes": 30 } }'
La seguente richiesta crea l'immagine con Cloud Native Buildpacks anziché con un Dockerfile. Il sorgente non necessita di Dockerfile e il builder determina come viene assemblata l'immagine. La richiesta viene omessaArchitecture, quindi Elastic Beanstalk compila per. amd64
operation_start=$(date -u +%Y-%m-%dT%H:%M:%SZ) aws elasticbeanstalk create-application-version \ --application-name my-app \ --version-label v1-buildpack \ --process \ --source-bundle S3Bucket=my-source-bucket,S3Key=my-app/v1.zip \ --image-configuration '{ "Build": { "Type": "buildpack", "Buildpack": "paketobuildpacks/builder-jammy-base", "CodeBuildServiceRole": "arn:aws:iam::111122223333:role/my-build-role" } }'
Una volta raggiunta la build del source-bundlePROCESSED, distribuisci una di queste versioni in un ambiente Beanstalk Cluster passando l'etichetta di versione a o, come per una versione dell'applicazione Beanstalk Standard. CreateEnvironment UpdateEnvironment Per configurare l'ambiente che lo esegue, consulta. Configurazione degli ambienti Elastic Beanstalk
Eliminare e ripristinare le versioni delle applicazioni
Le policy del ciclo di vita delle versioni delle applicazioni non eliminano le versioni delle applicazioni Beanstalk Cluster. Utilizzate per rimuovere DeleteApplicationVersion un record di versione dell'applicazione. Elastic Beanstalk rifiuta la richiesta mentre è in corso la versioneBUILDING; attendi lo stato di elaborazione del terminale prima di eliminarla.
Per una versione dell'applicazione Beanstalk Cluster, l'DeleteSourceBundleopzione non elimina il bundle di origine da Amazon S3. Source-object la conservazione è gestita separatamente.
DeleteApplicationVersionrimuove il record di versione dell'applicazione Elastic Beanstalk. Non elimina un'immagine fornita tramiteImageConfiguration.Source, un'immagine prodotta da una build sorgente o il repository Amazon ECR che contiene l'immagine. Gestisci la conservazione di un'immagine che hai fornito. Quando Elastic Beanstalk crea un repository Amazon ECR per le build di origine, applica una politica del ciclo di vita a quel repository; l'eliminazione di una versione dell'applicazione non comporta la pulizia immediata dell'immagine o del repository.
Una FAILED versione basata sui sorgenti nello stato non può essere distribuita. Correggi la configurazione dell'origine o della build e chiama CreateApplicationVersion con una nuova etichetta di versione e Process impostata su. true Per riutilizzare l'etichetta della versione non riuscita, elimina prima il record di versione dopo averlo lasciatoBUILDING, quindi crea la versione corretta.