/* * 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 CreateUser operation. /// Creates a user and associates them with an existing file transfer protocol-enabled /// server. You can only create and associate users with servers that have the IdentityProviderType /// set to SERVICE_MANAGED. Using parameters for CreateUser, /// you can specify the user name, set the home directory, store the user's public key, /// and assign the user's Identity and Access Management (IAM) role. You can also optionally /// add a session policy, and assign metadata with tags that can be used to group and /// search for users. /// public partial class CreateUserRequest : AmazonTransferRequest { private string _homeDirectory; private List _homeDirectoryMappings = new List(); private HomeDirectoryType _homeDirectoryType; private string _policy; private PosixProfile _posixProfile; private string _role; private string _serverId; private string _sshPublicKeyBody; private List _tags = new List(); private string _userName; /// /// Gets and sets the property HomeDirectory. /// /// The landing directory (folder) for a user when they log in to the server using the /// client. /// /// /// /// A HomeDirectory example is /bucket_name/home/mydirectory. /// /// [AWSProperty(Max=1024)] public string HomeDirectory { get { return this._homeDirectory; } set { this._homeDirectory = value; } } // Check to see if HomeDirectory property is set internal bool IsSetHomeDirectory() { return this._homeDirectory != null; } /// /// Gets and sets the property HomeDirectoryMappings. /// /// Logical directory mappings that specify what Amazon S3 or Amazon EFS paths and keys /// should be visible to your user and how you want to make them visible. You must specify /// the Entry and Target pair, where Entry shows /// how the path is made visible and Target is the actual Amazon S3 or Amazon /// EFS path. If you only specify a target, it is displayed as is. You also must ensure /// that your Identity and Access Management (IAM) role provides access to paths in Target. /// This value can be set only when HomeDirectoryType is set to LOGICAL. /// /// /// /// The following is an Entry and Target pair example. /// /// /// /// [ { "Entry": "/directory1", "Target": "/bucket_name/home/mydirectory" } ] /// /// /// /// /// In most cases, you can use this value instead of the session policy to lock your user /// down to the designated home directory ("chroot"). To do this, you can /// set Entry to / and set Target to the value /// the user should see for their home directory when they log in. /// /// /// /// The following is an Entry and Target pair example for chroot. /// /// /// /// [ { "Entry": "/", "Target": "/bucket_name/home/mydirectory" } ] /// /// [AWSProperty(Min=1, Max=50)] public List HomeDirectoryMappings { get { return this._homeDirectoryMappings; } set { this._homeDirectoryMappings = value; } } // Check to see if HomeDirectoryMappings property is set internal bool IsSetHomeDirectoryMappings() { return this._homeDirectoryMappings != null && this._homeDirectoryMappings.Count > 0; } /// /// Gets and sets the property HomeDirectoryType. /// /// The type of landing directory (folder) that you want your users' home directory to /// be when they log in to the server. If you set it to PATH, the user will /// see the absolute Amazon S3 bucket or EFS paths as is in their file transfer protocol /// clients. If you set it LOGICAL, you need to provide mappings in the HomeDirectoryMappings /// for how you want to make Amazon S3 or Amazon EFS paths visible to your users. /// /// public HomeDirectoryType HomeDirectoryType { get { return this._homeDirectoryType; } set { this._homeDirectoryType = value; } } // Check to see if HomeDirectoryType property is set internal bool IsSetHomeDirectoryType() { return this._homeDirectoryType != null; } /// /// Gets and sets the property Policy. /// /// A session policy for your user so that you can use the same Identity and Access Management /// (IAM) role across multiple users. This policy scopes down a user's access to portions /// of their Amazon S3 bucket. Variables that you can use inside this policy include ${Transfer:UserName}, /// ${Transfer:HomeDirectory}, and ${Transfer:HomeBucket}. /// /// /// /// This policy applies only when the domain of ServerId is Amazon S3. Amazon /// EFS does not use session policies. /// /// /// /// For session policies, Transfer Family stores the policy as a JSON blob, instead of /// the Amazon Resource Name (ARN) of the policy. You save the policy as a JSON blob and /// pass it in the Policy argument. /// /// /// /// For an example of a session policy, see Example /// session policy. /// /// /// /// For more information, see AssumeRole /// in the Amazon Web Services Security Token Service API Reference. /// /// /// [AWSProperty(Max=2048)] public string Policy { get { return this._policy; } set { this._policy = value; } } // Check to see if Policy property is set internal bool IsSetPolicy() { return this._policy != null; } /// /// Gets and sets the property PosixProfile. /// /// Specifies the full POSIX identity, including user ID (Uid), group ID /// (Gid), and any secondary groups IDs (SecondaryGids), that /// controls your users' access to your Amazon EFS file systems. The POSIX permissions /// that are set on files and directories in Amazon EFS determine the level of access /// your users get when transferring files into and out of your Amazon EFS file systems. /// /// public PosixProfile PosixProfile { get { return this._posixProfile; } set { this._posixProfile = value; } } // Check to see if PosixProfile property is set internal bool IsSetPosixProfile() { return this._posixProfile != null; } /// /// Gets and sets the property Role. /// /// The Amazon Resource Name (ARN) of the Identity and Access Management (IAM) role that /// controls your users' access to your Amazon S3 bucket or Amazon EFS file system. The /// policies attached to this role determine the level of access that you want to provide /// your users when transferring files into and out of your Amazon S3 bucket or Amazon /// EFS file system. The IAM role should also contain a trust relationship that allows /// the server to access your resources when servicing your users' transfer requests. /// /// [AWSProperty(Required=true, Min=20, Max=2048)] public string Role { get { return this._role; } set { this._role = value; } } // Check to see if Role property is set internal bool IsSetRole() { return this._role != null; } /// /// Gets and sets the property ServerId. /// /// A system-assigned unique identifier for a server instance. This is the specific server /// that you added your user to. /// /// [AWSProperty(Required=true, 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 SshPublicKeyBody. /// /// The public portion of the Secure Shell (SSH) key used to authenticate the user to /// the server. /// /// /// /// The three standard SSH public key format elements are <key type>, /// <body base64>, and an optional <comment>, with /// spaces between each element. /// /// /// /// Transfer Family accepts RSA, ECDSA, and ED25519 keys. /// ///
  • /// /// For RSA keys, the key type is ssh-rsa. /// ///
  • /// /// For ED25519 keys, the key type is ssh-ed25519. /// ///
  • /// /// For ECDSA keys, the key type is either ecdsa-sha2-nistp256, ecdsa-sha2-nistp384, /// or ecdsa-sha2-nistp521, depending on the size of the key you generated. /// ///
///
[AWSProperty(Max=2048)] public string SshPublicKeyBody { get { return this._sshPublicKeyBody; } set { this._sshPublicKeyBody = value; } } // Check to see if SshPublicKeyBody property is set internal bool IsSetSshPublicKeyBody() { return this._sshPublicKeyBody != null; } /// /// Gets and sets the property Tags. /// /// Key-value pairs that can be used to group and search for users. Tags are metadata /// attached to users for any purpose. /// /// [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 UserName. /// /// A unique string that identifies a user and is associated with a ServerId. /// This user name must be a minimum of 3 and a maximum of 100 characters long. The following /// are valid characters: a-z, A-Z, 0-9, underscore '_', hyphen '-', period '.', and at /// sign '@'. The user name can't start with a hyphen, period, or at sign. /// /// [AWSProperty(Required=true, Min=3, Max=100)] public string UserName { get { return this._userName; } set { this._userName = value; } } // Check to see if UserName property is set internal bool IsSetUserName() { return this._userName != null; } } }