Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Automatizza la distribuzione delle applicazioni - AWS Panorama

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

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

Automatizza la distribuzione delle applicazioni

Per distribuire un'applicazione, usi sia la AWS Command Line Interface CLI dell'applicazione AWS Panorama che. Dopo aver creato il contenitore dell'applicazione, lo carichi insieme ad altre risorse su un punto di accesso Amazon S3. Quindi distribuisci l'applicazione con l'CreateApplicationInstanceAPI.

Per ulteriori informazioni e istruzioni sull'uso degli script mostrati, segui le istruzioni nell'applicazione di esempio README.

Costruisci il contenitore

Per creare il contenitore dell'applicazione, usa il build-container comando. Questo comando crea un contenitore Docker e lo salva come file system compresso nella cartella. assets

Esempio 3-build-container.sh
CODE_PACKAGE=SAMPLE_CODE ACCOUNT_ID=$(aws sts get-caller-identity --output text --query 'Account') panorama-cli build-container --container-asset-name code_asset --package-path packages/${ACCOUNT_ID}-${CODE_PACKAGE}-1.0

È inoltre possibile utilizzare il completamento dalla riga di comando per inserire l'argomento del percorso digitando una parte del percorso e quindi premendo. TAB

$ panorama-cli build-container --package-path packages/TAB

Caricate il contenitore e registrate i nodi

Per caricare l'applicazione, usa il package-application comando. Questo comando carica le risorse dalla assets cartella su un punto di accesso Amazon S3 gestito da AWS Panorama.

Esempio 4-package-app.sh
panorama-cli package-application

L'interfaccia a riga di comando dell'applicazione AWS Panorama carica gli asset container e descrittori a cui fa riferimento la configurazione del pacchetto (package.json) in ogni pacchetto e registra i pacchetti come nodi in AWS Panorama. Fai quindi riferimento a questi nodi nel manifesto dell'applicazione (graph.json) per distribuire l'applicazione.

Distribuzione dell'applicazione

Per distribuire l'applicazione, si utilizza l'CreateApplicationInstanceAPI. Questa azione richiede, tra gli altri, i seguenti parametri.

  • ManifestPayload— Il manifesto dell'applicazione (graph.json) che definisce i nodi, i pacchetti, i bordi e i parametri dell'applicazione.

  • ManifestOverridesPayload— Un secondo manifest che sovrascrive i parametri del primo. Il manifesto dell'applicazione può essere considerato una risorsa statica nell'origine dell'applicazione, dove il manifesto di sostituzione fornisce impostazioni relative alla fase di distribuzione che personalizzano la distribuzione.

  • DefaultRuntimeContextDevice— Il dispositivo di destinazione.

  • RuntimeRoleArn— L'ARN di un ruolo IAM utilizzato dall'applicazione per accedere ai servizi e alle risorse AWS.

  • ApplicationInstanceIdToReplace— L'ID di un'istanza di applicazione esistente da rimuovere dal dispositivo.

I payload manifest e override sono documenti JSON che devono essere forniti come valore di stringa annidato all'interno di un altro documento. A tale scopo, lo script carica i manifest da un file come stringa e utilizza lo strumento jq per costruire il documento annidato.

Esempio 5-deploy.sh — compone i manifesti
GRAPH_PATH="graphs/my-app/graph.json" OVERRIDE_PATH="graphs/my-app/override.json" # application manifest GRAPH=$(cat ${GRAPH_PATH} | tr -d '\n' | tr -d '[:blank:]') MANIFEST="$(jq --arg value "${GRAPH}" '.PayloadData="\($value)"' <<< {})" # manifest override OVERRIDE=$(cat ${OVERRIDE_PATH} | tr -d '\n' | tr -d '[:blank:]') MANIFEST_OVERRIDE="$(jq --arg value "${OVERRIDE}" '.PayloadData="\($value)"' <<< {})"

Lo script di distribuzione utilizza l'ListDevicesAPI per ottenere un elenco di dispositivi registrati nella regione corrente e salva la scelta dell'utente in un file locale per le distribuzioni successive.

