2017-06-07 1 views
1

J'essaie d'utiliser le Gestionnaire de systèmes Amazon EC2 (http://docs.aws.amazon.com/systems-manager/latest/userguide/what-is-systems-manager.html) pour créer un type de document «Automation» afin (entre autres) de marquer une AMI qu'il vient de créer.Types de paramètres AWS EC2 Systems Manager

Vous pouvez créer des balises d'une manière prédéterminée comme celui-ci dans les « MainSTEPS »:

... 
{ 
    "name": "CreateTags", 
    "action": "aws:createTags", 
    "maxAttempts": 3, 
    "onFailure": "Abort", 
    "inputs": { 
    "ResourceType": "EC2", 
    "ResourceIds": ["{{ CreateImage.ImageId }}"], 
    "Tags": [ 
     { 
     "Key": "Original_AMI_ID", 
     "Value": "Created from {{ SourceAmiId }}" 
     } 
    ] 
    } 
}, 
... 

mais de marquer avec un nombre variable de mots clés, je suppose que le changement suivant neccessaire:

... 
{ 
    "name": "CreateTags", 
    "action": "aws:createTags", 
    "maxAttempts": 3, 
    "onFailure": "Abort", 
    "inputs": { 
    "ResourceType": "EC2", 
    "ResourceIds": ["{{ CreateImage.ImageId }}"], 
    "Tags": {{ Tags }} 
    } 
}, 
... 

avec l'ajout d'un nouveau paramètre appelé 'd'étiquettes' de type 'maplist':

"parameters": { 
    "Tags": { 
    "type": "MapList" 
    } 
} 

depuis l'exécution du processus se plaignait de mon utilisation d'un type «String» et en disant que je devrais utiliser un «MapList».

'MapList' est répertorié en tant que type de paramètre de Amazon EC2 Systems Manager (http://docs.aws.amazon.com/systems-manager/latest/APIReference/top-level.html), mais je n'ai pas encore trouvé de documentation sur la façon de définir ce type.

Je l'ai deviné plusieurs formats basés à la fois ce que je l'ai vu de leur échantillon « hardcoded » ci-dessus et autres méthodes de marquage dans leurs autres années API sans succès:

[ { "Key": "Name", "Value": "newAmi" } ] 
[ { "Key": "Name", "Values": [ "newAmi" ] } ] 
1: { "Key": "Name", "Values": [ "newAmi" ] } 

Est-ce que quelqu'un sait comment définir les nouveaux types de paramètres introduits avec Amazon EC2 Systems Manager (plus précisément, 'MapList')?

Mise à jour:

Puisque les documents manquent, Amazon demande de soutien à l'équipe d'automatisation comment utiliser cette méthode de meilleur ami balise. J'ai trouvé comment ajouter une seule étiquette comme une valeur de paramètre dans la console, si:

{ "Key": "TagName", "Value": "TagValue" } 

Mes tentatives pour ajouter plusieurs balises permettra l'automatisation de commencer:

{ "Key": "TagName1", "Value": "TagValue1" }, { "Key": "TagName2", "Value": "TagValue2" } 

mais revient en fin de compte cette erreur générique lors de l'exécution:

Internal Server Error. Please refer to Automation Service Troubleshooting 
Guide for more diagnosis details 

Il peut sembler comme le [] manque de partout dans le tableau, mais vous semblez obtenir ces gratuitement parce que quand je les ajoute que je reçois cette erreur:

Parameter type error. [[ { "Key": "Description", "Value": "Desc" }, 
{ "Key": "Name", "Value": "Nm" } ]] is defined as MapList. 

Répondre

0

Merci d'utiliser EC2 Systems Manager, fonction d'automatisation. Voici le document que j'ai testé, ça marche.

{ 
    "schemaVersion": "0.3", 
    "description": "Test tags.", 
    "assumeRole": "arn:aws:iam::123456789012:role/TestRole", 
    "parameters": { 
    "Tags": { 
     "default": [{ 
     "Key": "TagName1", 
     "Value": "TagValue1" 
     }, 
     { 
     "Key": "TagName2", 
     "Value": "TagValue2" 
     }], 
     "type": "MapList" 
    } 
    }, 
    "mainSteps": [ 
    { 
     "name": "CreateTags", 
     "action": "aws:createTags", 
     "maxAttempts": 3, 
     "onFailure": "Abort", 
     "inputs": { 
     "ResourceType": "EC2", 
     "ResourceIds": [ 
      "i-12345678" 
     ], 
     "Tags": "{{ Tags }}" 
     } 
    } 
    ] 
} 
+0

Merci @ Cooper.Wu. L'exemple fonctionne tel quel, à condition que je change assRole/ResourceIds et exécute à partir de l'interface CLI, mais cela ne fonctionne pas dans la console et se plaint de la valeur par défaut des balises: 'Erreur de type de paramètre. [[{"Key": "TagName1", "Value": "TagValue1"}, {"Key": "TagName2", "Value": "TagValue2"}]] est défini comme MapList.' Plus important encore, si je entrez mes propres valeurs pour Tag dans la CLI sans les "[]" s environnantes (erreurs mentionnées en question) il échouera toujours à l'exécution: 'Internal Server Error. Veuillez vous reporter au Guide de dépannage du service d'automatisation pour plus de détails sur le diagnostic ». Aucun conseil? –