获取现有 VPC 以在 Pulumi 堆栈中使用
Get existing VPC for use within a Pulumi stack
我正在尝试在受限的 AWS 环境中使用 Pulumi。
这个沙箱需要我使用特定的VPC,没有默认的VPC。
我已经尝试了展示如何引用现有 VPC 的示例,但它们都失败了,并出现了“调用 aws:ec2/getVpc:getVpc: 找不到匹配的 VPC”的某些变体
@pulumi/awsx,使用引用的代码:https://github.com/pulumi/pulumi-awsx/issues/522:
const vpc = awsx.ec2.Vpc.fromExistingIds('name', {
vpcId: 'id',
publicSubnetIds: ['a', 'b'],
privateSubnetIds: ['a', 'b']
})
@pulumi/aws,使用从 https://www.pulumi.com/docs/reference/pkg/aws/ec2/getvpc/:
引用的代码
const vpc = aws.ec2.Vpc.get('vpc-1', 'vpc-1')
问题:在 Pulumi 堆栈中引用现有 VPC 的正确且完整的语法是什么?
请注意,我不想“采用”此资源,因为它是共享的,并且用户 运行 pulumi up
命令没有删除 VPC 资源的权限。
您链接到的 getVpc()
和您尝试使用的 Vpc.get()
之间存在细微差别。你应该使用前者:
const vpc = aws.ec2.getVpc({ id: yourVpcId });
这是最终起作用的方法:
const vpc = aws.ec2.Vpc.get('vpc-123', 'vpc-123')
我认为在进行上述更改后 pulumi up
之前我没有正确保存我的文件。
请注意,我还必须手动将子网添加到我的 ALB 才能使其正常工作,如下所示:
const vpc = aws.ec2.Vpc.get('vpc-123', 'vpc-123')
const clusterName = nameResource('graphQlServiceCluster')
const ecsCluster = new awsx.ecs.Cluster(clusterName, {
name: clusterName,
vpc
})
const PublicSubnet1a = 'subnet-123'
const PublicSubnet1b = 'subnet-123'
const alb = new awsx.lb.ApplicationLoadBalancer(nameResource('graphQlServiceElb'), {
name: nameResource('graphQlServiceElb'),
external: true,
vpc,
subnets: [
PublicSubnet1a,
PublicSubnet1b
]
})
const listener = alb.createListener(nameResource('graphqlServiceListener'), {
name: nameResource('graphqlServiceListener'),
port: 80,
external: true,
vpc
})
Pulumi 有多种 Vpc
类型。 您可能想使用 awsx
VPC,因为它的级别更高(并且需要使用其他 awsx 基础设施)。
有两种方法可以做到这一点:
正在创建一个新的 VPC
const vpc = new awsx.ec2.Vpc(config.vpcName, {
cidrBlock: "10.0.0.0/16",
subnets: [
{
name: "public",
type: "public",
location: {
cidrBlock: "10.0.0.0/24",
availabilityZone: "us-east-2a",
},
},
{
name: "private-a",
type: "private",
location: {
cidrBlock: "10.0.1.0/24",
availabilityZone: "us-east-2a",
},
},
{
name: "private-b",
type: "private",
location: {
cidrBlock: "10.0.2.0/24",
availabilityZone: "us-east-2b",
},
},
],
});
使用现有的 VPC
借用这个 GitHub thread with the Pulumi CTO 产生了正确的结果:
const vpc = awsx.ec2.Vpc.fromExistingIds("mycompany", {
vpcId: "vpc-myvpcid",
});
// Create an ECS Fargate cluster.
const ecsCluster = new awsx.ecs.Cluster("mycompany-pulumi-cluster", {
vpc,
});
我正在尝试在受限的 AWS 环境中使用 Pulumi。
这个沙箱需要我使用特定的VPC,没有默认的VPC。
我已经尝试了展示如何引用现有 VPC 的示例,但它们都失败了,并出现了“调用 aws:ec2/getVpc:getVpc: 找不到匹配的 VPC”的某些变体
@pulumi/awsx,使用引用的代码:https://github.com/pulumi/pulumi-awsx/issues/522:
const vpc = awsx.ec2.Vpc.fromExistingIds('name', {
vpcId: 'id',
publicSubnetIds: ['a', 'b'],
privateSubnetIds: ['a', 'b']
})
@pulumi/aws,使用从 https://www.pulumi.com/docs/reference/pkg/aws/ec2/getvpc/:
引用的代码const vpc = aws.ec2.Vpc.get('vpc-1', 'vpc-1')
问题:在 Pulumi 堆栈中引用现有 VPC 的正确且完整的语法是什么?
请注意,我不想“采用”此资源,因为它是共享的,并且用户 运行 pulumi up
命令没有删除 VPC 资源的权限。
您链接到的 getVpc()
和您尝试使用的 Vpc.get()
之间存在细微差别。你应该使用前者:
const vpc = aws.ec2.getVpc({ id: yourVpcId });
这是最终起作用的方法:
const vpc = aws.ec2.Vpc.get('vpc-123', 'vpc-123')
我认为在进行上述更改后 pulumi up
之前我没有正确保存我的文件。
请注意,我还必须手动将子网添加到我的 ALB 才能使其正常工作,如下所示:
const vpc = aws.ec2.Vpc.get('vpc-123', 'vpc-123')
const clusterName = nameResource('graphQlServiceCluster')
const ecsCluster = new awsx.ecs.Cluster(clusterName, {
name: clusterName,
vpc
})
const PublicSubnet1a = 'subnet-123'
const PublicSubnet1b = 'subnet-123'
const alb = new awsx.lb.ApplicationLoadBalancer(nameResource('graphQlServiceElb'), {
name: nameResource('graphQlServiceElb'),
external: true,
vpc,
subnets: [
PublicSubnet1a,
PublicSubnet1b
]
})
const listener = alb.createListener(nameResource('graphqlServiceListener'), {
name: nameResource('graphqlServiceListener'),
port: 80,
external: true,
vpc
})
Pulumi 有多种 Vpc
类型。 您可能想使用 awsx
VPC,因为它的级别更高(并且需要使用其他 awsx 基础设施)。
有两种方法可以做到这一点:
正在创建一个新的 VPC
const vpc = new awsx.ec2.Vpc(config.vpcName, {
cidrBlock: "10.0.0.0/16",
subnets: [
{
name: "public",
type: "public",
location: {
cidrBlock: "10.0.0.0/24",
availabilityZone: "us-east-2a",
},
},
{
name: "private-a",
type: "private",
location: {
cidrBlock: "10.0.1.0/24",
availabilityZone: "us-east-2a",
},
},
{
name: "private-b",
type: "private",
location: {
cidrBlock: "10.0.2.0/24",
availabilityZone: "us-east-2b",
},
},
],
});
使用现有的 VPC
借用这个 GitHub thread with the Pulumi CTO 产生了正确的结果:
const vpc = awsx.ec2.Vpc.fromExistingIds("mycompany", {
vpcId: "vpc-myvpcid",
});
// Create an ECS Fargate cluster.
const ecsCluster = new awsx.ecs.Cluster("mycompany-pulumi-cluster", {
vpc,
});