如何使用 Terraform (AWS) 在多可用区中创建 EFS

Mun*_*ndi 5 encrypting-file-system amazon-ec2 amazon-web-services terraform

我在两个可用区中启动了两个 ec2 实例,我需要使用 terraform 在两个实例中安装 efs。

resource "aws_efs_file_system" "magento-efs" {
   creation_token = "efs-demo"
   performance_mode = "generalPurpose"
   throughput_mode = "bursting"
   encrypted = "true"
 tags = {
     Name = "Magento-EFS"
   }
 }

resource "aws_efs_mount_target" "efs-mount" {
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${aws_subnet.public_subnet.0.id}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,我可以在 us-east-1a 中创建 efs。我需要在 us-east-1a 和 us-east-1b 中都提供它

Ste*_*ing 7

您只需要在 AZ us-east-1b 的子网中添加另一个挂载目标:

resource "aws_efs_mount_target" "efs-mount-b" {
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${aws_subnet.public_subnet.1.id}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}
Run Code Online (Sandbox Code Playgroud)

更优雅(使用count取决于子网的数量):

resource "aws_efs_mount_target" "efs-mount" {
   count = "length(aws_subnet.public_subnet.*.id)"
   file_system_id  = "${aws_efs_file_system.magento-efs.id}"
   subnet_id = "${element(aws_subnet.public_subnet.*.id, count.index)}"
   security_groups = ["${aws_security_group.efs-sg.id}"]
}
Run Code Online (Sandbox Code Playgroud)