@goldstack/template-docker-image-aws 0.3.30

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.
package/README.md ADDED
@@ -0,0 +1,3 @@
1
+ # Goldstack Docker Image AWS Tools
2
+
3
+ This library contains tools for managing the infrastructure and deployments for Node.js applications packaged as Docker Images deployed to AWS Fargate.
package/bin/template ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+
3
+ require('./../dist/templateDockerImageAws')
4
+ .run(process.argv)
5
+ .catch((e) => {
6
+ console.log(e);
7
+ process.exit(1);
8
+ });
@@ -0,0 +1,40 @@
1
+ import ECS from 'aws-sdk/clients/ecs';
2
+ import CloudWatchLogs from 'aws-sdk/clients/cloudwatchlogs';
3
+ import { AWSDockerImageDeployment, AWSDockerImagePackage } from './types/AWSDockerImagePackage';
4
+ import { DeploymentState } from '@goldstack/infra';
5
+ interface GetLogsParams {
6
+ taskId: string;
7
+ deployment: AWSDockerImageDeployment;
8
+ deploymentState: DeploymentState;
9
+ config: AWSDockerImagePackage;
10
+ limit?: number;
11
+ nextToken?: string;
12
+ startTime?: number;
13
+ endTime?: number;
14
+ }
15
+ export declare const getLogs: (params: GetLogsParams) => Promise<CloudWatchLogs.OutputLogEvents>;
16
+ interface EnvVarDefinition {
17
+ name: string;
18
+ value: string;
19
+ }
20
+ interface RunParams {
21
+ cmd: string[];
22
+ env?: EnvVarDefinition[];
23
+ imageHash?: string;
24
+ deployment: AWSDockerImageDeployment;
25
+ config: AWSDockerImagePackage;
26
+ deploymentState: DeploymentState;
27
+ }
28
+ export declare const getTaskStatus: (deployment: AWSDockerImageDeployment, taskExecutionArn: string) => Promise<ECS.Task>;
29
+ export interface StartTaskResult {
30
+ taskArn: string;
31
+ taskId: string;
32
+ awsLogsGroup: string;
33
+ awsLogsConsoleLink: string;
34
+ ecsConsoleLink: string;
35
+ }
36
+ export declare const startTask: (params: RunParams) => Promise<StartTaskResult>;
37
+ export declare const runTask: (params: RunParams) => Promise<StartTaskResult>;
38
+ export declare const apiDockerImageAwsCli: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment, args: string[]) => Promise<void>;
39
+ export {};
40
+ //# sourceMappingURL=apiDockerImageAws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiDockerImageAws.d.ts","sourceRoot":"","sources":["../src/apiDockerImageAws.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,qBAAqB,CAAC;AACtC,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAE5D,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAGL,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAqB1B,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,wBAAwB,CAAC;IACrC,eAAe,EAAE,eAAe,CAAC;IACjC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,OAAO,WACV,aAAa,KACpB,QAAQ,eAAe,eAAe,CA6CxC,CAAC;AAEF,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,wBAAwB,CAAC;IACrC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,eAAe,EAAE,eAAe,CAAC;CAClC;AAED,eAAO,MAAM,aAAa,eACZ,wBAAwB,oBAClB,MAAM,KACvB,QAAQ,IAAI,IAAI,CAalB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,SAAS,WACZ,SAAS,KAChB,QAAQ,eAAe,CAsIzB,CAAC;AAEF,eAAO,MAAM,OAAO,WAAkB,SAAS,KAAG,QAAQ,eAAe,CA+ExE,CAAC;AAEF,eAAO,MAAM,oBAAoB,WACvB,qBAAqB,cACjB,wBAAwB,QAC9B,MAAM,EAAE,KACb,QAAQ,IAAI,CAiDd,CAAC"}
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.apiDockerImageAwsCli = exports.runTask = exports.startTask = exports.getTaskStatus = exports.getLogs = void 0;
7
+ const ecs_1 = __importDefault(require("aws-sdk/clients/ecs"));
8
+ const cloudwatchlogs_1 = __importDefault(require("aws-sdk/clients/cloudwatchlogs"));
9
+ const assert_1 = __importDefault(require("assert"));
10
+ const infra_aws_1 = require("@goldstack/infra-aws");
11
+ const infra_1 = require("@goldstack/infra");
12
+ const createECS = async (deployment) => {
13
+ const awsUser = await (0, infra_aws_1.getAWSUser)(deployment.awsUser);
14
+ return new ecs_1.default({
15
+ apiVersion: '2014-11-13',
16
+ credentials: awsUser,
17
+ });
18
+ };
19
+ const createCloudWatchLogs = async (deployment) => {
20
+ const awsUser = await (0, infra_aws_1.getAWSUser)(deployment.awsUser);
21
+ return new cloudwatchlogs_1.default({
22
+ credentials: awsUser,
23
+ });
24
+ };
25
+ const getLogs = async (params) => {
26
+ const ecs = await createECS(params.deployment);
27
+ const deploymentState = params.deploymentState;
28
+ const taskId = params.taskId;
29
+ const tasks = await ecs
30
+ .describeTasks({
31
+ tasks: [taskId],
32
+ cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
33
+ })
34
+ .promise();
35
+ (0, assert_1.default)(tasks.tasks);
36
+ const task = tasks.tasks[0];
37
+ (0, assert_1.default)(task.taskDefinitionArn);
38
+ const taskDefinitionResponse = await ecs
39
+ .describeTaskDefinition({
40
+ taskDefinition: task.taskDefinitionArn.split('/')[1],
41
+ })
42
+ .promise();
43
+ const taskDefinition = taskDefinitionResponse.taskDefinition;
44
+ (0, assert_1.default)(taskDefinition);
45
+ const containerDefinitions = taskDefinition.containerDefinitions;
46
+ (0, assert_1.default)(containerDefinitions);
47
+ const logConfiguration = containerDefinitions[0].logConfiguration;
48
+ (0, assert_1.default)(logConfiguration);
49
+ (0, assert_1.default)(logConfiguration.options);
50
+ const awsLogsGroup = logConfiguration.options['awslogs-group'];
51
+ const awsLogsPrefix = logConfiguration.options['awslogs-stream-prefix'];
52
+ const cwlogs = await createCloudWatchLogs(params.deployment);
53
+ const logEvents = await cwlogs
54
+ .getLogEvents({
55
+ logGroupName: awsLogsGroup,
56
+ logStreamName: `${awsLogsPrefix}/main/${taskId}`,
57
+ limit: params.limit,
58
+ nextToken: params.nextToken,
59
+ startTime: params.startTime,
60
+ endTime: params.endTime,
61
+ })
62
+ .promise();
63
+ return logEvents.events || [];
64
+ };
65
+ exports.getLogs = getLogs;
66
+ const getTaskStatus = async (deployment, taskExecutionArn) => {
67
+ const ecs = await createECS(deployment);
68
+ const tasksState = await ecs
69
+ .describeTasks({ tasks: [taskExecutionArn] })
70
+ .promise();
71
+ if (tasksState.failures && tasksState.failures.length > 0) {
72
+ throw new Error(`Cannot determine state of launched tast. ${tasksState.failures[0].reason}`);
73
+ }
74
+ (0, assert_1.default)(tasksState.tasks);
75
+ return tasksState.tasks[0];
76
+ };
77
+ exports.getTaskStatus = getTaskStatus;
78
+ const startTask = async (params) => {
79
+ const deployment = params.deployment;
80
+ const ecs = await createECS(params.deployment);
81
+ const config = params.config;
82
+ const deploymentState = params.deploymentState;
83
+ if (!deploymentState) {
84
+ throw new Error(`Deployment state for '${params.deployment.name}' is not defined. Make sure to have deployed the image to this environment.`);
85
+ }
86
+ const repo = (0, infra_1.readTerraformStateVariable)(deploymentState, 'repo_url');
87
+ let imageName;
88
+ let imageHash = params.imageHash;
89
+ if (!params.imageHash) {
90
+ if (!deploymentState['latest']) {
91
+ throw new Error(`Cannot run image since image has not been deployed for deployment '${params.deployment.name}'.`);
92
+ }
93
+ imageName = deploymentState['latest'];
94
+ imageHash = deploymentState['latest'].split(':')[1];
95
+ }
96
+ else {
97
+ imageName = `${repo}:${imageHash}`;
98
+ }
99
+ const awsLogsGroup = '/ecs/' + repo + '/' + imageHash;
100
+ const taskDefinition = (await ecs
101
+ .registerTaskDefinition({
102
+ containerDefinitions: [
103
+ {
104
+ name: 'main',
105
+ command: params.cmd,
106
+ environment: params.env,
107
+ image: imageName,
108
+ logConfiguration: {
109
+ logDriver: 'awslogs',
110
+ options: {
111
+ 'awslogs-create-group': 'true',
112
+ 'awslogs-region': deployment.awsRegion,
113
+ 'awslogs-group': awsLogsGroup,
114
+ 'awslogs-stream-prefix': 'ecs',
115
+ },
116
+ },
117
+ },
118
+ ],
119
+ taskRoleArn: (0, infra_1.readTerraformStateVariable)(deploymentState, 'ecs_task_role_arn'),
120
+ networkMode: 'awsvpc',
121
+ cpu: '1 vcpu',
122
+ memory: '4 GB',
123
+ executionRoleArn: (0, infra_1.readTerraformStateVariable)(deploymentState, 'ecs_task_execution_role_arn'),
124
+ requiresCompatibilities: ['FARGATE'],
125
+ family: `temp-${config.configuration.imageTag}-${new Date().getTime()}-${imageHash}`,
126
+ })
127
+ .promise()).taskDefinition;
128
+ (0, assert_1.default)(taskDefinition);
129
+ const clusterName = (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name');
130
+ const runTaskResponse = await ecs
131
+ .runTask({
132
+ cluster: clusterName,
133
+ count: 1,
134
+ launchType: 'FARGATE',
135
+ networkConfiguration: {
136
+ awsvpcConfiguration: {
137
+ subnets: [(0, infra_1.readTerraformStateVariable)(deploymentState, 'subnet')],
138
+ assignPublicIp: 'ENABLED',
139
+ securityGroups: [
140
+ (0, infra_1.readTerraformStateVariable)(deploymentState, 'container_security_group'),
141
+ ],
142
+ },
143
+ },
144
+ taskDefinition: `${taskDefinition.family}:${taskDefinition.revision}`,
145
+ // command does not need to overriden here since it is defined in the task definition
146
+ overrides: {},
147
+ })
148
+ .promise();
149
+ const tasks = runTaskResponse.tasks;
150
+ if (!tasks) {
151
+ throw new Error(`Task definitions not supplied after running define tasks for ${imageName}`);
152
+ }
153
+ const taskExecution = tasks[0];
154
+ (0, assert_1.default)(taskExecution.taskArn);
155
+ const taskId = taskExecution.taskArn.split('/')[1];
156
+ const cloudWatchLink = `https://${deployment.awsRegion}.console.aws.amazon.com/cloudwatch/home?region=${deployment.awsRegion}#logsV2:log-groups/log-group/${awsLogsGroup.replace(/\//g, '$252F')}/log-events/${`ecs/main/${taskExecution.taskArn.split('/')[2]}`
157
+ .replace('$', '$2524')
158
+ .replace('[', '$255B')
159
+ .replace(']', '$255D')
160
+ .replace(/\//g, '$252F')}`;
161
+ const ecsConsoleLink = `https://${deployment.awsRegion}.console.aws.amazon.com/ecs/home?region=${deployment.awsRegion}#/clusters/${clusterName}/tasks/${taskExecution.taskArn.split('/')[2]}/details`;
162
+ return {
163
+ taskArn: taskExecution.taskArn,
164
+ taskId,
165
+ awsLogsGroup,
166
+ ecsConsoleLink,
167
+ awsLogsConsoleLink: cloudWatchLink,
168
+ };
169
+ };
170
+ exports.startTask = startTask;
171
+ const runTask = async (params) => {
172
+ var _a, _b;
173
+ const deployment = params.deployment;
174
+ const ecs = await createECS(deployment);
175
+ const result = await (0, exports.startTask)(params);
176
+ const taskId = result.taskArn.split('/')[1];
177
+ console.log(`Started task ${result.taskArn}`);
178
+ const deploymentState = params.deploymentState;
179
+ let tasks = await ecs
180
+ .describeTasks({
181
+ tasks: [taskId],
182
+ cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
183
+ })
184
+ .promise();
185
+ (0, assert_1.default)(tasks.tasks);
186
+ let task = tasks.tasks[0];
187
+ console.log(`Task status: ${task.lastStatus}`);
188
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
189
+ const waitForStateRunning = 'tasksRunning';
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
191
+ const waitForParams = {
192
+ tasks: [taskId],
193
+ cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
194
+ };
195
+ await ecs.waitFor(waitForStateRunning, waitForParams).promise();
196
+ console.log('Task started up successfully ...');
197
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
198
+ const waitForStateStopped = 'tasksStopped';
199
+ await ecs.waitFor(waitForStateStopped, waitForParams).promise();
200
+ console.log('Task stopped on ECS.');
201
+ tasks = await ecs
202
+ .describeTasks({
203
+ tasks: [taskId],
204
+ cluster: (0, infra_1.readTerraformStateVariable)(deploymentState, 'cluster_name'),
205
+ })
206
+ .promise();
207
+ (0, assert_1.default)(tasks.tasks);
208
+ task = tasks.tasks[0];
209
+ const taskDefinition = {
210
+ family: (_a = task.taskDefinitionArn) === null || _a === void 0 ? void 0 : _a.split('/')[1].split(':')[0],
211
+ revision: (_b = task.taskDefinitionArn) === null || _b === void 0 ? void 0 : _b.split('/')[1].split(':')[1],
212
+ };
213
+ const logEvents = await (0, exports.getLogs)({
214
+ deployment,
215
+ taskId,
216
+ deploymentState,
217
+ config: params.config,
218
+ });
219
+ console.log('Logs from container:');
220
+ for (const event of logEvents) {
221
+ console.log(`> ${event.timestamp} ${event.message}`);
222
+ }
223
+ await ecs
224
+ .deregisterTaskDefinition({
225
+ taskDefinition: `${taskDefinition.family}:${taskDefinition.revision}`,
226
+ })
227
+ .promise();
228
+ (0, assert_1.default)(task.containers);
229
+ const taskContainer = task.containers[0];
230
+ const exitCode = taskContainer.exitCode;
231
+ console.log(`Container exited with code ${exitCode}`);
232
+ if (exitCode !== 0) {
233
+ throw new Error(`Error running container: ${taskContainer.reason}`);
234
+ }
235
+ return result;
236
+ };
237
+ exports.runTask = runTask;
238
+ const apiDockerImageAwsCli = async (config, deployment, args) => {
239
+ if (args.length < 1) {
240
+ throw new Error('Please specify an operation along with the image command. Supported operations ["run"]');
241
+ }
242
+ const [, deploymentName] = args;
243
+ const deploymentState = (0, infra_1.readDeploymentState)('./', deploymentName);
244
+ const operation = args[0];
245
+ if (operation === 'run') {
246
+ const [, , ...remainingArgs] = args;
247
+ const taskArn = await (0, exports.runTask)({
248
+ cmd: remainingArgs,
249
+ deployment,
250
+ deploymentState,
251
+ config,
252
+ });
253
+ console.log(taskArn);
254
+ return;
255
+ }
256
+ if (operation === 'start') {
257
+ const [, , ...remainingArgs] = args;
258
+ const taskArn = await (0, exports.startTask)({
259
+ cmd: remainingArgs,
260
+ deployment,
261
+ deploymentState,
262
+ config,
263
+ });
264
+ console.log(taskArn);
265
+ return;
266
+ }
267
+ if (operation === 'logs') {
268
+ const [, , taskArn] = args;
269
+ const logEvents = await (0, exports.getLogs)({
270
+ deployment,
271
+ taskId: taskArn.split('/')[1],
272
+ deploymentState,
273
+ config,
274
+ });
275
+ for (const event of logEvents) {
276
+ console.log(`${event.timestamp} ${event.message}`);
277
+ }
278
+ return;
279
+ }
280
+ throw new Error(`Unknown operation for image command: ${operation}`);
281
+ };
282
+ exports.apiDockerImageAwsCli = apiDockerImageAwsCli;
283
+ //# sourceMappingURL=apiDockerImageAws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apiDockerImageAws.js","sourceRoot":"","sources":["../src/apiDockerImageAws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { AWSDockerImagePackage, AWSDockerImageDeployment } from './types/AWSDockerImagePackage';
2
+ import { DeploymentState } from '@goldstack/infra';
3
+ export declare const getConfigSchema: () => object;
4
+ export declare const deploy: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment) => Promise<void>;
5
+ export declare const getDeploymentState: (deploymentName: string, deploymentsState: any) => DeploymentState;
6
+ export declare const getRepo: (deploymentName: string, deploymentsState?: any) => string;
7
+ export declare const infraAwsDockerImageCli: (config: AWSDockerImagePackage, deployment: AWSDockerImageDeployment, args: string[]) => Promise<void>;
8
+ //# sourceMappingURL=infraAwsDockerImage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infraAwsDockerImage.d.ts","sourceRoot":"","sources":["../src/infraAwsDockerImage.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AAMvC,OAAO,EAIL,eAAe,EAGhB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,eAAe,QAAO,MAAsB,CAAC;AAE1D,eAAO,MAAM,MAAM,WACT,qBAAqB,cACjB,wBAAwB,KACnC,QAAQ,IAAI,CA0Cd,CAAC;AAEF,eAAO,MAAM,kBAAkB,mBACb,MAAM,oBAEJ,GAAG,KACpB,eAWF,CAAC;AAEF,eAAO,MAAM,OAAO,mBACF,MAAM,qBAEH,GAAG,KACrB,MAGF,CAAC;AAEF,eAAO,MAAM,sBAAsB,WACzB,qBAAqB,cACjB,wBAAwB,QAC9B,MAAM,EAAE,KACb,QAAQ,IAAI,CAad,CAAC"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.infraAwsDockerImageCli = exports.getRepo = exports.getDeploymentState = exports.deploy = exports.getConfigSchema = void 0;
7
+ const configSchema_json_1 = __importDefault(require("./schemas/configSchema.json"));
8
+ const utils_terraform_aws_1 = require("@goldstack/utils-terraform-aws");
9
+ const utils_sh_1 = require("@goldstack/utils-sh");
10
+ const utils_git_1 = require("@goldstack/utils-git");
11
+ const utils_docker_1 = require("@goldstack/utils-docker");
12
+ const utils_aws_cli_1 = require("@goldstack/utils-aws-cli");
13
+ const infra_aws_1 = require("@goldstack/infra-aws");
14
+ const infra_1 = require("@goldstack/infra");
15
+ const getConfigSchema = () => configSchema_json_1.default;
16
+ exports.getConfigSchema = getConfigSchema;
17
+ const deploy = async (config, deployment) => {
18
+ const deploymentState = (0, infra_1.readDeploymentState)('./', deployment.name, {
19
+ createIfNotExist: true,
20
+ });
21
+ const repoUrl = (0, infra_1.readTerraformStateVariable)(deploymentState, 'repo_url');
22
+ (0, utils_docker_1.assertDocker)();
23
+ const ecrLoginPassword = (0, utils_aws_cli_1.awsCli)({
24
+ credentials: await (0, infra_aws_1.getAWSUser)(deployment.awsUser),
25
+ region: deployment.awsRegion,
26
+ command: `ecr get-login-password --region ${deployment.awsRegion}`,
27
+ options: {
28
+ silent: true,
29
+ },
30
+ }).trim();
31
+ (0, utils_sh_1.exec)(`docker login --username AWS --password ${ecrLoginPassword} ${repoUrl}`);
32
+ let commitHash = undefined;
33
+ try {
34
+ commitHash = (0, utils_git_1.hash)();
35
+ }
36
+ catch (e) {
37
+ console.warn(`Cannot determine commit hash for tagging docker image: ${e}`);
38
+ }
39
+ if (!commitHash) {
40
+ (0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag} ${repoUrl}`);
41
+ (0, utils_sh_1.exec)(`docker push ${repoUrl}`);
42
+ deploymentState['latest'] = `${repoUrl}:latest`;
43
+ }
44
+ else {
45
+ (0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag}:${commitHash} ${repoUrl}:${commitHash}`);
46
+ (0, utils_sh_1.exec)(`docker image tag ${config.configuration.imageTag}:${commitHash} ${repoUrl}:latest`);
47
+ (0, utils_sh_1.exec)(`docker push ${repoUrl}:${commitHash}`);
48
+ (0, utils_sh_1.exec)(`docker push ${repoUrl}:latest`);
49
+ deploymentState['latest'] = `${repoUrl}:${commitHash}`;
50
+ }
51
+ (0, infra_1.writeDeploymentState)('./', deploymentState);
52
+ };
53
+ exports.deploy = deploy;
54
+ const getDeploymentState = (deploymentName,
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ deploymentsState) => {
57
+ let state;
58
+ if (deploymentsState) {
59
+ state = (0, infra_1.getDeploymentState)((0, infra_1.validateDeploymentsState)(deploymentsState), deploymentName);
60
+ }
61
+ else {
62
+ state = (0, infra_1.readDeploymentState)('./', deploymentName);
63
+ }
64
+ return state;
65
+ };
66
+ exports.getDeploymentState = getDeploymentState;
67
+ const getRepo = (deploymentName,
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ deploymentsState) => {
70
+ const state = (0, exports.getDeploymentState)(deploymentName, deploymentsState);
71
+ return (0, infra_1.readTerraformStateVariable)(state, 'repo_url');
72
+ };
73
+ exports.getRepo = getRepo;
74
+ const infraAwsDockerImageCli = async (config, deployment, args) => {
75
+ if (args.length < 1) {
76
+ throw new Error('Please provide the operation in the arguments: "init", "plan", "apply", "deploy", "destroy".');
77
+ }
78
+ const [operation] = args;
79
+ if (operation === 'deploy') {
80
+ await (0, exports.deploy)(config, deployment);
81
+ return;
82
+ }
83
+ await (0, utils_terraform_aws_1.terraformAwsCli)(args);
84
+ };
85
+ exports.infraAwsDockerImageCli = infraAwsDockerImageCli;
86
+ //# sourceMappingURL=infraAwsDockerImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"infraAwsDockerImage.js","sourceRoot":"","sources":["../src/infraAwsDockerImage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ {
2
+ "$ref": "#/definitions/AWSDockerImagePackage",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "definitions": {
5
+ "AWSDeploymentRegion": {
6
+ "description": "AWS region that infrastructure should be deployed to.",
7
+ "enum": [
8
+ "us-east-1",
9
+ "us-west-1",
10
+ "us-west-2",
11
+ "af-south-1",
12
+ "ap-east-1",
13
+ "ap-south-1",
14
+ "ap-northeast-3",
15
+ "ap-northeast-2",
16
+ "ap-southeast-1",
17
+ "ap-southeast-2",
18
+ "ap-northeast-1",
19
+ "ca-central-1",
20
+ "eu-central-1",
21
+ "eu-west-1",
22
+ "eu-west-2",
23
+ "eu-south-1",
24
+ "eu-west-3",
25
+ "eu-north-1",
26
+ "me-south-1",
27
+ "sa-east-1"
28
+ ],
29
+ "title": "AWS Deployment Region",
30
+ "type": "string"
31
+ },
32
+ "AWSDockerImageConfiguration": {
33
+ "description": "Configures a docker image deployed to AWS.",
34
+ "properties": {
35
+ "imageTag": {
36
+ "description": "Defines the tag for identifying the docker image.",
37
+ "title": "Image Tag",
38
+ "type": "string"
39
+ },
40
+ "infrastructure": {
41
+ "$ref": "#/definitions/AWSDockerImageInfrastructureConfiguration"
42
+ }
43
+ },
44
+ "required": [
45
+ "imageTag",
46
+ "infrastructure"
47
+ ],
48
+ "title": "AWS Docker Image Configuration",
49
+ "type": "object"
50
+ },
51
+ "AWSDockerImageInfrastructureConfiguration": {
52
+ "additionalProperties": false,
53
+ "description": "Infrastructure Configuration for deploying a static website.",
54
+ "properties": {
55
+ "deployments": {
56
+ "$ref": "#/definitions/Deployments"
57
+ }
58
+ },
59
+ "required": [
60
+ "deployments"
61
+ ],
62
+ "title": "AWS Static Website Infrastructure Configuration",
63
+ "type": "object"
64
+ },
65
+ "AWSDockerImageInfrastructureDeployment": {
66
+ "description": "Configures a static website deployment.",
67
+ "properties": {
68
+ "awsRegion": {
69
+ "$ref": "#/definitions/AWSDeploymentRegion"
70
+ },
71
+ "awsUser": {
72
+ "$ref": "#/definitions/AWSUserName"
73
+ },
74
+ "name": {
75
+ "$ref": "#/definitions/DeploymentName"
76
+ },
77
+ "repositoryName": {
78
+ "description": "Defines the name for the docker repository. This name must be unique in the AWS region.",
79
+ "title": "Repository Name",
80
+ "type": "string"
81
+ },
82
+ "terraformVariables": {
83
+ "$ref": "#/definitions/TerraformVariables"
84
+ }
85
+ },
86
+ "required": [
87
+ "awsRegion",
88
+ "awsUser",
89
+ "name",
90
+ "repositoryName"
91
+ ],
92
+ "title": "Deployment",
93
+ "type": "object"
94
+ },
95
+ "AWSDockerImagePackage": {
96
+ "additionalProperties": false,
97
+ "description": "A docker image hosted on AWS.",
98
+ "properties": {
99
+ "configuration": {
100
+ "$ref": "#/definitions/AWSDockerImageConfiguration"
101
+ },
102
+ "name": {
103
+ "$ref": "#/definitions/Name"
104
+ },
105
+ "template": {
106
+ "$ref": "#/definitions/Template"
107
+ },
108
+ "templateVersion": {
109
+ "$ref": "#/definitions/TemplateVersion"
110
+ }
111
+ },
112
+ "required": [
113
+ "configuration",
114
+ "name",
115
+ "template",
116
+ "templateVersion"
117
+ ],
118
+ "title": "AWS Docker Image Package",
119
+ "type": "object"
120
+ },
121
+ "AWSUserName": {
122
+ "description": "Name of the AWS user that is used to perform the deployment.",
123
+ "title": "AWS User Name",
124
+ "type": "string"
125
+ },
126
+ "DeploymentName": {
127
+ "description": "Identifier for this deployment. No spaces allowed in name.",
128
+ "pattern": "^[^\\s]*$",
129
+ "title": "Deployment Name",
130
+ "type": "string"
131
+ },
132
+ "Deployments": {
133
+ "description": "Places where the website should be deployed to.",
134
+ "items": {
135
+ "$ref": "#/definitions/AWSDockerImageInfrastructureDeployment"
136
+ },
137
+ "title": "Deployments",
138
+ "type": "array"
139
+ },
140
+ "Name": {
141
+ "description": "Name of this package.",
142
+ "title": "Package Name",
143
+ "type": "string"
144
+ },
145
+ "Template": {
146
+ "description": "Name of the template used for creating this package.",
147
+ "pattern": "^[^\\s]*$",
148
+ "title": "Template",
149
+ "type": "string"
150
+ },
151
+ "TemplateVersion": {
152
+ "description": "Latest template version that was applied to this package.",
153
+ "title": "Template Version",
154
+ "type": "string"
155
+ },
156
+ "TerraformVariable": {
157
+ "description": "Name of the property that should be converted into a Terraform variable.",
158
+ "title": "Terraform Variable",
159
+ "type": "string"
160
+ },
161
+ "TerraformVariables": {
162
+ "description": "Define which of the deployment variables will be made available for terraform.",
163
+ "items": {
164
+ "$ref": "#/definitions/TerraformVariable"
165
+ },
166
+ "title": "Terraform Variables",
167
+ "type": "array"
168
+ }
169
+ }
170
+ }
@@ -0,0 +1,8 @@
1
+ export { getRepo, getDeploymentState } from './infraAwsDockerImage';
2
+ import { AWSDockerImagePackage, AWSDockerImageDeployment } from './types/AWSDockerImagePackage';
3
+ export { AWSDockerImagePackage, AWSDockerImageDeployment };
4
+ export { runTask, startTask, getLogs, StartTaskResult, } from './apiDockerImageAws';
5
+ export declare const getConfig: () => AWSDockerImagePackage;
6
+ export declare const getDeployment: (deploymentName: string) => AWSDockerImageDeployment;
7
+ export declare const run: (args: string[]) => Promise<void>;
8
+ //# sourceMappingURL=templateDockerImageAws.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateDockerImageAws.d.ts","sourceRoot":"","sources":["../src/templateDockerImageAws.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAQpE,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,CAAC;AAC3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,SAAS,QAAO,qBAQ5B,CAAC;AAEF,eAAO,MAAM,aAAa,mBACR,MAAM,KACrB,wBASF,CAAC;AA2BF,eAAO,MAAM,GAAG,SAAgB,MAAM,EAAE,KAAG,QAAQ,IAAI,CA4CtD,CAAC"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.run = exports.getDeployment = exports.getConfig = exports.getLogs = exports.startTask = exports.runTask = exports.getDeploymentState = exports.getRepo = void 0;
7
+ const utils_cli_1 = require("@goldstack/utils-cli");
8
+ const infraAwsDockerImage_1 = require("./infraAwsDockerImage");
9
+ var infraAwsDockerImage_2 = require("./infraAwsDockerImage");
10
+ Object.defineProperty(exports, "getRepo", { enumerable: true, get: function () { return infraAwsDockerImage_2.getRepo; } });
11
+ Object.defineProperty(exports, "getDeploymentState", { enumerable: true, get: function () { return infraAwsDockerImage_2.getDeploymentState; } });
12
+ const apiDockerImageAws_1 = require("./apiDockerImageAws");
13
+ const yargs_1 = __importDefault(require("yargs"));
14
+ const utils_package_1 = require("@goldstack/utils-package");
15
+ const utils_terraform_1 = require("@goldstack/utils-terraform");
16
+ const utils_package_config_1 = require("@goldstack/utils-package-config");
17
+ var apiDockerImageAws_2 = require("./apiDockerImageAws");
18
+ Object.defineProperty(exports, "runTask", { enumerable: true, get: function () { return apiDockerImageAws_2.runTask; } });
19
+ Object.defineProperty(exports, "startTask", { enumerable: true, get: function () { return apiDockerImageAws_2.startTask; } });
20
+ Object.defineProperty(exports, "getLogs", { enumerable: true, get: function () { return apiDockerImageAws_2.getLogs; } });
21
+ const getConfig = () => {
22
+ const packageConfig = new utils_package_config_1.PackageConfig({
23
+ packagePath: './',
24
+ });
25
+ return packageConfig.getConfig();
26
+ };
27
+ exports.getConfig = getConfig;
28
+ const getDeployment = (deploymentName) => {
29
+ const packageConfig = new utils_package_config_1.PackageConfig({
30
+ packagePath: './',
31
+ });
32
+ const config = packageConfig.getConfig();
33
+ return packageConfig.getDeployment(config, deploymentName);
34
+ };
35
+ exports.getDeployment = getDeployment;
36
+ const imageCommands = () => {
37
+ const deploymentPositional = (yargs) => {
38
+ return yargs.positional('deployment', {
39
+ type: 'string',
40
+ describe: 'Name of the deployment this command should be applied to',
41
+ demandOption: true,
42
+ });
43
+ };
44
+ return (yargs) => {
45
+ return yargs
46
+ .command('run <deployment>', 'Runs the image', deploymentPositional)
47
+ .command('start <deployment>', 'Starts the image', deploymentPositional)
48
+ .command('logs <taskId>', 'Prints the logs for an image', (yargs) => {
49
+ return yargs.positional('taskId', {
50
+ type: 'string',
51
+ describe: 'Id of the tasks for which logs should be obtained.',
52
+ demandOption: true,
53
+ });
54
+ });
55
+ };
56
+ };
57
+ const run = async (args) => {
58
+ await (0, utils_cli_1.wrapCli)(async () => {
59
+ const argv = (0, utils_package_1.buildCli)({
60
+ yargs: yargs_1.default,
61
+ deployCommands: (0, utils_package_1.buildDeployCommands)(),
62
+ infraCommands: (0, utils_terraform_1.infraCommands)(),
63
+ })
64
+ .command('image', 'Commands for working with images.', imageCommands())
65
+ .help().argv;
66
+ const packageConfig = new utils_package_config_1.PackageConfig({
67
+ packagePath: './',
68
+ });
69
+ const config = packageConfig.getConfig();
70
+ const command = argv._[0];
71
+ const [, , , ...opArgs] = args;
72
+ if (command === 'infra') {
73
+ const deploymentName = opArgs[1];
74
+ const deployment = packageConfig.getDeployment(config, deploymentName);
75
+ await (0, infraAwsDockerImage_1.infraAwsDockerImageCli)(config, deployment, opArgs);
76
+ return;
77
+ }
78
+ if (command === 'deploy') {
79
+ const deploymentName = opArgs[0];
80
+ const deployment = packageConfig.getDeployment(config, deploymentName);
81
+ await (0, infraAwsDockerImage_1.infraAwsDockerImageCli)(config, deployment, ['deploy', ...opArgs]);
82
+ return;
83
+ }
84
+ if (command === 'image') {
85
+ const deploymentName = opArgs[1];
86
+ const deployment = packageConfig.getDeployment(config, deploymentName);
87
+ await (0, apiDockerImageAws_1.apiDockerImageAwsCli)(config, deployment, opArgs);
88
+ return;
89
+ }
90
+ throw new Error('Unknown command: ' + command);
91
+ });
92
+ };
93
+ exports.run = run;
94
+ //# sourceMappingURL=templateDockerImageAws.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateDockerImageAws.js","sourceRoot":"","sources":["../src/templateDockerImageAws.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { Package, Configuration } from '@goldstack/utils-package';
2
+ import { AWSDeployment } from '@goldstack/infra-aws';
3
+ import { TerraformDeployment } from '@goldstack/utils-terraform';
4
+ import { Deployment } from '@goldstack/infra';
5
+ /**
6
+ * Defines the name for the docker repository. This name must be unique in the AWS region.
7
+ *
8
+ * @title Repository Name
9
+ */
10
+ declare type RepositoryName = string;
11
+ export interface AWSDockerImageDeploymentConfiguration {
12
+ repositoryName: RepositoryName;
13
+ }
14
+ /**
15
+ * Configures a static website deployment.
16
+ *
17
+ * @title Deployment
18
+ */
19
+ export interface AWSDockerImageDeployment extends Deployment, AWSDeployment, TerraformDeployment {
20
+ configuration: AWSDockerImageDeploymentConfiguration;
21
+ }
22
+ /**
23
+ * Places where the website should be deployed to.
24
+ *
25
+ * @title Deployments
26
+ */
27
+ export declare type Deployments = AWSDockerImageDeployment[];
28
+ /**
29
+ * Defines the tag for identifying the docker image.
30
+ *
31
+ * @title Image Tag
32
+ *
33
+ */
34
+ declare type ImageTag = string;
35
+ /**
36
+ * Configures a docker image deployed to AWS.
37
+ *
38
+ * @title AWS Docker Image Configuration
39
+ *
40
+ */
41
+ export interface AWSDockerImagePackageConfiguration extends Configuration {
42
+ imageTag: ImageTag;
43
+ }
44
+ /**
45
+ * A docker image hosted on AWS.
46
+ *
47
+ * @title AWS Docker Image Package
48
+ */
49
+ export interface AWSDockerImagePackage extends Package {
50
+ configuration: AWSDockerImagePackageConfiguration;
51
+ deployments: Deployments;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=AWSDockerImagePackage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSDockerImagePackage.d.ts","sourceRoot":"","sources":["../../src/types/AWSDockerImagePackage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C;;;;GAIG;AACH,aAAK,cAAc,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,qCAAqC;IACpD,cAAc,EAAE,cAAc,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,wBACf,SAAQ,UAAU,EAChB,aAAa,EACb,mBAAmB;IACrB,aAAa,EAAE,qCAAqC,CAAC;CACtD;AAED;;;;GAIG;AACH,oBAAY,WAAW,GAAG,wBAAwB,EAAE,CAAC;AAErD;;;;;GAKG;AACH,aAAK,QAAQ,GAAG,MAAM,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,WAAW,kCAAmC,SAAQ,aAAa;IACvE,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,OAAO;IACpD,aAAa,EAAE,kCAAkC,CAAC;IAClD,WAAW,EAAE,WAAW,CAAC;CAC1B"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=AWSDockerImagePackage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AWSDockerImagePackage.js","sourceRoot":"","sources":["../../src/types/AWSDockerImagePackage.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,76 @@
1
+ {
2
+ "name": "@goldstack/template-docker-image-aws",
3
+ "version": "0.3.30",
4
+ "description": "Utilities for packages that are deployed as Docker Images using AWS Fargate",
5
+ "keywords": [
6
+ "goldstack",
7
+ "utility",
8
+ "infrastructure",
9
+ "IaC",
10
+ "fargate",
11
+ "ecs",
12
+ "aws",
13
+ "docker",
14
+ "configuration"
15
+ ],
16
+ "homepage": "https://goldstack.party",
17
+ "bugs": {
18
+ "url": "https://github.com/goldstack/goldstack/issues"
19
+ },
20
+ "repository": {
21
+ "type": "git",
22
+ "url": "https://github.com/goldstack/goldstack.git"
23
+ },
24
+ "license": "MIT",
25
+ "author": "Max Rohde",
26
+ "sideEffects": false,
27
+ "main": "dist/templateDockerImageAws.js",
28
+ "bin": {
29
+ "template": "./bin/template",
30
+ "template-docker-image-aws": "./bin/template"
31
+ },
32
+ "scripts": {
33
+ "build": "yarn clean && yarn compile",
34
+ "build:watch": "yarn clean && yarn compile:watch",
35
+ "clean": "rm -rf ./dist",
36
+ "compile": "tsc -p tsconfig.json",
37
+ "compile:watch": "tsc -p tsconfig.json --watch",
38
+ "compile:watch:light": "nodemon --watch ./src/ -e '*' --exec 'yarn compile'",
39
+ "coverage": "jest --collect-coverage --passWithNoTests --config=./jest.config.js",
40
+ "generate:schema": "utils-package-config-generate AWSDockerImage && cp schemas/* ../../../templates/packages/docker-image-aws/schemas",
41
+ "prepublishOnly": "yarn run build",
42
+ "publish": "utils-git changed --exec \"yarn npm publish $@\"",
43
+ "test:ci": "jest --passWithNoTests --config=./jest.config.js",
44
+ "version:apply": "utils-git changed --exec \"yarn version $@ && yarn version apply\"",
45
+ "version:apply:force": "yarn version $@ && yarn version apply"
46
+ },
47
+ "dependencies": {
48
+ "@goldstack/infra": "0.3.15",
49
+ "@goldstack/infra-aws": "0.3.17",
50
+ "@goldstack/utils-aws-cli": "0.3.20",
51
+ "@goldstack/utils-cli": "0.2.5",
52
+ "@goldstack/utils-config": "0.3.14",
53
+ "@goldstack/utils-docker": "0.3.15",
54
+ "@goldstack/utils-git": "0.1.26",
55
+ "@goldstack/utils-log": "0.2.6",
56
+ "@goldstack/utils-package": "0.3.15",
57
+ "@goldstack/utils-package-config": "0.3.15",
58
+ "@goldstack/utils-s3-deployment": "0.3.20",
59
+ "@goldstack/utils-sh": "0.4.13",
60
+ "@goldstack/utils-template": "0.3.14",
61
+ "@goldstack/utils-terraform": "0.3.23",
62
+ "@goldstack/utils-terraform-aws": "0.3.23",
63
+ "aws-sdk": "2.721.0",
64
+ "yargs": "^15.4.1"
65
+ },
66
+ "devDependencies": {
67
+ "@goldstack/utils-git": "0.1.26",
68
+ "@goldstack/utils-package-config-generate": "0.2.5",
69
+ "@types/jest": "^26.0.21",
70
+ "@types/node": "^14.0.6",
71
+ "@types/yargs": "^15.0.5",
72
+ "jest": "^26.6.3",
73
+ "ts-jest": "^26.5.4",
74
+ "typescript": "^4.4.3"
75
+ }
76
+ }