Skip to content

Commit 4b08d39

Browse files
This launch includes 2 enhancements to SFTP connectors user-experience: 1) Customers can self-serve concurrent connections setting for their connectors, and 2) Customers can discover the public host key of remote servers using their SFTP connectors.
1 parent c4d8d58 commit 4b08d39

File tree

11 files changed

+320
-22
lines changed

11 files changed

+320
-22
lines changed

generator/ServiceModels/transfer/transfer-2018-11-05.api.json

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2957,6 +2957,11 @@
29572957
"DIRECTORY"
29582958
]
29592959
},
2960+
"MaxConcurrentConnections":{
2961+
"type":"integer",
2962+
"box":true,
2963+
"min":1
2964+
},
29602965
"MaxItems":{
29612966
"type":"integer",
29622967
"box":true,
@@ -3383,9 +3388,21 @@
33833388
"type":"structure",
33843389
"members":{
33853390
"UserSecretId":{"shape":"SecretId"},
3386-
"TrustedHostKeys":{"shape":"SftpConnectorTrustedHostKeyList"}
3391+
"TrustedHostKeys":{"shape":"SftpConnectorTrustedHostKeyList"},
3392+
"MaxConcurrentConnections":{"shape":"MaxConcurrentConnections"}
3393+
}
3394+
},
3395+
"SftpConnectorConnectionDetails":{
3396+
"type":"structure",
3397+
"members":{
3398+
"HostKey":{"shape":"SftpConnectorHostKey"}
33873399
}
33883400
},
3401+
"SftpConnectorHostKey":{
3402+
"type":"string",
3403+
"max":2048,
3404+
"min":1
3405+
},
33893406
"SftpConnectorTrustedHostKey":{
33903407
"type":"string",
33913408
"max":2048,
@@ -3395,7 +3412,7 @@
33953412
"type":"list",
33963413
"member":{"shape":"SftpConnectorTrustedHostKey"},
33973414
"max":10,
3398-
"min":1
3415+
"min":0
33993416
},
34003417
"SigningAlg":{
34013418
"type":"string",
@@ -3642,7 +3659,8 @@
36423659
"members":{
36433660
"ConnectorId":{"shape":"ConnectorId"},
36443661
"Status":{"shape":"Status"},
3645-
"StatusMessage":{"shape":"Message"}
3662+
"StatusMessage":{"shape":"Message"},
3663+
"SftpConnectionDetails":{"shape":"SftpConnectorConnectionDetails"}
36463664
}
36473665
},
36483666
"TestIdentityProviderRequest":{

generator/ServiceModels/transfer/transfer-2018-11-05.docs.json

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1433,6 +1433,12 @@
14331433
"HomeDirectoryMapEntry$Type": "<p>Specifies the type of mapping. Set the type to <code>FILE</code> if you want the mapping to point to a file, or <code>DIRECTORY</code> for the directory to point to a directory.</p> <note> <p>By default, home directory mappings have a <code>Type</code> of <code>DIRECTORY</code> when you create a Transfer Family server. You would need to explicitly set <code>Type</code> to <code>FILE</code> if you want a mapping to have a file target.</p> </note>"
14341434
}
14351435
},
1436+
"MaxConcurrentConnections": {
1437+
"base": "<p>The number of concurrent connections that the connector will create to the remote server.</p>",
1438+
"refs": {
1439+
"SftpConnectorConfig$MaxConcurrentConnections": "<p>Specify the number of concurrent connections that your connector creates to the remote server. The default value is <code>5</code> (this is also the maximum value allowed).</p> <p>This parameter specifies the number of active connections that your connector can establish with the remote server at the same time. Increasing this value can enhance connector performance when transferring large file batches by enabling parallel operations.</p>"
1440+
}
1441+
},
14361442
"MaxItems": {
14371443
"base": null,
14381444
"refs": {
@@ -1834,7 +1840,7 @@
18341840
"SecretId": {
18351841
"base": null,
18361842
"refs": {
1837-
"SftpConnectorConfig$UserSecretId": "<p>The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier must be the Amazon Resource Name (ARN) of the secret.</p>"
1843+
"SftpConnectorConfig$UserSecretId": "<p>The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier must be the Amazon Resource Name (ARN) of the secret.</p> <note> <ul> <li> <p>Required when creating an SFTP connector</p> </li> <li> <p>Optional when updating an existing SFTP connector</p> </li> </ul> </note>"
18381844
}
18391845
},
18401846
"SecurityGroupId": {
@@ -2013,13 +2019,25 @@
20132019
}
20142020
},
20152021
"SftpConnectorConfig": {
2016-
"base": "<p>Contains the details for an SFTP connector object. The connector object is used for transferring files to and from a partner's SFTP server.</p> <note> <p>Because the <code>SftpConnectorConfig</code> data type is used for both creating and updating SFTP connectors, its parameters, <code>TrustedHostKeys</code> and <code>UserSecretId</code> are marked as not required. This is a bit misleading, as they are not required when you are updating an existing SFTP connector, but <i>are required</i> when you are creating a new SFTP connector.</p> </note>",
2022+
"base": "<p>Contains the details for an SFTP connector object. The connector object is used for transferring files to and from a partner's SFTP server.</p>",
20172023
"refs": {
20182024
"CreateConnectorRequest$SftpConfig": "<p>A structure that contains the parameters for an SFTP connector object.</p>",
20192025
"DescribedConnector$SftpConfig": "<p>A structure that contains the parameters for an SFTP connector object.</p>",
20202026
"UpdateConnectorRequest$SftpConfig": "<p>A structure that contains the parameters for an SFTP connector object.</p>"
20212027
}
20222028
},
2029+
"SftpConnectorConnectionDetails": {
2030+
"base": "<p>Contains the details for an SFTP connector connection.</p>",
2031+
"refs": {
2032+
"TestConnectionResponse$SftpConnectionDetails": "<p>Structure that contains the SFTP connector host key.</p>"
2033+
}
2034+
},
2035+
"SftpConnectorHostKey": {
2036+
"base": null,
2037+
"refs": {
2038+
"SftpConnectorConnectionDetails$HostKey": "<p>The SSH public key of the remote SFTP server. This is returned during the initial connection attempt when you call <code>TestConnection</code>. It allows you to retrieve the valid server host key to update the connector when you are unable to obtain it in advance.</p>"
2039+
}
2040+
},
20232041
"SftpConnectorTrustedHostKey": {
20242042
"base": null,
20252043
"refs": {
@@ -2029,7 +2047,7 @@
20292047
"SftpConnectorTrustedHostKeyList": {
20302048
"base": null,
20312049
"refs": {
2032-
"SftpConnectorConfig$TrustedHostKeys": "<p>The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the <code>ssh-keyscan</code> command against the SFTP server to retrieve the necessary key.</p> <p>The three standard SSH public key format elements are <code>&lt;key type&gt;</code>, <code>&lt;body base64&gt;</code>, and an optional <code>&lt;comment&gt;</code>, with spaces between each element. Specify only the <code>&lt;key type&gt;</code> and <code>&lt;body base64&gt;</code>: do not enter the <code>&lt;comment&gt;</code> portion of the key.</p> <p>For the trusted host key, Transfer Family accepts RSA and ECDSA keys.</p> <ul> <li> <p>For RSA keys, the <code>&lt;key type&gt;</code> string is <code>ssh-rsa</code>.</p> </li> <li> <p>For ECDSA keys, the <code>&lt;key type&gt;</code> string is either <code>ecdsa-sha2-nistp256</code>, <code>ecdsa-sha2-nistp384</code>, or <code>ecdsa-sha2-nistp521</code>, depending on the size of the key you generated.</p> </li> </ul> <p>Run this command to retrieve the SFTP server host key, where your SFTP server name is <code>ftp.host.com</code>.</p> <p> <code>ssh-keyscan ftp.host.com</code> </p> <p>This prints the public host key to standard output.</p> <p> <code>ftp.host.com ssh-rsa AAAAB3Nza...&lt;long-string-for-public-key</code> </p> <p>Copy and paste this string into the <code>TrustedHostKeys</code> field for the <code>create-connector</code> command or into the <b>Trusted host keys</b> field in the console.</p>"
2050+
"SftpConnectorConfig$TrustedHostKeys": "<p>The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the <code>ssh-keyscan</code> command against the SFTP server to retrieve the necessary key.</p> <note> <p> <code>TrustedHostKeys</code> is optional for <code>CreateConnector</code>. If not provided, you can use <code>TestConnection</code> to retrieve the server host key during the initial connection attempt, and subsequently update the connector with the observed host key.</p> </note> <p>The three standard SSH public key format elements are <code>&lt;key type&gt;</code>, <code>&lt;body base64&gt;</code>, and an optional <code>&lt;comment&gt;</code>, with spaces between each element. Specify only the <code>&lt;key type&gt;</code> and <code>&lt;body base64&gt;</code>: do not enter the <code>&lt;comment&gt;</code> portion of the key.</p> <p>For the trusted host key, Transfer Family accepts RSA and ECDSA keys.</p> <ul> <li> <p>For RSA keys, the <code>&lt;key type&gt;</code> string is <code>ssh-rsa</code>.</p> </li> <li> <p>For ECDSA keys, the <code>&lt;key type&gt;</code> string is either <code>ecdsa-sha2-nistp256</code>, <code>ecdsa-sha2-nistp384</code>, or <code>ecdsa-sha2-nistp521</code>, depending on the size of the key you generated.</p> </li> </ul> <p>Run this command to retrieve the SFTP server host key, where your SFTP server name is <code>ftp.host.com</code>.</p> <p> <code>ssh-keyscan ftp.host.com</code> </p> <p>This prints the public host key to standard output.</p> <p> <code>ftp.host.com ssh-rsa AAAAB3Nza...&lt;long-string-for-public-key</code> </p> <p>Copy and paste this string into the <code>TrustedHostKeys</code> field for the <code>create-connector</code> command or into the <b>Trusted host keys</b> field in the console.</p>"
20332051
}
20342052
},
20352053
"SigningAlg": {

generator/ServiceModels/transfer/transfer-2018-11-05.normal.json

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4478,6 +4478,12 @@
44784478
"DIRECTORY"
44794479
]
44804480
},
4481+
"MaxConcurrentConnections":{
4482+
"type":"integer",
4483+
"documentation":"<p>The number of concurrent connections that the connector will create to the remote server.</p>",
4484+
"box":true,
4485+
"min":1
4486+
},
44814487
"MaxItems":{
44824488
"type":"integer",
44834489
"box":true,
@@ -4979,14 +4985,33 @@
49794985
"members":{
49804986
"UserSecretId":{
49814987
"shape":"SecretId",
4982-
"documentation":"<p>The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier must be the Amazon Resource Name (ARN) of the secret.</p>"
4988+
"documentation":"<p>The identifier for the secret (in Amazon Web Services Secrets Manager) that contains the SFTP user's private key, password, or both. The identifier must be the Amazon Resource Name (ARN) of the secret.</p> <note> <ul> <li> <p>Required when creating an SFTP connector</p> </li> <li> <p>Optional when updating an existing SFTP connector</p> </li> </ul> </note>"
49834989
},
49844990
"TrustedHostKeys":{
49854991
"shape":"SftpConnectorTrustedHostKeyList",
4986-
"documentation":"<p>The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the <code>ssh-keyscan</code> command against the SFTP server to retrieve the necessary key.</p> <p>The three standard SSH public key format elements are <code>&lt;key type&gt;</code>, <code>&lt;body base64&gt;</code>, and an optional <code>&lt;comment&gt;</code>, with spaces between each element. Specify only the <code>&lt;key type&gt;</code> and <code>&lt;body base64&gt;</code>: do not enter the <code>&lt;comment&gt;</code> portion of the key.</p> <p>For the trusted host key, Transfer Family accepts RSA and ECDSA keys.</p> <ul> <li> <p>For RSA keys, the <code>&lt;key type&gt;</code> string is <code>ssh-rsa</code>.</p> </li> <li> <p>For ECDSA keys, the <code>&lt;key type&gt;</code> string is either <code>ecdsa-sha2-nistp256</code>, <code>ecdsa-sha2-nistp384</code>, or <code>ecdsa-sha2-nistp521</code>, depending on the size of the key you generated.</p> </li> </ul> <p>Run this command to retrieve the SFTP server host key, where your SFTP server name is <code>ftp.host.com</code>.</p> <p> <code>ssh-keyscan ftp.host.com</code> </p> <p>This prints the public host key to standard output.</p> <p> <code>ftp.host.com ssh-rsa AAAAB3Nza...&lt;long-string-for-public-key</code> </p> <p>Copy and paste this string into the <code>TrustedHostKeys</code> field for the <code>create-connector</code> command or into the <b>Trusted host keys</b> field in the console.</p>"
4992+
"documentation":"<p>The public portion of the host key, or keys, that are used to identify the external server to which you are connecting. You can use the <code>ssh-keyscan</code> command against the SFTP server to retrieve the necessary key.</p> <note> <p> <code>TrustedHostKeys</code> is optional for <code>CreateConnector</code>. If not provided, you can use <code>TestConnection</code> to retrieve the server host key during the initial connection attempt, and subsequently update the connector with the observed host key.</p> </note> <p>The three standard SSH public key format elements are <code>&lt;key type&gt;</code>, <code>&lt;body base64&gt;</code>, and an optional <code>&lt;comment&gt;</code>, with spaces between each element. Specify only the <code>&lt;key type&gt;</code> and <code>&lt;body base64&gt;</code>: do not enter the <code>&lt;comment&gt;</code> portion of the key.</p> <p>For the trusted host key, Transfer Family accepts RSA and ECDSA keys.</p> <ul> <li> <p>For RSA keys, the <code>&lt;key type&gt;</code> string is <code>ssh-rsa</code>.</p> </li> <li> <p>For ECDSA keys, the <code>&lt;key type&gt;</code> string is either <code>ecdsa-sha2-nistp256</code>, <code>ecdsa-sha2-nistp384</code>, or <code>ecdsa-sha2-nistp521</code>, depending on the size of the key you generated.</p> </li> </ul> <p>Run this command to retrieve the SFTP server host key, where your SFTP server name is <code>ftp.host.com</code>.</p> <p> <code>ssh-keyscan ftp.host.com</code> </p> <p>This prints the public host key to standard output.</p> <p> <code>ftp.host.com ssh-rsa AAAAB3Nza...&lt;long-string-for-public-key</code> </p> <p>Copy and paste this string into the <code>TrustedHostKeys</code> field for the <code>create-connector</code> command or into the <b>Trusted host keys</b> field in the console.</p>"
4993+
},
4994+
"MaxConcurrentConnections":{
4995+
"shape":"MaxConcurrentConnections",
4996+
"documentation":"<p>Specify the number of concurrent connections that your connector creates to the remote server. The default value is <code>5</code> (this is also the maximum value allowed).</p> <p>This parameter specifies the number of active connections that your connector can establish with the remote server at the same time. Increasing this value can enhance connector performance when transferring large file batches by enabling parallel operations.</p>"
4997+
}
4998+
},
4999+
"documentation":"<p>Contains the details for an SFTP connector object. The connector object is used for transferring files to and from a partner's SFTP server.</p>"
5000+
},
5001+
"SftpConnectorConnectionDetails":{
5002+
"type":"structure",
5003+
"members":{
5004+
"HostKey":{
5005+
"shape":"SftpConnectorHostKey",
5006+
"documentation":"<p>The SSH public key of the remote SFTP server. This is returned during the initial connection attempt when you call <code>TestConnection</code>. It allows you to retrieve the valid server host key to update the connector when you are unable to obtain it in advance.</p>"
49875007
}
49885008
},
4989-
"documentation":"<p>Contains the details for an SFTP connector object. The connector object is used for transferring files to and from a partner's SFTP server.</p> <note> <p>Because the <code>SftpConnectorConfig</code> data type is used for both creating and updating SFTP connectors, its parameters, <code>TrustedHostKeys</code> and <code>UserSecretId</code> are marked as not required. This is a bit misleading, as they are not required when you are updating an existing SFTP connector, but <i>are required</i> when you are creating a new SFTP connector.</p> </note>"
5009+
"documentation":"<p>Contains the details for an SFTP connector connection.</p>"
5010+
},
5011+
"SftpConnectorHostKey":{
5012+
"type":"string",
5013+
"max":2048,
5014+
"min":1
49905015
},
49915016
"SftpConnectorTrustedHostKey":{
49925017
"type":"string",
@@ -4997,7 +5022,7 @@
49975022
"type":"list",
49985023
"member":{"shape":"SftpConnectorTrustedHostKey"},
49995024
"max":10,
5000-
"min":1
5025+
"min":0
50015026
},
50025027
"SigningAlg":{
50035028
"type":"string",
@@ -5353,6 +5378,10 @@
53535378
"StatusMessage":{
53545379
"shape":"Message",
53555380
"documentation":"<p>Returns <code>Connection succeeded</code> if the test is successful. Or, returns a descriptive error message if the test fails. The following list provides troubleshooting details, depending on the error message that you receive.</p> <ul> <li> <p>Verify that your secret name aligns with the one in Transfer Role permissions.</p> </li> <li> <p>Verify the server URL in the connector configuration , and verify that the login credentials work successfully outside of the connector.</p> </li> <li> <p>Verify that the secret exists and is formatted correctly.</p> </li> <li> <p>Verify that the trusted host key in the connector configuration matches the <code>ssh-keyscan</code> output.</p> </li> </ul>"
5381+
},
5382+
"SftpConnectionDetails":{
5383+
"shape":"SftpConnectorConnectionDetails",
5384+
"documentation":"<p>Structure that contains the SFTP connector host key.</p>"
53565385
}
53575386
}
53585387
},

sdk/code-analysis/ServiceAnalysis/Transfer/Generated/PropertyValueRules.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2159,11 +2159,20 @@
21592159
<max>256</max>
21602160
<pattern>([\p{L}\p{Z}\p{N}_.:/=+\-@]*)</pattern>
21612161
</property-value-rule>
2162+
<property-value-rule>
2163+
<property>Amazon.Transfer.Model.SftpConnectorConfig.MaxConcurrentConnections</property>
2164+
<min>1</min>
2165+
</property-value-rule>
21622166
<property-value-rule>
21632167
<property>Amazon.Transfer.Model.SftpConnectorConfig.UserSecretId</property>
21642168
<min>1</min>
21652169
<max>2048</max>
21662170
</property-value-rule>
2171+
<property-value-rule>
2172+
<property>Amazon.Transfer.Model.SftpConnectorConnectionDetails.HostKey</property>
2173+
<min>1</min>
2174+
<max>2048</max>
2175+
</property-value-rule>
21672176
<property-value-rule>
21682177
<property>Amazon.Transfer.Model.SshPublicKey.SshPublicKeyBody</property>
21692178
<min>0</min>

sdk/src/Services/Transfer/Generated/Model/Internal/MarshallTransformations/SftpConnectorConfigMarshaller.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ public void Marshall(SftpConnectorConfig requestObject, JsonMarshallerContext co
4848
{
4949
if(requestObject == null)
5050
return;
51+
if(requestObject.IsSetMaxConcurrentConnections())
52+
{
53+
context.Writer.WritePropertyName("MaxConcurrentConnections");
54+
context.Writer.Write(requestObject.MaxConcurrentConnections);
55+
}
56+
5157
if(requestObject.IsSetTrustedHostKeys())
5258
{
5359
context.Writer.WritePropertyName("TrustedHostKeys");

sdk/src/Services/Transfer/Generated/Model/Internal/MarshallTransformations/SftpConnectorConfigUnmarshaller.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,12 @@ public SftpConnectorConfig Unmarshall(JsonUnmarshallerContext context)
6666
int targetDepth = context.CurrentDepth;
6767
while (context.ReadAtDepth(targetDepth))
6868
{
69+
if (context.TestExpression("MaxConcurrentConnections", targetDepth))
70+
{
71+
var unmarshaller = IntUnmarshaller.Instance;
72+
unmarshalledObject.MaxConcurrentConnections = unmarshaller.Unmarshall(context);
73+
continue;
74+
}
6975
if (context.TestExpression("TrustedHostKeys", targetDepth))
7076
{
7177
var unmarshaller = new ListUnmarshaller<string, StringUnmarshaller>(StringUnmarshaller.Instance);

0 commit comments

Comments
 (0)