alchemy 0.54.0 → 0.55.1
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/bin/alchemy.js +38717 -11847
- package/lib/aws/ec2/index.d.ts +10 -0
- package/lib/aws/ec2/index.d.ts.map +1 -0
- package/lib/aws/ec2/index.js +10 -0
- package/lib/aws/ec2/index.js.map +1 -0
- package/lib/aws/ec2/internet-gateway-attachment.d.ts +150 -0
- package/lib/aws/ec2/internet-gateway-attachment.d.ts.map +1 -0
- package/lib/aws/ec2/internet-gateway-attachment.js +248 -0
- package/lib/aws/ec2/internet-gateway-attachment.js.map +1 -0
- package/lib/aws/ec2/internet-gateway.d.ts +132 -0
- package/lib/aws/ec2/internet-gateway.d.ts.map +1 -0
- package/lib/aws/ec2/internet-gateway.js +311 -0
- package/lib/aws/ec2/internet-gateway.js.map +1 -0
- package/lib/aws/ec2/nat-gateway.d.ts +145 -0
- package/lib/aws/ec2/nat-gateway.d.ts.map +1 -0
- package/lib/aws/ec2/nat-gateway.js +618 -0
- package/lib/aws/ec2/nat-gateway.js.map +1 -0
- package/lib/aws/ec2/route-table-association.d.ts +134 -0
- package/lib/aws/ec2/route-table-association.d.ts.map +1 -0
- package/lib/aws/ec2/route-table-association.js +364 -0
- package/lib/aws/ec2/route-table-association.js.map +1 -0
- package/lib/aws/ec2/route-table.d.ts +94 -0
- package/lib/aws/ec2/route-table.d.ts.map +1 -0
- package/lib/aws/ec2/route-table.js +253 -0
- package/lib/aws/ec2/route-table.js.map +1 -0
- package/lib/aws/ec2/route.d.ts +130 -0
- package/lib/aws/ec2/route.d.ts.map +1 -0
- package/lib/aws/ec2/route.js +253 -0
- package/lib/aws/ec2/route.js.map +1 -0
- package/lib/aws/ec2/security-group-rule.d.ts +84 -0
- package/lib/aws/ec2/security-group-rule.d.ts.map +1 -0
- package/lib/aws/ec2/security-group-rule.js +123 -0
- package/lib/aws/ec2/security-group-rule.js.map +1 -0
- package/lib/aws/ec2/security-group.d.ts +84 -0
- package/lib/aws/ec2/security-group.d.ts.map +1 -0
- package/lib/aws/ec2/security-group.js +207 -0
- package/lib/aws/ec2/security-group.js.map +1 -0
- package/lib/aws/ec2/subnet.d.ts +110 -0
- package/lib/aws/ec2/subnet.d.ts.map +1 -0
- package/lib/aws/ec2/subnet.js +336 -0
- package/lib/aws/ec2/subnet.js.map +1 -0
- package/lib/aws/ec2/utils.d.ts +15 -0
- package/lib/aws/ec2/utils.d.ts.map +1 -0
- package/lib/aws/ec2/utils.js +79 -0
- package/lib/aws/ec2/utils.js.map +1 -0
- package/lib/aws/ec2/vpc.d.ts +160 -0
- package/lib/aws/ec2/vpc.d.ts.map +1 -0
- package/lib/aws/ec2/vpc.js +453 -0
- package/lib/aws/ec2/vpc.js.map +1 -0
- package/lib/aws/index.d.ts +7 -0
- package/lib/aws/index.d.ts.map +1 -1
- package/lib/aws/index.js +8 -0
- package/lib/aws/index.js.map +1 -1
- package/lib/aws/utils.d.ts +25 -0
- package/lib/aws/utils.d.ts.map +1 -0
- package/lib/aws/utils.js +89 -0
- package/lib/aws/utils.js.map +1 -0
- package/lib/build-date.d.ts +6 -0
- package/lib/build-date.d.ts.map +1 -0
- package/lib/build-date.js +8 -0
- package/lib/build-date.js.map +1 -0
- package/lib/cloudflare/worker-metadata.d.ts +1 -1
- package/lib/cloudflare/worker-metadata.d.ts.map +1 -1
- package/lib/cloudflare/worker-metadata.js +1 -0
- package/lib/cloudflare/worker-metadata.js.map +1 -1
- package/lib/cloudflare/worker.d.ts +0 -2
- package/lib/cloudflare/worker.d.ts.map +1 -1
- package/lib/cloudflare/worker.js +1 -1
- package/lib/cloudflare/worker.js.map +1 -1
- package/lib/util/params.d.ts +5 -0
- package/lib/util/params.d.ts.map +1 -0
- package/lib/util/params.js +30 -0
- package/lib/util/params.js.map +1 -0
- package/lib/util/timeout.d.ts +31 -0
- package/lib/util/timeout.d.ts.map +1 -0
- package/lib/util/timeout.js +109 -0
- package/lib/util/timeout.js.map +1 -0
- package/lib/util/xml.d.ts +5 -0
- package/lib/util/xml.d.ts.map +1 -0
- package/lib/util/xml.js +8 -0
- package/lib/util/xml.js.map +1 -0
- package/package.json +7 -5
- package/src/aws/ec2/index.ts +9 -0
- package/src/aws/ec2/internet-gateway-attachment.ts +468 -0
- package/src/aws/ec2/internet-gateway.ts +557 -0
- package/src/aws/ec2/nat-gateway.ts +1123 -0
- package/src/aws/ec2/route-table-association.ts +747 -0
- package/src/aws/ec2/route-table.ts +452 -0
- package/src/aws/ec2/route.ts +447 -0
- package/src/aws/ec2/security-group-rule.ts +229 -0
- package/src/aws/ec2/security-group.ts +418 -0
- package/src/aws/ec2/subnet.ts +625 -0
- package/src/aws/ec2/utils.ts +102 -0
- package/src/aws/ec2/vpc.ts +969 -0
- package/src/aws/index.ts +9 -0
- package/src/aws/utils.ts +137 -0
- package/src/build-date.ts +8 -0
- package/src/cloudflare/worker-metadata.ts +1 -1
- package/src/cloudflare/worker.ts +1 -1
- package/src/util/params.ts +33 -0
- package/src/util/timeout.ts +178 -0
- package/src/util/xml.ts +7 -0
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
import { XMLParser } from "fast-xml-parser";
|
|
2
|
+
import { Resource } from "../../resource.js";
|
|
3
|
+
import { ignore } from "../../util/ignore.js";
|
|
4
|
+
import { logger } from "../../util/logger.js";
|
|
5
|
+
import { mergeTimeoutConfig, waitForResourceState, } from "../../util/timeout.js";
|
|
6
|
+
import { callEC2Api, createEC2Client } from "./utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* AWS VPC (Virtual Private Cloud) Resource
|
|
9
|
+
*
|
|
10
|
+
* Creates and manages Amazon VPC instances with configurable CIDR blocks,
|
|
11
|
+
* DNS settings, and instance tenancy options.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // Create a basic VPC with default settings
|
|
15
|
+
* const vpc = await Vpc("main-vpc", {
|
|
16
|
+
* cidrBlock: "10.0.0.0/16",
|
|
17
|
+
* tags: {
|
|
18
|
+
* Name: "main-vpc",
|
|
19
|
+
* Environment: "production"
|
|
20
|
+
* }
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* // Create a VPC with custom DNS settings
|
|
25
|
+
* const vpc = await Vpc("custom-vpc", {
|
|
26
|
+
* cidrBlock: "172.16.0.0/16",
|
|
27
|
+
* enableDnsSupport: true,
|
|
28
|
+
* enableDnsHostnames: true,
|
|
29
|
+
* instanceTenancy: "default",
|
|
30
|
+
* tags: {
|
|
31
|
+
* Name: "custom-vpc"
|
|
32
|
+
* }
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* // Create a VPC with dedicated tenancy and custom timeout
|
|
37
|
+
* const dedicatedVpc = await Vpc("dedicated-vpc", {
|
|
38
|
+
* cidrBlock: "192.168.0.0/16",
|
|
39
|
+
* instanceTenancy: "dedicated",
|
|
40
|
+
* enableDnsSupport: false,
|
|
41
|
+
* enableDnsHostnames: false,
|
|
42
|
+
* timeout: {
|
|
43
|
+
* maxAttempts: 90,
|
|
44
|
+
* delayMs: 3000
|
|
45
|
+
* },
|
|
46
|
+
* tags: {
|
|
47
|
+
* Name: "dedicated-vpc",
|
|
48
|
+
* Type: "isolated"
|
|
49
|
+
* }
|
|
50
|
+
* });
|
|
51
|
+
*/
|
|
52
|
+
export const Vpc = Resource("aws::Vpc", async function (_id, props) {
|
|
53
|
+
const client = await createEC2Client();
|
|
54
|
+
const timeoutConfig = mergeTimeoutConfig(VPC_TIMEOUT, props.timeout);
|
|
55
|
+
if (this.phase === "delete") {
|
|
56
|
+
if (this.output?.vpcId) {
|
|
57
|
+
logger.log(`🗑️ Deleting VPC: ${this.output.vpcId}`);
|
|
58
|
+
// Simply delete the VPC - other resources should handle themselves
|
|
59
|
+
await ignore("InvalidVpcID.NotFound", async () => {
|
|
60
|
+
await callEC2Api(client, "DeleteVpc", parseVpcXmlResponse, {
|
|
61
|
+
VpcId: this.output.vpcId,
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
// Wait for VPC to be fully deleted
|
|
65
|
+
await waitForVpcDeleted(client, this.output.vpcId, timeoutConfig);
|
|
66
|
+
logger.log(` ✅ VPC ${this.output.vpcId} deletion completed`);
|
|
67
|
+
}
|
|
68
|
+
return this.destroy();
|
|
69
|
+
}
|
|
70
|
+
let vpc;
|
|
71
|
+
if (this.phase === "update" && this.output?.vpcId) {
|
|
72
|
+
// Get existing VPC
|
|
73
|
+
const response = await callEC2Api(client, "DescribeVpcs", parseVpcXmlResponse, {
|
|
74
|
+
"VpcId.1": this.output.vpcId,
|
|
75
|
+
});
|
|
76
|
+
if (!response.Vpcs?.[0]) {
|
|
77
|
+
throw new Error(`VPC ${this.output.vpcId} not found`);
|
|
78
|
+
}
|
|
79
|
+
vpc = response.Vpcs[0];
|
|
80
|
+
// Update DNS attributes if they've changed
|
|
81
|
+
if (props.enableDnsSupport !== undefined) {
|
|
82
|
+
const modifyParams = {
|
|
83
|
+
VpcId: vpc.VpcId,
|
|
84
|
+
EnableDnsSupport: {
|
|
85
|
+
Value: props.enableDnsSupport,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
await callEC2Api(client, "ModifyVpcAttribute", parseVpcXmlResponse, convertModifyVpcAttributeParamsToAwsFormat(modifyParams));
|
|
89
|
+
}
|
|
90
|
+
if (props.enableDnsHostnames !== undefined) {
|
|
91
|
+
const modifyParams = {
|
|
92
|
+
VpcId: vpc.VpcId,
|
|
93
|
+
EnableDnsHostnames: {
|
|
94
|
+
Value: props.enableDnsHostnames,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
await callEC2Api(client, "ModifyVpcAttribute", parseVpcXmlResponse, convertModifyVpcAttributeParamsToAwsFormat(modifyParams));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Create new VPC
|
|
102
|
+
const createVpcParams = {
|
|
103
|
+
CidrBlock: props.cidrBlock,
|
|
104
|
+
InstanceTenancy: props.instanceTenancy || "default",
|
|
105
|
+
};
|
|
106
|
+
// Add tags if specified
|
|
107
|
+
if (props.tags) {
|
|
108
|
+
createVpcParams.TagSpecifications = [
|
|
109
|
+
{
|
|
110
|
+
ResourceType: "vpc",
|
|
111
|
+
Tags: Object.entries(props.tags).map(([key, value]) => ({
|
|
112
|
+
Key: key,
|
|
113
|
+
Value: value,
|
|
114
|
+
})),
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
}
|
|
118
|
+
const createParams = convertVpcParamsToAwsFormat(createVpcParams);
|
|
119
|
+
const response = await callEC2Api(client, "CreateVpc", parseVpcXmlResponse, createParams);
|
|
120
|
+
if (!response.Vpc) {
|
|
121
|
+
throw new Error(`Failed to create VPC - Response: ${JSON.stringify(response)}`);
|
|
122
|
+
}
|
|
123
|
+
vpc = response.Vpc;
|
|
124
|
+
// Wait for VPC to be available
|
|
125
|
+
await waitForVpcAvailable(client, vpc.VpcId, timeoutConfig);
|
|
126
|
+
// Set DNS attributes if specified
|
|
127
|
+
if (props.enableDnsSupport !== undefined) {
|
|
128
|
+
const modifyParams = {
|
|
129
|
+
VpcId: vpc.VpcId,
|
|
130
|
+
EnableDnsSupport: {
|
|
131
|
+
Value: props.enableDnsSupport,
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
await callEC2Api(client, "ModifyVpcAttribute", parseVpcXmlResponse, convertModifyVpcAttributeParamsToAwsFormat(modifyParams));
|
|
135
|
+
}
|
|
136
|
+
if (props.enableDnsHostnames !== undefined) {
|
|
137
|
+
const modifyParams = {
|
|
138
|
+
VpcId: vpc.VpcId,
|
|
139
|
+
EnableDnsHostnames: {
|
|
140
|
+
Value: props.enableDnsHostnames,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
await callEC2Api(client, "ModifyVpcAttribute", parseVpcXmlResponse, convertModifyVpcAttributeParamsToAwsFormat(modifyParams));
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return this({
|
|
147
|
+
vpcId: vpc.VpcId,
|
|
148
|
+
state: vpc.State,
|
|
149
|
+
isDefault: vpc.IsDefault || false,
|
|
150
|
+
dhcpOptionsId: vpc.DhcpOptionsId,
|
|
151
|
+
...props,
|
|
152
|
+
});
|
|
153
|
+
});
|
|
154
|
+
/**
|
|
155
|
+
* VPC timeout constants
|
|
156
|
+
*/
|
|
157
|
+
export const VPC_TIMEOUT = {
|
|
158
|
+
maxAttempts: 60,
|
|
159
|
+
delayMs: 2000, // 2 seconds - VPCs are medium speed resources
|
|
160
|
+
};
|
|
161
|
+
/**
|
|
162
|
+
* Helper function to convert typed VPC parameters to AWS API format
|
|
163
|
+
*/
|
|
164
|
+
function convertVpcParamsToAwsFormat(params) {
|
|
165
|
+
const awsParams = {
|
|
166
|
+
CidrBlock: params.CidrBlock,
|
|
167
|
+
};
|
|
168
|
+
if (params.InstanceTenancy) {
|
|
169
|
+
awsParams.InstanceTenancy = params.InstanceTenancy;
|
|
170
|
+
}
|
|
171
|
+
if (params.AmazonProvidedIpv6CidrBlock !== undefined) {
|
|
172
|
+
awsParams.AmazonProvidedIpv6CidrBlock =
|
|
173
|
+
params.AmazonProvidedIpv6CidrBlock.toString();
|
|
174
|
+
}
|
|
175
|
+
if (params.Ipv6Pool) {
|
|
176
|
+
awsParams.Ipv6Pool = params.Ipv6Pool;
|
|
177
|
+
}
|
|
178
|
+
if (params.Ipv6CidrBlock) {
|
|
179
|
+
awsParams.Ipv6CidrBlock = params.Ipv6CidrBlock;
|
|
180
|
+
}
|
|
181
|
+
if (params.Ipv4IpamPoolId) {
|
|
182
|
+
awsParams.Ipv4IpamPoolId = params.Ipv4IpamPoolId;
|
|
183
|
+
}
|
|
184
|
+
if (params.Ipv4NetmaskLength !== undefined) {
|
|
185
|
+
awsParams.Ipv4NetmaskLength = params.Ipv4NetmaskLength.toString();
|
|
186
|
+
}
|
|
187
|
+
if (params.Ipv6IpamPoolId) {
|
|
188
|
+
awsParams.Ipv6IpamPoolId = params.Ipv6IpamPoolId;
|
|
189
|
+
}
|
|
190
|
+
if (params.Ipv6NetmaskLength !== undefined) {
|
|
191
|
+
awsParams.Ipv6NetmaskLength = params.Ipv6NetmaskLength.toString();
|
|
192
|
+
}
|
|
193
|
+
if (params.DryRun !== undefined) {
|
|
194
|
+
awsParams.DryRun = params.DryRun.toString();
|
|
195
|
+
}
|
|
196
|
+
// Handle TagSpecifications
|
|
197
|
+
if (params.TagSpecifications) {
|
|
198
|
+
params.TagSpecifications.forEach((tagSpec, specIndex) => {
|
|
199
|
+
const specNum = specIndex + 1;
|
|
200
|
+
awsParams[`TagSpecification.${specNum}.ResourceType`] =
|
|
201
|
+
tagSpec.ResourceType;
|
|
202
|
+
tagSpec.Tags.forEach((tag, tagIndex) => {
|
|
203
|
+
const tagNum = tagIndex + 1;
|
|
204
|
+
awsParams[`TagSpecification.${specNum}.Tag.${tagNum}.Key`] = tag.Key;
|
|
205
|
+
awsParams[`TagSpecification.${specNum}.Tag.${tagNum}.Value`] =
|
|
206
|
+
tag.Value;
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
return awsParams;
|
|
211
|
+
}
|
|
212
|
+
function convertModifyVpcAttributeParamsToAwsFormat(params) {
|
|
213
|
+
const awsParams = {
|
|
214
|
+
VpcId: params.VpcId,
|
|
215
|
+
};
|
|
216
|
+
if (params.EnableDnsHostnames) {
|
|
217
|
+
awsParams["EnableDnsHostnames.Value"] =
|
|
218
|
+
params.EnableDnsHostnames.Value.toString();
|
|
219
|
+
}
|
|
220
|
+
if (params.EnableDnsSupport) {
|
|
221
|
+
awsParams["EnableDnsSupport.Value"] =
|
|
222
|
+
params.EnableDnsSupport.Value.toString();
|
|
223
|
+
}
|
|
224
|
+
if (params.EnableNetworkAddressUsageMetrics) {
|
|
225
|
+
awsParams["EnableNetworkAddressUsageMetrics.Value"] =
|
|
226
|
+
params.EnableNetworkAddressUsageMetrics.Value.toString();
|
|
227
|
+
}
|
|
228
|
+
if (params.DryRun !== undefined) {
|
|
229
|
+
awsParams.DryRun = params.DryRun.toString();
|
|
230
|
+
}
|
|
231
|
+
return awsParams;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Parse XML responses specifically for VPC operations
|
|
235
|
+
*/
|
|
236
|
+
function parseVpcXmlResponse(xmlText) {
|
|
237
|
+
const parser = new XMLParser({
|
|
238
|
+
ignoreAttributes: true,
|
|
239
|
+
parseAttributeValue: true,
|
|
240
|
+
parseTagValue: true,
|
|
241
|
+
trimValues: true,
|
|
242
|
+
});
|
|
243
|
+
const parsed = parser.parse(xmlText);
|
|
244
|
+
const result = {};
|
|
245
|
+
// Parse CreateVpcResponse
|
|
246
|
+
if (parsed.CreateVpcResponse) {
|
|
247
|
+
const vpc = parsed.CreateVpcResponse.vpc;
|
|
248
|
+
if (vpc) {
|
|
249
|
+
result.Vpc = {
|
|
250
|
+
VpcId: vpc.vpcId,
|
|
251
|
+
State: vpc.state,
|
|
252
|
+
CidrBlock: vpc.cidrBlock,
|
|
253
|
+
DhcpOptionsId: vpc.dhcpOptionsId,
|
|
254
|
+
InstanceTenancy: vpc.instanceTenancy,
|
|
255
|
+
IsDefault: vpc.isDefault === "true" || vpc.isDefault === true,
|
|
256
|
+
Tags: vpc.tagSet?.item
|
|
257
|
+
? Array.isArray(vpc.tagSet.item)
|
|
258
|
+
? vpc.tagSet.item.map((tag) => ({ Key: tag.key, Value: tag.value }))
|
|
259
|
+
: [{ Key: vpc.tagSet.item.key, Value: vpc.tagSet.item.value }]
|
|
260
|
+
: undefined,
|
|
261
|
+
CidrBlockAssociationSet: vpc.cidrBlockAssociationSet?.item
|
|
262
|
+
? Array.isArray(vpc.cidrBlockAssociationSet.item)
|
|
263
|
+
? vpc.cidrBlockAssociationSet.item.map((assoc) => ({
|
|
264
|
+
AssociationId: assoc.associationId,
|
|
265
|
+
CidrBlock: assoc.cidrBlock,
|
|
266
|
+
CidrBlockState: {
|
|
267
|
+
State: assoc.cidrBlockState.state,
|
|
268
|
+
StatusMessage: assoc.cidrBlockState.statusMessage,
|
|
269
|
+
},
|
|
270
|
+
}))
|
|
271
|
+
: [
|
|
272
|
+
{
|
|
273
|
+
AssociationId: vpc.cidrBlockAssociationSet.item.associationId,
|
|
274
|
+
CidrBlock: vpc.cidrBlockAssociationSet.item.cidrBlock,
|
|
275
|
+
CidrBlockState: {
|
|
276
|
+
State: vpc.cidrBlockAssociationSet.item.cidrBlockState
|
|
277
|
+
.state,
|
|
278
|
+
StatusMessage: vpc.cidrBlockAssociationSet.item.cidrBlockState
|
|
279
|
+
.statusMessage,
|
|
280
|
+
},
|
|
281
|
+
},
|
|
282
|
+
]
|
|
283
|
+
: undefined,
|
|
284
|
+
Ipv6CidrBlockAssociationSet: vpc.ipv6CidrBlockAssociationSet?.item
|
|
285
|
+
? Array.isArray(vpc.ipv6CidrBlockAssociationSet.item)
|
|
286
|
+
? vpc.ipv6CidrBlockAssociationSet.item.map((assoc) => ({
|
|
287
|
+
AssociationId: assoc.associationId,
|
|
288
|
+
Ipv6CidrBlock: assoc.ipv6CidrBlock,
|
|
289
|
+
Ipv6CidrBlockState: {
|
|
290
|
+
State: assoc.ipv6CidrBlockState.state,
|
|
291
|
+
StatusMessage: assoc.ipv6CidrBlockState.statusMessage,
|
|
292
|
+
},
|
|
293
|
+
NetworkBorderGroup: assoc.networkBorderGroup,
|
|
294
|
+
Ipv6Pool: assoc.ipv6Pool,
|
|
295
|
+
}))
|
|
296
|
+
: [
|
|
297
|
+
{
|
|
298
|
+
AssociationId: vpc.ipv6CidrBlockAssociationSet.item.associationId,
|
|
299
|
+
Ipv6CidrBlock: vpc.ipv6CidrBlockAssociationSet.item.ipv6CidrBlock,
|
|
300
|
+
Ipv6CidrBlockState: {
|
|
301
|
+
State: vpc.ipv6CidrBlockAssociationSet.item
|
|
302
|
+
.ipv6CidrBlockState.state,
|
|
303
|
+
StatusMessage: vpc.ipv6CidrBlockAssociationSet.item.ipv6CidrBlockState
|
|
304
|
+
.statusMessage,
|
|
305
|
+
},
|
|
306
|
+
NetworkBorderGroup: vpc.ipv6CidrBlockAssociationSet.item.networkBorderGroup,
|
|
307
|
+
Ipv6Pool: vpc.ipv6CidrBlockAssociationSet.item.ipv6Pool,
|
|
308
|
+
},
|
|
309
|
+
]
|
|
310
|
+
: undefined,
|
|
311
|
+
OwnerId: vpc.ownerId,
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Parse DescribeVpcsResponse
|
|
316
|
+
if (parsed.DescribeVpcsResponse) {
|
|
317
|
+
const vpcSet = parsed.DescribeVpcsResponse.vpcSet;
|
|
318
|
+
if (vpcSet?.item) {
|
|
319
|
+
const vpcs = Array.isArray(vpcSet.item) ? vpcSet.item : [vpcSet.item];
|
|
320
|
+
result.Vpcs = vpcs.map((vpc) => ({
|
|
321
|
+
VpcId: vpc.vpcId,
|
|
322
|
+
State: vpc.state,
|
|
323
|
+
CidrBlock: vpc.cidrBlock,
|
|
324
|
+
DhcpOptionsId: vpc.dhcpOptionsId,
|
|
325
|
+
InstanceTenancy: vpc.instanceTenancy,
|
|
326
|
+
IsDefault: vpc.isDefault === "true" || vpc.isDefault === true,
|
|
327
|
+
Tags: vpc.tagSet?.item
|
|
328
|
+
? Array.isArray(vpc.tagSet.item)
|
|
329
|
+
? vpc.tagSet.item.map((tag) => ({ Key: tag.key, Value: tag.value }))
|
|
330
|
+
: [{ Key: vpc.tagSet.item.key, Value: vpc.tagSet.item.value }]
|
|
331
|
+
: undefined,
|
|
332
|
+
CidrBlockAssociationSet: vpc.cidrBlockAssociationSet?.item
|
|
333
|
+
? Array.isArray(vpc.cidrBlockAssociationSet.item)
|
|
334
|
+
? vpc.cidrBlockAssociationSet.item.map((assoc) => ({
|
|
335
|
+
AssociationId: assoc.associationId,
|
|
336
|
+
CidrBlock: assoc.cidrBlock,
|
|
337
|
+
CidrBlockState: {
|
|
338
|
+
State: assoc.cidrBlockState.state,
|
|
339
|
+
StatusMessage: assoc.cidrBlockState.statusMessage,
|
|
340
|
+
},
|
|
341
|
+
}))
|
|
342
|
+
: [
|
|
343
|
+
{
|
|
344
|
+
AssociationId: vpc.cidrBlockAssociationSet.item.associationId,
|
|
345
|
+
CidrBlock: vpc.cidrBlockAssociationSet.item.cidrBlock,
|
|
346
|
+
CidrBlockState: {
|
|
347
|
+
State: vpc.cidrBlockAssociationSet.item.cidrBlockState
|
|
348
|
+
.state,
|
|
349
|
+
StatusMessage: vpc.cidrBlockAssociationSet.item.cidrBlockState
|
|
350
|
+
.statusMessage,
|
|
351
|
+
},
|
|
352
|
+
},
|
|
353
|
+
]
|
|
354
|
+
: undefined,
|
|
355
|
+
Ipv6CidrBlockAssociationSet: vpc.ipv6CidrBlockAssociationSet?.item
|
|
356
|
+
? Array.isArray(vpc.ipv6CidrBlockAssociationSet.item)
|
|
357
|
+
? vpc.ipv6CidrBlockAssociationSet.item.map((assoc) => ({
|
|
358
|
+
AssociationId: assoc.associationId,
|
|
359
|
+
Ipv6CidrBlock: assoc.ipv6CidrBlock,
|
|
360
|
+
Ipv6CidrBlockState: {
|
|
361
|
+
State: assoc.ipv6CidrBlockState.state,
|
|
362
|
+
StatusMessage: assoc.ipv6CidrBlockState.statusMessage,
|
|
363
|
+
},
|
|
364
|
+
NetworkBorderGroup: assoc.networkBorderGroup,
|
|
365
|
+
Ipv6Pool: assoc.ipv6Pool,
|
|
366
|
+
}))
|
|
367
|
+
: [
|
|
368
|
+
{
|
|
369
|
+
AssociationId: vpc.ipv6CidrBlockAssociationSet.item.associationId,
|
|
370
|
+
Ipv6CidrBlock: vpc.ipv6CidrBlockAssociationSet.item.ipv6CidrBlock,
|
|
371
|
+
Ipv6CidrBlockState: {
|
|
372
|
+
State: vpc.ipv6CidrBlockAssociationSet.item
|
|
373
|
+
.ipv6CidrBlockState.state,
|
|
374
|
+
StatusMessage: vpc.ipv6CidrBlockAssociationSet.item.ipv6CidrBlockState
|
|
375
|
+
.statusMessage,
|
|
376
|
+
},
|
|
377
|
+
NetworkBorderGroup: vpc.ipv6CidrBlockAssociationSet.item.networkBorderGroup,
|
|
378
|
+
Ipv6Pool: vpc.ipv6CidrBlockAssociationSet.item.ipv6Pool,
|
|
379
|
+
},
|
|
380
|
+
]
|
|
381
|
+
: undefined,
|
|
382
|
+
OwnerId: vpc.ownerId,
|
|
383
|
+
}));
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
result.Vpcs = [];
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Parse DescribeSecurityGroupsResponse
|
|
390
|
+
if (parsed.DescribeSecurityGroupsResponse) {
|
|
391
|
+
const securityGroupSet = parsed.DescribeSecurityGroupsResponse.securityGroupInfo;
|
|
392
|
+
if (securityGroupSet?.item) {
|
|
393
|
+
const securityGroups = Array.isArray(securityGroupSet.item)
|
|
394
|
+
? securityGroupSet.item
|
|
395
|
+
: [securityGroupSet.item];
|
|
396
|
+
result.SecurityGroups = securityGroups.map((sg) => ({
|
|
397
|
+
GroupId: sg.groupId,
|
|
398
|
+
GroupName: sg.groupName,
|
|
399
|
+
VpcId: sg.vpcId,
|
|
400
|
+
}));
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
result.SecurityGroups = [];
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
// Handle success responses
|
|
407
|
+
if (parsed.ModifyVpcAttributeResponse || parsed.DeleteVpcResponse) {
|
|
408
|
+
result.success = true;
|
|
409
|
+
}
|
|
410
|
+
return result;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Wait for VPC to be in available state
|
|
414
|
+
*/
|
|
415
|
+
async function waitForVpcAvailable(client, vpcId, timeoutConfig) {
|
|
416
|
+
const checkFunction = async () => {
|
|
417
|
+
const response = await callEC2Api(client, "DescribeVpcs", parseVpcXmlResponse, {
|
|
418
|
+
"VpcId.1": vpcId,
|
|
419
|
+
});
|
|
420
|
+
return response.Vpcs?.[0];
|
|
421
|
+
};
|
|
422
|
+
const isReady = (vpc) => {
|
|
423
|
+
return vpc?.State === "available";
|
|
424
|
+
};
|
|
425
|
+
await waitForResourceState(checkFunction, isReady, timeoutConfig, vpcId, "VPC", "is now available");
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Wait for VPC to be deleted
|
|
429
|
+
*/
|
|
430
|
+
async function waitForVpcDeleted(client, vpcId, timeoutConfig) {
|
|
431
|
+
const checkFunction = async () => {
|
|
432
|
+
try {
|
|
433
|
+
const response = await callEC2Api(client, "DescribeVpcs", parseVpcXmlResponse, {
|
|
434
|
+
"VpcId.1": vpcId,
|
|
435
|
+
});
|
|
436
|
+
return response.Vpcs?.[0];
|
|
437
|
+
}
|
|
438
|
+
catch (error) {
|
|
439
|
+
// If VPC is not found, it's been deleted - return undefined
|
|
440
|
+
if (error.code === "InvalidVpcID.NotFound" ||
|
|
441
|
+
error.code === "InvalidVpc.NotFound") {
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
throw error;
|
|
445
|
+
}
|
|
446
|
+
};
|
|
447
|
+
const isReady = (vpc) => {
|
|
448
|
+
// VPC is deleted if it doesn't exist
|
|
449
|
+
return !vpc;
|
|
450
|
+
};
|
|
451
|
+
await waitForResourceState(checkFunction, isReady, timeoutConfig, vpcId, "VPC", "be deleted");
|
|
452
|
+
}
|
|
453
|
+
//# sourceMappingURL=vpc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vpc.js","sourceRoot":"","sources":["../../../src/aws/ec2/vpc.ts"],"names":[],"mappings":"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"}
|
package/lib/aws/index.d.ts
CHANGED
|
@@ -9,4 +9,11 @@ export * from "./s3-state-store.ts";
|
|
|
9
9
|
export * from "./ses.ts";
|
|
10
10
|
export * from "./ssm-parameter.ts";
|
|
11
11
|
export * from "./table.ts";
|
|
12
|
+
export * from "./ec2/internet-gateway.ts";
|
|
13
|
+
export * from "./ec2/nat-gateway.ts";
|
|
14
|
+
export * from "./ec2/route-table.ts";
|
|
15
|
+
export * from "./ec2/route.ts";
|
|
16
|
+
export * from "./ec2/security-group.ts";
|
|
17
|
+
export * from "./ec2/subnet.ts";
|
|
18
|
+
export * from "./ec2/vpc.ts";
|
|
12
19
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/aws/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAG3B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
package/lib/aws/index.js
CHANGED
|
@@ -9,4 +9,12 @@ export * from "./s3-state-store.js";
|
|
|
9
9
|
export * from "./ses.js";
|
|
10
10
|
export * from "./ssm-parameter.js";
|
|
11
11
|
export * from "./table.js";
|
|
12
|
+
// EC2 Resources
|
|
13
|
+
export * from "./ec2/internet-gateway.js";
|
|
14
|
+
export * from "./ec2/nat-gateway.js";
|
|
15
|
+
export * from "./ec2/route-table.js";
|
|
16
|
+
export * from "./ec2/route.js";
|
|
17
|
+
export * from "./ec2/security-group.js";
|
|
18
|
+
export * from "./ec2/subnet.js";
|
|
19
|
+
export * from "./ec2/vpc.js";
|
|
12
20
|
//# sourceMappingURL=index.js.map
|
package/lib/aws/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/aws/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAE3B,gBAAgB;AAChB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AwsClient } from "aws4fetch";
|
|
2
|
+
/**
|
|
3
|
+
* Get AWS region from configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare const getRegion: import("@smithy/types").Provider<any>;
|
|
6
|
+
/**
|
|
7
|
+
* AWS Service Configuration
|
|
8
|
+
*/
|
|
9
|
+
export interface AwsServiceConfig {
|
|
10
|
+
service: string;
|
|
11
|
+
version: string;
|
|
12
|
+
endpoint: (region: string) => string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* AWS API Caller interface
|
|
16
|
+
*/
|
|
17
|
+
export interface AwsApiCaller<T = any> {
|
|
18
|
+
createClient(): Promise<AwsClient>;
|
|
19
|
+
callApi<R = T>(client: AwsClient, action: string, params?: Record<string, any>): Promise<R>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Create an AWS API caller for a specific service
|
|
23
|
+
*/
|
|
24
|
+
export declare function getAwsApiCaller<T = any>(config: AwsServiceConfig, responseParser: (xmlText: string) => T): AwsApiCaller<T>;
|
|
25
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/aws/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC;;GAEG;AACH,eAAO,MAAM,SAAS,uCAKpB,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,GAAG;IACnC,YAAY,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;IACnC,OAAO,CAAC,CAAC,GAAG,CAAC,EACX,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC3B,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,GAAG,GAAG,EACrC,MAAM,EAAE,gBAAgB,EACxB,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,GACrC,YAAY,CAAC,CAAC,CAAC,CA8FjB"}
|
package/lib/aws/utils.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { fromNodeProviderChain } from "@aws-sdk/credential-providers";
|
|
2
|
+
import { loadConfig } from "@smithy/node-config-provider";
|
|
3
|
+
import { AwsClient } from "aws4fetch";
|
|
4
|
+
import { flattenParams } from "../util/params.js";
|
|
5
|
+
/**
|
|
6
|
+
* Get AWS region from configuration
|
|
7
|
+
*/
|
|
8
|
+
export const getRegion = loadConfig({
|
|
9
|
+
environmentVariableSelector: (env) => env.AWS_REGION || env.AWS_DEFAULT_REGION,
|
|
10
|
+
configFileSelector: (profile) => profile.region,
|
|
11
|
+
default: "us-east-1",
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Create an AWS API caller for a specific service
|
|
15
|
+
*/
|
|
16
|
+
export function getAwsApiCaller(config, responseParser) {
|
|
17
|
+
return {
|
|
18
|
+
async createClient() {
|
|
19
|
+
const credentials = await fromNodeProviderChain()();
|
|
20
|
+
const region = await getRegion();
|
|
21
|
+
return new AwsClient({
|
|
22
|
+
...credentials,
|
|
23
|
+
service: config.service,
|
|
24
|
+
region,
|
|
25
|
+
});
|
|
26
|
+
},
|
|
27
|
+
async callApi(client, action, params = {}) {
|
|
28
|
+
// Try the API call, and retry once with fresh credentials on auth failure
|
|
29
|
+
for (let attempt = 1; attempt <= 2; attempt++) {
|
|
30
|
+
try {
|
|
31
|
+
const region = await getRegion();
|
|
32
|
+
const url = config.endpoint(region);
|
|
33
|
+
const body = new URLSearchParams({
|
|
34
|
+
Action: action,
|
|
35
|
+
Version: config.version,
|
|
36
|
+
...flattenParams(params),
|
|
37
|
+
});
|
|
38
|
+
const signedRequest = await client.sign(url, {
|
|
39
|
+
method: "POST",
|
|
40
|
+
headers: {
|
|
41
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
42
|
+
},
|
|
43
|
+
body: body.toString(),
|
|
44
|
+
});
|
|
45
|
+
const response = await fetch(signedRequest);
|
|
46
|
+
if (!response.ok) {
|
|
47
|
+
const errorText = await response.text();
|
|
48
|
+
// Parse AWS error code from XML response
|
|
49
|
+
const errorCodeMatch = errorText.match(/<Code>([^<]+)<\/Code>/);
|
|
50
|
+
const errorCode = errorCodeMatch ? errorCodeMatch[1] : null;
|
|
51
|
+
// If this is an auth failure and we haven't retried yet, create a fresh client and retry
|
|
52
|
+
if (errorCode === "AuthFailure" && attempt === 1) {
|
|
53
|
+
console.log(`🔄 Auth failure detected, refreshing credentials and retrying ${action}...`);
|
|
54
|
+
// Create a fresh client with new credentials
|
|
55
|
+
const freshCredentials = await fromNodeProviderChain()();
|
|
56
|
+
const region = await getRegion();
|
|
57
|
+
client = new AwsClient({
|
|
58
|
+
...freshCredentials,
|
|
59
|
+
service: config.service,
|
|
60
|
+
region,
|
|
61
|
+
});
|
|
62
|
+
continue; // Retry with fresh client
|
|
63
|
+
}
|
|
64
|
+
const error = new Error(`${config.service.toUpperCase()} API error: ${response.status} ${response.statusText}\n${errorText}`);
|
|
65
|
+
// Set the error code for the ignore function
|
|
66
|
+
if (errorCode) {
|
|
67
|
+
error.code = errorCode;
|
|
68
|
+
}
|
|
69
|
+
throw error;
|
|
70
|
+
}
|
|
71
|
+
const xmlText = await response.text();
|
|
72
|
+
const parsed = responseParser(xmlText);
|
|
73
|
+
return parsed;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
// If it's not an auth failure or we've already retried, throw the error
|
|
77
|
+
if (attempt === 2 ||
|
|
78
|
+
!error?.message?.includes("AuthFailure")) {
|
|
79
|
+
throw error;
|
|
80
|
+
}
|
|
81
|
+
// Otherwise, continue to retry
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// This should never be reached, but TypeScript needs it
|
|
85
|
+
throw new Error("Unexpected error in API call retry logic");
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/aws/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-date.d.ts","sourceRoot":"","sources":["../src/build-date.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,UAAU,eAAe,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// This file is auto-generated during build
|
|
2
|
+
// Do not edit manually
|
|
3
|
+
/**
|
|
4
|
+
* The build date used as the default worker compatibility date.
|
|
5
|
+
* This is set to the date when the package was built.
|
|
6
|
+
*/
|
|
7
|
+
export const BUILD_DATE = "2025-07-13";
|
|
8
|
+
//# sourceMappingURL=build-date.js.map
|