Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS VPC端点服务:如何附加主体_Amazon Web Services_Terraform_Amazon Vpc - Fatal编程技术网

Amazon web services AWS VPC端点服务:如何附加主体

Amazon web services AWS VPC端点服务:如何附加主体,amazon-web-services,terraform,amazon-vpc,Amazon Web Services,Terraform,Amazon Vpc,我正在尝试创建一个AWS VPC端点服务(PrivateLink),在那里我可以将主体添加到已经存在的主体中。这是我目前的代码 resource "aws_vpc_endpoint_service" "privatelink" { provider = aws.customer acceptance_required = true network_load_balancer_arns = [&q

我正在尝试创建一个AWS VPC端点服务(PrivateLink),在那里我可以将主体添加到已经存在的主体中。这是我目前的代码

resource "aws_vpc_endpoint_service" "privatelink" {
  provider                   = aws.customer
  acceptance_required        = true
  network_load_balancer_arns = ["${aws_lb.nlb.arn}"]
}

resource "aws_vpc_endpoint_service_allowed_principal" "addition" {
  provider                = aws.customer
  vpc_endpoint_service_id = aws_vpc_endpoint_service.privatelink.id
  principal_arn           = var.consumer_principal_arn
}

这对于变量中指定的一个主体非常有效,但当我使用另一个主体再次运行它时,会覆盖现有主体。我想要的是在每次执行terraform应用时,将零个或多个主体附加到现有主体列表中。例如,第一次运行它时,我指定主体X。我再次运行它,指定主体Y。现在,允许的主体列表是X和Y。

您不能编辑现有资源定义以添加另一个主体。Terraform将此视为对名为“addition”的资源的更新,并执行更新。相反,您需要添加另一个
aws\u vpc\u endpoint\u service\u allowed\u principal
资源。

您需要为每个附加ARN创建多个
aws\u vpc\u endpoint\u service\u allowed\u principal
资源。通过这种方式,您可以在将来撤销主体,而不会破坏其他现有关联。当然,您可以使用和创建
aws\u vpc\u endpoint\u service\u allowed\u principal
resources和count以及principal arn列表。但是,如果从列表中删除主体,则将重新创建从列表中删除主体后所有主体的关联,并且需要再次接受关联。

谢谢您的评论,Mark。我为不清楚而道歉;我已经更新了这个问题,以反映我希望向任何现有主体追加零个或多个主体的要求。@PaulWaldo我不知道这意味着什么。如何将主体附加到主体上?实际上,您需要做的是在允许的主体列表中添加一个新主体。没有把一个校长附加到另一个校长的事情。谢谢马克,我已经澄清了。@PaulWaldo是的,你的澄清不会改变我的答案。你似乎忽略了地形状态如何运作的关键点。您不能修改现有资源定义以便向基础结构添加新资源。Terraform将其视为对现有资源的修改。我建议您创建一个您希望允许的ARN的地图或列表,并对每个ARN使用
来创建它们,然后您只需向列表中添加一个值。