0

Ich habe eine Cloud-Formation, um eine EC2-Instanz einzurichten. Ich verwende derzeit die Parameter, um die Subnetz-ID für die EC2-Instanz sowie die VPC-ID für die Sicherheitsgruppe anzugeben (die wiederum von der EC2-Instanz verwendet werden soll).Cloud-Bildung: Wie bekomme ich VPC von Subnetz-ID

In meiner Situation muss die angegebene Subnetz-ID Teil der VPC sein und ich möchte nur die Subnetz-ID in den Parametern angeben müssen. Aber ich kann keinen Weg finden, um die VPC von der Subnetz-ID (http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html)

abzuleiten Ich sehe, dass die GetAtt-Funktion verwendet werden kann, um Ressourcenattribute zurückzugeben. Gibt es etwas, das Ressourceneigenschaften zurückgibt?

+1

Dies wäre eine nützliche Funktion, aber ich glaube nicht, dass CloudFormation einen nativen Weg hat, dies zu tun. Wenn es wichtig genug ist, könnten Sie möglicherweise eine benutzerdefinierte Lambda-unterstützte Ressource verwenden, um die Suche durchzuführen (ähnliches Beispiel: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/walkthrough-custom-resources-lambda-lookup) -amiids.html). – jarmod

Antwort

1

Aus der Dokumentation Fn:GetAtt können Sie nur AvailabilityZone- und Ipv6CidrBlocks-Details des Subnetzes abrufen. Es gibt keine eingebaute Unterstützung, um VpcId des gegebenen Subnetzes in CFn Vorlagen zu erhalten.

Es gibt jedoch einen Workaround. Wenn Sie den aws-cli documentation verwenden, können Sie mit der Methode describe-subnets die VpcId des erforderlichen Subnetzes abrufen und als Eingabe an den Cloudformations-Vorlagenaufruf create_stack übergeben.

Diese Methode funktioniert auch, wenn Sie ein SDK verwenden. zum Beispiel in Java.

//pseudo code only! 
DescribeSubnetsRequest request = new DescribeSubnetsRequest(); 
request.withSubnetIds("subnet-abcdefgh"); 

DescribeSubnetsResult result = awsClient.describeSubnets(request); 
String myVpc = result.getSubnets().get(0).getVpcId(); 

// add the above VPC Id to the parameters of your Cloud formation template create stack request. 

Hoffe, das hilft.

+0

Danke für den Vorschlag. Am liebsten würde ich es direkt in der Cloud Formation Konsole machen, aber das scheint nicht möglich zu sein. – ysalmi

+0

Wie von Krisnik erwähnt, müssten Sie die VPC des Subnetzes außerhalb von CFN holen und sie in den create/update stack Befehl übergeben. – n00b

1

Ich habe ein kleines Projekt namens cli2cloudformation erstellt. Damit können Sie cli-Befehle in Ihrem Cloud-Datenstapel ausführen und die Ergebnisse der Befehle verwenden.

Überprüfen Sie es einfach here. Ich hoffe es hilft dir.

+0

Ah, das ist eine nette allgemeine Lösung, danke. Gute Arbeit für die Einschränkungen von CF. – ysalmi

Verwandte Themen