Ausgabe
Hallo, ich arbeite an aws cdk. Ich versuche, einen vorhandenen nicht standardmäßigen vpc abzurufen. Ich habe die folgenden Optionen ausprobiert.
vpc = ec2.Vpc.from_lookup(self, id = "VPC", vpc_id='vpcid', vpc_name='vpc-dev')
Dies führt zu folgendem Fehler
[Error at /LocationCdkStack-cdkstack] Request has expired.
[Warning at /LocationCdkStack-cdkstack/TaskDef/mw-service] Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'.
Found errors
Eine andere Methode, die ich ausprobiert habe, ist
vpc = ec2.Vpc.from_vpc_attributes(self, 'VPC', vpc_id='vpc-839227e7', availability_zones=['ap-southeast-2a','ap-southeast-2b','ap-southeast-2c'])
Das führt zu
[Error at /LocationCdkStack-cdkstack] Request has expired.
[Warning at /LocationCdkStack-cdkstack/TaskDef/mw-service] Proper policies need to be attached before pulling from ECR repository, or use 'fromEcrRepository'.
Found errors
Eine andere Methode, die ich ausprobiert habe, ist
vpc = ec2.Vpc.from_lookup(self, id = "VPC", is_default=True)
// Dies wird den Standard-vpc erhalten und das wird funktionieren
Kann mir jemand helfen, nicht standardmäßige vpc in aws cdk zu bekommen? Jede Hilfe wäre willkommen. Vielen Dank
Lösung
Sehen Sie sich die Dokumentation zu aws_cdk.aws_ec2 und den CDK-Laufzeitkontext an .
Wenn Ihre VPC außerhalb Ihrer CDK-App erstellt wird, können Sie Vpc.fromLookup() verwenden. Die CDK-CLI sucht nach der angegebenen VPC in der Region und dem Konto des Stacks und importiert die Subnetzkonfiguration. Die Suche kann anhand der VPC-ID erfolgen, ist jedoch flexibler, indem nach einem bestimmten Tag in der VPC gesucht wird.
Verwendungszweck:
# Example automatically generated. See https://github.com/aws/jsii/issues/826
from aws_cdk.core import App, Stack, Environment
from aws_cdk import aws_ec2 as ec2
# Information from environment is used to get context information
# so it has to be defined for the stack
stack = MyStack(
app, "MyStack", env=Environment(account="account_id", region="region")
)
# Retrieve VPC information
vpc = ec2.Vpc.from_lookup(stack, "VPC",
# This imports the default VPC but you can also
# specify a 'vpcName' or 'tags'.
is_default=True
)
Aktualisieren Sie mit einem relevanten Beispiel:
vpc = ec2.Vpc.from_lookup(stack, "VPC",
vpc_id = VPC_ID
)
Update mit Typoskript-Beispiel:
import ec2 = require('@aws-cdk/aws-ec2');
const getExistingVpc = ec2.Vpc.fromLookup(this, 'ImportVPC',{isDefault: true});
Beantwortet von – Amit Baranes
Antwort geprüft von – Clifford M. (FixError Volunteer)