@goldstack/utils-terraform-aws 0.4.17 → 0.4.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,10 @@
1
1
  import { AwsCredentialIdentity } from '@aws-sdk/types';
2
+ export declare const deleteState: (params: {
3
+ credentials: AwsCredentialIdentity;
4
+ dynamoDBTableName: string;
5
+ bucketName: string;
6
+ awsRegion: string;
7
+ }) => Promise<void>;
2
8
  export declare const createState: (params: {
3
9
  credentials: AwsCredentialIdentity;
4
10
  dynamoDBTableName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tfState.d.ts","sourceRoot":"","sources":["../../src/tfState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AA+DvD,eAAO,MAAM,WAAW,WAAkB;IACxC,WAAW,EAAE,qBAAqB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,QAAQ,IAAI,CAQf,CAAC"}
1
+ {"version":3,"file":"tfState.d.ts","sourceRoot":"","sources":["../../src/tfState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AA4IvD,eAAO,MAAM,WAAW,WAAkB;IACxC,WAAW,EAAE,qBAAqB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,QAAQ,IAAI,CAiBf,CAAC;AAEF,eAAO,MAAM,WAAW,WAAkB;IACxC,WAAW,EAAE,qBAAqB,CAAC;IACnC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB,KAAG,QAAQ,IAAI,CAWf,CAAC"}
@@ -1,62 +1,123 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.createState = void 0;
7
- const aws_sdk_1 = __importDefault(require("aws-sdk"));
3
+ exports.createState = exports.deleteState = void 0;
4
+ const client_s3_1 = require("@aws-sdk/client-s3");
5
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
8
6
  const assertDynamoDBTable = async (params) => {
9
7
  // defining a table as required by Terraform https://www.terraform.io/docs/language/settings/backends/s3.html#dynamodb_table
10
- const tableDef = {
11
- AttributeDefinitions: [
12
- {
13
- AttributeName: 'LockID',
14
- AttributeType: 'S',
15
- },
16
- ],
17
- KeySchema: [
18
- {
19
- AttributeName: 'LockID',
20
- KeyType: 'HASH',
21
- },
22
- ],
23
- TableName: params.tableName,
24
- BillingMode: 'PAY_PER_REQUEST',
25
- };
26
8
  try {
27
- await params.dynamoDB.createTable(tableDef).promise();
9
+ await params.dynamoDB.send(new client_dynamodb_1.CreateTableCommand({
10
+ AttributeDefinitions: [
11
+ {
12
+ AttributeName: 'LockID',
13
+ AttributeType: 'S',
14
+ },
15
+ ],
16
+ KeySchema: [
17
+ {
18
+ AttributeName: 'LockID',
19
+ KeyType: 'HASH',
20
+ },
21
+ ],
22
+ TableName: params.tableName,
23
+ BillingMode: 'PAY_PER_REQUEST',
24
+ }));
28
25
  }
29
26
  catch (e) {
30
- const error = e;
31
- // if there is a resource in use exception, ignore it.
32
- if (error && error.code !== 'ResourceInUseException') {
33
- throw new Error(error.message);
27
+ if (!(e instanceof client_dynamodb_1.ResourceInUseException)) {
28
+ throw new Error(e.message);
34
29
  }
35
30
  }
36
31
  };
32
+ const deleteDynamoDBTable = async (params) => {
33
+ try {
34
+ await params.dynamoDB.send(new client_dynamodb_1.DeleteTableCommand({
35
+ TableName: params.tableName,
36
+ }));
37
+ }
38
+ catch (e) {
39
+ throw e;
40
+ }
41
+ };
37
42
  const assertS3Bucket = async (params) => {
38
43
  const bucketParams = {
39
44
  Bucket: params.bucketName,
40
45
  };
41
46
  try {
42
47
  console.log('Accessing/creating bucket for Terraform state', bucketParams.Bucket);
43
- await params.s3.createBucket(bucketParams).promise();
48
+ await params.s3.send(new client_s3_1.CreateBucketCommand(bucketParams));
44
49
  }
45
- catch (error) {
50
+ catch (e) {
46
51
  // if bucket already exists, ignore error
47
- if (error && error.code !== 'BucketAlreadyOwnedByYou') {
48
- console.error('Cannot create bucket ', params.bucketName, ' error code', error.code);
49
- throw new Error('Cannot create S3 state bucket: ' + error.message);
52
+ if (!(e instanceof client_s3_1.BucketAlreadyOwnedByYou)) {
53
+ console.error('Cannot create bucket ', params.bucketName, ' error code', e.code);
54
+ throw new Error('Cannot create S3 state bucket: ' + e.message);
55
+ }
56
+ }
57
+ };
58
+ const deleteAllObjectsFromBucket = async (s3, bucketName) => {
59
+ let continuationToken = undefined;
60
+ do {
61
+ // List objects in the bucket
62
+ const listResponse = await s3.send(new client_s3_1.ListObjectsV2Command({
63
+ Bucket: bucketName,
64
+ ContinuationToken: continuationToken,
65
+ }));
66
+ // Check if there are any objects to delete
67
+ if (listResponse.Contents && listResponse.Contents.length > 0) {
68
+ // Delete listed objects
69
+ const deleteParams = {
70
+ Bucket: bucketName,
71
+ Delete: {
72
+ Objects: listResponse.Contents.map((object) => ({ Key: object.Key })),
73
+ },
74
+ };
75
+ await s3.send(new client_s3_1.DeleteObjectsCommand(deleteParams));
50
76
  }
77
+ // Check if more objects are to be listed (pagination)
78
+ continuationToken = listResponse.NextContinuationToken;
79
+ } while (continuationToken);
80
+ };
81
+ const deleteS3Bucket = async (params) => {
82
+ try {
83
+ // First, delete all objects from the bucket
84
+ await deleteAllObjectsFromBucket(params.s3, params.bucketName);
85
+ // Then, delete the empty bucket
86
+ await params.s3.send(new client_s3_1.DeleteBucketCommand({ Bucket: params.bucketName }));
87
+ }
88
+ catch (e) {
89
+ throw e; // Rethrow the error to handle it in the calling code if necessary
51
90
  }
52
91
  };
92
+ const deleteState = async (params) => {
93
+ const dynamoDB = new client_dynamodb_1.DynamoDBClient({
94
+ region: params.awsRegion,
95
+ credentials: params.credentials,
96
+ });
97
+ await deleteDynamoDBTable({
98
+ dynamoDB,
99
+ tableName: params.dynamoDBTableName,
100
+ });
101
+ const s3 = new client_s3_1.S3Client({
102
+ region: params.awsRegion,
103
+ credentials: params.credentials,
104
+ });
105
+ await deleteS3Bucket({
106
+ s3,
107
+ bucketName: params.bucketName,
108
+ });
109
+ };
110
+ exports.deleteState = deleteState;
53
111
  const createState = async (params) => {
54
- const dynamoDB = new aws_sdk_1.default.DynamoDB({
55
- apiVersion: '2012-08-10',
112
+ const dynamoDB = new client_dynamodb_1.DynamoDBClient({
56
113
  region: params.awsRegion,
114
+ credentials: params.credentials,
57
115
  });
58
116
  await assertDynamoDBTable({ dynamoDB, tableName: params.dynamoDBTableName });
59
- const s3 = new aws_sdk_1.default.S3({ apiVersion: '2006-03-01', region: params.awsRegion });
117
+ const s3 = new client_s3_1.S3Client({
118
+ region: params.awsRegion,
119
+ credentials: params.credentials,
120
+ });
60
121
  await assertS3Bucket({ s3, bucketName: params.bucketName });
61
122
  };
62
123
  exports.createState = createState;
@@ -1 +1 @@
1
- {"version":3,"file":"tfState.js","sourceRoot":"","sources":["../../src/tfState.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA0B;AAG1B,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAGlC,EAAE,EAAE;IACH,4HAA4H;IAC5H,MAAM,QAAQ,GAAG;QACf,oBAAoB,EAAE;YACpB;gBACE,aAAa,EAAE,QAAQ;gBACvB,aAAa,EAAE,GAAG;aACnB;SACF;QACD,SAAS,EAAE;YACT;gBACE,aAAa,EAAE,QAAQ;gBACvB,OAAO,EAAE,MAAM;aAChB;SACF;QACD,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,iBAAiB;KAC/B,CAAC;IAEF,IAAI;QACF,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;KACvD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,sDAAsD;QACtD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,wBAAwB,EAAE;YACpD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAChC;KACF;AACH,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAAE,MAG7B,EAAiB,EAAE;IAClB,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,MAAM,CAAC,UAAU;KAC1B,CAAC;IACF,IAAI;QACF,OAAO,CAAC,GAAG,CACT,+CAA+C,EAC/C,YAAY,CAAC,MAAM,CACpB,CAAC;QAEF,MAAM,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;KACtD;IAAC,OAAO,KAAK,EAAE;QACd,yCAAyC;QACzC,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,yBAAyB,EAAE;YACrD,OAAO,CAAC,KAAK,CACX,uBAAuB,EACvB,MAAM,CAAC,UAAU,EACjB,aAAa,EACb,KAAK,CAAC,IAAI,CACX,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,iCAAiC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;SACpE;KACF;AACH,CAAC,CAAC;AAEK,MAAM,WAAW,GAAG,KAAK,EAAE,MAKjC,EAAiB,EAAE;IAClB,MAAM,QAAQ,GAAG,IAAI,iBAAG,CAAC,QAAQ,CAAC;QAChC,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,MAAM,CAAC,SAAS;KACzB,CAAC,CAAC;IACH,MAAM,mBAAmB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC7E,MAAM,EAAE,GAAG,IAAI,iBAAG,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,MAAM,cAAc,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAbW,QAAA,WAAW,eAatB"}
1
+ {"version":3,"file":"tfState.js","sourceRoot":"","sources":["../../src/tfState.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utilsTerraformAws.d.ts","sourceRoot":"","sources":["../../src/utilsTerraformAws.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAiBvD,qBAAa,gBAAiB,YAAW,aAAa;IACpD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,yBAAyB,QAAO,MAAM,CAOpC;IAEF,eAAe,QAAO,IAAI,CAKxB;IAEF,mBAAmB,eACL,mBAAmB,KAC9B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAmCnB;gBAGA,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM;CAMjB;AAED,eAAO,MAAM,eAAe,SACpB,MAAM,EAAE,YACJ,gBAAgB,KACzB,QAAQ,IAAI,CAwCd,CAAC"}
1
+ {"version":3,"file":"utilsTerraformAws.d.ts","sourceRoot":"","sources":["../../src/utilsTerraformAws.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAoBvD,qBAAa,gBAAiB,YAAW,aAAa;IACpD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,yBAAyB,QAAO,MAAM,CAOpC;IAEF,eAAe,QAAO,IAAI,CAKxB;IAEF,mBAAmB,eACL,mBAAmB,KAC9B,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAmCnB;gBAGA,WAAW,EAAE,qBAAqB,EAClC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,MAAM;CAMjB;AAwBD,eAAO,MAAM,eAAe,SACpB,MAAM,EAAE,YACJ,gBAAgB,KACzB,QAAQ,IAAI,CA6Dd,CAAC"}
@@ -8,6 +8,8 @@ const infra_aws_1 = require("@goldstack/infra-aws");
8
8
  const utils_terraform_1 = require("@goldstack/utils-terraform");
9
9
  const tfState_1 = require("./tfState");
10
10
  const crypto_1 = __importDefault(require("crypto"));
11
+ const child_process_1 = require("child_process");
12
+ const os_1 = __importDefault(require("os"));
11
13
  const getRemoteStateConfig = (config, userName) => {
12
14
  const userConfig = config.remoteState.filter((u) => u.user === userName);
13
15
  if (userConfig.length === 0) {
@@ -56,6 +58,25 @@ class AWSCloudProvider {
56
58
  }
57
59
  }
58
60
  exports.AWSCloudProvider = AWSCloudProvider;
61
+ const prompt = (message) => {
62
+ process.stdout.write(message);
63
+ let cmd;
64
+ let args;
65
+ if (os_1.default.platform() == 'win32') {
66
+ cmd = 'cmd';
67
+ args = ['/V:ON', '/C', 'set /p response= && echo !response!'];
68
+ }
69
+ else {
70
+ cmd = 'bash';
71
+ args = ['-c', 'read response; echo "$response"'];
72
+ }
73
+ const opts = {
74
+ stdio: ['inherit', 'pipe', 'inherit'],
75
+ shell: false,
76
+ encoding: 'utf-8',
77
+ };
78
+ return (0, child_process_1.spawnSync)(cmd, args, opts).stdout.toString().trim();
79
+ };
59
80
  const terraformAwsCli = async (args, options) => {
60
81
  const deploymentName = args[1];
61
82
  const deployment = (0, infra_aws_1.readDeploymentFromPackageConfig)(deploymentName);
@@ -72,6 +93,24 @@ const terraformAwsCli = async (args, options) => {
72
93
  remoteStateConfig.terraformStateDynamoDBTable = `goldstack-tfstate-${projectHash}-lock`;
73
94
  (0, infra_aws_1.writeTerraformConfig)(awsTerraformConfig);
74
95
  }
96
+ const [operation] = args;
97
+ if (operation === 'destroy-state') {
98
+ const ciConfirmed = args.find((str) => str === '-y');
99
+ if (!ciConfirmed) {
100
+ const value = prompt('Are you sure to destroy your remote deployment state? If yes, please type `y` and enter.\n' +
101
+ 'Otherwise, press enter.\nYour Input: ');
102
+ if (value !== 'y') {
103
+ new Error('Prompt not confirmed with `y`');
104
+ }
105
+ }
106
+ await (0, tfState_1.deleteState)({
107
+ bucketName: remoteStateConfig.terraformStateBucket,
108
+ dynamoDBTableName: remoteStateConfig.terraformStateDynamoDBTable,
109
+ credentials,
110
+ awsRegion: deployment.awsRegion,
111
+ });
112
+ return;
113
+ }
75
114
  await (0, tfState_1.createState)({
76
115
  bucketName: remoteStateConfig.terraformStateBucket,
77
116
  dynamoDBTableName: remoteStateConfig.terraformStateDynamoDBTable,
@@ -1 +1 @@
1
- {"version":3,"file":"utilsTerraformAws.js","sourceRoot":"","sources":["../../src/utilsTerraformAws.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utilsTerraformAws.js","sourceRoot":"","sources":["../../src/utilsTerraformAws.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goldstack/utils-terraform-aws",
3
- "version": "0.4.17",
3
+ "version": "0.4.19",
4
4
  "description": "Easily deploy Terraform IaC with npm package scripts",
5
5
  "keywords": [
6
6
  "goldstack",
@@ -36,14 +36,15 @@
36
36
  "version:apply:force": "yarn version $@ && yarn version apply"
37
37
  },
38
38
  "dependencies": {
39
+ "@aws-sdk/client-dynamodb": "3.485.0",
40
+ "@aws-sdk/client-s3": "3.485.0",
39
41
  "@aws-sdk/types": "^3.485.0",
40
42
  "@goldstack/infra-aws": "0.4.15",
41
43
  "@goldstack/utils-config": "0.4.9",
42
44
  "@goldstack/utils-log": "0.3.9",
43
45
  "@goldstack/utils-package": "0.4.9",
44
46
  "@goldstack/utils-sh": "0.5.9",
45
- "@goldstack/utils-terraform": "0.4.16",
46
- "aws-sdk": "2.1525.0"
47
+ "@goldstack/utils-terraform": "0.4.17"
47
48
  },
48
49
  "devDependencies": {
49
50
  "@goldstack/utils-git": "0.2.9",