@mavogel/cdk-vscode-server 0.0.62 → 0.0.64
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/.jsii +124 -178
- package/API.md +105 -200
- package/CLAUDE.md +288 -58
- package/README.md +40 -2
- package/assets/idle-monitor-enabler/idle-monitor-enabler.lambda/index.js +67 -0
- package/assets/installer/installer.lambda/index.js +67 -30
- package/awslint.json +5 -0
- package/examples/auto-stop/main.ts +1 -1
- package/examples/custom/main.ts +1 -1
- package/examples/git-repo/main.ts +30 -0
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.assets.json +2 -2
- package/integ-tests/integ.al2023.ts.snapshot/IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json +1 -1
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.assets.json +8 -8
- package/integ-tests/integ.al2023.ts.snapshot/IntegTestStackAl2023.template.json +257 -94
- package/integ-tests/{integ.stop-on-idle.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda → integ.al2023.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda}/index.js +67 -30
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4 → integ.al2023.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9}/index.js +50 -25
- package/integ-tests/integ.al2023.ts.snapshot/integ.json +1 -1
- package/integ-tests/integ.al2023.ts.snapshot/manifest.json +19 -3
- package/integ-tests/integ.al2023.ts.snapshot/tree.json +1 -1
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegSetupVSCodeOnCustomDomainDefaultTestDeployAssert6982D514.assets.json +2 -2
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegSetupVSCodeOnCustomDomainDefaultTestDeployAssert6982D514.template.json +1 -1
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegTestStackCustomDomain.assets.json +8 -8
- package/integ-tests/integ.custom-domain.ts.snapshot/IntegTestStackCustomDomain.template.json +273 -97
- package/integ-tests/{integ.ubuntu.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda → integ.custom-domain.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda}/index.js +67 -30
- package/integ-tests/{integ.al2023.ts.snapshot/asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4 → integ.custom-domain.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9}/index.js +50 -25
- package/integ-tests/integ.custom-domain.ts.snapshot/integ.json +1 -1
- package/integ-tests/integ.custom-domain.ts.snapshot/manifest.json +25 -6
- package/integ-tests/integ.custom-domain.ts.snapshot/tree.json +1 -1
- package/integ-tests/integ.stop-on-idle.ts +1 -4
- package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegStopOnIdleFunctionalityDefaultTestDeployAssertEECF3FC0.assets.json +2 -2
- package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegStopOnIdleFunctionalityDefaultTestDeployAssertEECF3FC0.template.json +4 -4
- package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegTestStackStopOnIdle.assets.json +23 -9
- package/integ-tests/integ.stop-on-idle.ts.snapshot/IntegTestStackStopOnIdle.template.json +758 -197
- package/integ-tests/integ.stop-on-idle.ts.snapshot/asset.22c8a6c357b704e370bef317ae1b52c59f684aa7640422a3d1dfe813d1f77853.lambda/index.js +67 -0
- package/integ-tests/{integ.custom-domain.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda → integ.stop-on-idle.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda}/index.js +67 -30
- package/integ-tests/integ.stop-on-idle.ts.snapshot/manifest.json +363 -76
- package/integ-tests/integ.stop-on-idle.ts.snapshot/tree.json +1 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +2 -2
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +1 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.assets.json +8 -8
- package/integ-tests/integ.ubuntu.ts.snapshot/IntegTestStackUbuntu22.template.json +273 -97
- package/integ-tests/{integ.al2023.ts.snapshot/asset.33da23274e25bd9f43638c5d83dad26e3931cbe78d462ffd9a9f565e948b4f5f.lambda → integ.ubuntu.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda}/index.js +67 -30
- package/integ-tests/{integ.custom-domain.ts.snapshot/asset.0ad50fc42afd768c3d0bfdd4701e43284fb077a25f19eea1e8c51a5ca36ebfe4 → integ.ubuntu.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9}/index.js +50 -25
- package/integ-tests/integ.ubuntu.ts.snapshot/integ.json +1 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/manifest.json +25 -6
- package/integ-tests/integ.ubuntu.ts.snapshot/tree.json +1 -1
- package/integ-tests/integ.ubuntu24.ts +69 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.assets.json +33 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/IntegSetupVSCodeOnUbuntuDefaultTestDeployAssertFF8DF2C5.template.json +337 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/IntegTestStackUbuntu24.assets.json +118 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/IntegTestStackUbuntu24.template.json +2725 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda/index.js +180 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle/index.js +30676 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/index.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00/index.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/consts.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9/index.js +6017 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/integ.json +23 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/manifest.json +1473 -0
- package/integ-tests/integ.ubuntu24.ts.snapshot/tree.json +1 -0
- package/integ-tests/integ.ubuntu25.ts +69 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/IntegSetupVSCodeOnUbuntu25DefaultTestDeployAssert48DBCF35.assets.json +33 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/IntegSetupVSCodeOnUbuntu25DefaultTestDeployAssert48DBCF35.template.json +337 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/IntegTestStackUbuntu25.assets.json +118 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/IntegTestStackUbuntu25.template.json +2725 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.2819175352ad1ce0dae768e83fc328fb70fb5f10b4a8ff0ccbcb791f02b0716d/index.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda/index.js +180 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.530055f7515b3f0a47900f5df37e729ba40ca977b2d07b952bdefa2b8f883f42.bundle/index.js +30676 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.781ab0ab74634cdaf61539ab208ab777829ef07097ac21f95b9e15a3b1eedc1b.lambda/index.js +57 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/__entrypoint__.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.7fa1e366ee8a9ded01fc355f704cff92bfd179574e6f9cfee800a3541df1b200/index.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.9d043014be736e8162bcc7ec5590cc6d2ff24fd0d9c73a5c5d595151c5fdad00/index.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/cfn-response.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/consts.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/framework.js +3 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/outbound.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.bdc104ed9cab1b5b6421713c8155f0b753380595356f710400609664d3635eca/util.js +1 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9/index.js +6017 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/integ.json +23 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/manifest.json +1473 -0
- package/integ-tests/integ.ubuntu25.ts.snapshot/tree.json +1 -0
- package/lib/idle-monitor/idle-monitor-function.js +2 -2
- package/lib/idle-monitor/idle-monitor.js +5 -2
- package/lib/idle-monitor-enabler/idle-monitor-enabler-function.d.ts +13 -0
- package/lib/idle-monitor-enabler/idle-monitor-enabler-function.js +22 -0
- package/lib/idle-monitor-enabler/idle-monitor-enabler.d.ts +25 -0
- package/lib/idle-monitor-enabler/idle-monitor-enabler.js +76 -0
- package/lib/idle-monitor-enabler/idle-monitor-enabler.lambda.d.ts +9 -0
- package/lib/idle-monitor-enabler/idle-monitor-enabler.lambda.js +48 -0
- package/lib/index.d.ts +0 -1
- package/lib/index.js +1 -2
- package/lib/installer/installer-function.js +2 -2
- package/lib/installer/installer.d.ts +105 -0
- package/lib/installer/installer.js +659 -301
- package/lib/installer/installer.lambda.js +64 -30
- package/lib/mappings.js +11 -3
- package/lib/secret-retriever/secret-retriever-function.js +2 -2
- package/lib/vscode-server.d.ts +45 -1
- package/lib/vscode-server.js +35 -5
- package/package.json +12 -12
- package/.claude/hooks/file_checker.sh +0 -178
- package/.qlty/.gitignore +0 -7
- package/.qlty/configs/.yamllint.yaml +0 -21
- package/.qlty/qlty.toml +0 -115
- package/assets/status-check/status-check.lambda/index.js +0 -123
- package/integ-tests/integ.al2023.ts.snapshot/cdk.out +0 -1
- package/integ-tests/integ.al2023.ts.snapshot/read.13497.1.lock +0 -1
- package/integ-tests/integ.custom-domain.ts.snapshot/read.13497.1.lock +0 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/cdk.out +0 -1
- package/integ-tests/integ.ubuntu.ts.snapshot/read.13497.1.lock +0 -1
- package/lib/status-check/status-check-function.d.ts +0 -13
- package/lib/status-check/status-check-function.js +0 -22
- package/lib/status-check/status-check.d.ts +0 -36
- package/lib/status-check/status-check.js +0 -109
- package/lib/status-check/status-check.lambda.d.ts +0 -2
- package/lib/status-check/status-check.lambda.js +0 -104
|
@@ -59,47 +59,89 @@ var handler = async (event, context) => {
|
|
|
59
59
|
parameters[key] = [value];
|
|
60
60
|
}
|
|
61
61
|
console.log("mapped parameters: %j", parameters);
|
|
62
|
-
let attemptNo = 0;
|
|
63
|
-
let timeRemaining = context.getRemainingTimeInMillis();
|
|
64
62
|
console.log(
|
|
65
63
|
`Running SSM Document '${documentName}' on EC2 instance '${instanceId}'. Logging to '${cloudWatchLogGroupName}' with parameters: '${JSON.stringify(parameters)}'`
|
|
66
64
|
);
|
|
65
|
+
let commandId;
|
|
66
|
+
let attemptNo = 0;
|
|
67
67
|
while (true) {
|
|
68
68
|
attemptNo += 1;
|
|
69
|
+
const timeRemaining = context.getRemainingTimeInMillis();
|
|
69
70
|
console.log(
|
|
70
|
-
`
|
|
71
|
+
`Send attempt: ${attemptNo}. Time Remaining: ${timeRemaining / 1e3}s`
|
|
71
72
|
);
|
|
72
73
|
try {
|
|
73
|
-
const response = await ssm.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
const response = await ssm.send(
|
|
75
|
+
new import_client_ssm.SendCommandCommand({
|
|
76
|
+
DocumentName: documentName,
|
|
77
|
+
InstanceIds: [instanceId],
|
|
78
|
+
CloudWatchOutputConfig: {
|
|
79
|
+
CloudWatchLogGroupName: cloudWatchLogGroupName,
|
|
80
|
+
CloudWatchOutputEnabled: true
|
|
81
|
+
},
|
|
82
|
+
Parameters: parameters
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
console.log(`sendCommand response: ${JSON.stringify(response)}`);
|
|
83
86
|
const command = response.Command;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
+
commandId = command.CommandId;
|
|
88
|
+
console.log(`Command sent successfully. CommandId: ${commandId}`);
|
|
89
|
+
break;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.log("Error sending command:", error);
|
|
92
|
+
const isUnauthorized = error.name === "UnauthorizedException" || error.name === "AccessDeniedException" || error.message && error.message.includes("not authorized");
|
|
93
|
+
const isThrottled = error.name === "ThrottlingException" || error.name === "TooManyRequestsException";
|
|
94
|
+
const isRetryable = isUnauthorized || isThrottled;
|
|
95
|
+
const remainingTime = context.getRemainingTimeInMillis();
|
|
96
|
+
if (isRetryable && remainingTime > SLEEP_MS) {
|
|
97
|
+
console.log(
|
|
98
|
+
`Retryable error encountered (${error.name}). Attempt ${attemptNo}. Sleeping: ${SLEEP_MS / 1e3}s before retry`
|
|
99
|
+
);
|
|
100
|
+
await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
|
|
101
|
+
} else {
|
|
102
|
+
console.log("Non-retryable error or timeout. Failing...");
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
let pollAttemptNo = 0;
|
|
108
|
+
const responseData = { CommandId: commandId };
|
|
109
|
+
while (true) {
|
|
110
|
+
pollAttemptNo += 1;
|
|
111
|
+
const timeRemaining = context.getRemainingTimeInMillis();
|
|
112
|
+
console.log(
|
|
113
|
+
`Poll attempt: ${pollAttemptNo}. Time Remaining: ${timeRemaining / 1e3}s`
|
|
114
|
+
);
|
|
115
|
+
try {
|
|
116
|
+
const invocationResponse = await ssm.send(
|
|
117
|
+
new import_client_ssm.GetCommandInvocationCommand({
|
|
118
|
+
CommandId: commandId,
|
|
119
|
+
InstanceId: instanceId
|
|
120
|
+
})
|
|
121
|
+
);
|
|
122
|
+
console.log(
|
|
123
|
+
`getCommandInvocation response: ${JSON.stringify(invocationResponse)}`
|
|
124
|
+
);
|
|
125
|
+
const status = invocationResponse.Status;
|
|
126
|
+
switch (status) {
|
|
87
127
|
case "Pending":
|
|
88
128
|
case "InProgress":
|
|
89
|
-
|
|
129
|
+
case "Delayed":
|
|
90
130
|
if (timeRemaining > SLEEP_MS) {
|
|
91
131
|
console.log(
|
|
92
|
-
`
|
|
132
|
+
`Command ${commandId} status: '${status}'. Sleeping: ${SLEEP_MS / 1e3}s`
|
|
93
133
|
);
|
|
94
134
|
await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
|
|
95
135
|
break;
|
|
96
136
|
} else {
|
|
97
137
|
throw new Error(
|
|
98
|
-
`SSM Document ${documentName} on EC2 instance ${instanceId} timed out while lambda
|
|
138
|
+
`SSM Document ${documentName} on EC2 instance ${instanceId} timed out while lambda waiting (status: ${status})`
|
|
99
139
|
);
|
|
100
140
|
}
|
|
101
141
|
case "Success":
|
|
102
|
-
console.log(
|
|
142
|
+
console.log(
|
|
143
|
+
`Instance ${instanceId} successfully bootstrapped. Command ${commandId} completed.`
|
|
144
|
+
);
|
|
103
145
|
return { Data: responseData };
|
|
104
146
|
case "TimedOut":
|
|
105
147
|
throw new Error(
|
|
@@ -115,23 +157,18 @@ var handler = async (event, context) => {
|
|
|
115
157
|
);
|
|
116
158
|
default:
|
|
117
159
|
throw new Error(
|
|
118
|
-
`SSM Document ${documentName} on EC2 instance ${instanceId} status ${
|
|
160
|
+
`SSM Document ${documentName} on EC2 instance ${instanceId} unknown status: ${status}`
|
|
119
161
|
);
|
|
120
162
|
}
|
|
121
|
-
return { Data: responseData };
|
|
122
163
|
} catch (error) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
const isThrottled = error.name === "ThrottlingException" || error.name === "TooManyRequestsException";
|
|
126
|
-
const isRetryable = isUnauthorized || isThrottled;
|
|
127
|
-
timeRemaining = context.getRemainingTimeInMillis();
|
|
128
|
-
if (isRetryable && timeRemaining > SLEEP_MS) {
|
|
164
|
+
const remainingTime = context.getRemainingTimeInMillis();
|
|
165
|
+
if (error.name === "InvocationDoesNotExist" && remainingTime > SLEEP_MS) {
|
|
129
166
|
console.log(
|
|
130
|
-
`
|
|
167
|
+
`Invocation not yet available. Sleeping: ${SLEEP_MS / 1e3}s`
|
|
131
168
|
);
|
|
132
169
|
await new Promise((resolve) => setTimeout(resolve, SLEEP_MS));
|
|
133
170
|
} else {
|
|
134
|
-
console.log("
|
|
171
|
+
console.log("Error checking command status:", error);
|
|
135
172
|
throw error;
|
|
136
173
|
}
|
|
137
174
|
}
|
package/awslint.json
ADDED
|
@@ -37,7 +37,7 @@ export class AutoStopExampleStack extends Stack {
|
|
|
37
37
|
instanceClass: ec2.InstanceClass.M7G,
|
|
38
38
|
instanceSize: ec2.InstanceSize.XLARGE,
|
|
39
39
|
instanceVolumeSize: 40,
|
|
40
|
-
instanceOperatingSystem: LinuxFlavorType.
|
|
40
|
+
instanceOperatingSystem: LinuxFlavorType.UBUNTU_24,
|
|
41
41
|
instanceCpuArchitecture: LinuxArchitectureType.ARM,
|
|
42
42
|
|
|
43
43
|
// 🔥 Auto-Stop Configuration
|
package/examples/custom/main.ts
CHANGED
|
@@ -17,7 +17,7 @@ export class MyStack extends Stack {
|
|
|
17
17
|
instanceVolumeSize: 8,
|
|
18
18
|
instanceClass: ec2.InstanceClass.M7G,
|
|
19
19
|
instanceSize: ec2.InstanceSize.LARGE,
|
|
20
|
-
instanceOperatingSystem: LinuxFlavorType.
|
|
20
|
+
instanceOperatingSystem: LinuxFlavorType.UBUNTU_24,
|
|
21
21
|
instanceCpuArchitecture: LinuxArchitectureType.ARM,
|
|
22
22
|
|
|
23
23
|
// 👇🏽 or if you want to give the InstanceRole more permissions
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { App, Stack, StackProps } from 'aws-cdk-lib';
|
|
2
|
+
import { Construct } from 'constructs';
|
|
3
|
+
import { VSCodeServer } from '../../src/index'
|
|
4
|
+
|
|
5
|
+
export class MyStack extends Stack {
|
|
6
|
+
constructor(scope: Construct, id: string, props: StackProps = {}) {
|
|
7
|
+
super(scope, id, props);
|
|
8
|
+
|
|
9
|
+
new VSCodeServer(this, 'vscode', {
|
|
10
|
+
// Clone a git repository into the home folder during instance setup
|
|
11
|
+
// Perfect for workshops, training sessions, or development environments
|
|
12
|
+
repoUrl: 'https://github.com/aws-samples/aws-cdk-examples.git',
|
|
13
|
+
|
|
14
|
+
// Optional: customize the home folder path (default: /Workshop)
|
|
15
|
+
homeFolder: '/CdkWorkshop',
|
|
16
|
+
|
|
17
|
+
// Optional: specify VS Code user (default: vscode-user)
|
|
18
|
+
vscodeUser: 'workshop-user',
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const env = {
|
|
24
|
+
account: '123456789912',
|
|
25
|
+
region: 'eu-central-1',
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const app = new App();
|
|
29
|
+
new MyStack(app, 'vscode-server-git-repo', { env });
|
|
30
|
+
app.synth();
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
},
|
|
17
|
-
"
|
|
17
|
+
"73ca3102a170a72edfc485eaa1468c73bbccd6bf566fd94f904e35c82f0fb905": {
|
|
18
18
|
"displayName": "IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645 Template",
|
|
19
19
|
"source": {
|
|
20
20
|
"path": "IntegSetupVSCodeOnAl2023DefaultTestDeployAssert74D8F645.template.json",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"destinations": {
|
|
24
24
|
"current_account-current_region": {
|
|
25
25
|
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
|
|
26
|
-
"objectKey": "
|
|
26
|
+
"objectKey": "73ca3102a170a72edfc485eaa1468c73bbccd6bf566fd94f904e35c82f0fb905.json",
|
|
27
27
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -57,30 +57,30 @@
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
},
|
|
60
|
-
"
|
|
60
|
+
"2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df": {
|
|
61
61
|
"displayName": "IntegVSCodeServer/InstallerOnEventHandler/Code",
|
|
62
62
|
"source": {
|
|
63
|
-
"path": "asset.
|
|
63
|
+
"path": "asset.2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.lambda",
|
|
64
64
|
"packaging": "zip"
|
|
65
65
|
},
|
|
66
66
|
"destinations": {
|
|
67
67
|
"current_account-current_region": {
|
|
68
68
|
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
|
|
69
|
-
"objectKey": "
|
|
69
|
+
"objectKey": "2f99f38311da357eaaea1284d67c759759324dec4a1cd11621d9c59eea9e81df.zip",
|
|
70
70
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
},
|
|
74
|
-
"
|
|
74
|
+
"efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9": {
|
|
75
75
|
"displayName": "login-handler/Code",
|
|
76
76
|
"source": {
|
|
77
|
-
"path": "asset.
|
|
77
|
+
"path": "asset.efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9",
|
|
78
78
|
"packaging": "zip"
|
|
79
79
|
},
|
|
80
80
|
"destinations": {
|
|
81
81
|
"current_account-current_region": {
|
|
82
82
|
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
|
|
83
|
-
"objectKey": "
|
|
83
|
+
"objectKey": "efac30c7091c58fed492058fa6403c14f7e58aab8cf4fd595d838b8d5eeec2b9.zip",
|
|
84
84
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
|
|
85
85
|
}
|
|
86
86
|
}
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
},
|
|
102
|
-
"
|
|
102
|
+
"6a8aed172ab7e8c6ee5d7cb632f3d6ffdd72d3e870a49105a647d3b0d258db8d": {
|
|
103
103
|
"displayName": "IntegTestStackAl2023 Template",
|
|
104
104
|
"source": {
|
|
105
105
|
"path": "IntegTestStackAl2023.template.json",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"destinations": {
|
|
109
109
|
"current_account-current_region": {
|
|
110
110
|
"bucketName": "cdk-hnb659fds-assets-${AWS::AccountId}-${AWS::Region}",
|
|
111
|
-
"objectKey": "
|
|
111
|
+
"objectKey": "6a8aed172ab7e8c6ee5d7cb632f3d6ffdd72d3e870a49105a647d3b0d258db8d.json",
|
|
112
112
|
"assumeRoleArn": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-${AWS::AccountId}-${AWS::Region}"
|
|
113
113
|
}
|
|
114
114
|
}
|