es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Estoy tratando de utilizar JSON para extraer una variable dentro de un bucle.

Estoy copiando json de dos sitios web para intentar lograr mi objetivo:

Downloading an AWS Glacier archive, step by step

https://gist.github.com/veuncent/ac21ae8131f24d3971a621fac0d95be5

Esto funciona:

# archivo para realizar acciones en los archivos de archivo
!/bin/bash

archivo='/home/nat/Documents/glacier_access/output.json'

if [[ -z ${AWS<em>ACCOUNT</em>ID} ]] || [[ -z ${AWS<em>REGION} ]] || [[ -z ${AWS</em>VAULT<em>NAME} ]]; then
    echo "Por favor, configure las siguientes variables de entorno:"
    echo "AWS<em>ACCOUNT<em>ID"
    echo "AWS<em>REGION"
    echo "AWS<em>VAULT</em>NAME"
    exit 1
fi

ids_archivo=$(jq .ArchiveList[].ArchiveId < $archivo)

for id_archivo in ${ids_archivo}; do
    echo "Descargando archivo: ${id_archivo}"
     aws glacier delete-archive --archive-id=${id_archivo} --vault-name ${AWS<em>VAULT</em>NAME} --account-id ${AWS<em>ACCOUNT</em>ID} --region ${AWS_REGION}

done

Esto también funciona:

# archivo para realizar acciones en los archivos de archivo
!/bin/bash

archivo='/home/nat/Documents/glacier_access/output.json'

if [[ -z ${AWS<em>ACCOUNT</em>ID} ]] || [[ -z ${AWS<em>REGION} ]] || [[ -z ${AWS</em>VAULT<em>NAME} ]]; then
    echo "Por favor, configure las siguientes variables de entorno:"
    echo "AWS<em>ACCOUNT<em>ID"
    echo "AWS<em>REGION"
    echo "AWS<em>VAULT</em>NAME"
    exit 1
fi

ids_archivo=$(jq .ArchiveList[].ArchiveId < $archivo)

for id_archivo in ${ids_archivo}; do
    echo "Descargando archivo: ${id_archivo}"
aws glacier initiate-job \
    --account-id 510422384120\
    --vault-name ebony-backup \
    --job-parameters '{
        "Type": "archive-retrieval",
        "Description": "Descargar todos mis archivos",
        "ArchiveId": "w0GUthLDLDR6NL1z4c53M1IFktxBCrW</em>qZ2Qm_",
    }'

done

Pero no puedo hacer referencia a la variable en el bucle, por lo que esto no funciona:

"ArchiveId": "${archive_id}"

ni esto:

"ArchiveId": "{archive_id}"

Algo importante a tener en cuenta es que el ArchiveID DEBE hacer referencia desde dentro de la sección de parámetros del trabajo.

Cualquier ayuda será bien recibida. ¿Supongo que esta es una pregunta de JSON?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, esta es una pregunta de JSON. El problema parece estar en referenciar correctamente la variable “archive_id” en la sección de parámetros JSON. Para referenciar una variable en una cadena JSON, debe estar encerrada entre comillas dobles y precedida por un signo de dólar, como esto:

    "ArchiveId": "$archive_id"

    O:

    "ArchiveId": "${archive_id}"

    Asegúrese de que la sintaxis JSON sea correcta, incluido el uso de comas entre pares clave-valor, y de que el valor de la variable se asigne correctamente en el bucle antes de ser referenciado en la sección de parámetros JSON.

Comments are closed.