Stop aws stack creation if stack already exists

pull/310/head
Frostebite 2021-10-31 01:03:34 +01:00
parent a76135128d
commit 8343c06c71
4 changed files with 32 additions and 1 deletions

15
dist/index.js vendored
View File

@ -806,6 +806,7 @@ const core = __importStar(__webpack_require__(42186));
class AWSError { class AWSError {
static handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets) { static handleStackCreationFailure(error, CF, taskDefStackName, taskDefCloudFormation, parameters, secrets) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
cloud_runner_logger_1.default.log(' \n ');
cloud_runner_logger_1.default.log('aws stack parameters: '); cloud_runner_logger_1.default.log('aws stack parameters: ');
cloud_runner_logger_1.default.log(JSON.stringify(parameters, undefined, 4)); cloud_runner_logger_1.default.log(JSON.stringify(parameters, undefined, 4));
cloud_runner_logger_1.default.log('aws stack secrets: '); cloud_runner_logger_1.default.log('aws stack secrets: ');
@ -937,6 +938,20 @@ class AWSJobStack {
}, },
...secretsMappedToCloudFormationParameters, ...secretsMappedToCloudFormationParameters,
]; ];
let previousStackExists = true;
while (previousStackExists) {
previousStackExists = false;
const stacks = yield CF.listStacks().promise();
if (!stacks.StackSummaries) {
throw new Error('Faild to get stacks');
}
for (let index = 0; index < stacks.StackSummaries.length; index++) {
const element = stacks.StackSummaries[index];
if (element.StackName === taskDefStackName) {
previousStackExists = true;
}
}
}
try { try {
yield CF.createStack({ yield CF.createStack({
StackName: taskDefStackName, StackName: taskDefStackName,

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -12,6 +12,7 @@ export class AWSError {
parameters: any[], parameters: any[],
secrets: CloudRunnerSecret[], secrets: CloudRunnerSecret[],
) { ) {
CloudRunnerLogger.log(' \n ');
CloudRunnerLogger.log('aws stack parameters: '); CloudRunnerLogger.log('aws stack parameters: ');
CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4)); CloudRunnerLogger.log(JSON.stringify(parameters, undefined, 4));

View File

@ -101,6 +101,21 @@ export class AWSJobStack {
...secretsMappedToCloudFormationParameters, ...secretsMappedToCloudFormationParameters,
]; ];
let previousStackExists = true;
while (previousStackExists) {
previousStackExists = false;
const stacks = await CF.listStacks().promise();
if (!stacks.StackSummaries) {
throw new Error('Faild to get stacks');
}
for (let index = 0; index < stacks.StackSummaries.length; index++) {
const element = stacks.StackSummaries[index];
if (element.StackName === taskDefStackName) {
previousStackExists = true;
}
}
}
try { try {
await CF.createStack({ await CF.createStack({
StackName: taskDefStackName, StackName: taskDefStackName,