/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the transfer-2018-11-05.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.Transfer.Model { /// /// Container for the parameters to the CreateServer operation. /// Instantiates an auto-scaling virtual server based on the selected file transfer protocol /// in Amazon Web Services. When you make updates to your file transfer protocol-enabled /// server or when you work with users, use the service-generated ServerId /// property that is assigned to the newly created server. /// public partial class CreateServerRequest : AmazonTransferRequest { private string _certificate; private Domain _domain; private EndpointDetails _endpointDetails; private EndpointType _endpointType; private string _hostKey; private IdentityProviderDetails _identityProviderDetails; private IdentityProviderType _identityProviderType; private string _loggingRole; private string _postAuthenticationLoginBanner; private string _preAuthenticationLoginBanner; private ProtocolDetails _protocolDetails; private List _protocols = new List(); private string _securityPolicyName; private List _structuredLogDestinations = new List(); private List _tags = new List(); private WorkflowDetails _workflowDetails; /// /// Gets and sets the property Certificate. /// /// The Amazon Resource Name (ARN) of the Certificate Manager (ACM) certificate. Required /// when Protocols is set to FTPS. /// /// /// /// To request a new public certificate, see Request /// a public certificate in the Certificate Manager User Guide. /// /// /// /// To import an existing certificate into ACM, see Importing /// certificates into ACM in the Certificate Manager User Guide. /// /// /// /// To request a private certificate to use FTPS through private IP addresses, see Request /// a private certificate in the Certificate Manager User Guide. /// /// /// /// Certificates with the following cryptographic algorithms and key sizes are supported: /// ///
  • /// /// 2048-bit RSA (RSA_2048) /// ///
  • /// /// 4096-bit RSA (RSA_4096) /// ///
  • /// /// Elliptic Prime Curve 256 bit (EC_prime256v1) /// ///
  • /// /// Elliptic Prime Curve 384 bit (EC_secp384r1) /// ///
  • /// /// Elliptic Prime Curve 521 bit (EC_secp521r1) /// ///
/// /// The certificate must be a valid SSL/TLS X.509 version 3 certificate with FQDN or IP /// address specified and information about the issuer. /// /// ///
[AWSProperty(Max=1600)] public string Certificate { get { return this._certificate; } set { this._certificate = value; } } // Check to see if Certificate property is set internal bool IsSetCertificate() { return this._certificate != null; } /// /// Gets and sets the property Domain. /// /// The domain of the storage system that is used for file transfers. There are two domains /// available: Amazon Simple Storage Service (Amazon S3) and Amazon Elastic File System /// (Amazon EFS). The default value is S3. /// /// /// /// After the server is created, the domain cannot be changed. /// /// /// public Domain Domain { get { return this._domain; } set { this._domain = value; } } // Check to see if Domain property is set internal bool IsSetDomain() { return this._domain != null; } /// /// Gets and sets the property EndpointDetails. /// /// The virtual private cloud (VPC) endpoint settings that are configured for your server. /// When you host your endpoint within your VPC, you can make your endpoint accessible /// only to resources within your VPC, or you can attach Elastic IP addresses and make /// your endpoint accessible to clients over the internet. Your VPC's default security /// groups are automatically assigned to your endpoint. /// /// public EndpointDetails EndpointDetails { get { return this._endpointDetails; } set { this._endpointDetails = value; } } // Check to see if EndpointDetails property is set internal bool IsSetEndpointDetails() { return this._endpointDetails != null; } /// /// Gets and sets the property EndpointType. /// /// The type of endpoint that you want your server to use. You can choose to make your /// server's endpoint publicly accessible (PUBLIC) or host it inside your VPC. With an /// endpoint that is hosted in a VPC, you can restrict access to your server and resources /// only within your VPC or choose to make it internet facing by attaching Elastic IP /// addresses directly to it. /// /// /// /// After May 19, 2021, you won't be able to create a server using EndpointType=VPC_ENDPOINT /// in your Amazon Web Services account if your account hasn't already done so before /// May 19, 2021. If you have already created servers with EndpointType=VPC_ENDPOINT /// in your Amazon Web Services account on or before May 19, 2021, you will not be affected. /// After this date, use EndpointType=VPC. /// /// /// /// For more information, see https://docs.aws.amazon.com/transfer/latest/userguide/create-server-in-vpc.html#deprecate-vpc-endpoint. /// /// /// /// It is recommended that you use VPC as the EndpointType. /// With this endpoint type, you have the option to directly associate up to three Elastic /// IPv4 addresses (BYO IP included) with your server's endpoint and use VPC security /// groups to restrict traffic by the client's public IP address. This is not possible /// with EndpointType set to VPC_ENDPOINT. /// /// /// public EndpointType EndpointType { get { return this._endpointType; } set { this._endpointType = value; } } // Check to see if EndpointType property is set internal bool IsSetEndpointType() { return this._endpointType != null; } /// /// Gets and sets the property HostKey. /// /// The RSA, ECDSA, or ED25519 private key to use for your SFTP-enabled server. You can /// add multiple host keys, in case you want to rotate keys, or have a set of active keys /// that use different algorithms. /// /// /// /// Use the following command to generate an RSA 2048 bit key with no passphrase: /// /// /// /// ssh-keygen -t rsa -b 2048 -N "" -m PEM -f my-new-server-key. /// /// /// /// Use a minimum value of 2048 for the -b option. You can create a stronger /// key by using 3072 or 4096. /// /// /// /// Use the following command to generate an ECDSA 256 bit key with no passphrase: /// /// /// /// ssh-keygen -t ecdsa -b 256 -N "" -m PEM -f my-new-server-key. /// /// /// /// Valid values for the -b option for ECDSA are 256, 384, and 521. /// /// /// /// Use the following command to generate an ED25519 key with no passphrase: /// /// /// /// ssh-keygen -t ed25519 -N "" -f my-new-server-key. /// /// /// /// For all of these commands, you can replace my-new-server-key with a string /// of your choice. /// /// /// /// If you aren't planning to migrate existing users from an existing SFTP-enabled server /// to a new server, don't update the host key. Accidentally changing a server's host /// key can be disruptive. /// /// /// /// For more information, see Manage /// host keys for your SFTP-enabled server in the Transfer Family User Guide. /// /// [AWSProperty(Sensitive=true, Max=4096)] public string HostKey { get { return this._hostKey; } set { this._hostKey = value; } } // Check to see if HostKey property is set internal bool IsSetHostKey() { return this._hostKey != null; } /// /// Gets and sets the property IdentityProviderDetails. /// /// Required when IdentityProviderType is set to AWS_DIRECTORY_SERVICE, /// Amazon Web Services_LAMBDA or API_GATEWAY. Accepts an array /// containing all of the information required to use a directory in AWS_DIRECTORY_SERVICE /// or invoke a customer-supplied authentication API, including the API Gateway URL. Not /// required when IdentityProviderType is set to SERVICE_MANAGED. /// /// public IdentityProviderDetails IdentityProviderDetails { get { return this._identityProviderDetails; } set { this._identityProviderDetails = value; } } // Check to see if IdentityProviderDetails property is set internal bool IsSetIdentityProviderDetails() { return this._identityProviderDetails != null; } /// /// Gets and sets the property IdentityProviderType. /// /// The mode of authentication for a server. The default value is SERVICE_MANAGED, /// which allows you to store and access user credentials within the Transfer Family service. /// /// /// /// Use AWS_DIRECTORY_SERVICE to provide access to Active Directory groups /// in Directory Service for Microsoft Active Directory or Microsoft Active Directory /// in your on-premises environment or in Amazon Web Services using AD Connector. This /// option also requires you to provide a Directory ID by using the IdentityProviderDetails /// parameter. /// /// /// /// Use the API_GATEWAY value to integrate with an identity provider of your /// choosing. The API_GATEWAY setting requires you to provide an Amazon API /// Gateway endpoint URL to call for authentication by using the IdentityProviderDetails /// parameter. /// /// /// /// Use the AWS_LAMBDA value to directly use an Lambda function as your identity /// provider. If you choose this value, you must specify the ARN for the Lambda function /// in the Function parameter for the IdentityProviderDetails /// data type. /// /// public IdentityProviderType IdentityProviderType { get { return this._identityProviderType; } set { this._identityProviderType = value; } } // Check to see if IdentityProviderType property is set internal bool IsSetIdentityProviderType() { return this._identityProviderType != null; } /// /// Gets and sets the property LoggingRole. /// /// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role that /// allows a server to turn on Amazon CloudWatch logging for Amazon S3 or Amazon EFSevents. /// When set, you can view user activity in your CloudWatch logs. /// /// [AWSProperty(Min=20, Max=2048)] public string LoggingRole { get { return this._loggingRole; } set { this._loggingRole = value; } } // Check to see if LoggingRole property is set internal bool IsSetLoggingRole() { return this._loggingRole != null; } /// /// Gets and sets the property PostAuthenticationLoginBanner. /// /// Specifies a string to display when users connect to a server. This string is displayed /// after the user authenticates. /// /// /// /// The SFTP protocol does not support post-authentication display banners. /// /// /// [AWSProperty(Max=512)] public string PostAuthenticationLoginBanner { get { return this._postAuthenticationLoginBanner; } set { this._postAuthenticationLoginBanner = value; } } // Check to see if PostAuthenticationLoginBanner property is set internal bool IsSetPostAuthenticationLoginBanner() { return this._postAuthenticationLoginBanner != null; } /// /// Gets and sets the property PreAuthenticationLoginBanner. /// /// Specifies a string to display when users connect to a server. This string is displayed /// before the user authenticates. For example, the following banner displays details /// about using the system: /// /// /// /// This system is for the use of authorized users only. Individuals using this /// computer system without authority, or in excess of their authority, are subject to /// having all of their activities on this system monitored and recorded by system personnel. /// /// /// [AWSProperty(Max=512)] public string PreAuthenticationLoginBanner { get { return this._preAuthenticationLoginBanner; } set { this._preAuthenticationLoginBanner = value; } } // Check to see if PreAuthenticationLoginBanner property is set internal bool IsSetPreAuthenticationLoginBanner() { return this._preAuthenticationLoginBanner != null; } /// /// Gets and sets the property ProtocolDetails. /// /// The protocol settings that are configured for your server. /// ///
  • /// /// To indicate passive mode (for FTP and FTPS protocols), use the PassiveIp /// parameter. Enter a single dotted-quad IPv4 address, such as the external IP address /// of a firewall, router, or load balancer. /// ///
  • /// /// To ignore the error that is generated when the client attempts to use the SETSTAT /// command on a file that you are uploading to an Amazon S3 bucket, use the SetStatOption /// parameter. To have the Transfer Family server ignore the SETSTAT command /// and upload files without needing to make any changes to your SFTP client, set the /// value to ENABLE_NO_OP. If you set the SetStatOption parameter /// to ENABLE_NO_OP, Transfer Family generates a log entry to Amazon CloudWatch /// Logs, so that you can determine when the client is making a SETSTAT call. /// ///
  • /// /// To determine whether your Transfer Family server resumes recent, negotiated sessions /// through a unique session ID, use the TlsSessionResumptionMode parameter. /// ///
  • /// /// As2Transports indicates the transport method for the AS2 messages. Currently, /// only HTTP is supported. /// ///
///
public ProtocolDetails ProtocolDetails { get { return this._protocolDetails; } set { this._protocolDetails = value; } } // Check to see if ProtocolDetails property is set internal bool IsSetProtocolDetails() { return this._protocolDetails != null; } /// /// Gets and sets the property Protocols. /// /// Specifies the file transfer protocol or protocols over which your file transfer protocol /// client can connect to your server's endpoint. The available protocols are: /// ///
  • /// /// SFTP (Secure Shell (SSH) File Transfer Protocol): File transfer over /// SSH /// ///
  • /// /// FTPS (File Transfer Protocol Secure): File transfer with TLS encryption /// ///
  • /// /// FTP (File Transfer Protocol): Unencrypted file transfer /// ///
  • /// /// AS2 (Applicability Statement 2): used for transporting structured business-to-business /// data /// ///
  • /// /// If you select FTPS, you must choose a certificate stored in Certificate /// Manager (ACM) which is used to identify your server when clients connect to it over /// FTPS. /// ///
  • /// /// If Protocol includes either FTP or FTPS, then /// the EndpointType must be VPC and the IdentityProviderType /// must be either AWS_DIRECTORY_SERVICE, AWS_LAMBDA, or API_GATEWAY. /// ///
  • /// /// If Protocol includes FTP, then AddressAllocationIds /// cannot be associated. /// ///
  • /// /// If Protocol is set only to SFTP, the EndpointType /// can be set to PUBLIC and the IdentityProviderType can be /// set any of the supported identity types: SERVICE_MANAGED, AWS_DIRECTORY_SERVICE, /// AWS_LAMBDA, or API_GATEWAY. /// ///
  • /// /// If Protocol includes AS2, then the EndpointType /// must be VPC, and domain must be Amazon S3. /// ///
///
[AWSProperty(Min=1, Max=4)] public List Protocols { get { return this._protocols; } set { this._protocols = value; } } // Check to see if Protocols property is set internal bool IsSetProtocols() { return this._protocols != null && this._protocols.Count > 0; } /// /// Gets and sets the property SecurityPolicyName. /// /// Specifies the name of the security policy that is attached to the server. /// /// [AWSProperty(Max=100)] public string SecurityPolicyName { get { return this._securityPolicyName; } set { this._securityPolicyName = value; } } // Check to see if SecurityPolicyName property is set internal bool IsSetSecurityPolicyName() { return this._securityPolicyName != null; } /// /// Gets and sets the property StructuredLogDestinations. /// /// Specifies the log groups to which your server logs are sent. /// /// /// /// To specify a log group, you must provide the ARN for an existing log group. In this /// case, the format of the log group is as follows: /// /// /// /// arn:aws:logs:region-name:amazon-account-id:log-group:log-group-name:* /// /// /// /// /// For example, arn:aws:logs:us-east-1:111122223333:log-group:mytestgroup:* /// /// /// /// /// If you have previously specified a log group for a server, you can clear it, and in /// effect turn off structured logging, by providing an empty value for this parameter /// in an update-server call. For example: /// /// /// /// update-server --server-id s-1234567890abcdef0 --structured-log-destinations /// /// /// [AWSProperty(Min=0, Max=1)] public List StructuredLogDestinations { get { return this._structuredLogDestinations; } set { this._structuredLogDestinations = value; } } // Check to see if StructuredLogDestinations property is set internal bool IsSetStructuredLogDestinations() { return this._structuredLogDestinations != null && this._structuredLogDestinations.Count > 0; } /// /// Gets and sets the property Tags. /// /// Key-value pairs that can be used to group and search for servers. /// /// [AWSProperty(Min=1, Max=50)] public List Tags { get { return this._tags; } set { this._tags = value; } } // Check to see if Tags property is set internal bool IsSetTags() { return this._tags != null && this._tags.Count > 0; } /// /// Gets and sets the property WorkflowDetails. /// /// Specifies the workflow ID for the workflow to assign and the execution role that's /// used for executing the workflow. /// /// /// /// In addition to a workflow to execute when a file is uploaded completely, WorkflowDetails /// can also contain a workflow ID (and execution role) for a workflow to execute on partial /// upload. A partial upload occurs when the server session disconnects while the file /// is still being uploaded. /// /// public WorkflowDetails WorkflowDetails { get { return this._workflowDetails; } set { this._workflowDetails = value; } } // Check to see if WorkflowDetails property is set internal bool IsSetWorkflowDetails() { return this._workflowDetails != null; } } }