@cloudsnorkel/cdk-github-runners 0.8.1 → 0.8.2
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/.gitattributes +9 -0
- package/.jsii +368 -184
- package/API.md +1718 -512
- package/README.md +2 -2
- package/{lib/providers → assets}/docker-images/lambda/linux-arm64/runner.sh +1 -1
- package/{lib/providers → assets}/docker-images/lambda/linux-x64/runner.sh +1 -1
- package/{lib/lambdas/aws-image-builder-versioner → assets/lambdas/aws-image-builder-versioner.lambda}/index.js +5 -5
- package/{lib/lambdas/build-image → assets/lambdas/build-image.lambda}/index.js +5 -5
- package/{lib/lambdas/delete-ami → assets/lambdas/delete-ami.lambda}/index.js +2 -2
- package/{lib/lambdas/delete-runner → assets/lambdas/delete-runner.lambda}/index.js +1 -1
- package/{lib/lambdas/setup → assets/lambdas/setup.lambda}/index.js +2 -2
- package/{lib/lambdas/status → assets/lambdas/status.lambda}/index.js +2 -2
- package/{lib/lambdas/token-retriever → assets/lambdas/token-retriever.lambda}/index.js +1 -1
- package/{lib/lambdas/update-lambda → assets/lambdas/update-lambda.lambda}/index.js +4 -4
- package/{lib/lambdas/webhook-handler → assets/lambdas/webhook-handler.lambda}/index.js +2 -2
- package/lib/lambdas/aws-image-builder-versioner-function.d.ts +13 -0
- package/lib/lambdas/aws-image-builder-versioner-function.js +23 -0
- package/lib/lambdas/aws-image-builder-versioner.lambda.d.ts +2 -0
- package/lib/lambdas/aws-image-builder-versioner.lambda.js +80 -0
- package/lib/lambdas/build-image-function.d.ts +13 -0
- package/lib/lambdas/build-image-function.js +23 -0
- package/lib/lambdas/build-image.lambda.d.ts +2 -0
- package/lib/lambdas/build-image.lambda.js +92 -0
- package/lib/lambdas/delete-ami-function.d.ts +13 -0
- package/lib/lambdas/delete-ami-function.js +23 -0
- package/lib/lambdas/delete-ami.lambda.d.ts +1 -0
- package/lib/lambdas/delete-ami.lambda.js +87 -0
- package/lib/lambdas/delete-runner-function.d.ts +13 -0
- package/lib/lambdas/delete-runner-function.js +23 -0
- package/lib/lambdas/delete-runner.lambda.d.ts +1 -0
- package/lib/lambdas/delete-runner.lambda.js +69 -0
- package/lib/lambdas/github.d.ts +7 -0
- package/lib/lambdas/github.js +50 -0
- package/lib/lambdas/helpers.d.ts +12 -0
- package/lib/lambdas/helpers.js +66 -0
- package/lib/lambdas/setup-function.d.ts +13 -0
- package/lib/lambdas/setup-function.js +23 -0
- package/lib/lambdas/setup.lambda.d.ts +1 -0
- package/lib/lambdas/setup.lambda.js +148 -0
- package/lib/lambdas/status-function.d.ts +13 -0
- package/lib/lambdas/status-function.js +23 -0
- package/lib/lambdas/status.lambda.d.ts +1 -0
- package/lib/lambdas/status.lambda.js +285 -0
- package/lib/lambdas/token-retriever-function.d.ts +13 -0
- package/lib/lambdas/token-retriever-function.js +23 -0
- package/lib/lambdas/token-retriever.lambda.d.ts +1 -0
- package/lib/lambdas/token-retriever.lambda.js +15 -0
- package/lib/lambdas/update-lambda-function.d.ts +13 -0
- package/lib/lambdas/update-lambda-function.js +23 -0
- package/lib/lambdas/update-lambda.lambda.d.ts +7 -0
- package/lib/lambdas/update-lambda.lambda.js +34 -0
- package/lib/lambdas/webhook-handler-function.d.ts +13 -0
- package/lib/lambdas/webhook-handler-function.js +23 -0
- package/lib/lambdas/webhook-handler.lambda.d.ts +1 -0
- package/lib/lambdas/webhook-handler.lambda.js +107 -0
- package/lib/providers/codebuild.d.ts +8 -3
- package/lib/providers/codebuild.js +17 -9
- package/lib/providers/common.js +3 -3
- package/lib/providers/ec2.d.ts +9 -4
- package/lib/providers/ec2.js +14 -6
- package/lib/providers/fargate.d.ts +8 -3
- package/lib/providers/fargate.js +17 -9
- package/lib/providers/image-builders/ami.js +6 -3
- package/lib/providers/image-builders/codebuild.js +5 -3
- package/lib/providers/image-builders/common.js +5 -3
- package/lib/providers/image-builders/container.js +5 -3
- package/lib/providers/image-builders/linux-components.js +1 -1
- package/lib/providers/image-builders/static.js +3 -3
- package/lib/providers/image-builders/windows-components.js +1 -1
- package/lib/providers/lambda.d.ts +8 -3
- package/lib/providers/lambda.js +20 -10
- package/lib/runner.js +17 -10
- package/lib/secrets.js +1 -1
- package/lib/utils.d.ts +2 -6
- package/lib/utils.js +11 -26
- package/lib/webhook.d.ts +2 -2
- package/lib/webhook.js +5 -3
- package/package.json +28 -12
- package/setup/index.html +0 -12
- package/setup/src/App.svelte +0 -291
- package/setup/src/app.scss +0 -15
- package/setup/src/main.ts +0 -8
- package/setup/src/vite-env.d.ts +0 -2
- package/setup/svelte.config.mjs +0 -7
- package/setup/tsconfig.json +0 -21
- package/setup/tsconfig.node.json +0 -8
- package/setup/vite.config.ts +0 -15
- /package/{lib/providers → assets}/docker-images/codebuild/linux-arm64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/codebuild/linux-x64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/fargate/linux-arm64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/fargate/linux-x64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/lambda/linux-arm64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/lambda/linux-arm64/runner.js +0 -0
- /package/{lib/providers → assets}/docker-images/lambda/linux-x64/Dockerfile +0 -0
- /package/{lib/providers → assets}/docker-images/lambda/linux-x64/runner.js +0 -0
- /package/{lib/lambdas/setup → assets/lambdas/setup.lambda}/index.html +0 -0
package/README.md
CHANGED
|
@@ -124,7 +124,7 @@ const myBuilder = new CodeBuildImageBuilder(this, 'image builder', {
|
|
|
124
124
|
});
|
|
125
125
|
myBuilder.setBuildArg('EXTRA_PACKAGES', 'nginx xz-utils');
|
|
126
126
|
|
|
127
|
-
const myProvider = new
|
|
127
|
+
const myProvider = new FargateRunnerProvider(this, 'fargate runner', {
|
|
128
128
|
label: 'customized-fargate',
|
|
129
129
|
vpc: vpc,
|
|
130
130
|
securityGroup: runnerSg,
|
|
@@ -171,7 +171,7 @@ myWindowsBuilder.addComponent(new ImageBuilderComponent(this, 'Ninja Component',
|
|
|
171
171
|
}
|
|
172
172
|
));
|
|
173
173
|
|
|
174
|
-
const myProvider = new
|
|
174
|
+
const myProvider = new FargateRunnerProvider(this, 'fargate runner', {
|
|
175
175
|
label: 'customized-windows-fargate',
|
|
176
176
|
vpc: vpc,
|
|
177
177
|
securityGroup: runnerSg,
|
|
@@ -2392,12 +2392,12 @@ var require_semver2 = __commonJS({
|
|
|
2392
2392
|
}
|
|
2393
2393
|
});
|
|
2394
2394
|
|
|
2395
|
-
// src/lambdas/aws-image-builder-versioner
|
|
2396
|
-
var
|
|
2397
|
-
__export(
|
|
2395
|
+
// src/lambdas/aws-image-builder-versioner.lambda.ts
|
|
2396
|
+
var aws_image_builder_versioner_lambda_exports = {};
|
|
2397
|
+
__export(aws_image_builder_versioner_lambda_exports, {
|
|
2398
2398
|
handler: () => handler
|
|
2399
2399
|
});
|
|
2400
|
-
module.exports = __toCommonJS(
|
|
2400
|
+
module.exports = __toCommonJS(aws_image_builder_versioner_lambda_exports);
|
|
2401
2401
|
var AWS2 = __toESM(require("aws-sdk"));
|
|
2402
2402
|
var import_semver = __toESM(require_semver2());
|
|
2403
2403
|
|
|
@@ -2438,7 +2438,7 @@ async function customResourceRespond(event, responseStatus, reason, physicalReso
|
|
|
2438
2438
|
});
|
|
2439
2439
|
}
|
|
2440
2440
|
|
|
2441
|
-
// src/lambdas/aws-image-builder-versioner
|
|
2441
|
+
// src/lambdas/aws-image-builder-versioner.lambda.ts
|
|
2442
2442
|
var ib = new AWS2.Imagebuilder();
|
|
2443
2443
|
async function handler(event, context) {
|
|
2444
2444
|
console.log(JSON.stringify({ ...event, ResponseURL: "..." }));
|
|
@@ -27,12 +27,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
|
-
// src/lambdas/build-image
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
30
|
+
// src/lambdas/build-image.lambda.ts
|
|
31
|
+
var build_image_lambda_exports = {};
|
|
32
|
+
__export(build_image_lambda_exports, {
|
|
33
33
|
handler: () => handler
|
|
34
34
|
});
|
|
35
|
-
module.exports = __toCommonJS(
|
|
35
|
+
module.exports = __toCommonJS(build_image_lambda_exports);
|
|
36
36
|
var AWS2 = __toESM(require("aws-sdk"));
|
|
37
37
|
|
|
38
38
|
// src/lambdas/helpers.ts
|
|
@@ -72,7 +72,7 @@ async function customResourceRespond(event, responseStatus, reason, physicalReso
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
// src/lambdas/build-image
|
|
75
|
+
// src/lambdas/build-image.lambda.ts
|
|
76
76
|
var codebuild = new AWS2.CodeBuild();
|
|
77
77
|
var ecr = new AWS2.ECR();
|
|
78
78
|
var ib = new AWS2.Imagebuilder();
|
|
@@ -22,7 +22,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
22
|
mod
|
|
23
23
|
));
|
|
24
24
|
|
|
25
|
-
// src/lambdas/delete-ami
|
|
25
|
+
// src/lambdas/delete-ami.lambda.ts
|
|
26
26
|
var AWS2 = __toESM(require("aws-sdk"));
|
|
27
27
|
|
|
28
28
|
// src/lambdas/helpers.ts
|
|
@@ -62,7 +62,7 @@ async function customResourceRespond(event, responseStatus, reason, physicalReso
|
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
// src/lambdas/delete-ami
|
|
65
|
+
// src/lambdas/delete-ami.lambda.ts
|
|
66
66
|
var ec2 = new AWS2.EC2();
|
|
67
67
|
async function deleteAmis(launchTemplateId, stackName, builderName, deleteAll) {
|
|
68
68
|
var _a;
|
|
@@ -22429,7 +22429,7 @@ async function getOctokit(installationId) {
|
|
|
22429
22429
|
};
|
|
22430
22430
|
}
|
|
22431
22431
|
|
|
22432
|
-
// src/lambdas/delete-runner
|
|
22432
|
+
// src/lambdas/delete-runner.lambda.ts
|
|
22433
22433
|
async function getRunnerId(octokit, owner, repo, name, idleOnly) {
|
|
22434
22434
|
let page = 1;
|
|
22435
22435
|
while (true) {
|
|
@@ -9112,7 +9112,7 @@ var require_dist_node12 = __commonJS({
|
|
|
9112
9112
|
}
|
|
9113
9113
|
});
|
|
9114
9114
|
|
|
9115
|
-
// src/lambdas/setup
|
|
9115
|
+
// src/lambdas/setup.lambda.ts
|
|
9116
9116
|
var crypto = __toESM(require("crypto"));
|
|
9117
9117
|
var fs = __toESM(require("fs"));
|
|
9118
9118
|
var import_rest = __toESM(require_dist_node12());
|
|
@@ -9148,7 +9148,7 @@ function baseUrlFromDomain(domain) {
|
|
|
9148
9148
|
return `https://${domain}/api/v3`;
|
|
9149
9149
|
}
|
|
9150
9150
|
|
|
9151
|
-
// src/lambdas/setup
|
|
9151
|
+
// src/lambdas/setup.lambda.ts
|
|
9152
9152
|
var nonce = crypto.randomBytes(64).toString("hex");
|
|
9153
9153
|
function getHtml(baseUrl, token, domain) {
|
|
9154
9154
|
return fs.readFileSync("index.html", "utf-8").replace(/INSERT_WEBHOOK_URL_HERE/g, process.env.WEBHOOK_URL).replace(/INSERT_BASE_URL_HERE/g, baseUrl).replace(/INSERT_TOKEN_HERE/g, token).replace(/INSERT_SECRET_ARN_HERE/g, process.env.SETUP_SECRET_ARN).replace(/INSERT_DOMAIN_HERE/g, domain).replace(/<script/g, `<script nonce="${nonce}"`).replace(/<style/g, `<style nonce="${nonce}"`);
|
|
@@ -21094,7 +21094,7 @@ var require_dist_node27 = __commonJS({
|
|
|
21094
21094
|
}
|
|
21095
21095
|
});
|
|
21096
21096
|
|
|
21097
|
-
// src/lambdas/status
|
|
21097
|
+
// src/lambdas/status.lambda.ts
|
|
21098
21098
|
var import_auth_app = __toESM(require_dist_node24());
|
|
21099
21099
|
var import_core = __toESM(require_dist_node27());
|
|
21100
21100
|
var AWS2 = __toESM(require("aws-sdk"));
|
|
@@ -21124,7 +21124,7 @@ function baseUrlFromDomain(domain) {
|
|
|
21124
21124
|
return `https://${domain}/api/v3`;
|
|
21125
21125
|
}
|
|
21126
21126
|
|
|
21127
|
-
// src/lambdas/status
|
|
21127
|
+
// src/lambdas/status.lambda.ts
|
|
21128
21128
|
var cfn = new AWS2.CloudFormation();
|
|
21129
21129
|
var ec2 = new AWS2.EC2();
|
|
21130
21130
|
var ecr = new AWS2.ECR();
|
|
@@ -22429,7 +22429,7 @@ async function getOctokit(installationId) {
|
|
|
22429
22429
|
};
|
|
22430
22430
|
}
|
|
22431
22431
|
|
|
22432
|
-
// src/lambdas/token-retriever
|
|
22432
|
+
// src/lambdas/token-retriever.lambda.ts
|
|
22433
22433
|
exports.handler = async function(event) {
|
|
22434
22434
|
const { githubSecrets, octokit } = await getOctokit(event.installationId);
|
|
22435
22435
|
const response = await octokit.rest.actions.createRegistrationTokenForRepo({
|
|
@@ -27,12 +27,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
29
|
|
|
30
|
-
// src/lambdas/update-lambda
|
|
31
|
-
var
|
|
32
|
-
__export(
|
|
30
|
+
// src/lambdas/update-lambda.lambda.ts
|
|
31
|
+
var update_lambda_lambda_exports = {};
|
|
32
|
+
__export(update_lambda_lambda_exports, {
|
|
33
33
|
handler: () => handler
|
|
34
34
|
});
|
|
35
|
-
module.exports = __toCommonJS(
|
|
35
|
+
module.exports = __toCommonJS(update_lambda_lambda_exports);
|
|
36
36
|
var AWS = __toESM(require("aws-sdk"));
|
|
37
37
|
var lambda = new AWS.Lambda();
|
|
38
38
|
function sleep(ms) {
|
|
@@ -22,7 +22,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
22
22
|
mod
|
|
23
23
|
));
|
|
24
24
|
|
|
25
|
-
// src/lambdas/webhook-handler
|
|
25
|
+
// src/lambdas/webhook-handler.lambda.ts
|
|
26
26
|
var crypto = __toESM(require("crypto"));
|
|
27
27
|
var AWS2 = __toESM(require("aws-sdk"));
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ async function getSecretJsonValue(arn) {
|
|
|
43
43
|
return JSON.parse(await getSecretValue(arn));
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
-
// src/lambdas/webhook-handler
|
|
46
|
+
// src/lambdas/webhook-handler.lambda.ts
|
|
47
47
|
var sf = new AWS2.StepFunctions();
|
|
48
48
|
function verifyBody(event, secret) {
|
|
49
49
|
const sig = Buffer.from(event.headers["x-hub-signature-256"] || "", "utf8");
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Props for AwsImageBuilderVersionerFunction
|
|
5
|
+
*/
|
|
6
|
+
export interface AwsImageBuilderVersionerFunctionProps extends lambda.FunctionOptions {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An AWS Lambda function which executes src/lambdas/aws-image-builder-versioner.
|
|
10
|
+
*/
|
|
11
|
+
export declare class AwsImageBuilderVersionerFunction extends lambda.Function {
|
|
12
|
+
constructor(scope: Construct, id: string, props?: AwsImageBuilderVersionerFunctionProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AwsImageBuilderVersionerFunction = void 0;
|
|
4
|
+
// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
|
+
/**
|
|
8
|
+
* An AWS Lambda function which executes src/lambdas/aws-image-builder-versioner.
|
|
9
|
+
*/
|
|
10
|
+
class AwsImageBuilderVersionerFunction extends lambda.Function {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, {
|
|
13
|
+
description: 'src/lambdas/aws-image-builder-versioner.lambda.ts',
|
|
14
|
+
...props,
|
|
15
|
+
runtime: new lambda.Runtime('nodejs14.x', lambda.RuntimeFamily.NODEJS),
|
|
16
|
+
handler: 'index.handler',
|
|
17
|
+
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/lambdas/aws-image-builder-versioner.lambda')),
|
|
18
|
+
});
|
|
19
|
+
this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.AwsImageBuilderVersionerFunction = AwsImageBuilderVersionerFunction;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWltYWdlLWJ1aWxkZXItdmVyc2lvbmVyLWZ1bmN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xhbWJkYXMvYXdzLWltYWdlLWJ1aWxkZXItdmVyc2lvbmVyLWZ1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZFQUE2RTtBQUM3RSw2QkFBNkI7QUFDN0IsaURBQWlEO0FBU2pEOztHQUVHO0FBQ0gsTUFBYSxnQ0FBaUMsU0FBUSxNQUFNLENBQUMsUUFBUTtJQUNuRSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZDO1FBQ3JGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsV0FBVyxFQUFFLG1EQUFtRDtZQUNoRSxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztZQUN0RSxPQUFPLEVBQUUsZUFBZTtZQUN4QixJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUseURBQXlELENBQUMsQ0FBQztTQUM3RyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLHFDQUFxQyxFQUFFLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLENBQUM7Q0FDRjtBQVhELDRFQVdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy5qcyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBBd3NJbWFnZUJ1aWxkZXJWZXJzaW9uZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0ltYWdlQnVpbGRlclZlcnNpb25lckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9sYW1iZGFzL2F3cy1pbWFnZS1idWlsZGVyLXZlcnNpb25lci5cbiAqL1xuZXhwb3J0IGNsYXNzIEF3c0ltYWdlQnVpbGRlclZlcnNpb25lckZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBBd3NJbWFnZUJ1aWxkZXJWZXJzaW9uZXJGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9sYW1iZGFzL2F3cy1pbWFnZS1idWlsZGVyLXZlcnNpb25lci5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczE0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9hc3NldHMvbGFtYmRhcy9hd3MtaW1hZ2UtYnVpbGRlci12ZXJzaW9uZXIubGFtYmRhJykpLFxuICAgIH0pO1xuICAgIHRoaXMuYWRkRW52aXJvbm1lbnQoJ0FXU19OT0RFSlNfQ09OTkVDVElPTl9SRVVTRV9FTkFCTEVEJywgJzEnLCB7IHJlbW92ZUluRWRnZTogdHJ1ZSB9KTtcbiAgfVxufSJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
5
|
+
const AWS = require("aws-sdk");
|
|
6
|
+
const semver_1 = require("semver");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const ib = new AWS.Imagebuilder();
|
|
9
|
+
/* eslint-disable @typescript-eslint/no-require-imports, import/no-extraneous-dependencies */
|
|
10
|
+
async function handler(event, context) {
|
|
11
|
+
console.log(JSON.stringify({ ...event, ResponseURL: '...' }));
|
|
12
|
+
try {
|
|
13
|
+
const objectType = event.ResourceProperties.ObjectType;
|
|
14
|
+
const objectName = event.ResourceProperties.ObjectName;
|
|
15
|
+
switch (event.RequestType) {
|
|
16
|
+
case 'Create':
|
|
17
|
+
case 'Update':
|
|
18
|
+
let version = '1.0.0';
|
|
19
|
+
let allVersions = [];
|
|
20
|
+
try {
|
|
21
|
+
switch (objectType) {
|
|
22
|
+
case 'Component': {
|
|
23
|
+
const result = await ib.listComponents({
|
|
24
|
+
filters: [{
|
|
25
|
+
name: 'name',
|
|
26
|
+
values: [objectName],
|
|
27
|
+
}],
|
|
28
|
+
}).promise();
|
|
29
|
+
allVersions = result.componentVersionList.map(i => i.version || '1.0.0');
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
case 'ImageRecipe': {
|
|
33
|
+
const result = await ib.listImageRecipes({
|
|
34
|
+
filters: [{
|
|
35
|
+
name: 'name',
|
|
36
|
+
values: [objectName],
|
|
37
|
+
}],
|
|
38
|
+
}).promise();
|
|
39
|
+
allVersions = result.imageRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0');
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'ContainerRecipe': {
|
|
43
|
+
const result = await ib.listContainerRecipes({
|
|
44
|
+
filters: [{
|
|
45
|
+
name: 'name',
|
|
46
|
+
values: [objectName],
|
|
47
|
+
}],
|
|
48
|
+
}).promise();
|
|
49
|
+
allVersions = result.containerRecipeSummaryList.map(i => i.arn?.split('/').pop() || '1.0.0');
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (e) {
|
|
55
|
+
if (e.code !== 'ResourceNotFoundException') {
|
|
56
|
+
throw e;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
version = semver_1.maxSatisfying(allVersions, '>=0.0.0');
|
|
60
|
+
if (version === null) {
|
|
61
|
+
version = '1.0.0';
|
|
62
|
+
}
|
|
63
|
+
version = semver_1.inc(version, 'patch');
|
|
64
|
+
if (version === null) {
|
|
65
|
+
throw new Error('Unable to bump version');
|
|
66
|
+
}
|
|
67
|
+
await helpers_1.customResourceRespond(event, 'SUCCESS', 'OK', version, {});
|
|
68
|
+
break;
|
|
69
|
+
case 'Delete':
|
|
70
|
+
await helpers_1.customResourceRespond(event, 'SUCCESS', 'OK', event.PhysicalResourceId, {});
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
catch (e) {
|
|
75
|
+
console.log(e);
|
|
76
|
+
await helpers_1.customResourceRespond(event, 'FAILED', e.message || 'Internal Error', context.logStreamName, {});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
exports.handler = handler;
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXdzLWltYWdlLWJ1aWxkZXItdmVyc2lvbmVyLmxhbWJkYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGFzL2F3cy1pbWFnZS1idWlsZGVyLXZlcnNpb25lci5sYW1iZGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsc0RBQXNEO0FBQ3RELCtCQUErQjtBQUMvQixtQ0FBNEM7QUFDNUMsdUNBQWtEO0FBRWxELE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBRWxDLDZGQUE2RjtBQUN0RixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtELEVBQUUsT0FBMEI7SUFDMUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsR0FBRyxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUU5RCxJQUFJO1FBQ0YsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQztRQUN2RCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO1FBRXZELFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN6QixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxJQUFJLE9BQU8sR0FBa0IsT0FBTyxDQUFDO2dCQUNyQyxJQUFJLFdBQVcsR0FBYSxFQUFFLENBQUM7Z0JBQy9CLElBQUk7b0JBQ0YsUUFBUSxVQUFVLEVBQUU7d0JBQ2xCLEtBQUssV0FBVyxDQUFDLENBQUM7NEJBQ2hCLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLGNBQWMsQ0FBQztnQ0FDckMsT0FBTyxFQUFFLENBQUM7d0NBQ1IsSUFBSSxFQUFFLE1BQU07d0NBQ1osTUFBTSxFQUFFLENBQUMsVUFBVSxDQUFDO3FDQUNyQixDQUFDOzZCQUNILENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs0QkFDYixXQUFXLEdBQUcsTUFBTSxDQUFDLG9CQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUM7NEJBQzFFLE1BQU07eUJBQ1A7d0JBQ0QsS0FBSyxhQUFhLENBQUMsQ0FBQzs0QkFDbEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLENBQUM7Z0NBQ3ZDLE9BQU8sRUFBRSxDQUFDO3dDQUNSLElBQUksRUFBRSxNQUFNO3dDQUNaLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQztxQ0FDckIsQ0FBQzs2QkFDSCxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQ2IsV0FBVyxHQUFHLE1BQU0sQ0FBQyxzQkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxPQUFPLENBQUMsQ0FBQzs0QkFDMUYsTUFBTTt5QkFDUDt3QkFDRCxLQUFLLGlCQUFpQixDQUFDLENBQUM7NEJBQ3RCLE1BQU0sTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dDQUMzQyxPQUFPLEVBQUUsQ0FBQzt3Q0FDUixJQUFJLEVBQUUsTUFBTTt3Q0FDWixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7cUNBQ3JCLENBQUM7NkJBQ0gsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUNiLFdBQVcsR0FBRyxNQUFNLENBQUMsMEJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksT0FBTyxDQUFDLENBQUM7NEJBQzlGLE1BQU07eUJBQ1A7cUJBQ0Y7aUJBQ0Y7Z0JBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ1YsSUFBSyxDQUFTLENBQUMsSUFBSSxLQUFLLDJCQUEyQixFQUFFO3dCQUNuRCxNQUFNLENBQUMsQ0FBQztxQkFDVDtpQkFDRjtnQkFFRCxPQUFPLEdBQUcsc0JBQWEsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ2hELElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtvQkFDcEIsT0FBTyxHQUFHLE9BQU8sQ0FBQztpQkFDbkI7Z0JBQ0QsT0FBTyxHQUFHLFlBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2hDLElBQUksT0FBTyxLQUFLLElBQUksRUFBRTtvQkFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2lCQUMzQztnQkFDRCxNQUFNLCtCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFFakUsTUFBTTtZQUNSLEtBQUssUUFBUTtnQkFDWCxNQUFNLCtCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbEYsTUFBTTtTQUNUO0tBQ0Y7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDZixNQUFNLCtCQUFxQixDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUcsQ0FBVyxDQUFDLE9BQU8sSUFBSSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQ25IO0FBQ0gsQ0FBQztBQXRFRCwwQkFzRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzLGltcG9ydC9uby11bnJlc29sdmVkICovXG5pbXBvcnQgKiBhcyBBV1NMYW1iZGEgZnJvbSAnYXdzLWxhbWJkYSc7XG4vKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IGluYywgbWF4U2F0aXNmeWluZyB9IGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBjdXN0b21SZXNvdXJjZVJlc3BvbmQgfSBmcm9tICcuL2hlbHBlcnMnO1xuXG5jb25zdCBpYiA9IG5ldyBBV1MuSW1hZ2VidWlsZGVyKCk7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMsIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIGNvbnRleHQ6IEFXU0xhbWJkYS5Db250ZXh0KSB7XG4gIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KHsgLi4uZXZlbnQsIFJlc3BvbnNlVVJMOiAnLi4uJyB9KSk7XG5cbiAgdHJ5IHtcbiAgICBjb25zdCBvYmplY3RUeXBlID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLk9iamVjdFR5cGU7XG4gICAgY29uc3Qgb2JqZWN0TmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5PYmplY3ROYW1lO1xuXG4gICAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgIGxldCB2ZXJzaW9uOiBzdHJpbmcgfCBudWxsID0gJzEuMC4wJztcbiAgICAgICAgbGV0IGFsbFZlcnNpb25zOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN3aXRjaCAob2JqZWN0VHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnQ29tcG9uZW50Jzoge1xuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpYi5saXN0Q29tcG9uZW50cyh7XG4gICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICduYW1lJyxcbiAgICAgICAgICAgICAgICAgIHZhbHVlczogW29iamVjdE5hbWVdLFxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICB9KS5wcm9taXNlKCk7XG4gICAgICAgICAgICAgIGFsbFZlcnNpb25zID0gcmVzdWx0LmNvbXBvbmVudFZlcnNpb25MaXN0IS5tYXAoaSA9PiBpLnZlcnNpb24gfHwgJzEuMC4wJyk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAnSW1hZ2VSZWNpcGUnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGliLmxpc3RJbWFnZVJlY2lwZXMoe1xuICAgICAgICAgICAgICAgIGZpbHRlcnM6IFt7XG4gICAgICAgICAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgICAgICAgICB2YWx1ZXM6IFtvYmplY3ROYW1lXSxcbiAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgfSkucHJvbWlzZSgpO1xuICAgICAgICAgICAgICBhbGxWZXJzaW9ucyA9IHJlc3VsdC5pbWFnZVJlY2lwZVN1bW1hcnlMaXN0IS5tYXAoaSA9PiBpLmFybj8uc3BsaXQoJy8nKS5wb3AoKSB8fCAnMS4wLjAnKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdDb250YWluZXJSZWNpcGUnOiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGliLmxpc3RDb250YWluZXJSZWNpcGVzKHtcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbe1xuICAgICAgICAgICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgICAgICAgICAgdmFsdWVzOiBbb2JqZWN0TmFtZV0sXG4gICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgIH0pLnByb21pc2UoKTtcbiAgICAgICAgICAgICAgYWxsVmVyc2lvbnMgPSByZXN1bHQuY29udGFpbmVyUmVjaXBlU3VtbWFyeUxpc3QhLm1hcChpID0+IGkuYXJuPy5zcGxpdCgnLycpLnBvcCgpIHx8ICcxLjAuMCcpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBpZiAoKGUgYXMgYW55KS5jb2RlICE9PSAnUmVzb3VyY2VOb3RGb3VuZEV4Y2VwdGlvbicpIHtcbiAgICAgICAgICAgIHRocm93IGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmVyc2lvbiA9IG1heFNhdGlzZnlpbmcoYWxsVmVyc2lvbnMsICc+PTAuMC4wJyk7XG4gICAgICAgIGlmICh2ZXJzaW9uID09PSBudWxsKSB7XG4gICAgICAgICAgdmVyc2lvbiA9ICcxLjAuMCc7XG4gICAgICAgIH1cbiAgICAgICAgdmVyc2lvbiA9IGluYyh2ZXJzaW9uLCAncGF0Y2gnKTtcbiAgICAgICAgaWYgKHZlcnNpb24gPT09IG51bGwpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuYWJsZSB0byBidW1wIHZlcnNpb24nKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdTVUNDRVNTJywgJ09LJywgdmVyc2lvbiwge30pO1xuXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnU1VDQ0VTUycsICdPSycsIGV2ZW50LlBoeXNpY2FsUmVzb3VyY2VJZCwge30pO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdGQUlMRUQnLCAoZSBhcyBFcnJvcikubWVzc2FnZSB8fCAnSW50ZXJuYWwgRXJyb3InLCBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsIHt9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Props for BuildImageFunction
|
|
5
|
+
*/
|
|
6
|
+
export interface BuildImageFunctionProps extends lambda.FunctionOptions {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An AWS Lambda function which executes src/lambdas/build-image.
|
|
10
|
+
*/
|
|
11
|
+
export declare class BuildImageFunction extends lambda.Function {
|
|
12
|
+
constructor(scope: Construct, id: string, props?: BuildImageFunctionProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BuildImageFunction = void 0;
|
|
4
|
+
// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
|
+
/**
|
|
8
|
+
* An AWS Lambda function which executes src/lambdas/build-image.
|
|
9
|
+
*/
|
|
10
|
+
class BuildImageFunction extends lambda.Function {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, {
|
|
13
|
+
description: 'src/lambdas/build-image.lambda.ts',
|
|
14
|
+
...props,
|
|
15
|
+
runtime: new lambda.Runtime('nodejs14.x', lambda.RuntimeFamily.NODEJS),
|
|
16
|
+
handler: 'index.handler',
|
|
17
|
+
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/lambdas/build-image.lambda')),
|
|
18
|
+
});
|
|
19
|
+
this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.BuildImageFunction = BuildImageFunction;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtaW1hZ2UtZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGFtYmRhcy9idWlsZC1pbWFnZS1mdW5jdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2RUFBNkU7QUFDN0UsNkJBQTZCO0FBQzdCLGlEQUFpRDtBQVNqRDs7R0FFRztBQUNILE1BQWEsa0JBQW1CLFNBQVEsTUFBTSxDQUFDLFFBQVE7SUFDckQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxtQ0FBbUM7WUFDaEQsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUM7WUFDdEUsT0FBTyxFQUFFLGVBQWU7WUFDeEIsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHlDQUF5QyxDQUFDLENBQUM7U0FDN0YsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxxQ0FBcUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUMxRixDQUFDO0NBQ0Y7QUFYRCxnREFXQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIH5+IEdlbmVyYXRlZCBieSBwcm9qZW4uIFRvIG1vZGlmeSwgZWRpdCAucHJvamVucmMuanMgYW5kIHJ1biBcIm5weCBwcm9qZW5cIi5cbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBsYW1iZGEgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wcyBmb3IgQnVpbGRJbWFnZUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRJbWFnZUZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9sYW1iZGFzL2J1aWxkLWltYWdlLlxuICovXG5leHBvcnQgY2xhc3MgQnVpbGRJbWFnZUZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBCdWlsZEltYWdlRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvbGFtYmRhcy9idWlsZC1pbWFnZS5sYW1iZGEudHMnLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBydW50aW1lOiBuZXcgbGFtYmRhLlJ1bnRpbWUoJ25vZGVqczE0LngnLCBsYW1iZGEuUnVudGltZUZhbWlseS5OT0RFSlMpLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi8uLi9hc3NldHMvbGFtYmRhcy9idWlsZC1pbWFnZS5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.handler = void 0;
|
|
4
|
+
/* eslint-disable-next-line import/no-extraneous-dependencies */
|
|
5
|
+
const AWS = require("aws-sdk");
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
|
+
const codebuild = new AWS.CodeBuild();
|
|
8
|
+
const ecr = new AWS.ECR();
|
|
9
|
+
const ib = new AWS.Imagebuilder();
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-require-imports, import/no-extraneous-dependencies */
|
|
11
|
+
async function handler(event, context) {
|
|
12
|
+
try {
|
|
13
|
+
console.log(JSON.stringify({ ...event, ResponseURL: '...' }));
|
|
14
|
+
const deleteOnly = event.ResourceProperties.DeleteOnly;
|
|
15
|
+
const repoName = event.ResourceProperties.RepoName;
|
|
16
|
+
const projectName = event.ResourceProperties.ProjectName;
|
|
17
|
+
const ibName = event.ResourceProperties.ImageBuilderName;
|
|
18
|
+
// let physicalResourceId: string;
|
|
19
|
+
// let data: { [key: string]: string } = {};
|
|
20
|
+
switch (event.RequestType) {
|
|
21
|
+
case 'Create':
|
|
22
|
+
case 'Update':
|
|
23
|
+
if (deleteOnly) {
|
|
24
|
+
await helpers_1.customResourceRespond(event, 'SUCCESS', 'OK', 'Deleter', {});
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
console.log(`Starting CodeBuild project ${projectName}`);
|
|
28
|
+
await codebuild.startBuild({
|
|
29
|
+
projectName,
|
|
30
|
+
environmentVariablesOverride: [
|
|
31
|
+
{
|
|
32
|
+
type: 'PLAINTEXT',
|
|
33
|
+
name: 'STACK_ID',
|
|
34
|
+
value: event.StackId,
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
type: 'PLAINTEXT',
|
|
38
|
+
name: 'REQUEST_ID',
|
|
39
|
+
value: event.RequestId,
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'PLAINTEXT',
|
|
43
|
+
name: 'LOGICAL_RESOURCE_ID',
|
|
44
|
+
value: event.LogicalResourceId,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
type: 'PLAINTEXT',
|
|
48
|
+
name: 'RESPONSE_URL',
|
|
49
|
+
value: event.ResponseURL,
|
|
50
|
+
},
|
|
51
|
+
],
|
|
52
|
+
}).promise();
|
|
53
|
+
break;
|
|
54
|
+
case 'Delete':
|
|
55
|
+
const ecrImages = await ecr.listImages({ repositoryName: repoName, maxResults: 100 }).promise();
|
|
56
|
+
if (ecrImages.imageIds && ecrImages.imageIds.length > 0) {
|
|
57
|
+
await ecr.batchDeleteImage({
|
|
58
|
+
imageIds: ecrImages.imageIds.map(i => {
|
|
59
|
+
return { imageDigest: i.imageDigest };
|
|
60
|
+
}),
|
|
61
|
+
repositoryName: repoName,
|
|
62
|
+
}).promise();
|
|
63
|
+
}
|
|
64
|
+
if (ibName) {
|
|
65
|
+
const ibImages = await ib.listImages({ filters: [{ name: 'name', values: [ibName] }] }).promise();
|
|
66
|
+
if (ibImages.imageVersionList) {
|
|
67
|
+
for (const v of ibImages.imageVersionList) {
|
|
68
|
+
if (v.arn) {
|
|
69
|
+
const ibImageVersions = await ib.listImageBuildVersions({ imageVersionArn: v.arn }).promise();
|
|
70
|
+
if (ibImageVersions.imageSummaryList) {
|
|
71
|
+
for (const vs of ibImageVersions.imageSummaryList) {
|
|
72
|
+
if (vs.arn) {
|
|
73
|
+
console.log(`Deleting ${vs.arn}`);
|
|
74
|
+
await ib.deleteImage({ imageBuildVersionArn: vs.arn }).promise();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
await helpers_1.customResourceRespond(event, 'SUCCESS', 'OK', event.PhysicalResourceId, {});
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
console.error(e);
|
|
88
|
+
await helpers_1.customResourceRespond(event, 'FAILED', e.message || 'Internal Error', context.logStreamName, {});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.handler = handler;
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtaW1hZ2UubGFtYmRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xhbWJkYXMvYnVpbGQtaW1hZ2UubGFtYmRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLGdFQUFnRTtBQUNoRSwrQkFBK0I7QUFDL0IsdUNBQWtEO0FBRWxELE1BQU0sU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0FBQ3RDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sRUFBRSxHQUFHLElBQUksR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0FBR2xDLDZGQUE2RjtBQUN0RixLQUFLLFVBQVUsT0FBTyxDQUFDLEtBQWtELEVBQUUsT0FBMEI7SUFDMUcsSUFBSTtRQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFOUQsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFVBQWlDLENBQUM7UUFDOUUsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDO1FBQ3pELE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxnQkFBc0MsQ0FBQztRQUUvRSxrQ0FBa0M7UUFDbEMsNENBQTRDO1FBRTVDLFFBQVEsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUN6QixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUTtnQkFDWCxJQUFJLFVBQVUsRUFBRTtvQkFDZCxNQUFNLCtCQUFxQixDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUMs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T0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sK0JBQXFCLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRyxDQUFXLENBQUMsT0FBTyxJQUFJLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7S0FDbkg7QUFDSCxDQUFDO0FBbEZELDBCQWtGQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMsaW1wb3J0L25vLXVucmVzb2x2ZWQgKi9cbmltcG9ydCAqIGFzIEFXU0xhbWJkYSBmcm9tICdhd3MtbGFtYmRhJztcbi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbmltcG9ydCAqIGFzIEFXUyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCB7IGN1c3RvbVJlc291cmNlUmVzcG9uZCB9IGZyb20gJy4vaGVscGVycyc7XG5cbmNvbnN0IGNvZGVidWlsZCA9IG5ldyBBV1MuQ29kZUJ1aWxkKCk7XG5jb25zdCBlY3IgPSBuZXcgQVdTLkVDUigpO1xuY29uc3QgaWIgPSBuZXcgQVdTLkltYWdlYnVpbGRlcigpO1xuXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMsIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQ6IEFXU0xhbWJkYS5DbG91ZEZvcm1hdGlvbkN1c3RvbVJlc291cmNlRXZlbnQsIGNvbnRleHQ6IEFXU0xhbWJkYS5Db250ZXh0KSB7XG4gIHRyeSB7XG4gICAgY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoeyAuLi5ldmVudCwgUmVzcG9uc2VVUkw6ICcuLi4nIH0pKTtcblxuICAgIGNvbnN0IGRlbGV0ZU9ubHkgPSBldmVudC5SZXNvdXJjZVByb3BlcnRpZXMuRGVsZXRlT25seSBhcyBib29sZWFuIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IHJlcG9OYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlJlcG9OYW1lO1xuICAgIGNvbnN0IHByb2plY3ROYW1lID0gZXZlbnQuUmVzb3VyY2VQcm9wZXJ0aWVzLlByb2plY3ROYW1lO1xuICAgIGNvbnN0IGliTmFtZSA9IGV2ZW50LlJlc291cmNlUHJvcGVydGllcy5JbWFnZUJ1aWxkZXJOYW1lIGFzIHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICAgIC8vIGxldCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZztcbiAgICAvLyBsZXQgZGF0YTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgc3dpdGNoIChldmVudC5SZXF1ZXN0VHlwZSkge1xuICAgICAgY2FzZSAnQ3JlYXRlJzpcbiAgICAgIGNhc2UgJ1VwZGF0ZSc6XG4gICAgICAgIGlmIChkZWxldGVPbmx5KSB7XG4gICAgICAgICAgYXdhaXQgY3VzdG9tUmVzb3VyY2VSZXNwb25kKGV2ZW50LCAnU1VDQ0VTUycsICdPSycsICdEZWxldGVyJywge30pO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYFN0YXJ0aW5nIENvZGVCdWlsZCBwcm9qZWN0ICR7cHJvamVjdE5hbWV9YCk7XG4gICAgICAgIGF3YWl0IGNvZGVidWlsZC5zdGFydEJ1aWxkKHtcbiAgICAgICAgICBwcm9qZWN0TmFtZSxcbiAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlc092ZXJyaWRlOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQTEFJTlRFWFQnLFxuICAgICAgICAgICAgICBuYW1lOiAnU1RBQ0tfSUQnLFxuICAgICAgICAgICAgICB2YWx1ZTogZXZlbnQuU3RhY2tJZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHR5cGU6ICdQTEFJTlRFWFQnLFxuICAgICAgICAgICAgICBuYW1lOiAnUkVRVUVTVF9JRCcsXG4gICAgICAgICAgICAgIHZhbHVlOiBldmVudC5SZXF1ZXN0SWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnUExBSU5URVhUJyxcbiAgICAgICAgICAgICAgbmFtZTogJ0xPR0lDQUxfUkVTT1VSQ0VfSUQnLFxuICAgICAgICAgICAgICB2YWx1ZTogZXZlbnQuTG9naWNhbFJlc291cmNlSWQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0eXBlOiAnUExBSU5URVhUJyxcbiAgICAgICAgICAgICAgbmFtZTogJ1JFU1BPTlNFX1VSTCcsXG4gICAgICAgICAgICAgIHZhbHVlOiBldmVudC5SZXNwb25zZVVSTCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSkucHJvbWlzZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0RlbGV0ZSc6XG4gICAgICAgIGNvbnN0IGVjckltYWdlcyA9IGF3YWl0IGVjci5saXN0SW1hZ2VzKHsgcmVwb3NpdG9yeU5hbWU6IHJlcG9OYW1lLCBtYXhSZXN1bHRzOiAxMDAgfSkucHJvbWlzZSgpO1xuICAgICAgICBpZiAoZWNySW1hZ2VzLmltYWdlSWRzICYmIGVjckltYWdlcy5pbWFnZUlkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgYXdhaXQgZWNyLmJhdGNoRGVsZXRlSW1hZ2Uoe1xuICAgICAgICAgICAgaW1hZ2VJZHM6IGVjckltYWdlcy5pbWFnZUlkcy5tYXAoaSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiB7IGltYWdlRGlnZXN0OiBpLmltYWdlRGlnZXN0IH07XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHJlcG9zaXRvcnlOYW1lOiByZXBvTmFtZSxcbiAgICAgICAgICB9KS5wcm9taXNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGliTmFtZSkge1xuICAgICAgICAgIGNvbnN0IGliSW1hZ2VzID0gYXdhaXQgaWIubGlzdEltYWdlcyh7IGZpbHRlcnM6IFt7IG5hbWU6ICduYW1lJywgdmFsdWVzOiBbaWJOYW1lXSB9XSB9KS5wcm9taXNlKCk7XG4gICAgICAgICAgaWYgKGliSW1hZ2VzLmltYWdlVmVyc2lvbkxpc3QpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdiBvZiBpYkltYWdlcy5pbWFnZVZlcnNpb25MaXN0KSB7XG4gICAgICAgICAgICAgIGlmICh2LmFybikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGliSW1hZ2VWZXJzaW9ucyA9IGF3YWl0IGliLmxpc3RJbWFnZUJ1aWxkVmVyc2lvbnMoeyBpbWFnZVZlcnNpb25Bcm46IHYuYXJuIH0pLnByb21pc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoaWJJbWFnZVZlcnNpb25zLmltYWdlU3VtbWFyeUxpc3QpIHtcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdnMgb2YgaWJJbWFnZVZlcnNpb25zLmltYWdlU3VtbWFyeUxpc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZzLmFybikge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBEZWxldGluZyAke3ZzLmFybn1gKTtcbiAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBpYi5kZWxldGVJbWFnZSh7IGltYWdlQnVpbGRWZXJzaW9uQXJuOiB2cy5hcm4gfSkucHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGN1c3RvbVJlc291cmNlUmVzcG9uZChldmVudCwgJ1NVQ0NFU1MnLCAnT0snLCBldmVudC5QaHlzaWNhbFJlc291cmNlSWQsIHt9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgICBhd2FpdCBjdXN0b21SZXNvdXJjZVJlc3BvbmQoZXZlbnQsICdGQUlMRUQnLCAoZSBhcyBFcnJvcikubWVzc2FnZSB8fCAnSW50ZXJuYWwgRXJyb3InLCBjb250ZXh0LmxvZ1N0cmVhbU5hbWUsIHt9KTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as lambda from 'aws-cdk-lib/aws-lambda';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
/**
|
|
4
|
+
* Props for DeleteAmiFunction
|
|
5
|
+
*/
|
|
6
|
+
export interface DeleteAmiFunctionProps extends lambda.FunctionOptions {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* An AWS Lambda function which executes src/lambdas/delete-ami.
|
|
10
|
+
*/
|
|
11
|
+
export declare class DeleteAmiFunction extends lambda.Function {
|
|
12
|
+
constructor(scope: Construct, id: string, props?: DeleteAmiFunctionProps);
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteAmiFunction = void 0;
|
|
4
|
+
// ~~ Generated by projen. To modify, edit .projenrc.js and run "npx projen".
|
|
5
|
+
const path = require("path");
|
|
6
|
+
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
7
|
+
/**
|
|
8
|
+
* An AWS Lambda function which executes src/lambdas/delete-ami.
|
|
9
|
+
*/
|
|
10
|
+
class DeleteAmiFunction extends lambda.Function {
|
|
11
|
+
constructor(scope, id, props) {
|
|
12
|
+
super(scope, id, {
|
|
13
|
+
description: 'src/lambdas/delete-ami.lambda.ts',
|
|
14
|
+
...props,
|
|
15
|
+
runtime: new lambda.Runtime('nodejs14.x', lambda.RuntimeFamily.NODEJS),
|
|
16
|
+
handler: 'index.handler',
|
|
17
|
+
code: lambda.Code.fromAsset(path.join(__dirname, '../../assets/lambdas/delete-ami.lambda')),
|
|
18
|
+
});
|
|
19
|
+
this.addEnvironment('AWS_NODEJS_CONNECTION_REUSE_ENABLED', '1', { removeInEdge: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
exports.DeleteAmiFunction = DeleteAmiFunction;
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLWFtaS1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGFzL2RlbGV0ZS1hbWktZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkVBQTZFO0FBQzdFLDZCQUE2QjtBQUM3QixpREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLGlCQUFrQixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQ3BELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsa0NBQWtDO1lBQy9DLEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx3Q0FBd0MsQ0FBQyxDQUFDO1NBQzVGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxjQUFjLENBQUMscUNBQXFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDMUYsQ0FBQztDQUNGO0FBWEQsOENBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLmpzIGFuZCBydW4gXCJucHggcHJvamVuXCIuXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcHMgZm9yIERlbGV0ZUFtaUZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQW1pRnVuY3Rpb25Qcm9wcyBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbk9wdGlvbnMge1xufVxuXG4vKipcbiAqIEFuIEFXUyBMYW1iZGEgZnVuY3Rpb24gd2hpY2ggZXhlY3V0ZXMgc3JjL2xhbWJkYXMvZGVsZXRlLWFtaS5cbiAqL1xuZXhwb3J0IGNsYXNzIERlbGV0ZUFtaUZ1bmN0aW9uIGV4dGVuZHMgbGFtYmRhLkZ1bmN0aW9uIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBEZWxldGVBbWlGdW5jdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBkZXNjcmlwdGlvbjogJ3NyYy9sYW1iZGFzL2RlbGV0ZS1hbWkubGFtYmRhLnRzJyxcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcnVudGltZTogbmV3IGxhbWJkYS5SdW50aW1lKCdub2RlanMxNC54JywgbGFtYmRhLlJ1bnRpbWVGYW1pbHkuTk9ERUpTKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vLi4vYXNzZXRzL2xhbWJkYXMvZGVsZXRlLWFtaS5sYW1iZGEnKSksXG4gICAgfSk7XG4gICAgdGhpcy5hZGRFbnZpcm9ubWVudCgnQVdTX05PREVKU19DT05ORUNUSU9OX1JFVVNFX0VOQUJMRUQnLCAnMScsIHsgcmVtb3ZlSW5FZGdlOiB0cnVlIH0pO1xuICB9XG59Il19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|