如何知道 Cloudformation 要创建多少个 Mount 目标

How to know how many Mount targets to create by Cloudformation

我在VPC中通过cloudformation创建了一个EFS,这个VPC包含很少的EC2 instances

我还需要为每个子网创建挂载目标。

此cloudformation 模板可以在不同的AWS accounts 中执行。 如何知道要创建多少 Mount targets 资源?

我可以在账户 1 中有一个 vpc 和 3 subnets,在账户 2 中有另一个 vpc 和 2 subnets...

如何使模板通用以便它根据每个帐户环境运行?

 "FileSystem" : {
       "Type" : "AWS::EFS::FileSystem",
       "Properties" : {
         "FileSystemTags" : [
           {
             "Key" : "Name",
             "Value" : "FileSystem"
           }
         ]
       }
     },

     "MountTarget1": {
       "Type": "AWS::EFS::MountTarget",
       "Properties": {
         "FileSystemId": { "Ref": "FileSystem" },
         "SubnetId": { "Ref": "Subnet1" },
         "SecurityGroups": [ { "Ref": "MountTargetSecurityGroup" } ]
       }
     },

     "MountTarget2": {
       "Type": "AWS::EFS::MountTarget",
       "Properties": {
         "FileSystemId": { "Ref": "FileSystem" },
         "SubnetId": { "Ref": "Subnet2" },
         "SecurityGroups": [ { "Ref": "MountTargetSecurityGroup" } ]
       }
     },

据我了解,您希望能够跨账户重复使用同一模板,并根据账户所需的子网数量创建适当数量的 MountTargets。

有许多变量和条件适用,具体取决于子网的数量(ACL、路由表等)。您或许可以使用大量条件和参数来完成它,但模板会变得非常混乱。虽然这不是一个优雅的解决方案。

更好的方法是使用对流层创建模板。下面是一个 EFS 示例,可帮助您入门。 https://github.com/cloudtools/troposphere/blob/master/examples/EFS.py