2016-04-13 7 views
0

Ich versuche, mit Boto3 eine vorhandene CloudFormation-Vorlage zu aktualisieren, aber mein Code schlägt auf der Eigenschaft 'Parameters' fehl! Hier ist, was ich versucht habe:Verwenden von Boto3 zum Aktualisieren einer Cloud-Vorlage

  1. lesen params aus einer Konfigurationsdatei

    from ConfigParser import SafeConfigParser 
    parser = SafeConfigParser() 
    parser.optionxform=str 
    parser.read('/parms/SecGrpsParams.cfg') 
    parms = dict(parser.items('params')) 
    

Druck parms“produziert

{'Application': 'Click2Buy', 'AdminCidr': '10.0.0.0/8', 'AppMoniker': 'c2b', 'vId': 'vpc-3bec005f'}

  1. Aufruf update_stack

    client = boto3.client('cloudformation') 
    response = client.update_stack( 
        StackName = args.stackname, 
        TemplateURL = template, 
        Parameters = args.params, 
        Capabilities = ['CAPABILITY_IAM'] 
    ) 
    
  2. Und der Code erzeugt diesen Fehler:
    botocore.exceptions.ParamValidationError: Parameter Validierung fehlgeschlagen: Ungültiger Typ für Parameter Parameter,
    Wert: { 'Anwendung': 'Click2Buy', 'AdminCidr': '10 .0 .0.0/8' , 'AppMoniker': 'c2b', 'vID': 'VPC-3bec005f'},
    Typen: Typ:, gültige Typen:,

ich habe args.params.items(), versuche [args.params] und [args.params.items()] aber kann nicht herausfinden, was benötigt wird.

Antwort

0

Ich habe das Problem mit meinen früheren Versuchen entdeckt. Der Aufruf "update_stack" benötigt ein Listenobjekt, das an das Feld "Parameters" in der Form Parameters = [{'ParameterKey':"parm_name", "ParameterValue":'parm_value'}]. übergeben wird. Die Anzahl der übergebenen Parameter muss exakt der Parameterdefinition in der CloudFormation-Vorlage in Anzahl und Syntax entsprechen.

Verwandte Themen