in src/aws.js [142:180]
async function startEc2Instance(label, githubRegistrationToken) {
core.info(`Attempting to start EC2 instance using ${config.availabilityZones.length} availability zone configuration(s)`);
const errors = [];
// Try each availability zone configuration in sequence
for (let i = 0; i < config.availabilityZones.length; i++) {
const azConfig = config.availabilityZones[i];
// Region is now always specified in the availability zone config
const region = azConfig.region;
core.info(`Trying availability zone configuration ${i + 1}/${config.availabilityZones.length}`);
core.info(`Using imageId: ${azConfig.imageId}, subnetId: ${azConfig.subnetId}, securityGroupId: ${azConfig.securityGroupId}, region: ${region}`);
try {
const ec2InstanceId = await createEc2InstanceWithParams(
azConfig.imageId,
azConfig.subnetId,
azConfig.securityGroupId,
label,
githubRegistrationToken,
region
);
core.info(`Successfully started AWS EC2 instance ${ec2InstanceId} using availability zone configuration ${i + 1} in region ${region}`);
return { ec2InstanceId, region };
} catch (error) {
const errorMessage = `Failed to start EC2 instance with configuration ${i + 1} in region ${region}: ${error.message}`;
core.warning(errorMessage);
errors.push(errorMessage);
// Continue to the next availability zone configuration
continue;
}
}
// If we've tried all configurations and none worked, throw an error
core.error('All availability zone configurations failed');
throw new Error(`Failed to start EC2 instance in any availability zone. Errors: ${errors.join('; ')}`);
}