Comparing version 0.0.10 to 0.0.11
@@ -16,4 +16,4 @@ const { program } = require("commander"); | ||
.option("--lambda-kill-warm-instances", "kill warm lambda instances by doing a silent redeployment") | ||
// .option("--ecr-ecs-ephemeral-create", "creates an ephemeral ecr/ecs combination") | ||
// .option("--ecr-ecs-ephemeral-destroy", "destroys an ephemeral ecr/ecs combination") | ||
.option("--ecr-ecs-ephemeral-create", "creates an ephemeral ecr/ecs combination") | ||
.option("--ecr-ecs-ephemeral-destroy", "destroys an ephemeral ecr/ecs combination") | ||
// .option("--version-based-lambda-deploy", "deploy a version-based lambda function") | ||
@@ -30,3 +30,9 @@ .option("--task-definition <task-definition>", "ecs task definition") | ||
.option("--environment-variable <keyvalue...>", "overwrite environment variable key:value") | ||
.option("--execution-role-arn <execution-role-arn>", "execution-role-arn") | ||
.option("--task-role-arn <task-role-arn>", "task-role-arn") | ||
.option("--cpu-units <cpu-units>", "cpu-units", "256") | ||
.option("--memory-units <memory-units>", "memory-units", "512") | ||
.option("--ephemeral-id <ephemeral-id>", "ephemeral id"); | ||
program.parse(process.argv); | ||
@@ -69,1 +75,7 @@ const options = program.opts(); | ||
Lib.lambdaKillWarmInstances(options["lambdaFunction"], resultFunc); | ||
if (options["ecrEcsEphemeralCreate"]) | ||
Lib.ecrEcsEphemeralCreate(options["executionRoleArn"], options["taskRoleArn"], options["cpuUnits"], options["memoryUnits"], resultFunc); | ||
if (options["ecrEcsEphemeralDestroy"]) | ||
Lib.ecrEcsEphemeralDestroy(options["ephemeralId"], resultFunc); |
{ | ||
"name": "awsass", | ||
"description": "AWSASS is an assistant to AWS, mostly for running better scripts.", | ||
"version": "0.0.10", | ||
"version": "0.0.11", | ||
"author": "Jsonize", | ||
@@ -6,0 +6,0 @@ "repository": "https://github.com/jsonize/awsass", |
const AWS = require("aws-sdk"); | ||
const Docker = require(__dirname + "/docker.js"); | ||
const OS = require("os"); | ||
@@ -269,2 +270,95 @@ const nameValueArrayToObject = function (arr) { | ||
}); | ||
}, | ||
ecrEcsEphemeralCreate: function (executionRoleArn, taskRoleArn, cpuUnits, memoryUnits, callback) { | ||
const ecr = new AWS.ECR({apiVersion: '2015-09-21'}); | ||
const ecs = new AWS.ECS({apiVersion: '2014-11-13'}); | ||
const cloudwatchlogs = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'}); | ||
const ephemeralId = "awsass-ephemeral-" + OS.userInfo().username + "-" + (new Date()).getTime(); | ||
ecr.createRepository({ | ||
repositoryName: ephemeralId | ||
}, function (err, createRepoResult) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
ecs.registerTaskDefinition({ | ||
family: ephemeralId, | ||
cpu: cpuUnits, | ||
memory: memoryUnits, | ||
networkMode: "awsvpc", | ||
executionRoleArn: executionRoleArn, | ||
taskRoleArn: taskRoleArn, | ||
requiresCompatibilities: ["FARGATE"], | ||
containerDefinitions: [{ | ||
name: ephemeralId, | ||
essential: true, | ||
memoryReservation: memoryUnits, | ||
cpu: cpuUnits, | ||
image: createRepoResult.repository.repositoryUri, | ||
logConfiguration: { | ||
logDriver: "awslogs", | ||
options: { | ||
"awslogs-group": "/ecs/" + ephemeralId, | ||
"awslogs-region": AWS.config.region, | ||
"awslogs-stream-prefix": "ecs" | ||
} | ||
} | ||
}] | ||
}, function (err, registerTaskDef) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
cloudwatchlogs.createLogGroup({ | ||
logGroupName: "/ecs/" + ephemeralId, | ||
}, function (err, logGroupResult) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
callback(undefined, { | ||
ephemeralId: ephemeralId, | ||
repositoryUri: createRepoResult.repository.repositoryUri, | ||
taskDefinitionArn: registerTaskDef.taskDefinition.taskDefinitionArn | ||
}); | ||
}); | ||
}); | ||
}); | ||
}, | ||
ecrEcsEphemeralDestroy: function (ephemeralId, callback) { | ||
const ecr = new AWS.ECR({apiVersion: '2015-09-21'}); | ||
const ecs = new AWS.ECS({apiVersion: '2014-11-13'}); | ||
const cloudwatchlogs = new AWS.CloudWatchLogs({apiVersion: '2014-03-28'}); | ||
cloudwatchlogs.deleteLogGroup({ | ||
logGroupName: "/ecs/" + ephemeralId | ||
}, function (err, logGroupResult) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
ecs.deregisterTaskDefinition({ | ||
taskDefinition: ephemeralId + ":1" | ||
}, function (err, deregisterTaskDef) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
ecr.deleteRepository({ | ||
repositoryName: ephemeralId, | ||
force: true | ||
}, function (err, deleteRepoResult) { | ||
if (err) { | ||
callback(err); | ||
return; | ||
} | ||
callback(undefined, { | ||
ephemeralId: ephemeralId, | ||
repositoryUri: deleteRepoResult.repository.repositoryUri, | ||
taskDefinitionArn: deregisterTaskDef.taskDefinition.taskDefinitionArn | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
@@ -271,0 +365,0 @@ |
19964
426