/*
* 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
{
///
/// Describes the properties of a file transfer protocol-enabled server that was specified.
///
public partial class DescribedServer
{
private string _arn;
private string _certificate;
private Domain _domain;
private EndpointDetails _endpointDetails;
private EndpointType _endpointType;
private string _hostKeyFingerprint;
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 string _serverId;
private State _state;
private List _structuredLogDestinations = new List();
private List _tags = new List();
private int? _userCount;
private WorkflowDetails _workflowDetails;
///
/// Gets and sets the property Arn.
///
/// Specifies the unique Amazon Resource Name (ARN) of the server.
///
///
[AWSProperty(Required=true, Min=20, Max=1600)]
public string Arn
{
get { return this._arn; }
set { this._arn = value; }
}
// Check to see if Arn property is set
internal bool IsSetArn()
{
return this._arn != null;
}
///
/// Gets and sets the property Certificate.
///
/// Specifies the ARN of the Amazon Web ServicesCertificate Manager (ACM) certificate.
/// Required when Protocols
is set to FTPS
.
///
///
[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.
///
/// Specifies the domain of the storage system that is used for file transfers.
///
///
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.
///
/// Defines the type of endpoint that your server is connected to. If your server is connected
/// to a VPC endpoint, your server isn't accessible over the public internet.
///
///
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 HostKeyFingerprint.
///
/// Specifies the Base64-encoded SHA256 fingerprint of the server's host key. This value
/// is equivalent to the output of the ssh-keygen -l -f my-new-server-key
/// command.
///
///
public string HostKeyFingerprint
{
get { return this._hostKeyFingerprint; }
set { this._hostKeyFingerprint = value; }
}
// Check to see if HostKeyFingerprint property is set
internal bool IsSetHostKeyFingerprint()
{
return this._hostKeyFingerprint != null;
}
///
/// Gets and sets the property IdentityProviderDetails.
///
/// Specifies information to call a customer-supplied authentication API. This field is
/// not populated when the IdentityProviderType
of a server is AWS_DIRECTORY_SERVICE
/// or 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 ServerId.
///
/// Specifies the unique system-assigned identifier for a server that you instantiate.
///
///
[AWSProperty(Min=19, Max=19)]
public string ServerId
{
get { return this._serverId; }
set { this._serverId = value; }
}
// Check to see if ServerId property is set
internal bool IsSetServerId()
{
return this._serverId != null;
}
///
/// Gets and sets the property State.
///
/// The condition of the server that was described. A value of ONLINE
indicates
/// that the server can accept jobs and transfer files. A State
value of
/// OFFLINE
means that the server cannot perform file transfer operations.
///
///
///
/// The states of STARTING
and STOPPING
indicate that the server
/// is in an intermediate state, either not fully able to respond, or not fully offline.
/// The values of START_FAILED
or STOP_FAILED
can indicate an
/// error condition.
///
///
public State State
{
get { return this._state; }
set { this._state = value; }
}
// Check to see if State property is set
internal bool IsSetState()
{
return this._state != 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.
///
/// Specifies the key-value pairs that you can use to search for and group servers that
/// were assigned to the server that was described.
///
///
[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 UserCount.
///
/// Specifies the number of users that are assigned to a server you specified with the
/// ServerId
.
///
///
public int UserCount
{
get { return this._userCount.GetValueOrDefault(); }
set { this._userCount = value; }
}
// Check to see if UserCount property is set
internal bool IsSetUserCount()
{
return this._userCount.HasValue;
}
///
/// 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;
}
}
}