deploy create cloudformation aws amazon-cloudformation aws-cli

amazon cloudformation - create - Obtención de salidas de aws cloudformation describe-stacks



aws cloudformation create stack (2)

Si bien la consulta funciona, puede resultar problemático si tiene varias pilas. De manera realista, probablemente debería aprovechar las exportaciones para cosas que son distintas y autoritarias.

A modo de ejemplo, si modificó su fragmento de CloudFormation para que se vea así:

"Outputs" : { "DbUrl" : { "Description" : "My Database Url", "Value" : "myUrl", "Export" : { "Name" : "DbUrl" } } }

Entonces podrías usar:

aws cloudformation list-exports --query "Exports[?Name==/`DbUrl/`].Value" --no-paginate --output text

para recuperarlo. Las exportaciones deben ser únicas: solo una pila puede exportar cualquier nombre dado. De esta manera, está seguro de que obtiene el valor correcto, cada vez. Si intenta crear una nueva pila que exporta un nombre que ya existe en otro lugar, la creación de esa pila fallará.

Estoy usando lo siguiente para obtener la información de pila que quiero a través de AWS Cli:

aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack

Está regresando el resultado OK:

{ "Stacks": [ { "StackId": "arn:aws:mystackid", "LastUpdatedTime": "2017-01-13T04:59:17.472Z", "Tags": [], "Outputs": [ { "OutputKey": "Ec2Sg", "OutputValue": "sg-97e13dff" }, { "OutputKey": "DbUrl", "OutputValue": "myUrl" } ], "CreationTime": "2017-01-13T03:27:18.893Z", "StackName": "mystack", "NotificationARNs": [], "StackStatus": "UPDATE_ROLLBACK_COMPLETE", "DisableRollback": false } ] }

Pero no sé cómo devolver solo el valor de OutputValue que es myUrl

Como no necesito el resto, solo miUrl.

¿Es eso posible a través de aws cloudformation describe-stacks?

Editar

Acabo de darme cuenta de que puedo usar - query :

--query ''Stacks[0].Outputs[1].OutputValue''

obtendré exactamente lo que quiero, pero me gustaría usar DbUrl si la cantidad de salidas cambia, mi resultado será inesperado.


Tengo la respuesta, utilice el siguiente:

--query ''Stacks[0].Outputs[?OutputKey==`DbUrl`].OutputValue'' --output text

Espero que esto ayude a alguien.