Skip to content

Commit b863762

Browse files
author
awstools
committed
feat(client-transfer): Adds support for creating Webapps accessible from a VPC.
1 parent 764e4bf commit b863762

File tree

8 files changed

+458
-15
lines changed

8 files changed

+458
-15
lines changed

clients/client-transfer/src/commands/CreateWebAppCommand.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface CreateWebAppCommandInput extends CreateWebAppRequest {}
2727
export interface CreateWebAppCommandOutput extends CreateWebAppResponse, __MetadataBearer {}
2828

2929
/**
30-
* <p>Creates a web app based on specified parameters, and returns the ID for the new web app.</p>
30+
* <p>Creates a web app based on specified parameters, and returns the ID for the new web app. You can configure the web app to be publicly accessible or hosted within a VPC.</p> <p>For more information about using VPC endpoints with Transfer Family, see <a href="https://docs.aws.amazon.com/transfer/latest/userguide/create-webapp-in-vpc.html">Create a Transfer Family web app in a VPC</a>.</p>
3131
* @example
3232
* Use a bare-bones client and the command you need to make an API call.
3333
* ```javascript
@@ -54,6 +54,17 @@ export interface CreateWebAppCommandOutput extends CreateWebAppResponse, __Metad
5454
* },
5555
* ],
5656
* WebAppEndpointPolicy: "FIPS" || "STANDARD",
57+
* EndpointDetails: { // WebAppEndpointDetails Union: only one key present
58+
* Vpc: { // WebAppVpcConfig
59+
* SubnetIds: [ // SubnetIds
60+
* "STRING_VALUE",
61+
* ],
62+
* VpcId: "STRING_VALUE",
63+
* SecurityGroupIds: [ // SecurityGroupIds
64+
* "STRING_VALUE",
65+
* ],
66+
* },
67+
* },
5768
* };
5869
* const command = new CreateWebAppCommand(input);
5970
* const response = await client.send(command);

clients/client-transfer/src/commands/DescribeWebAppCommand.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface DescribeWebAppCommandInput extends DescribeWebAppRequest {}
2727
export interface DescribeWebAppCommandOutput extends DescribeWebAppResponse, __MetadataBearer {}
2828

2929
/**
30-
* <p>Describes the web app that's identified by <code>WebAppId</code>.</p>
30+
* <p>Describes the web app that's identified by <code>WebAppId</code>. The response includes endpoint configuration details such as whether the web app is publicly accessible or VPC hosted.</p> <p>For more information about using VPC endpoints with Transfer Family, see <a href="https://docs.aws.amazon.com/transfer/latest/userguide/create-webapp-in-vpc.html">Create a Transfer Family web app in a VPC</a>.</p>
3131
* @example
3232
* Use a bare-bones client and the command you need to make an API call.
3333
* ```javascript
@@ -64,6 +64,16 @@ export interface DescribeWebAppCommandOutput extends DescribeWebAppResponse, __M
6464
* // },
6565
* // ],
6666
* // WebAppEndpointPolicy: "FIPS" || "STANDARD",
67+
* // EndpointType: "PUBLIC" || "VPC",
68+
* // DescribedEndpointDetails: { // DescribedWebAppEndpointDetails Union: only one key present
69+
* // Vpc: { // DescribedWebAppVpcConfig
70+
* // SubnetIds: [ // SubnetIds
71+
* // "STRING_VALUE",
72+
* // ],
73+
* // VpcId: "STRING_VALUE",
74+
* // VpcEndpointId: "STRING_VALUE",
75+
* // },
76+
* // },
6777
* // },
6878
* // };
6979
*

clients/client-transfer/src/commands/ListWebAppsCommand.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface ListWebAppsCommandInput extends ListWebAppsRequest {}
2727
export interface ListWebAppsCommandOutput extends ListWebAppsResponse, __MetadataBearer {}
2828

2929
/**
30-
* <p>Lists all web apps associated with your Amazon Web Services account for your current region.</p>
30+
* <p>Lists all web apps associated with your Amazon Web Services account for your current region. The response includes the endpoint type for each web app, showing whether it is publicly accessible or VPC hosted.</p> <p>For more information about using VPC endpoints with Transfer Family, see <a href="https://docs.aws.amazon.com/transfer/latest/userguide/create-webapp-in-vpc.html">Create a Transfer Family web app in a VPC</a>.</p>
3131
* @example
3232
* Use a bare-bones client and the command you need to make an API call.
3333
* ```javascript
@@ -50,6 +50,7 @@ export interface ListWebAppsCommandOutput extends ListWebAppsResponse, __Metadat
5050
* // WebAppId: "STRING_VALUE", // required
5151
* // AccessEndpoint: "STRING_VALUE",
5252
* // WebAppEndpoint: "STRING_VALUE",
53+
* // EndpointType: "PUBLIC" || "VPC",
5354
* // },
5455
* // ],
5556
* // };

clients/client-transfer/src/commands/UpdateWebAppCommand.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export interface UpdateWebAppCommandInput extends UpdateWebAppRequest {}
2727
export interface UpdateWebAppCommandOutput extends UpdateWebAppResponse, __MetadataBearer {}
2828

2929
/**
30-
* <p>Assigns new properties to a web app. You can modify the access point, identity provider details, and the web app units.</p>
30+
* <p>Assigns new properties to a web app. You can modify the access point, identity provider details, endpoint configuration, and the web app units.</p> <p>For more information about using VPC endpoints with Transfer Family, see <a href="https://docs.aws.amazon.com/transfer/latest/userguide/create-webapp-in-vpc.html">Create a Transfer Family web app in a VPC</a>.</p>
3131
* @example
3232
* Use a bare-bones client and the command you need to make an API call.
3333
* ```javascript
@@ -47,6 +47,13 @@ export interface UpdateWebAppCommandOutput extends UpdateWebAppResponse, __Metad
4747
* WebAppUnits: { // WebAppUnits Union: only one key present
4848
* Provisioned: Number("int"),
4949
* },
50+
* EndpointDetails: { // UpdateWebAppEndpointDetails Union: only one key present
51+
* Vpc: { // UpdateWebAppVpcConfig
52+
* SubnetIds: [ // SubnetIds
53+
* "STRING_VALUE",
54+
* ],
55+
* },
56+
* },
5057
* };
5158
* const command = new UpdateWebAppCommand(input);
5259
* const response = await client.send(command);

clients/client-transfer/src/models/enums.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -529,3 +529,16 @@ export const State = {
529529
* @public
530530
*/
531531
export type State = (typeof State)[keyof typeof State];
532+
533+
/**
534+
* @public
535+
* @enum
536+
*/
537+
export const WebAppEndpointType = {
538+
PUBLIC: "PUBLIC",
539+
VPC: "VPC",
540+
} as const;
541+
/**
542+
* @public
543+
*/
544+
export type WebAppEndpointType = (typeof WebAppEndpointType)[keyof typeof WebAppEndpointType];

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