Esempio 5-deploy.sh: trova un dispositivo
echo "Getting devices..." DEVICES=$(aws panorama list-devices) DEVICE_NAMES=($((echo ${DEVICES} | jq -r '.Devices |=sort_by(.LastUpdatedTime) | [.Devices[].Name] | @sh') | tr -d \'\")) DEVICE_IDS=($((echo ${DEVICES} | jq -r '.Devices |=sort_by(.LastUpdatedTime) | [.Devices[].DeviceId] | @sh') | tr -d \'\")) for (( c=0; c<${#DEVICE_NAMES[@]}; c++ )) do echo "${c}: ${DEVICE_IDS[${c}]} ${DEVICE_NAMES[${c}]}" done echo "Choose a device" read D_INDEX echo "Deploying to device ${DEVICE_IDS[${D_INDEX}]}" echo -n ${DEVICE_IDS[${D_INDEX}]} > device-id.txt DEVICE_ID=$(cat device-id.txt)

Il ruolo dell'applicazione viene creato da un altro script (1-create-role.sh). Lo script di distribuzione ottiene l'ARN di questo ruolo da. AWS CloudFormation Se l'applicazione è già distribuita sul dispositivo, lo script ottiene l'ID di quell'istanza dell'applicazione da un file locale.

Esempio 5-deploy.sh — ARN del ruolo e argomenti di sostituzione
# application role STACK_NAME=panorama-${NAME} ROLE_ARN=$(aws cloudformation describe-stacks --stack-name panorama-${PWD##*/} --query 'Stacks[0].Outputs[?OutputKey==`roleArn`].OutputValue' --output text) ROLE_ARG="--runtime-role-arn=${ROLE_ARN}" # existing application instance id if [ -f "application-id.txt" ]; then EXISTING_APPLICATION=$(cat application-id.txt) REPLACE_ARG="--application-instance-id-to-replace=${EXISTING_APPLICATION}" echo "Replacing application instance ${EXISTING_APPLICATION}" fi

Infine, lo script mette insieme tutti i pezzi per creare un'istanza dell'applicazione e distribuire l'applicazione sul dispositivo. Il servizio risponde con un ID di istanza che lo script memorizza per un uso successivo.

Esempio 5-deploy.sh: distribuisce l'applicazione
APPLICATION_ID=$(aws panorama create-application-instance ${REPLACE_ARG} --manifest-payload="${MANIFEST}" --default-runtime-context-device=${DEVICE_ID} --name=${NAME} --description="command-line deploy" --tags client=sample --manifest-overrides-payload="${MANIFEST_OVERRIDE}" ${ROLE_ARG} --output text) echo "New application instance ${APPLICATION_ID}" echo -n $APPLICATION_ID > application-id.txt

Monitora la distribuzione

Per monitorare una distribuzione, utilizza l'ListApplicationInstancesAPI. Lo script di monitoraggio ottiene l'ID del dispositivo e l'ID dell'istanza dell'applicazione dai file nella directory dell'applicazione e li utilizza per creare un comando CLI. Quindi chiama in loop.

Esempio 6-monitor-deployment.sh
APPLICATION_ID=$(cat application-id.txt) DEVICE_ID=$(cat device-id.txt) QUERY="ApplicationInstances[?ApplicationInstanceId==\`APPLICATION_ID\`]" QUERY=${QUERY/APPLICATION_ID/$APPLICATION_ID} MONITOR_CMD="aws panorama list-application-instances --device-id ${DEVICE_ID} --query ${QUERY}" MONITOR_CMD=${MONITOR_CMD/QUERY/$QUERY} while true; do $MONITOR_CMD sleep 60 done

Una volta completata la distribuzione, puoi visualizzare i log chiamando l'API Amazon CloudWatch Logs. Lo script di visualizzazione dei log utilizza l'API Logs. CloudWatch GetLogEvents

Esempio view-logs.sh
GROUP="/aws/panorama/devices/MY_DEVICE_ID/applications/MY_APPLICATION_ID" GROUP=${GROUP/MY_DEVICE_ID/$DEVICE_ID} GROUP=${GROUP/MY_APPLICATION_ID/$APPLICATION_ID} echo "Getting logs for group ${GROUP}." #set -x while true do LOGS=$(aws logs get-log-events --log-group-name ${GROUP} --log-stream-name code_node --limit 150) readarray -t ENTRIES < <(echo $LOGS | jq -c '.events[].message') for ENTRY in "${ENTRIES[@]}"; do echo "$ENTRY" | tr -d \" done sleep 20 done
PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.