J'utilise ce qui suit pour obtenir le informations de pile Je veux via AWS Cli:
aws cloudformation --region ap-southeast-2 describe-stacks --stack-name mystack
Ça retourne résultat 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
}
]
}
Mais je ne sais pas comment renvoyer uniquement la valeur de OutputValue qui est myUrl
Comme je n'ai pas besoin du reste, juste myUrl.
Est-ce possible via aws cloudformation decrire-stacks?
Modifier
Je viens de réaliser que je peux utiliser -- requête :
--query "Stacks[0].Outputs[1].OutputValue"
obtiendra exactement ce que je veux mais je voudrais utiliser DbUrl sinon si le nombre de sorties change, mon résultat sera inattendu.
J'ai eu la réponse, utilisez ce qui suit:
--query "Stacks[0].Outputs[?OutputKey=='DbUrl'].OutputValue" --output text
J'espère que cela aidera quelqu'un.
Lorsque vous interrogez des travaux, cela peut s'avérer problématique si vous avez plusieurs piles. En réalité, vous devriez probablement tirer parti des exportations pour des éléments distincts et faisant autorité.
À titre d'exemple - si vous avez modifié votre extrait de code CloudFormation pour qu'il ressemble à ceci:
"Outputs" : {
"DbUrl" : {
"Description" : "My Database Url",
"Value" : "myUrl",
"Export" : {
"Name" : "DbUrl"
}
}
}
Ensuite, vous pouvez utiliser:
aws cloudformation list-exports --query "Exports[?Name==\`DbUrl\`].Value" --no-paginate --output text
pour le récupérer. Les exportations doivent être uniques - une seule pile peut exporter un nom donné. De cette façon, vous êtes assuré d'obtenir la bonne valeur, à chaque fois. Si vous essayez de créer une nouvelle pile qui exporte un nom existant ailleurs, la création de cette pile échouera.
À l'aide de Windows AWS CLI, je devais m'assurer du --query
param a été doublé.
aws cloudformation describe-stacks --stack-name <stack_name> --query "Stacks[0].Outputs[?OutputKey==`<key_we_want>`].OutputValue" --output text
À défaut d'utiliser des guillemets doubles, la requête a renvoyé:
Stacks[0].Outputs[?OutputKey==
].OutputValue
Pas si utile.