@cloudsnorkel/cdk-github-runners 0.12.2 → 0.12.4

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.
Files changed (31) hide show
  1. package/.jsii +116 -20
  2. package/API.md +84 -1
  3. package/assets/delete-failed-runner.lambda/index.js +15 -6
  4. package/assets/idle-runner-repear.lambda/index.js +15 -6
  5. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +15 -6
  6. package/assets/setup.lambda/index.html +1 -1
  7. package/assets/status.lambda/index.js +15 -6
  8. package/assets/token-retriever.lambda/index.js +15 -6
  9. package/assets/webhook-handler.lambda/index.js +15 -6
  10. package/lib/access.js +1 -1
  11. package/lib/image-builders/api.js +1 -1
  12. package/lib/image-builders/aws-image-builder/builder.d.ts +39 -0
  13. package/lib/image-builders/aws-image-builder/builder.js +70 -8
  14. package/lib/image-builders/aws-image-builder/deprecated/ami.js +1 -1
  15. package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
  16. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  17. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  18. package/lib/image-builders/codebuild-deprecated.js +1 -1
  19. package/lib/image-builders/codebuild.d.ts +1 -1
  20. package/lib/image-builders/codebuild.js +25 -3
  21. package/lib/image-builders/components.js +1 -1
  22. package/lib/image-builders/static.js +1 -1
  23. package/lib/providers/codebuild.js +2 -2
  24. package/lib/providers/common.js +3 -3
  25. package/lib/providers/ec2.js +2 -2
  26. package/lib/providers/ecs.js +1 -1
  27. package/lib/providers/fargate.js +2 -2
  28. package/lib/providers/lambda.js +2 -2
  29. package/lib/runner.js +1 -1
  30. package/lib/secrets.js +1 -1
  31. package/package.json +19 -19
