From 502ebd2b591df7edfe14c7be0b5aa64c581d9df3 Mon Sep 17 00:00:00 2001 From: awstools Date: Fri, 19 May 2023 18:15:49 +0000 Subject: [PATCH] feat(client-sesv2): This release allows customers to update scaling mode property of dedicated IP pools with PutDedicatedIpPoolScalingAttributes call. --- clients/client-sesv2/README.md | 8 + clients/client-sesv2/src/SESv2.ts | 23 ++ clients/client-sesv2/src/SESv2Client.ts | 6 + ...DedicatedIpPoolScalingAttributesCommand.ts | 167 ++++++++++ clients/client-sesv2/src/commands/index.ts | 1 + clients/client-sesv2/src/models/models_0.ts | 38 ++- .../src/protocols/Aws_restJson1.ts | 88 ++++++ codegen/sdk-codegen/aws-models/sesv2.json | 285 ++++++++++++------ 8 files changed, 527 insertions(+), 89 deletions(-) create mode 100644 clients/client-sesv2/src/commands/PutDedicatedIpPoolScalingAttributesCommand.ts diff --git a/clients/client-sesv2/README.md b/clients/client-sesv2/README.md index cd2bb04169127..f7efdd87dec84 100644 --- a/clients/client-sesv2/README.md +++ b/clients/client-sesv2/README.md @@ -737,6 +737,14 @@ PutDedicatedIpInPool [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/classes/putdedicatedipinpoolcommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/interfaces/putdedicatedipinpoolcommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/interfaces/putdedicatedipinpoolcommandoutput.html) + +
+ +PutDedicatedIpPoolScalingAttributes + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/classes/putdedicatedippoolscalingattributescommand.html) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/interfaces/putdedicatedippoolscalingattributescommandinput.html) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/interfaces/putdedicatedippoolscalingattributescommandoutput.html) +
diff --git a/clients/client-sesv2/src/SESv2.ts b/clients/client-sesv2/src/SESv2.ts index 732f64d643441..b3284261b1674 100644 --- a/clients/client-sesv2/src/SESv2.ts +++ b/clients/client-sesv2/src/SESv2.ts @@ -324,6 +324,11 @@ import { PutDedicatedIpInPoolCommandInput, PutDedicatedIpInPoolCommandOutput, } from "./commands/PutDedicatedIpInPoolCommand"; +import { + PutDedicatedIpPoolScalingAttributesCommand, + PutDedicatedIpPoolScalingAttributesCommandInput, + PutDedicatedIpPoolScalingAttributesCommandOutput, +} from "./commands/PutDedicatedIpPoolScalingAttributesCommand"; import { PutDedicatedIpWarmupAttributesCommand, PutDedicatedIpWarmupAttributesCommandInput, @@ -485,6 +490,7 @@ const commands = { PutConfigurationSetTrackingOptionsCommand, PutConfigurationSetVdmOptionsCommand, PutDedicatedIpInPoolCommand, + PutDedicatedIpPoolScalingAttributesCommand, PutDedicatedIpWarmupAttributesCommand, PutDeliverabilityDashboardOptionCommand, PutEmailIdentityConfigurationSetAttributesCommand, @@ -1579,6 +1585,23 @@ export interface SESv2 { cb: (err: any, data?: PutDedicatedIpInPoolCommandOutput) => void ): void; + /** + * @see {@link PutDedicatedIpPoolScalingAttributesCommand} + */ + putDedicatedIpPoolScalingAttributes( + args: PutDedicatedIpPoolScalingAttributesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + putDedicatedIpPoolScalingAttributes( + args: PutDedicatedIpPoolScalingAttributesCommandInput, + cb: (err: any, data?: PutDedicatedIpPoolScalingAttributesCommandOutput) => void + ): void; + putDedicatedIpPoolScalingAttributes( + args: PutDedicatedIpPoolScalingAttributesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: PutDedicatedIpPoolScalingAttributesCommandOutput) => void + ): void; + /** * @see {@link PutDedicatedIpWarmupAttributesCommand} */ diff --git a/clients/client-sesv2/src/SESv2Client.ts b/clients/client-sesv2/src/SESv2Client.ts index 8c0ebb9bd27b3..dbacff531a588 100644 --- a/clients/client-sesv2/src/SESv2Client.ts +++ b/clients/client-sesv2/src/SESv2Client.ts @@ -255,6 +255,10 @@ import { PutDedicatedIpInPoolCommandInput, PutDedicatedIpInPoolCommandOutput, } from "./commands/PutDedicatedIpInPoolCommand"; +import { + PutDedicatedIpPoolScalingAttributesCommandInput, + PutDedicatedIpPoolScalingAttributesCommandOutput, +} from "./commands/PutDedicatedIpPoolScalingAttributesCommand"; import { PutDedicatedIpWarmupAttributesCommandInput, PutDedicatedIpWarmupAttributesCommandOutput, @@ -395,6 +399,7 @@ export type ServiceInputTypes = | PutConfigurationSetTrackingOptionsCommandInput | PutConfigurationSetVdmOptionsCommandInput | PutDedicatedIpInPoolCommandInput + | PutDedicatedIpPoolScalingAttributesCommandInput | PutDedicatedIpWarmupAttributesCommandInput | PutDeliverabilityDashboardOptionCommandInput | PutEmailIdentityConfigurationSetAttributesCommandInput @@ -486,6 +491,7 @@ export type ServiceOutputTypes = | PutConfigurationSetTrackingOptionsCommandOutput | PutConfigurationSetVdmOptionsCommandOutput | PutDedicatedIpInPoolCommandOutput + | PutDedicatedIpPoolScalingAttributesCommandOutput | PutDedicatedIpWarmupAttributesCommandOutput | PutDeliverabilityDashboardOptionCommandOutput | PutEmailIdentityConfigurationSetAttributesCommandOutput diff --git a/clients/client-sesv2/src/commands/PutDedicatedIpPoolScalingAttributesCommand.ts b/clients/client-sesv2/src/commands/PutDedicatedIpPoolScalingAttributesCommand.ts new file mode 100644 index 0000000000000..e65c9f927e734 --- /dev/null +++ b/clients/client-sesv2/src/commands/PutDedicatedIpPoolScalingAttributesCommand.ts @@ -0,0 +1,167 @@ +// smithy-typescript generated code +import { EndpointParameterInstructions, getEndpointPlugin } from "@aws-sdk/middleware-endpoint"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, +} from "@aws-sdk/types"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@smithy/protocol-http"; +import { SerdeContext as __SerdeContext } from "@smithy/types"; + +import { + PutDedicatedIpPoolScalingAttributesRequest, + PutDedicatedIpPoolScalingAttributesResponse, +} from "../models/models_0"; +import { + de_PutDedicatedIpPoolScalingAttributesCommand, + se_PutDedicatedIpPoolScalingAttributesCommand, +} from "../protocols/Aws_restJson1"; +import { ServiceInputTypes, ServiceOutputTypes, SESv2ClientResolvedConfig } from "../SESv2Client"; + +/** + * @public + * + * The input for {@link PutDedicatedIpPoolScalingAttributesCommand}. + */ +export interface PutDedicatedIpPoolScalingAttributesCommandInput extends PutDedicatedIpPoolScalingAttributesRequest {} +/** + * @public + * + * The output of {@link PutDedicatedIpPoolScalingAttributesCommand}. + */ +export interface PutDedicatedIpPoolScalingAttributesCommandOutput + extends PutDedicatedIpPoolScalingAttributesResponse, + __MetadataBearer {} + +/** + * @public + *

Used to convert a dedicated IP pool to a different scaling mode.

+ * + *

+ * MANAGED pools cannot be converted to STANDARD scaling mode.

+ *
+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { SESv2Client, PutDedicatedIpPoolScalingAttributesCommand } from "@aws-sdk/client-sesv2"; // ES Modules import + * // const { SESv2Client, PutDedicatedIpPoolScalingAttributesCommand } = require("@aws-sdk/client-sesv2"); // CommonJS import + * const client = new SESv2Client(config); + * const input = { // PutDedicatedIpPoolScalingAttributesRequest + * PoolName: "STRING_VALUE", // required + * ScalingMode: "STANDARD" || "MANAGED", // required + * }; + * const command = new PutDedicatedIpPoolScalingAttributesCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param PutDedicatedIpPoolScalingAttributesCommandInput - {@link PutDedicatedIpPoolScalingAttributesCommandInput} + * @returns {@link PutDedicatedIpPoolScalingAttributesCommandOutput} + * @see {@link PutDedicatedIpPoolScalingAttributesCommandInput} for command's `input` shape. + * @see {@link PutDedicatedIpPoolScalingAttributesCommandOutput} for command's `response` shape. + * @see {@link SESv2ClientResolvedConfig | config} for SESv2Client's `config` shape. + * + * @throws {@link BadRequestException} (client fault) + *

The input you provided is invalid.

+ * + * @throws {@link ConcurrentModificationException} (server fault) + *

The resource is being modified by another operation or thread.

+ * + * @throws {@link NotFoundException} (client fault) + *

The resource you attempted to access doesn't exist.

+ * + * @throws {@link TooManyRequestsException} (client fault) + *

Too many requests have been made to the operation.

+ * + * @throws {@link SESv2ServiceException} + *

Base exception class for all service exceptions from SESv2 service.

+ * + */ +export class PutDedicatedIpPoolScalingAttributesCommand extends $Command< + PutDedicatedIpPoolScalingAttributesCommandInput, + PutDedicatedIpPoolScalingAttributesCommandOutput, + SESv2ClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + public static getEndpointParameterInstructions(): EndpointParameterInstructions { + return { + UseFIPS: { type: "builtInParams", name: "useFipsEndpoint" }, + Endpoint: { type: "builtInParams", name: "endpoint" }, + Region: { type: "builtInParams", name: "region" }, + UseDualStack: { type: "builtInParams", name: "useDualstackEndpoint" }, + }; + } + + /** + * @public + */ + constructor(readonly input: PutDedicatedIpPoolScalingAttributesCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: SESv2ClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use( + getEndpointPlugin(configuration, PutDedicatedIpPoolScalingAttributesCommand.getEndpointParameterInstructions()) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "SESv2Client"; + const commandName = "PutDedicatedIpPoolScalingAttributesCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: (_: any) => _, + outputFilterSensitiveLog: (_: any) => _, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + /** + * @internal + */ + private serialize( + input: PutDedicatedIpPoolScalingAttributesCommandInput, + context: __SerdeContext + ): Promise<__HttpRequest> { + return se_PutDedicatedIpPoolScalingAttributesCommand(input, context); + } + + /** + * @internal + */ + private deserialize( + output: __HttpResponse, + context: __SerdeContext + ): Promise { + return de_PutDedicatedIpPoolScalingAttributesCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-sesv2/src/commands/index.ts b/clients/client-sesv2/src/commands/index.ts index 722369cadab2e..90ee70f8496df 100644 --- a/clients/client-sesv2/src/commands/index.ts +++ b/clients/client-sesv2/src/commands/index.ts @@ -65,6 +65,7 @@ export * from "./PutConfigurationSetSuppressionOptionsCommand"; export * from "./PutConfigurationSetTrackingOptionsCommand"; export * from "./PutConfigurationSetVdmOptionsCommand"; export * from "./PutDedicatedIpInPoolCommand"; +export * from "./PutDedicatedIpPoolScalingAttributesCommand"; export * from "./PutDedicatedIpWarmupAttributesCommand"; export * from "./PutDeliverabilityDashboardOptionCommand"; export * from "./PutEmailIdentityConfigurationSetAttributesCommand"; diff --git a/clients/client-sesv2/src/models/models_0.ts b/clients/client-sesv2/src/models/models_0.ts index 5453dde924528..f34bfef486621 100644 --- a/clients/client-sesv2/src/models/models_0.ts +++ b/clients/client-sesv2/src/models/models_0.ts @@ -2669,11 +2669,13 @@ export interface DedicatedIpPool { *
    *
  • *

    - * STANDARD – A dedicated IP pool where the customer can control which IPs are part of the pool.

    + * STANDARD – A dedicated IP pool where you can + * control which IPs are part of the pool.

    *
  • *
  • *

    - * MANAGED – A dedicated IP pool where the reputation and number of IPs is automatically managed by Amazon SES.

    + * MANAGED – A dedicated IP pool where the reputation and + * number of IPs are automatically managed by Amazon SES.

    *
  • *
*/ @@ -3545,7 +3547,7 @@ export interface GetContactRequest { ContactListName: string | undefined; /** - *

The contact's email addres.

+ *

The contact's email address.

*/ EmailAddress: string | undefined; } @@ -3560,7 +3562,7 @@ export interface GetContactResponse { ContactListName?: string; /** - *

The contact's email addres.

+ *

The contact's email address.

*/ EmailAddress?: string; @@ -5647,6 +5649,32 @@ export interface PutDedicatedIpInPoolRequest { */ export interface PutDedicatedIpInPoolResponse {} +/** + * @public + *

A request to convert a dedicated IP pool to a different scaling mode.

+ */ +export interface PutDedicatedIpPoolScalingAttributesRequest { + /** + *

The name of the dedicated IP pool.

+ */ + PoolName: string | undefined; + + /** + *

The scaling mode to apply to the dedicated IP pool.

+ * + *

Changing the scaling mode from MANAGED to STANDARD is not supported.

+ *
+ */ + ScalingMode: ScalingMode | string | undefined; +} + +/** + * @public + *

An HTTP 200 response if the request succeeds, or an error message if the request + * fails.

+ */ +export interface PutDedicatedIpPoolScalingAttributesResponse {} + /** * @public *

A request to change the warm-up attributes for a dedicated IP address. This operation @@ -6311,7 +6339,7 @@ export interface UpdateContactRequest { ContactListName: string | undefined; /** - *

The contact's email addres.

+ *

The contact's email address.

*/ EmailAddress: string | undefined; diff --git a/clients/client-sesv2/src/protocols/Aws_restJson1.ts b/clients/client-sesv2/src/protocols/Aws_restJson1.ts index b2dcd768c27ab..ecd63e350af34 100644 --- a/clients/client-sesv2/src/protocols/Aws_restJson1.ts +++ b/clients/client-sesv2/src/protocols/Aws_restJson1.ts @@ -225,6 +225,10 @@ import { PutDedicatedIpInPoolCommandInput, PutDedicatedIpInPoolCommandOutput, } from "../commands/PutDedicatedIpInPoolCommand"; +import { + PutDedicatedIpPoolScalingAttributesCommandInput, + PutDedicatedIpPoolScalingAttributesCommandOutput, +} from "../commands/PutDedicatedIpPoolScalingAttributesCommand"; import { PutDedicatedIpWarmupAttributesCommandInput, PutDedicatedIpWarmupAttributesCommandOutput, @@ -2502,6 +2506,38 @@ export const se_PutDedicatedIpInPoolCommand = async ( }); }; +/** + * serializeAws_restJson1PutDedicatedIpPoolScalingAttributesCommand + */ +export const se_PutDedicatedIpPoolScalingAttributesCommand = async ( + input: PutDedicatedIpPoolScalingAttributesCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers: any = { + "content-type": "application/json", + }; + let resolvedPath = + `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + + "/v2/email/dedicated-ip-pools/{PoolName}/scaling"; + resolvedPath = __resolvedPath(resolvedPath, input, "PoolName", () => input.PoolName!, "{PoolName}", false); + let body: any; + body = JSON.stringify( + take(input, { + ScalingMode: [], + }) + ); + return new __HttpRequest({ + protocol, + hostname, + port, + method: "PUT", + headers, + path: resolvedPath, + body, + }); +}; + /** * serializeAws_restJson1PutDedicatedIpWarmupAttributesCommand */ @@ -6755,6 +6791,58 @@ const de_PutDedicatedIpInPoolCommandError = async ( } }; +/** + * deserializeAws_restJson1PutDedicatedIpPoolScalingAttributesCommand + */ +export const de_PutDedicatedIpPoolScalingAttributesCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_PutDedicatedIpPoolScalingAttributesCommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + await collectBody(output.body, context); + return contents; +}; + +/** + * deserializeAws_restJson1PutDedicatedIpPoolScalingAttributesCommandError + */ +const de_PutDedicatedIpPoolScalingAttributesCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseErrorBody(output.body, context), + }; + const errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "BadRequestException": + case "com.amazonaws.sesv2#BadRequestException": + throw await de_BadRequestExceptionRes(parsedOutput, context); + case "ConcurrentModificationException": + case "com.amazonaws.sesv2#ConcurrentModificationException": + throw await de_ConcurrentModificationExceptionRes(parsedOutput, context); + case "NotFoundException": + case "com.amazonaws.sesv2#NotFoundException": + throw await de_NotFoundExceptionRes(parsedOutput, context); + case "TooManyRequestsException": + case "com.amazonaws.sesv2#TooManyRequestsException": + throw await de_TooManyRequestsExceptionRes(parsedOutput, context); + default: + const parsedBody = parsedOutput.body; + return throwDefaultError({ + output, + parsedBody, + errorCode, + }); + } +}; + /** * deserializeAws_restJson1PutDedicatedIpWarmupAttributesCommand */ diff --git a/codegen/sdk-codegen/aws-models/sesv2.json b/codegen/sdk-codegen/aws-models/sesv2.json index 183f337c71d15..3a2381c8fdc8a 100644 --- a/codegen/sdk-codegen/aws-models/sesv2.json +++ b/codegen/sdk-codegen/aws-models/sesv2.json @@ -1865,7 +1865,7 @@ "ScalingMode": { "target": "com.amazonaws.sesv2#ScalingMode", "traits": { - "smithy.api#documentation": "

The type of the dedicated IP pool.

\n
    \n
  • \n

    \n STANDARD – A dedicated IP pool where the customer can control which IPs are part of the pool.

    \n
  • \n
  • \n

    \n MANAGED – A dedicated IP pool where the reputation and number of IPs is automatically managed by Amazon SES.

    \n
  • \n
", + "smithy.api#documentation": "

The type of the dedicated IP pool.

\n
    \n
  • \n

    \n STANDARD – A dedicated IP pool where you can\n control which IPs are part of the pool.

    \n
  • \n
  • \n

    \n MANAGED – A dedicated IP pool where the reputation and\n number of IPs are automatically managed by Amazon SES.

    \n
  • \n
", "smithy.api#required": {} } } @@ -3817,7 +3817,7 @@ "EmailAddress": { "target": "com.amazonaws.sesv2#EmailAddress", "traits": { - "smithy.api#documentation": "

The contact's email addres.

", + "smithy.api#documentation": "

The contact's email address.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3839,7 +3839,7 @@ "EmailAddress": { "target": "com.amazonaws.sesv2#EmailAddress", "traits": { - "smithy.api#documentation": "

The contact's email addres.

" + "smithy.api#documentation": "

The contact's email address.

" } }, "TopicPreferences": { @@ -7659,6 +7659,70 @@ "smithy.api#output": {} } }, + "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributes": { + "type": "operation", + "input": { + "target": "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributesRequest" + }, + "output": { + "target": "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributesResponse" + }, + "errors": [ + { + "target": "com.amazonaws.sesv2#BadRequestException" + }, + { + "target": "com.amazonaws.sesv2#ConcurrentModificationException" + }, + { + "target": "com.amazonaws.sesv2#NotFoundException" + }, + { + "target": "com.amazonaws.sesv2#TooManyRequestsException" + } + ], + "traits": { + "smithy.api#documentation": "

Used to convert a dedicated IP pool to a different scaling mode.

\n \n

\n MANAGED pools cannot be converted to STANDARD scaling mode.

\n
", + "smithy.api#http": { + "method": "PUT", + "uri": "/v2/email/dedicated-ip-pools/{PoolName}/scaling", + "code": 200 + }, + "smithy.api#idempotent": {} + } + }, + "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributesRequest": { + "type": "structure", + "members": { + "PoolName": { + "target": "com.amazonaws.sesv2#PoolName", + "traits": { + "smithy.api#documentation": "

The name of the dedicated IP pool.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "ScalingMode": { + "target": "com.amazonaws.sesv2#ScalingMode", + "traits": { + "smithy.api#documentation": "

The scaling mode to apply to the dedicated IP pool.

\n \n

Changing the scaling mode from MANAGED to STANDARD is not supported.

\n
", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "

A request to convert a dedicated IP pool to a different scaling mode.

", + "smithy.api#input": {} + } + }, + "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributesResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#documentation": "

An HTTP 200 response if the request succeeds, or an error message if the request\n fails.

", + "smithy.api#output": {} + } + }, "com.amazonaws.sesv2#PutDedicatedIpWarmupAttributes": { "type": "operation", "input": { @@ -9098,6 +9162,9 @@ { "target": "com.amazonaws.sesv2#PutDedicatedIpInPool" }, + { + "target": "com.amazonaws.sesv2#PutDedicatedIpPoolScalingAttributes" + }, { "target": "com.amazonaws.sesv2#PutDedicatedIpWarmupAttributes" }, @@ -9534,8 +9601,8 @@ }, "params": { "Region": "af-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9547,8 +9614,8 @@ }, "params": { "Region": "ap-northeast-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9560,8 +9627,8 @@ }, "params": { "Region": "ap-northeast-2", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9573,8 +9640,8 @@ }, "params": { "Region": "ap-northeast-3", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9586,8 +9653,8 @@ }, "params": { "Region": "ap-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9599,8 +9666,8 @@ }, "params": { "Region": "ap-southeast-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9612,8 +9679,8 @@ }, "params": { "Region": "ap-southeast-2", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9625,8 +9692,8 @@ }, "params": { "Region": "ca-central-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9638,8 +9705,8 @@ }, "params": { "Region": "eu-central-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9651,8 +9718,8 @@ }, "params": { "Region": "eu-north-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9664,8 +9731,8 @@ }, "params": { "Region": "eu-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9677,8 +9744,8 @@ }, "params": { "Region": "eu-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9690,8 +9757,8 @@ }, "params": { "Region": "eu-west-2", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9703,8 +9770,8 @@ }, "params": { "Region": "eu-west-3", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9716,8 +9783,8 @@ }, "params": { "Region": "me-south-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9729,8 +9796,8 @@ }, "params": { "Region": "sa-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9742,8 +9809,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9755,8 +9822,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false } }, { @@ -9768,8 +9835,8 @@ }, "params": { "Region": "us-east-2", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9781,8 +9848,8 @@ }, "params": { "Region": "us-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9794,8 +9861,8 @@ }, "params": { "Region": "us-west-2", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9807,8 +9874,8 @@ }, "params": { "Region": "us-west-2", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false } }, { @@ -9820,8 +9887,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": true } }, { @@ -9833,8 +9900,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": true } }, { @@ -9846,8 +9913,8 @@ }, "params": { "Region": "cn-north-1", - "UseDualStack": true, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": true } }, { @@ -9859,8 +9926,8 @@ }, "params": { "Region": "cn-north-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false } }, { @@ -9872,8 +9939,8 @@ }, "params": { "Region": "cn-north-1", - "UseDualStack": true, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": true } }, { @@ -9885,8 +9952,8 @@ }, "params": { "Region": "cn-north-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9898,8 +9965,8 @@ }, "params": { "Region": "us-gov-west-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -9911,8 +9978,8 @@ }, "params": { "Region": "us-gov-west-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false } }, { @@ -9924,8 +9991,8 @@ }, "params": { "Region": "us-gov-east-1", - "UseDualStack": true, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": true } }, { @@ -9937,8 +10004,8 @@ }, "params": { "Region": "us-gov-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false } }, { @@ -9950,8 +10017,8 @@ }, "params": { "Region": "us-gov-east-1", - "UseDualStack": true, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": true } }, { @@ -9963,8 +10030,19 @@ }, "params": { "Region": "us-gov-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": true, + "UseDualStack": true } }, { @@ -9976,8 +10054,19 @@ }, "params": { "Region": "us-iso-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-iso-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-iso-east-1", + "UseFIPS": false, + "UseDualStack": true } }, { @@ -9989,8 +10078,19 @@ }, "params": { "Region": "us-iso-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS enabled and DualStack enabled", + "expect": { + "error": "FIPS and DualStack are enabled, but this partition does not support one or both" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": true, + "UseDualStack": true } }, { @@ -10002,8 +10102,19 @@ }, "params": { "Region": "us-isob-east-1", - "UseDualStack": false, - "UseFIPS": true + "UseFIPS": true, + "UseDualStack": false + } + }, + { + "documentation": "For region us-isob-east-1 with FIPS disabled and DualStack enabled", + "expect": { + "error": "DualStack is enabled but this partition does not support DualStack" + }, + "params": { + "Region": "us-isob-east-1", + "UseFIPS": false, + "UseDualStack": true } }, { @@ -10015,8 +10126,8 @@ }, "params": { "Region": "us-isob-east-1", - "UseDualStack": false, - "UseFIPS": false + "UseFIPS": false, + "UseDualStack": false } }, { @@ -10028,8 +10139,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": false, "UseFIPS": false, + "UseDualStack": false, "Endpoint": "https://example.com" } }, @@ -10041,8 +10152,8 @@ } }, "params": { - "UseDualStack": false, "UseFIPS": false, + "UseDualStack": false, "Endpoint": "https://example.com" } }, @@ -10053,8 +10164,8 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": false, "UseFIPS": true, + "UseDualStack": false, "Endpoint": "https://example.com" } }, @@ -10065,10 +10176,16 @@ }, "params": { "Region": "us-east-1", - "UseDualStack": true, "UseFIPS": false, + "UseDualStack": true, "Endpoint": "https://example.com" } + }, + { + "documentation": "Missing region", + "expect": { + "error": "Invalid Configuration: Missing Region" + } } ], "version": "1.0" @@ -10892,7 +11009,7 @@ "EmailAddress": { "target": "com.amazonaws.sesv2#EmailAddress", "traits": { - "smithy.api#documentation": "

The contact's email addres.

", + "smithy.api#documentation": "

The contact's email address.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} }