Skip to content

Commit a57cb5b

Browse files
author
awstools
committed
feat(client-elastic-load-balancing-v2): This release adds support for assigning IP addresses to Application Load Balancers from VPC IP Address Manager pools.
1 parent e77d1e3 commit a57cb5b

File tree

10 files changed

+469
-2
lines changed

10 files changed

+469
-2
lines changed

clients/client-elastic-load-balancing-v2/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,14 @@ ModifyCapacityReservation
511511

512512
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/elastic-load-balancing-v2/command/ModifyCapacityReservationCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-elastic-load-balancing-v2/Interface/ModifyCapacityReservationCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-elastic-load-balancing-v2/Interface/ModifyCapacityReservationCommandOutput/)
513513

514+
</details>
515+
<details>
516+
<summary>
517+
ModifyIpPools
518+
</summary>
519+
520+
[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/elastic-load-balancing-v2/command/ModifyIpPoolsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-elastic-load-balancing-v2/Interface/ModifyIpPoolsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-elastic-load-balancing-v2/Interface/ModifyIpPoolsCommandOutput/)
521+
514522
</details>
515523
<details>
516524
<summary>

clients/client-elastic-load-balancing-v2/src/ElasticLoadBalancingV2.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,11 @@ import {
165165
ModifyCapacityReservationCommandInput,
166166
ModifyCapacityReservationCommandOutput,
167167
} from "./commands/ModifyCapacityReservationCommand";
168+
import {
169+
ModifyIpPoolsCommand,
170+
ModifyIpPoolsCommandInput,
171+
ModifyIpPoolsCommandOutput,
172+
} from "./commands/ModifyIpPoolsCommand";
168173
import {
169174
ModifyListenerAttributesCommand,
170175
ModifyListenerAttributesCommandInput,
@@ -266,6 +271,7 @@ const commands = {
266271
GetTrustStoreCaCertificatesBundleCommand,
267272
GetTrustStoreRevocationContentCommand,
268273
ModifyCapacityReservationCommand,
274+
ModifyIpPoolsCommand,
269275
ModifyListenerCommand,
270276
ModifyListenerAttributesCommand,
271277
ModifyLoadBalancerAttributesCommand,
@@ -850,6 +856,17 @@ export interface ElasticLoadBalancingV2 {
850856
cb: (err: any, data?: ModifyCapacityReservationCommandOutput) => void
851857
): void;
852858

859+
/**
860+
* @see {@link ModifyIpPoolsCommand}
861+
*/
862+
modifyIpPools(args: ModifyIpPoolsCommandInput, options?: __HttpHandlerOptions): Promise<ModifyIpPoolsCommandOutput>;
863+
modifyIpPools(args: ModifyIpPoolsCommandInput, cb: (err: any, data?: ModifyIpPoolsCommandOutput) => void): void;
864+
modifyIpPools(
865+
args: ModifyIpPoolsCommandInput,
866+
options: __HttpHandlerOptions,
867+
cb: (err: any, data?: ModifyIpPoolsCommandOutput) => void
868+
): void;
869+
853870
/**
854871
* @see {@link ModifyListenerCommand}
855872
*/

clients/client-elastic-load-balancing-v2/src/ElasticLoadBalancingV2Client.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,7 @@ import {
145145
ModifyCapacityReservationCommandInput,
146146
ModifyCapacityReservationCommandOutput,
147147
} from "./commands/ModifyCapacityReservationCommand";
148+
import { ModifyIpPoolsCommandInput, ModifyIpPoolsCommandOutput } from "./commands/ModifyIpPoolsCommand";
148149
import {
149150
ModifyListenerAttributesCommandInput,
150151
ModifyListenerAttributesCommandOutput,
@@ -225,6 +226,7 @@ export type ServiceInputTypes =
225226
| GetTrustStoreCaCertificatesBundleCommandInput
226227
| GetTrustStoreRevocationContentCommandInput
227228
| ModifyCapacityReservationCommandInput
229+
| ModifyIpPoolsCommandInput
228230
| ModifyListenerAttributesCommandInput
229231
| ModifyListenerCommandInput
230232
| ModifyLoadBalancerAttributesCommandInput
@@ -280,6 +282,7 @@ export type ServiceOutputTypes =
280282
| GetTrustStoreCaCertificatesBundleCommandOutput
281283
| GetTrustStoreRevocationContentCommandOutput
282284
| ModifyCapacityReservationCommandOutput
285+
| ModifyIpPoolsCommandOutput
283286
| ModifyListenerAttributesCommandOutput
284287
| ModifyListenerCommandOutput
285288
| ModifyLoadBalancerAttributesCommandOutput

clients/client-elastic-load-balancing-v2/src/commands/CreateLoadBalancerCommand.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,9 @@ export interface CreateLoadBalancerCommandOutput extends CreateLoadBalancerOutpu
9090
* IpAddressType: "ipv4" || "dualstack" || "dualstack-without-public-ipv4",
9191
* CustomerOwnedIpv4Pool: "STRING_VALUE",
9292
* EnablePrefixForIpv6SourceNat: "on" || "off",
93+
* IpamPools: { // IpamPools
94+
* Ipv4IpamPoolId: "STRING_VALUE",
95+
* },
9396
* };
9497
* const command = new CreateLoadBalancerCommand(input);
9598
* const response = await client.send(command);
@@ -133,6 +136,9 @@ export interface CreateLoadBalancerCommandOutput extends CreateLoadBalancerOutpu
133136
* // CustomerOwnedIpv4Pool: "STRING_VALUE",
134137
* // EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic: "STRING_VALUE",
135138
* // EnablePrefixForIpv6SourceNat: "on" || "off",
139+
* // IpamPools: { // IpamPools
140+
* // Ipv4IpamPoolId: "STRING_VALUE",
141+
* // },
136142
* // },
137143
* // ],
138144
* // };

clients/client-elastic-load-balancing-v2/src/commands/DescribeLoadBalancersCommand.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ export interface DescribeLoadBalancersCommandOutput extends DescribeLoadBalancer
9191
* // CustomerOwnedIpv4Pool: "STRING_VALUE",
9292
* // EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic: "STRING_VALUE",
9393
* // EnablePrefixForIpv6SourceNat: "on" || "off",
94+
* // IpamPools: { // IpamPools
95+
* // Ipv4IpamPoolId: "STRING_VALUE",
96+
* // },
9497
* // },
9598
* // ],
9699
* // NextMarker: "STRING_VALUE",
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// smithy-typescript generated code
2+
import { getEndpointPlugin } from "@smithy/middleware-endpoint";
3+
import { getSerdePlugin } from "@smithy/middleware-serde";
4+
import { Command as $Command } from "@smithy/smithy-client";
5+
import { MetadataBearer as __MetadataBearer } from "@smithy/types";
6+
7+
import {
8+
ElasticLoadBalancingV2ClientResolvedConfig,
9+
ServiceInputTypes,
10+
ServiceOutputTypes,
11+
} from "../ElasticLoadBalancingV2Client";
12+
import { commonParams } from "../endpoint/EndpointParameters";
13+
import { ModifyIpPoolsInput, ModifyIpPoolsOutput } from "../models/models_0";
14+
import { de_ModifyIpPoolsCommand, se_ModifyIpPoolsCommand } from "../protocols/Aws_query";
15+
16+
/**
17+
* @public
18+
*/
19+
export type { __MetadataBearer };
20+
export { $Command };
21+
/**
22+
* @public
23+
*
24+
* The input for {@link ModifyIpPoolsCommand}.
25+
*/
26+
export interface ModifyIpPoolsCommandInput extends ModifyIpPoolsInput {}
27+
/**
28+
* @public
29+
*
30+
* The output of {@link ModifyIpPoolsCommand}.
31+
*/
32+
export interface ModifyIpPoolsCommandOutput extends ModifyIpPoolsOutput, __MetadataBearer {}
33+
34+
/**
35+
* <p>[Application Load Balancers] Modify the IP pool associated to a load balancer.</p>
36+
* @example
37+
* Use a bare-bones client and the command you need to make an API call.
38+
* ```javascript
39+
* import { ElasticLoadBalancingV2Client, ModifyIpPoolsCommand } from "@aws-sdk/client-elastic-load-balancing-v2"; // ES Modules import
40+
* // const { ElasticLoadBalancingV2Client, ModifyIpPoolsCommand } = require("@aws-sdk/client-elastic-load-balancing-v2"); // CommonJS import
41+
* const client = new ElasticLoadBalancingV2Client(config);
42+
* const input = { // ModifyIpPoolsInput
43+
* LoadBalancerArn: "STRING_VALUE", // required
44+
* IpamPools: { // IpamPools
45+
* Ipv4IpamPoolId: "STRING_VALUE",
46+
* },
47+
* RemoveIpamPools: [ // RemoveIpamPools
48+
* "ipv4",
49+
* ],
50+
* };
51+
* const command = new ModifyIpPoolsCommand(input);
52+
* const response = await client.send(command);
53+
* // { // ModifyIpPoolsOutput
54+
* // IpamPools: { // IpamPools
55+
* // Ipv4IpamPoolId: "STRING_VALUE",
56+
* // },
57+
* // };
58+
*
59+
* ```
60+
*
61+
* @param ModifyIpPoolsCommandInput - {@link ModifyIpPoolsCommandInput}
62+
* @returns {@link ModifyIpPoolsCommandOutput}
63+
* @see {@link ModifyIpPoolsCommandInput} for command's `input` shape.
64+
* @see {@link ModifyIpPoolsCommandOutput} for command's `response` shape.
65+
* @see {@link ElasticLoadBalancingV2ClientResolvedConfig | config} for ElasticLoadBalancingV2Client's `config` shape.
66+
*
67+
* @throws {@link LoadBalancerNotFoundException} (client fault)
68+
* <p>The specified load balancer does not exist.</p>
69+
*
70+
* @throws {@link ElasticLoadBalancingV2ServiceException}
71+
* <p>Base exception class for all service exceptions from ElasticLoadBalancingV2 service.</p>
72+
*
73+
* @public
74+
*/
75+
export class ModifyIpPoolsCommand extends $Command
76+
.classBuilder<
77+
ModifyIpPoolsCommandInput,
78+
ModifyIpPoolsCommandOutput,
79+
ElasticLoadBalancingV2ClientResolvedConfig,
80+
ServiceInputTypes,
81+
ServiceOutputTypes
82+
>()
83+
.ep(commonParams)
84+
.m(function (this: any, Command: any, cs: any, config: ElasticLoadBalancingV2ClientResolvedConfig, o: any) {
85+
return [
86+
getSerdePlugin(config, this.serialize, this.deserialize),
87+
getEndpointPlugin(config, Command.getEndpointParameterInstructions()),
88+
];
89+
})
90+
.s("ElasticLoadBalancing_v10", "ModifyIpPools", {})
91+
.n("ElasticLoadBalancingV2Client", "ModifyIpPoolsCommand")
92+
.f(void 0, void 0)
93+
.ser(se_ModifyIpPoolsCommand)
94+
.de(de_ModifyIpPoolsCommand)
95+
.build() {
96+
/** @internal type navigation helper, not in runtime. */
97+
protected declare static __types: {
98+
api: {
99+
input: ModifyIpPoolsInput;
100+
output: ModifyIpPoolsOutput;
101+
};
102+
sdk: {
103+
input: ModifyIpPoolsCommandInput;
104+
output: ModifyIpPoolsCommandOutput;
105+
};
106+
};
107+
}

clients/client-elastic-load-balancing-v2/src/commands/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export * from "./GetResourcePolicyCommand";
3434
export * from "./GetTrustStoreCaCertificatesBundleCommand";
3535
export * from "./GetTrustStoreRevocationContentCommand";
3636
export * from "./ModifyCapacityReservationCommand";
37+
export * from "./ModifyIpPoolsCommand";
3738
export * from "./ModifyListenerAttributesCommand";
3839
export * from "./ModifyListenerCommand";
3940
export * from "./ModifyLoadBalancerAttributesCommand";

clients/client-elastic-load-balancing-v2/src/models/models_0.ts

Lines changed: 75 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1885,6 +1885,20 @@ export const IpAddressType = {
18851885
*/
18861886
export type IpAddressType = (typeof IpAddressType)[keyof typeof IpAddressType];
18871887

1888+
/**
1889+
* <p>An IPAM pool is a collection of IP address CIDRs.
1890+
* IPAM pools enable you to organize your IP addresses
1891+
* according to your routing and security needs.</p>
1892+
* @public
1893+
*/
1894+
export interface IpamPools {
1895+
/**
1896+
* <p>The ID of the IPv4 IPAM pool.</p>
1897+
* @public
1898+
*/
1899+
Ipv4IpamPoolId?: string | undefined;
1900+
}
1901+
18881902
/**
18891903
* @public
18901904
* @enum
@@ -2059,6 +2073,12 @@ export interface CreateLoadBalancerInput {
20592073
* @public
20602074
*/
20612075
EnablePrefixForIpv6SourceNat?: EnablePrefixForIpv6SourceNatEnum | undefined;
2076+
2077+
/**
2078+
* <p>[Application Load Balancers] The IPAM pools to use with the load balancer.</p>
2079+
* @public
2080+
*/
2081+
IpamPools?: IpamPools | undefined;
20622082
}
20632083

20642084
/**
@@ -2209,6 +2229,12 @@ export interface LoadBalancer {
22092229
* @public
22102230
*/
22112231
EnablePrefixForIpv6SourceNat?: EnablePrefixForIpv6SourceNatEnum | undefined;
2232+
2233+
/**
2234+
* <p>[Application Load Balancers] The IPAM pool in use by the load balancer, if configured.</p>
2235+
* @public
2236+
*/
2237+
IpamPools?: IpamPools | undefined;
22122238
}
22132239

22142240
/**
@@ -4715,7 +4741,8 @@ export interface TargetGroupAttribute {
47154741
* <p>
47164742
* <code>target_health_state.unhealthy.connection_termination.enabled</code> - Indicates whether
47174743
* the load balancer terminates connections to unhealthy targets. The value is <code>true</code>
4718-
* or <code>false</code>. The default is <code>true</code>.</p>
4744+
* or <code>false</code>. The default is <code>true</code>. This attribute can't be enabled for UDP and
4745+
* TCP_UDP target groups.</p>
47194746
* </li>
47204747
* <li>
47214748
* <p>
@@ -5480,6 +5507,53 @@ export class PriorRequestNotCompleteException extends __BaseException {
54805507
}
54815508
}
54825509

5510+
/**
5511+
* @public
5512+
* @enum
5513+
*/
5514+
export const RemoveIpamPoolEnum = {
5515+
ipv4: "ipv4",
5516+
} as const;
5517+
5518+
/**
5519+
* @public
5520+
*/
5521+
export type RemoveIpamPoolEnum = (typeof RemoveIpamPoolEnum)[keyof typeof RemoveIpamPoolEnum];
5522+
5523+
/**
5524+
* @public
5525+
*/
5526+
export interface ModifyIpPoolsInput {
5527+
/**
5528+
* <p>The Amazon Resource Name (ARN) of the load balancer.</p>
5529+
* @public
5530+
*/
5531+
LoadBalancerArn: string | undefined;
5532+
5533+
/**
5534+
* <p>The IPAM pools to be modified.</p>
5535+
* @public
5536+
*/
5537+
IpamPools?: IpamPools | undefined;
5538+
5539+
/**
5540+
* <p>Remove the IP pools in use by the load balancer.</p>
5541+
* @public
5542+
*/
5543+
RemoveIpamPools?: RemoveIpamPoolEnum[] | undefined;
5544+
}
5545+
5546+
/**
5547+
* @public
5548+
*/
5549+
export interface ModifyIpPoolsOutput {
5550+
/**
5551+
* <p>The IPAM pool ID.</p>
5552+
* @public
5553+
*/
5554+
IpamPools?: IpamPools | undefined;
5555+
}
5556+
54835557
/**
54845558
* @public
54855559
*/

0 commit comments

Comments
 (0)