@@ -5755,8 +5755,11 @@ var require_re = __commonJS({
5755
5755
  createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
5756
5756
  createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
5757
5757
  createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
5758
- createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`);
5758
+ createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
5759
+ createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
5760
+ createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
5759
5761
  createToken("COERCERTL", src[t.COERCE], true);
5762
+ createToken("COERCERTLFULL", src[t.COERCEFULL], true);
5760
5763
  createToken("LONETILDE", "(?:~>?)");
5761
5764
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
5762
5765
  exports2.tildeTrimReplace = "$1~";
@@ -6417,21 +6420,27 @@ var require_coerce = __commonJS({
6417
6420
  options = options || {};
6418
6421
  let match = null;
6419
6422
  if (!options.rtl) {
6420
- match = version.match(re[t.COERCE]);
6423
+ match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
6421
6424
  } else {
6425
+ const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
6422
6426
  let next;
6423
- while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6427
+ while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6424
6428
  if (!match || next.index + next[0].length !== match.index + match[0].length) {
6425
6429
  match = next;
6426
6430
  }
6427
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
6431
+ coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
6428
6432
  }
6429
- re[t.COERCERTL].lastIndex = -1;
6433
+ coerceRtlRegex.lastIndex = -1;
6430
6434
  }
6431
6435
  if (match === null) {
6432
6436
  return null;
6433
6437
  }
6434
- return parse(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
6438
+ const major = match[2];
6439
+ const minor = match[3] || "0";
6440
+ const patch = match[4] || "0";
6441
+ const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
6442
+ const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
6443
+ return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
6435
6444
  };
6436
6445
  module2.exports = coerce;
6437
6446
  }
@@ -5755,8 +5755,11 @@ var require_re = __commonJS({
5755
5755
  createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
5756
5756
  createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
5757
5757
  createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
5758
- createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`);
5758
+ createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
5759
+ createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
5760
+ createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
5759
5761
  createToken("COERCERTL", src[t.COERCE], true);
5762
+ createToken("COERCERTLFULL", src[t.COERCEFULL], true);
5760
5763
  createToken("LONETILDE", "(?:~>?)");
5761
5764
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
5762
5765
  exports2.tildeTrimReplace = "$1~";
@@ -6417,21 +6420,27 @@ var require_coerce = __commonJS({
6417
6420
  options = options || {};
6418
6421
  let match = null;
6419
6422
  if (!options.rtl) {
6420
- match = version.match(re[t.COERCE]);
6423
+ match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
6421
6424
  } else {
6425
+ const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
6422
6426
  let next;
6423
- while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6427
+ while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6424
6428
  if (!match || next.index + next[0].length !== match.index + match[0].length) {
6425
6429
  match = next;
6426
6430
  }
6427
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
6431
+ coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
6428
6432
  }
6429
- re[t.COERCERTL].lastIndex = -1;
6433
+ coerceRtlRegex.lastIndex = -1;
6430
6434
  }
6431
6435
  if (match === null) {
6432
6436
  return null;
6433
6437
  }
6434
- return parse(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
6438
+ const major = match[2];
6439
+ const minor = match[3] || "0";
6440
+ const patch = match[4] || "0";
6441
+ const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
6442
+ const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
6443
+ return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
6435
6444
  };
6436
6445
  module2.exports = coerce;
6437
6446
  }
@@ -5755,8 +5755,11 @@ var require_re = __commonJS({
5755
5755
  createToken("XRANGEPLAINLOOSE", `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})(?:${src[t.PRERELEASELOOSE]})?${src[t.BUILD]}?)?)?`);
5756
5756
  createToken("XRANGE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`);
5757
5757
  createToken("XRANGELOOSE", `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`);
5758
- createToken("COERCE", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:$|[^\\d])`);
5758
+ createToken("COERCEPLAIN", `${"(^|[^\\d])(\\d{1,"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);
5759
+ createToken("COERCE", `${src[t.COERCEPLAIN]}(?:$|[^\\d])`);
5760
+ createToken("COERCEFULL", src[t.COERCEPLAIN] + `(?:${src[t.PRERELEASE]})?(?:${src[t.BUILD]})?(?:$|[^\\d])`);
5759
5761
  createToken("COERCERTL", src[t.COERCE], true);
5762
+ createToken("COERCERTLFULL", src[t.COERCEFULL], true);
5760
5763
  createToken("LONETILDE", "(?:~>?)");
5761
5764
  createToken("TILDETRIM", `(\\s*)${src[t.LONETILDE]}\\s+`, true);
5762
5765
  exports2.tildeTrimReplace = "$1~";
@@ -6417,21 +6420,27 @@ var require_coerce = __commonJS({
6417
6420
  options = options || {};
6418
6421
  let match = null;
6419
6422
  if (!options.rtl) {
6420
- match = version.match(re[t.COERCE]);
6423
+ match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE]);
6421
6424
  } else {
6425
+ const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL];
6422
6426
  let next;
6423
- while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6427
+ while ((next = coerceRtlRegex.exec(version)) && (!match || match.index + match[0].length !== version.length)) {
6424
6428
  if (!match || next.index + next[0].length !== match.index + match[0].length) {
6425
6429
  match = next;
6426
6430
  }
6427
- re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
6431
+ coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length;
6428
6432
  }
6429
- re[t.COERCERTL].lastIndex = -1;
6433
+ coerceRtlRegex.lastIndex = -1;
6430
6434
  }
6431
6435
  if (match === null) {
6432
6436
  return null;
6433
6437
  }
6434
- return parse(`${match[2]}.${match[3] || "0"}.${match[4] || "0"}`, options);
6438
+ const major = match[2];
6439
+ const minor = match[3] || "0";
6440
+ const patch = match[4] || "0";
6441
+ const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : "";
6442
+ const build = options.includePrerelease && match[6] ? `+${match[6]}` : "";
6443
+ return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options);
6435
6444
  };
6436
6445
  module2.exports = coerce;
6437
6446
  }
package/lib/access.js CHANGED
@@ -59,7 +59,7 @@ class LambdaAccess {
59
59
  }
60
60
  exports.LambdaAccess = LambdaAccess;
61
61
  _a = JSII_RTTI_SYMBOL_1;