Lines changed: 206 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
TlsSessionResumptionMode,
3838
TransferTableStatus,
3939
WebAppEndpointPolicy,
40+
WebAppEndpointType,
4041
WorkflowStepType,
4142
} from "./enums";
4243

@@ -1986,6 +1987,67 @@ export interface CreateUserResponse {
19861987
UserName: string | undefined;
19871988
}
19881989

1990+
/**
1991+
* <p>Contains the VPC configuration settings for hosting a web app endpoint, including the VPC ID, subnet IDs, and security group IDs for access control.</p>
1992+
* @public
1993+
*/
1994+
export interface WebAppVpcConfig {
1995+
/**
1996+
* <p>The list of subnet IDs within the VPC where the web app endpoint will be deployed. These subnets must be in the same VPC specified in the VpcId parameter.</p>
1997+
* @public
1998+
*/
1999+
SubnetIds?: string[] | undefined;
2000+
2001+
/**
2002+
* <p>The identifier of the VPC where the web app endpoint will be hosted.</p>
2003+
* @public
2004+
*/
2005+
VpcId?: string | undefined;
2006+
2007+
/**
2008+
* <p>The list of security group IDs that control access to the web app endpoint. These security groups determine which sources can access the endpoint based on IP addresses and port configurations.</p>
2009+
* @public
2010+
*/
2011+
SecurityGroupIds?: string[] | undefined;
2012+
}
2013+
2014+
/**
2015+
* <p>Contains the endpoint configuration for a web app, including VPC settings when the endpoint is hosted within a VPC.</p>
2016+
* @public
2017+
*/
2018+
export type WebAppEndpointDetails = WebAppEndpointDetails.VpcMember | WebAppEndpointDetails.$UnknownMember;
2019+
2020+
/**
2021+
* @public
2022+
*/
2023+
export namespace WebAppEndpointDetails {
2024+
/**
2025+
* <p>The VPC configuration for hosting the web app endpoint within a VPC.</p>
2026+
* @public
2027+
*/
2028+
export interface VpcMember {
2029+
Vpc: WebAppVpcConfig;
2030+
$unknown?: never;
2031+
}
2032+
2033+
/**
2034+
* @public
2035+
*/
2036+
export interface $UnknownMember {
2037+
Vpc?: never;
2038+
$unknown: [string, any];
2039+
}
2040+
2041+
/**
2042+
* @deprecated unused in schema-serde mode.
2043+
*
2044+
*/
2045+
export interface Visitor<T> {
2046+
Vpc: (value: WebAppVpcConfig) => T;
2047+
_: (name: string, value: any) => T;
2048+
}
2049+
}
2050+
19892051
/**
19902052
* <p>A structure that describes the values to use for the IAM Identity Center settings when you create or update a web app.</p>
19912053
* @public
@@ -2113,6 +2175,12 @@ export interface CreateWebAppRequest {
21132175
* @public
21142176
*/
21152177
WebAppEndpointPolicy?: WebAppEndpointPolicy | undefined;
2178+
2179+
/**
2180+
* <p>The endpoint configuration for the web app. You can specify whether the web app endpoint is publicly accessible or hosted within a VPC.</p>
2181+
* @public
2182+
*/
2183+
EndpointDetails?: WebAppEndpointDetails | undefined;
21162184
}
21172185

