Skip to content

Commit

Permalink
feat(client-elastic-load-balancing-v2): This release adds support for…
Browse files Browse the repository at this point in the history
… assigning IP addresses to Application Load Balancers from VPC IP Address Manager pools.
  • Loading branch information
awstools committed Mar 7, 2025
1 parent e77d1e3 commit a57cb5b
Show file tree
Hide file tree
Showing 10 changed files with 469 additions and 2 deletions.
8 changes: 8 additions & 0 deletions clients/client-elastic-load-balancing-v2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,14 @@ ModifyCapacityReservation

[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/)

</details>
<details>
<summary>
ModifyIpPools
</summary>

[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/)

</details>
<details>
<summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ import {
ModifyCapacityReservationCommandInput,
ModifyCapacityReservationCommandOutput,
} from "./commands/ModifyCapacityReservationCommand";
import {
ModifyIpPoolsCommand,
ModifyIpPoolsCommandInput,
ModifyIpPoolsCommandOutput,
} from "./commands/ModifyIpPoolsCommand";
import {
ModifyListenerAttributesCommand,
ModifyListenerAttributesCommandInput,
Expand Down Expand Up @@ -266,6 +271,7 @@ const commands = {
GetTrustStoreCaCertificatesBundleCommand,
GetTrustStoreRevocationContentCommand,
ModifyCapacityReservationCommand,
ModifyIpPoolsCommand,
ModifyListenerCommand,
ModifyListenerAttributesCommand,
ModifyLoadBalancerAttributesCommand,
Expand Down Expand Up @@ -850,6 +856,17 @@ export interface ElasticLoadBalancingV2 {
cb: (err: any, data?: ModifyCapacityReservationCommandOutput) => void
): void;

/**
* @see {@link ModifyIpPoolsCommand}
*/
modifyIpPools(args: ModifyIpPoolsCommandInput, options?: __HttpHandlerOptions): Promise<ModifyIpPoolsCommandOutput>;
modifyIpPools(args: ModifyIpPoolsCommandInput, cb: (err: any, data?: ModifyIpPoolsCommandOutput) => void): void;
modifyIpPools(
args: ModifyIpPoolsCommandInput,
options: __HttpHandlerOptions,
cb: (err: any, data?: ModifyIpPoolsCommandOutput) => void
): void;

/**
* @see {@link ModifyListenerCommand}
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ import {
ModifyCapacityReservationCommandInput,
ModifyCapacityReservationCommandOutput,
} from "./commands/ModifyCapacityReservationCommand";
import { ModifyIpPoolsCommandInput, ModifyIpPoolsCommandOutput } from "./commands/ModifyIpPoolsCommand";
import {
ModifyListenerAttributesCommandInput,
ModifyListenerAttributesCommandOutput,
Expand Down Expand Up @@ -225,6 +226,7 @@ export type ServiceInputTypes =
| GetTrustStoreCaCertificatesBundleCommandInput
| GetTrustStoreRevocationContentCommandInput
| ModifyCapacityReservationCommandInput
| ModifyIpPoolsCommandInput
| ModifyListenerAttributesCommandInput
| ModifyListenerCommandInput
| ModifyLoadBalancerAttributesCommandInput
Expand Down Expand Up @@ -280,6 +282,7 @@ export type ServiceOutputTypes =
| GetTrustStoreCaCertificatesBundleCommandOutput
| GetTrustStoreRevocationContentCommandOutput
| ModifyCapacityReservationCommandOutput
| ModifyIpPoolsCommandOutput
| ModifyListenerAttributesCommandOutput
| ModifyListenerCommandOutput
| ModifyLoadBalancerAttributesCommandOutput
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,9 @@ export interface CreateLoadBalancerCommandOutput extends CreateLoadBalancerOutpu
* IpAddressType: "ipv4" || "dualstack" || "dualstack-without-public-ipv4",
* CustomerOwnedIpv4Pool: "STRING_VALUE",
* EnablePrefixForIpv6SourceNat: "on" || "off",
* IpamPools: { // IpamPools
* Ipv4IpamPoolId: "STRING_VALUE",
* },
* };
* const command = new CreateLoadBalancerCommand(input);
* const response = await client.send(command);
Expand Down Expand Up @@ -133,6 +136,9 @@ export interface CreateLoadBalancerCommandOutput extends CreateLoadBalancerOutpu
* // CustomerOwnedIpv4Pool: "STRING_VALUE",
* // EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic: "STRING_VALUE",
* // EnablePrefixForIpv6SourceNat: "on" || "off",
* // IpamPools: { // IpamPools
* // Ipv4IpamPoolId: "STRING_VALUE",
* // },
* // },
* // ],
* // };
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ export interface DescribeLoadBalancersCommandOutput extends DescribeLoadBalancer
* // CustomerOwnedIpv4Pool: "STRING_VALUE",
* // EnforceSecurityGroupInboundRulesOnPrivateLinkTraffic: "STRING_VALUE",
* // EnablePrefixForIpv6SourceNat: "on" || "off",
* // IpamPools: { // IpamPools
* // Ipv4IpamPoolId: "STRING_VALUE",
* // },
* // },
* // ],
* // NextMarker: "STRING_VALUE",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
// smithy-typescript generated code
import { getEndpointPlugin } from "@smithy/middleware-endpoint";
import { getSerdePlugin } from "@smithy/middleware-serde";
import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import {
ElasticLoadBalancingV2ClientResolvedConfig,
ServiceInputTypes,
ServiceOutputTypes,
} from "../ElasticLoadBalancingV2Client";
import { commonParams } from "../endpoint/EndpointParameters";
import { ModifyIpPoolsInput, ModifyIpPoolsOutput } from "../models/models_0";
import { de_ModifyIpPoolsCommand, se_ModifyIpPoolsCommand } from "../protocols/Aws_query";

/**
* @public
*/
export type { __MetadataBearer };
export { $Command };
/**
* @public
*
* The input for {@link ModifyIpPoolsCommand}.
*/
export interface ModifyIpPoolsCommandInput extends ModifyIpPoolsInput {}
/**
* @public
*
* The output of {@link ModifyIpPoolsCommand}.
*/
export interface ModifyIpPoolsCommandOutput extends ModifyIpPoolsOutput, __MetadataBearer {}

/**
* <p>[Application Load Balancers] Modify the IP pool associated to a load balancer.</p>
* @example
* Use a bare-bones client and the command you need to make an API call.
* ```javascript
* import { ElasticLoadBalancingV2Client, ModifyIpPoolsCommand } from "@aws-sdk/client-elastic-load-balancing-v2"; // ES Modules import
* // const { ElasticLoadBalancingV2Client, ModifyIpPoolsCommand } = require("@aws-sdk/client-elastic-load-balancing-v2"); // CommonJS import
* const client = new ElasticLoadBalancingV2Client(config);
* const input = { // ModifyIpPoolsInput
* LoadBalancerArn: "STRING_VALUE", // required
* IpamPools: { // IpamPools
* Ipv4IpamPoolId: "STRING_VALUE",
* },
* RemoveIpamPools: [ // RemoveIpamPools
* "ipv4",
* ],
* };
* const command = new ModifyIpPoolsCommand(input);
* const response = await client.send(command);
* // { // ModifyIpPoolsOutput
* // IpamPools: { // IpamPools
* // Ipv4IpamPoolId: "STRING_VALUE",
* // },
* // };
*
* ```
*
* @param ModifyIpPoolsCommandInput - {@link ModifyIpPoolsCommandInput}
* @returns {@link ModifyIpPoolsCommandOutput}
* @see {@link ModifyIpPoolsCommandInput} for command's `input` shape.
* @see {@link ModifyIpPoolsCommandOutput} for command's `response` shape.
* @see {@link ElasticLoadBalancingV2ClientResolvedConfig | config} for ElasticLoadBalancingV2Client's `config` shape.
*
* @throws {@link LoadBalancerNotFoundException} (client fault)
* <p>The specified load balancer does not exist.</p>
*
* @throws {@link ElasticLoadBalancingV2ServiceException}
* <p>Base exception class for all service exceptions from ElasticLoadBalancingV2 service.</p>
*
* @public
*/
export class ModifyIpPoolsCommand extends $Command
.classBuilder<
ModifyIpPoolsCommandInput,
ModifyIpPoolsCommandOutput,
ElasticLoadBalancingV2ClientResolvedConfig,
ServiceInputTypes,
ServiceOutputTypes
>()
.ep(commonParams)
.m(function (this: any, Command: any, cs: any, config: ElasticLoadBalancingV2ClientResolvedConfig, o: any) {
return [
getSerdePlugin(config, this.serialize, this.deserialize),
getEndpointPlugin(config, Command.getEndpointParameterInstructions()),
];
})
.s("ElasticLoadBalancing_v10", "ModifyIpPools", {})
.n("ElasticLoadBalancingV2Client", "ModifyIpPoolsCommand")
.f(void 0, void 0)
.ser(se_ModifyIpPoolsCommand)
.de(de_ModifyIpPoolsCommand)
.build() {
/** @internal type navigation helper, not in runtime. */
protected declare static __types: {
api: {
input: ModifyIpPoolsInput;
output: ModifyIpPoolsOutput;
};
sdk: {
input: ModifyIpPoolsCommandInput;
output: ModifyIpPoolsCommandOutput;
};
};
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ export * from "./GetResourcePolicyCommand";
export * from "./GetTrustStoreCaCertificatesBundleCommand";
export * from "./GetTrustStoreRevocationContentCommand";
export * from "./ModifyCapacityReservationCommand";
export * from "./ModifyIpPoolsCommand";
export * from "./ModifyListenerAttributesCommand";
export * from "./ModifyListenerCommand";
export * from "./ModifyLoadBalancerAttributesCommand";
Expand Down
76 changes: 75 additions & 1 deletion clients/client-elastic-load-balancing-v2/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1885,6 +1885,20 @@ export const IpAddressType = {
*/
export type IpAddressType = (typeof IpAddressType)[keyof typeof IpAddressType];

/**
* <p>An IPAM pool is a collection of IP address CIDRs.
* IPAM pools enable you to organize your IP addresses
* according to your routing and security needs.</p>
* @public
*/
export interface IpamPools {
/**
* <p>The ID of the IPv4 IPAM pool.</p>
* @public
*/
Ipv4IpamPoolId?: string | undefined;
}

/**
* @public
* @enum
Expand Down Expand Up @@ -2059,6 +2073,12 @@ export interface CreateLoadBalancerInput {
* @public
*/
EnablePrefixForIpv6SourceNat?: EnablePrefixForIpv6SourceNatEnum | undefined;

/**
* <p>[Application Load Balancers] The IPAM pools to use with the load balancer.</p>
* @public
*/
IpamPools?: IpamPools | undefined;
}

/**
Expand Down Expand Up @@ -2209,6 +2229,12 @@ export interface LoadBalancer {
* @public
*/
EnablePrefixForIpv6SourceNat?: EnablePrefixForIpv6SourceNatEnum | undefined;

/**
* <p>[Application Load Balancers] The IPAM pool in use by the load balancer, if configured.</p>
* @public
*/
IpamPools?: IpamPools | undefined;
}

/**
Expand Down Expand Up @@ -4715,7 +4741,8 @@ export interface TargetGroupAttribute {
* <p>
* <code>target_health_state.unhealthy.connection_termination.enabled</code> - Indicates whether
* the load balancer terminates connections to unhealthy targets. The value is <code>true</code>
* or <code>false</code>. The default is <code>true</code>.</p>
* or <code>false</code>. The default is <code>true</code>. This attribute can't be enabled for UDP and
* TCP_UDP target groups.</p>
* </li>
* <li>
* <p>
Expand Down Expand Up @@ -5480,6 +5507,53 @@ export class PriorRequestNotCompleteException extends __BaseException {
}
}

/**
* @public
* @enum
*/
export const RemoveIpamPoolEnum = {
ipv4: "ipv4",
} as const;

/**
* @public
*/
export type RemoveIpamPoolEnum = (typeof RemoveIpamPoolEnum)[keyof typeof RemoveIpamPoolEnum];

/**
* @public
*/
export interface ModifyIpPoolsInput {
/**
* <p>The Amazon Resource Name (ARN) of the load balancer.</p>
* @public
*/
LoadBalancerArn: string | undefined;

/**
* <p>The IPAM pools to be modified.</p>
* @public
*/
IpamPools?: IpamPools | undefined;

/**
* <p>Remove the IP pools in use by the load balancer.</p>
* @public
*/
RemoveIpamPools?: RemoveIpamPoolEnum[] | undefined;
}

/**
* @public
*/
export interface ModifyIpPoolsOutput {
/**
* <p>The IPAM pool ID.</p>
* @public
*/
IpamPools?: IpamPools | undefined;
}

/**
* @public
*/
Expand Down
Loading

0 comments on commit a57cb5b

Please sign in to comment.