62
- LambdaAccess[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.LambdaAccess", version: "0.12.2" };
62
+ LambdaAccess[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.LambdaAccess", version: "0.12.4" };
63
63
  /**
64
64
  * @internal
65
65
  */
@@ -43,5 +43,5 @@ class RunnerImageBuilder extends common_1.RunnerImageBuilderBase {
43
43
  }
44
44
  exports.RunnerImageBuilder = RunnerImageBuilder;
45
45
  _a = JSII_RTTI_SYMBOL_1;
46
- RunnerImageBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder", version: "0.12.2" };
46
+ RunnerImageBuilder[_a] = { fqn: "@cloudsnorkel/cdk-github-runners.RunnerImageBuilder", version: "0.12.4" };
47
47
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltYWdlLWJ1aWxkZXJzL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwQztBQUUxQywyREFBd0U7QUFDeEUsMkNBQTBEO0FBQzFELHFDQUFvSTtBQUNwSSw0Q0FBa0M7QUFFbEM7Ozs7OztHQU1HO0FBQ0gsTUFBc0Isa0JBQW1CLFNBQVEsK0JBQXNCO0lBQ3JFOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN0RSxJQUFJLEtBQUssRUFBRSxVQUFVLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdDLHlCQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxrSEFBa0gsQ0FBQyxDQUFDO1FBQ3ZKLENBQUM7UUFFRCxJQUFJLEtBQUssRUFBRSxXQUFXLEtBQUssK0JBQXNCLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDN0QsT0FBTyxJQUFJLHVDQUEyQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksS0FBSyxFQUFFLFdBQVcsS0FBSywrQkFBc0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNFLE9BQU8sSUFBSSxxREFBaUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxNQUFNLEVBQUUsR0FBRyxLQUFLLEVBQUUsRUFBRSxJQUFJLGNBQUUsQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDdEYsT0FBTyxJQUFJLHVDQUEyQixDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDM0QsQ0FBQzthQUFNLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUkscURBQWlDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNqRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFDSCxDQUFDOztBQXZCSCxnREF3QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQXdzSW1hZ2VCdWlsZGVyUnVubmVySW1hZ2VCdWlsZGVyIH0gZnJvbSAnLi9hd3MtaW1hZ2UtYnVpbGRlcic7XG5pbXBvcnQgeyBDb2RlQnVpbGRSdW5uZXJJbWFnZUJ1aWxkZXIgfSBmcm9tICcuL2NvZGVidWlsZCc7XG5pbXBvcnQgeyBJQ29uZmlndXJhYmxlUnVubmVySW1hZ2VCdWlsZGVyLCBSdW5uZXJJbWFnZUJ1aWxkZXJCYXNlLCBSdW5uZXJJbWFnZUJ1aWxkZXJQcm9wcywgUnVubmVySW1hZ2VCdWlsZGVyVHlwZSB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCB7IE9zIH0gZnJvbSAnLi4vcHJvdmlkZXJzJztcblxuLyoqXG4gKiBHaXRIdWIgUnVubmVyIGltYWdlIGJ1aWxkZXIuIEJ1aWxkcyBhIERvY2tlciBpbWFnZSBvciBBTUkgd2l0aCBHaXRIdWIgUnVubmVyIGFuZCBvdGhlciByZXF1aXJlbWVudHMgaW5zdGFsbGVkLlxuICpcbiAqIEltYWdlcyBjYW4gYmUgY3VzdG9taXplZCBiZWZvcmUgcGFzc2VkIGludG8gdGhlIHByb3ZpZGVyIGJ5IGFkZGluZyBvciByZW1vdmluZyBjb21wb25lbnRzIHRvIGJlIGluc3RhbGxlZC5cbiAqXG4gKiBJbWFnZXMgYXJlIHJlYnVpbHQgZXZlcnkgd2VlayBieSBkZWZhdWx0IHRvIGVuc3VyZSB0aGF0IHRoZSBsYXRlc3Qgc2VjdXJpdHkgcGF0Y2hlcyBhcmUgYXBwbGllZC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1bm5lckltYWdlQnVpbGRlciBleHRlbmRzIFJ1bm5lckltYWdlQnVpbGRlckJhc2Uge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGltYWdlIGJ1aWxkZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHByb3BlcnRpZXMuIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIGRpZmZlciBiYXNlZCBvbiB0aGUgT1MsIGFyY2hpdGVjdHVyZSwgYW5kIHJlcXVlc3RlZCBidWlsZGVyIHR5cGUuXG4gICAqL1xuICBzdGF0aWMgbmV3KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogUnVubmVySW1hZ2VCdWlsZGVyUHJvcHMpOiBJQ29uZmlndXJhYmxlUnVubmVySW1hZ2VCdWlsZGVyIHtcbiAgICBpZiAocHJvcHM/LmNvbXBvbmVudHMgJiYgcHJvcHMucnVubmVyVmVyc2lvbikge1xuICAgICAgQW5ub3RhdGlvbnMub2Yoc2NvcGUpLmFkZFdhcm5pbmcoJ3J1bm5lclZlcnNpb24gaXMgaWdub3JlZCB3aGVuIGNvbXBvbmVudHMgYXJlIHNwZWNpZmllZC4gVGhlIHJ1bm5lciB2ZXJzaW9uIHdpbGwgYmUgZGV0ZXJtaW5lZCBieSB0aGUgY29tcG9uZW50cy4nKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHM/LmJ1aWxkZXJUeXBlID09PSBSdW5uZXJJbWFnZUJ1aWxkZXJUeXBlLkNPREVfQlVJTEQpIHtcbiAgICAgIHJldHVybiBuZXcgQ29kZUJ1aWxkUnVubmVySW1hZ2VCdWlsZGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIH0gZWxzZSBpZiAocHJvcHM/LmJ1aWxkZXJUeXBlID09PSBSdW5uZXJJbWFnZUJ1aWxkZXJUeXBlLkFXU19JTUFHRV9CVUlMREVSKSB7XG4gICAgICByZXR1cm4gbmV3IEF3c0ltYWdlQnVpbGRlclJ1bm5lckltYWdlQnVpbGRlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB9XG5cbiAgICBjb25zdCBvcyA9IHByb3BzPy5vcyA/PyBPcy5MSU5VWF9VQlVOVFU7XG4gICAgaWYgKG9zLmlzKE9zLkxJTlVYX1VCVU5UVSkgfHwgb3MuaXMoT3MuTElOVVhfQU1BWk9OXzIpIHx8IG9zLmlzKE9zLkxJTlVYX0FNQVpPTl8yMDIzKSkge1xuICAgICAgcmV0dXJuIG5ldyBDb2RlQnVpbGRSdW5uZXJJbWFnZUJ1aWxkZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgfSBlbHNlIGlmIChvcy5pcyhPcy5XSU5ET1dTKSkge1xuICAgICAgcmV0dXJuIG5ldyBBd3NJbWFnZUJ1aWxkZXJSdW5uZXJJbWFnZUJ1aWxkZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGZpbmQgcnVubmVyIGltYWdlIGJ1aWxkZXIgaW1wbGVtZW50YXRpb24gZm9yICR7b3MubmFtZX1gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -11,6 +11,44 @@ export interface AwsImageBuilderRunnerImageBuilderProps {
11
11
  * @default m5.large
12
12
  */
13
13
  readonly instanceType?: ec2.InstanceType;
14
+ /**
15
+ * Options for fast launch.
16
+ *
17
+ * This is only supported for Windows AMIs.
18
+ *
19
+ * @default disabled
20
+ */
21
+ readonly fastLaunchOptions?: FastLaunchOptions;
22
+ }
23
+ /**
24
+ * Options for fast launch.
25
+ */
26
+ export interface FastLaunchOptions {
27
+ /**
28
+ * Enable fast launch for AMIs generated by this builder. It creates a snapshot of the root volume and uses it to launch new instances faster.
29
+ *
30
+ * This is only supported for Windows AMIs.
31
+ *
32
+ * @note this feature comes with additional resource costs. See the documentation for more details. https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/win-fast-launch-manage-costs.html
33
+ * @note enabling fast launch on an existing builder will not enable it for existing AMIs. It will only affect new AMIs. If you want immediate effect, trigger a new image build. Alternatively, you can create a new builder with fast launch enabled and use it for new AMIs.
34
+ *
35
+ * @default false
36
+ */
37
+ readonly enabled?: boolean;
38
+ /**
39
+ * The maximum number of parallel instances that are launched for creating resources.
40
+ *
41
+ * Must be at least 6.
42
+ *
43
+ * @default 6
44
+ */
45
+ readonly maxParallelLaunches?: number;
46
+ /**
47
+ * The number of pre-provisioned snapshots to keep on hand for a fast-launch enabled Windows AMI.
48
+ *
49
+ * @default 1
50
+ */
51
+ readonly targetResourceCount?: number;
14
52
  }
15
53
  /**
16
54
  * An asset including file or directory to place inside the built image.
@@ -116,6 +154,7 @@ export declare class AwsImageBuilderRunnerImageBuilder extends RunnerImageBuilde
116
154
  private readonly instanceType;
117
155
  private infrastructure;
118
156
  private readonly role;
157
+ private readonly fastLaunchOptions?;
119
158
  constructor(scope: Construct, id: string, props?: RunnerImageBuilderProps);
120
159
  private platform;
121
160
  /**