21182186
/**
@@ -3169,6 +3237,69 @@ export interface DescribedUser {
31693237
UserName?: string | undefined;
31703238
}
31713239

3240+
/**
3241+
* <p>Contains the VPC configuration details for a web app endpoint, including the VPC identifier, subnet IDs, and VPC endpoint ID used for hosting the endpoint.</p>
3242+
* @public
3243+
*/
3244+
export interface DescribedWebAppVpcConfig {
3245+
/**
3246+
* <p>The list of subnet IDs within the VPC where the web app endpoint is deployed. These subnets must be in the same VPC and provide network connectivity for the endpoint.</p>
3247+
* @public
3248+
*/
3249+
SubnetIds?: string[] | undefined;
3250+
3251+
/**
3252+
* <p>The identifier of the VPC where the web app endpoint is hosted.</p>
3253+
* @public
3254+
*/
3255+
VpcId?: string | undefined;
3256+
3257+
/**
3258+
* <p>The identifier of the VPC endpoint created for the web app.</p>
3259+
* @public
3260+
*/
3261+
VpcEndpointId?: string | undefined;
3262+
}
3263+
3264+
/**
3265+
* <p>Contains the endpoint configuration details for a web app, including VPC configuration when the endpoint is hosted within a VPC.</p>
3266+
* @public
3267+
*/
3268+
export type DescribedWebAppEndpointDetails =
3269+
| DescribedWebAppEndpointDetails.VpcMember
3270+
| DescribedWebAppEndpointDetails.$UnknownMember;
3271+
3272+
/**
3273+
* @public
3274+
*/
3275+
export namespace DescribedWebAppEndpointDetails {
3276+
/**
3277+
* <p>The VPC configuration details when the web app endpoint is hosted within a VPC. This includes the VPC ID, subnet IDs, and VPC endpoint ID.</p>
3278+
* @public
3279+
*/
3280+
export interface VpcMember {
3281+
Vpc: DescribedWebAppVpcConfig;
3282+
$unknown?: never;
3283+
}
3284+
3285+
/**
3286+
* @public
3287+
*/
3288+
export interface $UnknownMember {
3289+
Vpc?: never;
3290+
$unknown: [string, any];
3291+
}
3292+
3293+
/**
3294+
* @deprecated unused in schema-serde mode.
3295+
*
3296+
*/
3297+
export interface Visitor<T> {
3298+
Vpc: (value: DescribedWebAppVpcConfig) => T;
3299+
_: (name: string, value: any) => T;
3300+
}
3301+
}
3302+
31723303
/**
31733304
* <p>Returns a structure that contains the identity provider details for your web app.</p>
31743305
* @public
@@ -3260,6 +3391,18 @@ export interface DescribedWebApp {
32603391
* @public
32613392
*/
32623393
WebAppEndpointPolicy?: WebAppEndpointPolicy | undefined;
3394+
3395+
/**
3396+
* <p>The type of endpoint hosting the web app. Valid values are <code>PUBLIC</code> for publicly accessible endpoints and <code>VPC</code> for VPC-hosted endpoints that provide network isolation.</p>
3397+
* @public
3398+
*/
3399+
EndpointType?: WebAppEndpointType | undefined;
3400+
3401+
/**
3402+
* <p>The endpoint configuration details for the web app, including VPC settings if the endpoint is hosted within a VPC.</p>
3403+
* @public
3404+
*/
3405+
DescribedEndpointDetails?: DescribedWebAppEndpointDetails | undefined;
32633406
}
32643407

