2016-03-22 9 views
1

Im folgenden Python-Code unter Verwendung von Stapeln zu schaffen, in AWS möchte für einen des Parameterwert als Liste/Array senden, aber im Störung zu erhalten, wie unten:Lambda-Funktion für die Liste der Werte in Parametern

import boto3 
import time 

date = time.strftime("%Y%m%d") 
time = time.strftime("%H%M%S") 
stackname = 'FulfillSNSELB' 
client = boto3.client('cloudformation') 
response = client.create_stack(
    StackName= (stackname + '-' + date + '-' + time), 
    TemplateURL='https://s3.amazonaws.com/****/**/myapp.json', 
    Parameters=[ 
     { 
      'ParameterKey': 'Subnets', 
      'ParameterValue': 'subnet-1,subnet-2', 
      'Type':'CommaDelimitedList', 
      'UsePreviousValue': False 
     }] 
) 

def lambda_handler(event, context): 
    return(response) 

module initialization error: Parameter validation failed: 
Unknown parameter in Parameters[15]: "Type", must be one of: ParameterKey, ParameterValue, UsePreviousValue 
+0

Bitte formatieren Sie diese richtig, wenn die Angabe würden Sie. Das würde nicht laufen. – Goodies

+1

@Goodies Ich nehme an, ich habe die Formatierung behoben ... –

+0

@ shiv455 Umm ... "ParameterKey, ParameterValue, UsePreviousValue". Du hast einen namens "Type". – Goodies

Antwort

1

Wie Sie richtig festgestellt haben, kann Type nicht als Parameter in create_stack() angegeben werden.

Stattdessen sollten Sie den Typ in der Vorlage TemplateURL='https://s3.amazonaws.com/****/**/myapp.json' angeben, damit der durch Kommas getrennte Wert 'ParameterValue': 'subnet-1,subnet-2' akzeptiert wird.

Beispielvorlage, die CommaDelimitedList als Parameter akzeptiert.

"Parameters" : { 
    "DbSubnetIpBlocks": { 
    "Description": "Comma-delimited list of three CIDR blocks", 
    "Type": "CommaDelimitedList", 
    "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" 
    } 
} 

In Ihrem Fall sollte der Stapel so aussehen:

"Parameters" : { 
    "Subnets": { 
    "Description": "Comma-delimited list of CIDR blocks", 
    "Type": "CommaDelimitedList", 
    "Default": "10.0.48.0/24" 
    } 
} 

Jetzt können Sie Ihren Stapel erstellen, ohne Type

+0

ich habe den akzeptierten wert als [ ] anstelle von '' innerhalb der Vorlage .i Mittelwert Array anstelle von String ... ist es in Ordnung, wenn akzeptierte Wert als String geben idealerweise sollte es Array für Subnetze, Sicherheitsgruppen RT sein ..? Korrigieren Sie mich, wenn ich falsch bin – shiv455

+0

Nein, Typ kann nur in der Vorlage angegeben werden, können Sie sie beim Erstellen des Stapels nicht angeben. Siehe das Beispiel, das ich zur Verfügung gestellt habe. – helloV

+0

Ja das macht Sinn !! – shiv455

Verwandte Themen