Terraform配置aws_datasync_location_efs时filesystem_arn验证失败
问题原因及解决办法
你遇到的验证错误是因为传入的EFS文件系统ARN不符合AWS DataSync要求的格式——ARN缺少了12位的AWS账户ID部分。
看错误信息里的ARN:arn:aws:elasticfilesystem:us-east-1::file-system/fs-0d5b67a50ea988fb6,在区域(us-east-1)和file-system之间本该是12位数字的账户ID,但这里是空的(两个冒号直接相连),这就违反了DataSync要求的正则规则:^arn:(aws|aws-cn|aws-us-gov|aws-iso|aws-iso-b):elasticfilesystem:[a-z-0-9]+:[0-9]{12}:file-system/fs-[0-9a-f]{8,40}$。
代码问题所在
你在aws_datasync_location_efs资源里引用了挂载目标的file_system_arn属性:
efs_file_system_arn = aws_efs_mount_target.my_target1.file_system_arn
这个属性返回的ARN是不包含账户ID的简化版本,不符合DataSync的格式要求。
修复方案
直接引用EFS文件系统资源本身的arn属性即可,这个属性会返回包含完整账户ID的标准ARN:
修改efs.tf中的DataSync资源声明:
resource "aws_datasync_location_efs" "example" { efs_file_system_arn = aws_efs_file_system.my_efs.arn ec2_config { security_group_arns = [aws_security_group.my_efs-sg.arn] subnet_arn = module.vpc.public_subnet_arns[0] } }
这样传入的ARN会是类似arn:aws:elasticfilesystem:us-east-1:123456789012:file-system/fs-0d5b67a50ea988fb6的完整格式,就能通过DataSync的验证了。
内容的提问来源于stack exchange,提问作者Nstevens
相关产品推荐
相关产品推荐