32653408
/**
@@ -3963,6 +4106,12 @@ export interface ListedWebApp {
39634106
* @public
39644107
*/
39654108
WebAppEndpoint?: string | undefined;
4109+
4110+
/**
4111+
* <p>The type of endpoint hosting the web app. Valid values are <code>PUBLIC</code> for publicly accessible endpoints and <code>VPC</code> for VPC-hosted endpoints.</p>
4112+
* @public
4113+
*/
4114+
EndpointType?: WebAppEndpointType | undefined;
39664115
}
39674116

39684117
/**
@@ -5122,6 +5271,57 @@ export interface UpdateWebAppCustomizationResponse {
51225271
WebAppId: string | undefined;
51235272
}
51245273

5274+
/**
5275+
* <p>Contains the VPC configuration settings for updating a web app endpoint, including the subnet IDs where the endpoint should be deployed.</p>
5276+
* @public
5277+
*/
5278+
export interface UpdateWebAppVpcConfig {
5279+
/**
5280+
* <p>The list of subnet IDs within the VPC where the web app endpoint should be deployed during the update operation.</p>
5281+
* @public
5282+
*/
5283+
SubnetIds?: string[] | undefined;
5284+
}
5285+
5286+
/**
5287+
* <p>Contains the endpoint configuration details for updating a web app, including VPC settings for endpoints hosted within a VPC.</p>
5288+
* @public
5289+
*/
5290+
export type UpdateWebAppEndpointDetails =
5291+
| UpdateWebAppEndpointDetails.VpcMember
5292+
| UpdateWebAppEndpointDetails.$UnknownMember;
5293+
5294+
/**
5295+
* @public
5296+
*/
5297+
export namespace UpdateWebAppEndpointDetails {
5298+
/**
5299+
* <p>The VPC configuration details for updating a web app endpoint hosted within a VPC. This includes the subnet IDs for endpoint deployment.</p>
5300+
* @public
5301+
*/
5302+
export interface VpcMember {
5303+
Vpc: UpdateWebAppVpcConfig;
5304+
$unknown?: never;
5305+
}
5306+
5307+
/**
5308+
* @public
5309+
*/
5310+
export interface $UnknownMember {
5311+
Vpc?: never;
5312+
$unknown: [string, any];
5313+
}
5314+
5315+
/**
5316+
* @deprecated unused in schema-serde mode.
5317+
*
5318+
*/
5319+
export interface Visitor<T> {
5320+
Vpc: (value: UpdateWebAppVpcConfig) => T;
5321+
_: (name: string, value: any) => T;
5322+
}
5323+
}
5324+
51255325
/**
51265326
* <p>A structure that describes the values to use for the IAM Identity Center settings when you update a web app.</p>
51275327
* @public
@@ -5200,6 +5400,12 @@ export interface UpdateWebAppRequest {
52005400
* @public
52015401
*/
52025402
WebAppUnits?: WebAppUnits | undefined;
5403+
5404+
/**
5405+
* <p>The updated endpoint configuration for the web app. You can modify the endpoint type and VPC configuration settings.</p>
5406+
* @public
5407+
*/
5408+
EndpointDetails?: UpdateWebAppEndpointDetails | undefined;
52035409
}
52045410

52055411
/**

0 commit comments

Comments
 (0)