Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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 从terraform中的安全组名称中提取安全组id_Amazon Web Services_Terraform Provider Aws - Fatal编程技术网

Amazon web services 从terraform中的安全组名称中提取安全组id

Amazon web services 从terraform中的安全组名称中提取安全组id,amazon-web-services,terraform-provider-aws,Amazon Web Services,Terraform Provider Aws,我正在尝试在terraform中编写一个通用脚本,以便在AWS中创建ALB。 安全组是在sg_alb中创建的,但不是在同一脚本中创建的。它是预先创建的 我想提取安全组的id并传递它 security_groups=[${aws_security_group.lb_sg.id}] 我见过上面提到的例子,但假设安全组是与ALB一起创建的 我怎样才能做到这一点 多谢各位 库马尔这就是地形的用途。如果您的Terraform模块将安全组名称作为变量获取,则您将按如下方式查找安全组: data "aws_s

我正在尝试在terraform中编写一个通用脚本,以便在AWS中创建ALB。 安全组是在sg_alb中创建的,但不是在同一脚本中创建的。它是预先创建的 我想提取安全组的id并传递它 security_groups=[${aws_security_group.lb_sg.id}]

我见过上面提到的例子,但假设安全组是与ALB一起创建的

我怎样才能做到这一点

多谢各位 库马尔

这就是地形的用途。如果您的Terraform模块将安全组名称作为变量获取,则您将按如下方式查找安全组:

data "aws_security_group" "lb_sg" {
  name = var.security_group_name
}
security_groups = [data.aws_security_group.lb_sg.id]
然后,您可以在创建ALB时使用数据源,如下所示:

data "aws_security_group" "lb_sg" {
  name = var.security_group_name
}
security_groups = [data.aws_security_group.lb_sg.id]
这就是Terraform的用途。如果您的Terraform模块将安全组名称作为变量获取,则您将按如下方式查找安全组:

data "aws_security_group" "lb_sg" {
  name = var.security_group_name
}
security_groups = [data.aws_security_group.lb_sg.id]
然后,您可以在创建ALB时使用数据源,如下所示:

data "aws_security_group" "lb_sg" {
  name = var.security_group_name
}
security_groups = [data.aws_security_group.lb_sg.id]

我只看到lb_sg数据源中声明的名称,但您引用了lb_sg.id。你能澄清一下吗?@RodrigoM数据源的工作方式是Terraform根据你提供的参数通过AWS API查找数据源。然后,数据源的所有属性都可供您以后参考。根据此处的文档,您可以按名称、id、标记、筛选器或vpc_id查找安全组。完成后,可以参考值id、名称、标记、vpc_id和说明。谢谢标记。我想在vars.tf数据aws_security_group lb_sg{name=var.security_group_name}中定义它是合乎逻辑的。定义它的地形实际上并不重要,但我只会在vars.tf中定义var。我将在与负载平衡器资源相同的文件中定义数据源。这将遵循我在Terraform文档和示例中看到的一般实践。感谢Mark的澄清。还有一个小小的澄清。我做了更改并运行了terraform plan,我看到这样的+security_groups=[+sg-00ee975248d230286],这是否意味着它期望安全组有多个值。我只想附加一个安全组我只看到lb_sg数据源中声明的名称,但您引用了lb_sg.id。你能澄清一下吗?@RodrigoM数据源的工作方式是Terraform根据你提供的参数通过AWS API查找数据源。然后,数据源的所有属性都可供您以后参考。根据此处的文档,您可以按名称、id、标记、筛选器或vpc_id查找安全组。完成后,可以参考值id、名称、标记、vpc_id和说明。谢谢标记。我想在vars.tf数据aws_security_group lb_sg{name=var.security_group_name}中定义它是合乎逻辑的。定义它的地形实际上并不重要,但我只会在vars.tf中定义var。我将在与负载平衡器资源相同的文件中定义数据源。这将遵循我在Terraform文档和示例中看到的一般实践。感谢Mark的澄清。还有一个小小的澄清。我做了更改并运行了terraform plan,我看到这样的+security_groups=[+sg-00ee975248d230286],这是否意味着它期望安全组有多个值。我只想附加一个安全组