我已在CloudFormation模板中指定了具有动态子网和(按需)EC2实例的Spot Fleet ,如下所示:
@Override
protected void onHandleIntent(Intent intent)
{
g = Globals.getInstance();
context = this;
locationProvider = LocationServices.FusedLocationApi;
googleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
locationRequest = new LocationRequest();
locationRequest.setInterval(60000);
locationRequest.setFastestInterval(15000);
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
googleApiClient.connect();
}
@Override
public void onConnected(Bundle bundle)
{
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, locationRequest, this);
}
我的每个子网都位于不同的可用区中,例如"Resources": {
"myInstance": {
"Type": "AWS::EC2::Instance",
"Properties": {
...
}
},
"myFleet": {
"Type": "AWS::EC2::SpotFleet",
"Properties" : {
"SpotFleetRequestConfigData" : {
...
"LaunchSpecifications": [
{
...
"SubnetId": "subnet-1a1a1a, subnet-2b2b2b, subnet-3c3c3c"
}
]
}
}
}
}
位于subnet-1a1a1a
,us-east-1a
位于subnet-2b2b2b
等。
我想将us-east-1b
放在同一子网中作为我的现货车队的实例,以避免支付跨越可用区的网络流量,但我不是确定如何做到这一点:
myInstance
看起来我"myInstance": {
"Type": "AWS.::EC2::Instance",
"Properties": {
...
"SubnetId": ???? // WHAT GOES HERE?
}
}
上的Fn::GetAtt
看起来并不正常,即使我myFleet
取决于myInstance
,我仍然不确定如何查看Spot Fleet的位置结果。
我能完成这个吗?谢谢!
答案 0 :(得分:0)
在您的现货车队配置中,如果您执行以下操作:
"SubnetId": "subnet-1a1a1a, subnet-2b2b2b, subnet-3c3c3c"
然后你告诉现场舰队将现场实例放在这三个子网的任何中。点实例可能同时位于所有3个子网中。
由于您只有一个EC2实例,因此无法保证您的EC2实例与所有现场实例位于同一子网中。
您的EC2实例只能存在于一个子网中,您必须指定该子网,或让AWS为您决定。
所以你可以选择: