Skip to content

Commit 308a75b

Browse files
author
awstools
committed
feat(client-mailmanager): Add support for Dual_Stack and PrivateLink types of IngressPoint. For configuration requests, SES Mail Manager will now accept both IPv4/IPv6 dual-stack endpoints and AWS PrivateLink VPC endpoints for email receiving.
1 parent 3aaab37 commit 308a75b

File tree

7 files changed

+282
-0
lines changed

7 files changed

+282
-0
lines changed

clients/client-mailmanager/src/commands/CreateIngressPointCommand.ts

+8
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,14 @@ export interface CreateIngressPointCommandOutput extends CreateIngressPointRespo
4949
* SmtpPassword: "STRING_VALUE",
5050
* SecretArn: "STRING_VALUE",
5151
* },
52+
* NetworkConfiguration: { // NetworkConfiguration Union: only one key present
53+
* PublicNetworkConfiguration: { // PublicNetworkConfiguration
54+
* IpType: "IPV4" || "DUAL_STACK", // required
55+
* },
56+
* PrivateNetworkConfiguration: { // PrivateNetworkConfiguration
57+
* VpcEndpointId: "STRING_VALUE", // required
58+
* },
59+
* },
5260
* Tags: [ // TagList
5361
* { // Tag
5462
* Key: "STRING_VALUE", // required

clients/client-mailmanager/src/commands/CreateTrafficPolicyCommand.ts

+9
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ export interface CreateTrafficPolicyCommandOutput extends CreateTrafficPolicyRes
6464
* "STRING_VALUE",
6565
* ],
6666
* },
67+
* Ipv6Expression: { // IngressIpv6Expression
68+
* Evaluate: { // IngressIpv6ToEvaluate Union: only one key present
69+
* Attribute: "SENDER_IPV6",
70+
* },
71+
* Operator: "CIDR_MATCHES" || "NOT_CIDR_MATCHES", // required
72+
* Values: [ // Ipv6Cidrs // required
73+
* "STRING_VALUE",
74+
* ],
75+
* },
6776
* TlsExpression: { // IngressTlsProtocolExpression
6877
* Evaluate: { // IngressTlsProtocolToEvaluate Union: only one key present
6978
* Attribute: "TLS_PROTOCOL",

clients/client-mailmanager/src/commands/GetIngressPointCommand.ts

+8
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ export interface GetIngressPointCommandOutput extends GetIngressPointResponse, _
5757
* // },
5858
* // SecretArn: "STRING_VALUE",
5959
* // },
60+
* // NetworkConfiguration: { // NetworkConfiguration Union: only one key present
61+
* // PublicNetworkConfiguration: { // PublicNetworkConfiguration
62+
* // IpType: "IPV4" || "DUAL_STACK", // required
63+
* // },
64+
* // PrivateNetworkConfiguration: { // PrivateNetworkConfiguration
65+
* // VpcEndpointId: "STRING_VALUE", // required
66+
* // },
67+
* // },
6068
* // CreatedTimestamp: new Date("TIMESTAMP"),
6169
* // LastUpdatedTimestamp: new Date("TIMESTAMP"),
6270
* // };

clients/client-mailmanager/src/commands/GetTrafficPolicyCommand.ts

+9
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,15 @@ export interface GetTrafficPolicyCommandOutput extends GetTrafficPolicyResponse,
7070
* // "STRING_VALUE",
7171
* // ],
7272
* // },
73+
* // Ipv6Expression: { // IngressIpv6Expression
74+
* // Evaluate: { // IngressIpv6ToEvaluate Union: only one key present
75+
* // Attribute: "SENDER_IPV6",
76+
* // },
77+
* // Operator: "CIDR_MATCHES" || "NOT_CIDR_MATCHES", // required
78+
* // Values: [ // Ipv6Cidrs // required
79+
* // "STRING_VALUE",
80+
* // ],
81+
* // },
7382
* // TlsExpression: { // IngressTlsProtocolExpression
7483
* // Evaluate: { // IngressTlsProtocolToEvaluate Union: only one key present
7584
* // Attribute: "TLS_PROTOCOL",

clients/client-mailmanager/src/commands/UpdateTrafficPolicyCommand.ts

+9
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,15 @@ export interface UpdateTrafficPolicyCommandOutput extends UpdateTrafficPolicyRes
6464
* "STRING_VALUE",
6565
* ],
6666
* },
67+
* Ipv6Expression: { // IngressIpv6Expression
68+
* Evaluate: { // IngressIpv6ToEvaluate Union: only one key present
69+
* Attribute: "SENDER_IPV6",
70+
* },
71+
* Operator: "CIDR_MATCHES" || "NOT_CIDR_MATCHES", // required
72+
* Values: [ // Ipv6Cidrs // required
73+
* "STRING_VALUE",
74+
* ],
75+
* },
6776
* TlsExpression: { // IngressTlsProtocolExpression
6877
* Evaluate: { // IngressTlsProtocolToEvaluate Union: only one key present
6978
* Attribute: "TLS_PROTOCOL",

clients/client-mailmanager/src/models/models_0.ts

+208
Original file line numberDiff line numberDiff line change
@@ -1457,6 +1457,101 @@ export namespace IngressPointConfiguration {
14571457
};
14581458
}
14591459

1460+
/**
1461+
* <p>Specifies the network configuration for the private ingress point.</p>
1462+
* @public
1463+
*/
1464+
export interface PrivateNetworkConfiguration {
1465+
/**
1466+
* <p>The identifier of the VPC endpoint to associate with this private ingress point.</p>
1467+
* @public
1468+
*/
1469+
VpcEndpointId: string | undefined;
1470+
}
1471+
1472+
/**
1473+
* @public
1474+
* @enum
1475+
*/
1476+
export const IpType = {
1477+
DUAL_STACK: "DUAL_STACK",
1478+
IPV4: "IPV4",
1479+
} as const;
1480+
1481+
/**
1482+
* @public
1483+
*/
1484+
export type IpType = (typeof IpType)[keyof typeof IpType];
1485+
1486+
/**
1487+
* <p>Specifies the network configuration for the public ingress point.</p>
1488+
* @public
1489+
*/
1490+
export interface PublicNetworkConfiguration {
1491+
/**
1492+
* <p>The IP address type for the public ingress point. Valid values are IPV4 and DUAL_STACK.</p>
1493+
* @public
1494+
*/
1495+
IpType: IpType | undefined;
1496+
}
1497+
1498+
/**
1499+
* <p>The network type (IPv4-only, Dual-Stack, PrivateLink) of the ingress endpoint resource.</p>
1500+
* @public
1501+
*/
1502+
export type NetworkConfiguration =
1503+
| NetworkConfiguration.PrivateNetworkConfigurationMember
1504+
| NetworkConfiguration.PublicNetworkConfigurationMember
1505+
| NetworkConfiguration.$UnknownMember;
1506+
1507+
/**
1508+
* @public
1509+
*/
1510+
export namespace NetworkConfiguration {
1511+
/**
1512+
* <p>Specifies the network configuration for the public ingress point.</p>
1513+
* @public
1514+
*/
1515+
export interface PublicNetworkConfigurationMember {
1516+
PublicNetworkConfiguration: PublicNetworkConfiguration;
1517+
PrivateNetworkConfiguration?: never;
1518+
$unknown?: never;
1519+
}
1520+
1521+
/**
1522+
* <p>Specifies the network configuration for the private ingress point.</p>
1523+
* @public
1524+
*/
1525+
export interface PrivateNetworkConfigurationMember {
1526+
PublicNetworkConfiguration?: never;
1527+
PrivateNetworkConfiguration: PrivateNetworkConfiguration;
1528+
$unknown?: never;
1529+
}
1530+
1531+
/**
1532+
* @public
1533+
*/
1534+
export interface $UnknownMember {
1535+
PublicNetworkConfiguration?: never;
1536+
PrivateNetworkConfiguration?: never;
1537+
$unknown: [string, any];
1538+
}
1539+
1540+
export interface Visitor<T> {
1541+
PublicNetworkConfiguration: (value: PublicNetworkConfiguration) => T;
1542+
PrivateNetworkConfiguration: (value: PrivateNetworkConfiguration) => T;
1543+
_: (name: string, value: any) => T;
1544+
}
1545+
1546+
export const visit = <T>(value: NetworkConfiguration, visitor: Visitor<T>): T => {
1547+
if (value.PublicNetworkConfiguration !== undefined)
1548+
return visitor.PublicNetworkConfiguration(value.PublicNetworkConfiguration);
1549+
if (value.PrivateNetworkConfiguration !== undefined)
1550+
return visitor.PrivateNetworkConfiguration(value.PrivateNetworkConfiguration);
1551+
return visitor._(value.$unknown[0], value.$unknown[1]);
1552+
};
1553+
}
1554+
14601555
/**
14611556
* @public
14621557
* @enum
@@ -1515,6 +1610,14 @@ export interface CreateIngressPointRequest {
15151610
*/
15161611
IngressPointConfiguration?: IngressPointConfiguration | undefined;
15171612

1613+
/**
1614+
* <p>Specifies the network configuration for the ingress point.
1615+
* This allows you to create an IPv4-only, Dual-Stack, or PrivateLink type of ingress point. If not specified, the default network type is IPv4-only.
1616+
* </p>
1617+
* @public
1618+
*/
1619+
NetworkConfiguration?: NetworkConfiguration | undefined;
1620+
15181621
/**
15191622
* <p>The tags used to organize, track, or control access for the resource. For example, \{ "tags": \{"key1":"value1", "key2":"value2"\} \}.</p>
15201623
* @public
@@ -3164,6 +3267,81 @@ export interface IngressIpv4Expression {
31643267
Values: string[] | undefined;
31653268
}
31663269

3270+
/**
3271+
* @public
3272+
* @enum
3273+
*/
3274+
export const IngressIpv6Attribute = {
3275+
SENDER_IPV6: "SENDER_IPV6",
3276+
} as const;
3277+
3278+
/**
3279+
* @public
3280+
*/
3281+
export type IngressIpv6Attribute = (typeof IngressIpv6Attribute)[keyof typeof IngressIpv6Attribute];
3282+
3283+
/**
3284+
* <p>The structure for an IPv6 based condition matching on the incoming mail.</p>
3285+
* @public
3286+
*/
3287+
export type IngressIpv6ToEvaluate = IngressIpv6ToEvaluate.AttributeMember | IngressIpv6ToEvaluate.$UnknownMember;
3288+
3289+
/**
3290+
* @public
3291+
*/
3292+
export namespace IngressIpv6ToEvaluate {
3293+
/**
3294+
* <p>An enum type representing the allowed attribute types for an IPv6 condition.</p>
3295+
* @public
3296+
*/
3297+
export interface AttributeMember {
3298+
Attribute: IngressIpv6Attribute;
3299+
$unknown?: never;
3300+
}
3301+
3302+
/**
3303+
* @public
3304+
*/
3305+
export interface $UnknownMember {
3306+
Attribute?: never;
3307+
$unknown: [string, any];
3308+
}
3309+
3310+
export interface Visitor<T> {
3311+
Attribute: (value: IngressIpv6Attribute) => T;
3312+
_: (name: string, value: any) => T;
3313+
}
3314+
3315+
export const visit = <T>(value: IngressIpv6ToEvaluate, visitor: Visitor<T>): T => {
3316+
if (value.Attribute !== undefined) return visitor.Attribute(value.Attribute);
3317+
return visitor._(value.$unknown[0], value.$unknown[1]);
3318+
};
3319+
}
3320+
3321+
/**
3322+
* <p>The union type representing the allowed types for the left hand side of an IPv6 condition.</p>
3323+
* @public
3324+
*/
3325+
export interface IngressIpv6Expression {
3326+
/**
3327+
* <p>The left hand side argument of an IPv6 condition expression.</p>
3328+
* @public
3329+
*/
3330+
Evaluate: IngressIpv6ToEvaluate | undefined;
3331+
3332+
/**
3333+
* <p>The matching operator for an IPv6 condition expression.</p>
3334+
* @public
3335+
*/
3336+
Operator: IngressIpOperator | undefined;
3337+
3338+
/**
3339+
* <p>The right hand side argument of an IPv6 condition expression.</p>
3340+
* @public
3341+
*/
3342+
Values: string[] | undefined;
3343+
}
3344+
31673345
/**
31683346
* @public
31693347
* @enum
@@ -3390,6 +3568,7 @@ export interface IngressTlsProtocolExpression {
33903568
export type PolicyCondition =
33913569
| PolicyCondition.BooleanExpressionMember
33923570
| PolicyCondition.IpExpressionMember
3571+
| PolicyCondition.Ipv6ExpressionMember
33933572
| PolicyCondition.StringExpressionMember
33943573
| PolicyCondition.TlsExpressionMember
33953574
| PolicyCondition.$UnknownMember;
@@ -3407,6 +3586,7 @@ export namespace PolicyCondition {
34073586
export interface StringExpressionMember {
34083587
StringExpression: IngressStringExpression;
34093588
IpExpression?: never;
3589+
Ipv6Expression?: never;
34103590
TlsExpression?: never;
34113591
BooleanExpression?: never;
34123592
$unknown?: never;
@@ -3421,6 +3601,22 @@ export namespace PolicyCondition {
34213601
export interface IpExpressionMember {
34223602
StringExpression?: never;
34233603
IpExpression: IngressIpv4Expression;
3604+
Ipv6Expression?: never;
3605+
TlsExpression?: never;
3606+
BooleanExpression?: never;
3607+
$unknown?: never;
3608+
}
3609+
3610+
/**
3611+
* <p>This represents an IPv6 based condition matching on the incoming mail. It performs the
3612+
* operation configured in 'Operator' and evaluates the 'Protocol' object against the
3613+
* 'Value'.</p>
3614+
* @public
3615+
*/
3616+
export interface Ipv6ExpressionMember {
3617+
StringExpression?: never;
3618+
IpExpression?: never;
3619+
Ipv6Expression: IngressIpv6Expression;
34243620
TlsExpression?: never;
34253621
BooleanExpression?: never;
34263622
$unknown?: never;
@@ -3435,6 +3631,7 @@ export namespace PolicyCondition {
34353631
export interface TlsExpressionMember {
34363632
StringExpression?: never;
34373633
IpExpression?: never;
3634+
Ipv6Expression?: never;
34383635
TlsExpression: IngressTlsProtocolExpression;
34393636
BooleanExpression?: never;
34403637
$unknown?: never;
@@ -3449,6 +3646,7 @@ export namespace PolicyCondition {
34493646
export interface BooleanExpressionMember {
34503647
StringExpression?: never;
34513648
IpExpression?: never;
3649+
Ipv6Expression?: never;
34523650
TlsExpression?: never;
34533651
BooleanExpression: IngressBooleanExpression;
34543652
$unknown?: never;
@@ -3460,6 +3658,7 @@ export namespace PolicyCondition {
34603658
export interface $UnknownMember {
34613659
StringExpression?: never;
34623660
IpExpression?: never;
3661+
Ipv6Expression?: never;
34633662
TlsExpression?: never;
34643663
BooleanExpression?: never;
34653664
$unknown: [string, any];
@@ -3468,6 +3667,7 @@ export namespace PolicyCondition {
34683667
export interface Visitor<T> {
34693668
StringExpression: (value: IngressStringExpression) => T;
34703669
IpExpression: (value: IngressIpv4Expression) => T;
3670+
Ipv6Expression: (value: IngressIpv6Expression) => T;
34713671
TlsExpression: (value: IngressTlsProtocolExpression) => T;
34723672
BooleanExpression: (value: IngressBooleanExpression) => T;
34733673
_: (name: string, value: any) => T;
@@ -3476,6 +3676,7 @@ export namespace PolicyCondition {
34763676
export const visit = <T>(value: PolicyCondition, visitor: Visitor<T>): T => {
34773677
if (value.StringExpression !== undefined) return visitor.StringExpression(value.StringExpression);
34783678
if (value.IpExpression !== undefined) return visitor.IpExpression(value.IpExpression);
3679+
if (value.Ipv6Expression !== undefined) return visitor.Ipv6Expression(value.Ipv6Expression);
34793680
if (value.TlsExpression !== undefined) return visitor.TlsExpression(value.TlsExpression);
34803681
if (value.BooleanExpression !== undefined) return visitor.BooleanExpression(value.BooleanExpression);
34813682
return visitor._(value.$unknown[0], value.$unknown[1]);
@@ -4509,6 +4710,12 @@ export interface GetIngressPointResponse {
45094710
*/
45104711
IngressPointAuthConfiguration?: IngressPointAuthConfiguration | undefined;
45114712

4713+
/**
4714+
* <p>The network configuration for the ingress point.</p>
4715+
* @public
4716+
*/
4717+
NetworkConfiguration?: NetworkConfiguration | undefined;
4718+
45124719
/**
45134720
* <p>The timestamp of when the ingress endpoint was created.</p>
45144721
* @public
@@ -5757,6 +5964,7 @@ export const CreateIngressPointRequestFilterSensitiveLog = (obj: CreateIngressPo
57575964
...(obj.IngressPointConfiguration && {
57585965
IngressPointConfiguration: IngressPointConfigurationFilterSensitiveLog(obj.IngressPointConfiguration),
57595966
}),
5967+
...(obj.NetworkConfiguration && { NetworkConfiguration: obj.NetworkConfiguration }),
57605968
});
57615969

57625970
/**

0 commit comments

Comments
 (0)