gpt4 book ai didi

json - 将可用区映射到选定的子网,并将子网映射到选定的 VPC

转载 作者:行者123 更新时间:2023-12-03 07:37:41 26 4
gpt4 key购买 nike

我正在创建一个 cloudformation 模板,用于创建一些资源,例如 EC2 实例。该模板将在不同的 AWS 账户中使用。我们有3个帐户,1个用于测试环境,1个用于开发环境,1个用于生产环境。每个账户有2个VPC(所有账户相同区域)。

我的问题是,为了正确构建资源,在创建 EC2 时,我们需要选择一个 VPC、同一 VPC 内的子网以及同一子网的可用区。我需要可用区,因为我要将 EFS 挂载到实例的 userData 中,以便实例可以连接到挂载目标。

众所周知,每个子网都有一个目标数量,并且dns根据AZ而变化。以下是我在 userData 中放入的内容以挂载目标:

echo "availability-zone.file-system-id.efs.aws-region.amazonaws.com:/ /efs-mount-point nfs4 nfsvers=4.1 0 0" >> /etc/fstab

我没有直接创建实例,而是通过创建启动配置和自动缩放组来创建实例。

"Launchconfig":{
"Type":"AWS::AutoScaling::LaunchConfiguration",
"Properties":{
"ImageId":{ "Fn::FindInMap":[ "AWSRegionToAMI", { "Ref":"AWS::Region" }, "AMIID" ] },
"SecurityGroups":[ { "Ref":"EcsSecurityGroup" } ],
"InstanceType": {"Ref":"InstanceType" },
"IamInstanceProfile":{ "Ref":"EC2InstanceProfile" },
"KeyName":{ "Fn::FindInMap" : [ "KeyPairMapping", {"Ref" : "EnvParam"}, "Key"] },
"UserData":{ "Fn::Base64" : {
"Fn::Join" : ["", [
"#!/bin/bash -xe\n",
"echo eu-west-1c.",{ "Fn::FindInMap" : [ "FileSystemMap", {"Ref" : "EnvParam"}, "FileSystemID"] },
".efs.",{ "Ref" : "AWS::Region" },".amazonaws.com:/ /efs-mount-target nfs defaults,vers=4.1 0 0",
" >> /etc/fstab\n"
]]}
}
}
},

"AutoScalingGroup":{
"Type":"AWS::AutoScaling::AutoScalingGroup",
"Properties":{
"VPCZoneIdentifier":{ "Ref":"SubnetID" },
"LaunchConfigurationName":{ "Ref":"Launchconfig" },
"MinSize":"1",
"MaxSize":{ "Ref":"MaxSize" },
"DesiredCapacity":{ "Ref":"DesiredCapacity" }
}
},

我的问题:通过使用映射,如何根据选择的子网获取userdata中可用区的值?

最佳答案

这可以通过两种方式完成,具体取决于您的用例:

  1. VPCZoneIdentifier为您提供属性(property)AutoScalingGroup资源接受子网标识符字符串列表。或者,AvailabilityZones属性接受可用区域字符串列表。如果您仅为 Auto Scaling 组指定单个可用区/子网,则可以确保实例将在指定的可用区中启动。

  2. 如果您的 Auto Scaling 组可以在多个可用区中启动实例,您可以 Retrieve Instance Metadata确定实例的当前可用区,例如,通过在实例上的用户数据脚本中运行以下命令:

    AZ=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone)
    echo "$AZ.${FileSystemId}.efs.${AWS::Region}.amazonaws.com:/ /efs-mount-point nfs4 nfsvers=4.1 0 0" >> /etc/fstab

关于json - 将可用区映射到选定的子网,并将子网映射到选定的 VPC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42250690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com