AWS SG自我参考解析不同环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AWS SG自我参考解析不同环境相关的知识,希望对你有一定的参考价值。

我想让它对不同的环境(Dev,UAT,PROD)更加模块化,在这种情况下,我认为我应该使用SG("App${local.environment}sec_group")的'name',或者只使用Sec_group? 这里它能解决source_security_group_id的问题吗?

resource "aws_security_group" "sec_group" {
name   = "App${local.environment}sec_group"
vpc_id = "${local.vpc_id}"
} resource "aws_security_group_rule" "sec_group_allow_1865" {
type              = "ingress"
from_port         = 1865
to_port           = 1865 
protocol          = "tcp" 
security_group_id = "${aws_security_group.sec_group.id}" 
source_security_group_id = "${aws_security_group.App${local.environment}sec_group.id}" ''' 
}

Variable.tf 文件:-

environment = "${lookup(var.ws_to_environment_map, terraform.workspace, var.default_environment)}"
vpc_id = "${lookup(var.ws_to_vpc_map, terraform.workspace, var.default_environment)}"
variable "default_environment" {
default = "dev"
}
variable "ws_to_vpc_map" {
type = "map"
default = {
dev = "vpc-03a05d67831e1ff035"
uat  = ""
prod = ""
}
}
variable "ws_to_environment_map" {
type = "map"
default = {
dev = "DEV"
uat  = "UAT"
prod = "PROD"
}
}
答案

这里你可以使用

source_security_group_id = "${aws_security_group.sec_group.id}"

而不是

source_security_group_id = "${aws_security_group.App${local.environment}sec_group.id}"

aws_security_group.sec_group指的是以 "sec_group "名称创建的安全组资源(资源 "aws_security_group" "sec_group")和aws_security_group.sec_group.id会得到它的id。

以上是关于AWS SG自我参考解析不同环境的主要内容,如果未能解决你的问题,请参考以下文章

AWS CloudFormation:默认 VPC“vpc”中不存在安全组“sg-”

Terraform - 为 CloudFront IP 自动创建 SG

python aws_sg_recipe.py

无法在 AWS 中使用 RDS 创建弹性 Beanstalk 环境

aws.push 到多个环境

使用 Terraform (AWS) 将安全组添加到另一个安全组的入站规则作为源