Fix request retry mechanism to run aws instance

This commit is contained in:
Moss 2019-11-29 18:11:10 +01:00
parent c31bbcf4cf
commit 4516978555

View File

@ -194,9 +194,20 @@ func (s *StepRunSourceInstance) Run(ctx context.Context, state multistep.StateBa
runOpts.InstanceInitiatedShutdownBehavior = &s.InstanceInitiatedShutdownBehavior runOpts.InstanceInitiatedShutdownBehavior = &s.InstanceInitiatedShutdownBehavior
} }
runReq, runResp := ec2conn.RunInstancesRequest(runOpts) var runResp *ec2.Reservation
runReq.RetryCount = 11 err = retry.Config{
err = runReq.Send() Tries: 11,
ShouldRetry: func(err error) bool {
if isAWSErr(err, "InvalidParameterValue", "iamInstanceProfile") {
return true
}
return false
},
RetryDelay: (&retry.Backoff{InitialBackoff: 200 * time.Millisecond, MaxBackoff: 30 * time.Second, Multiplier: 2}).Linear,
}.Run(ctx, func(ctx context.Context) error {
runResp, err = ec2conn.RunInstances(runOpts)
return err
})
if isAWSErr(err, "VPCIdNotSpecified", "No default VPC for this user") && subnetId == "" { if isAWSErr(err, "VPCIdNotSpecified", "No default VPC for this user") && subnetId == "" {
err := fmt.Errorf("Error launching source instance: a valid Subnet Id was not specified") err := fmt.Errorf("Error launching source instance: a valid Subnet Id was not specified")