/*
* 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 nimble-2020-08-01.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.NimbleStudio.Model
{
///
/// Container for the parameters to the CreateStudio operation.
/// Create a new studio.
///
///
///
/// When creating a studio, two IAM roles must be provided: the admin role and the user
/// role. These roles are assumed by your users when they log in to the Nimble Studio
/// portal.
///
///
///
/// The user role must have the AmazonNimbleStudio-StudioUser
managed policy
/// attached for the portal to function properly.
///
///
///
/// The admin role must have the AmazonNimbleStudio-StudioAdmin
managed policy
/// attached for the portal to function properly.
///
///
///
/// You may optionally specify a KMS key in the StudioEncryptionConfiguration
.
///
///
///
/// In Nimble Studio, resource names, descriptions, initialization scripts, and other
/// data you provide are always encrypted at rest using an KMS key. By default, this key
/// is owned by Amazon Web Services and managed on your behalf. You may provide your own
/// KMS key when calling CreateStudio
to encrypt this data using a key you
/// own and manage.
///
///
///
/// When providing an KMS key during studio creation, Nimble Studio creates KMS grants
/// in your account to provide your studio user and admin roles access to these KMS keys.
///
///
///
/// If you delete this grant, the studio will no longer be accessible to your portal users.
///
///
///
/// If you delete the studio KMS key, your studio will no longer be accessible.
///
///
public partial class CreateStudioRequest : AmazonNimbleStudioRequest
{
private string _adminRoleArn;
private string _clientToken;
private string _displayName;
private StudioEncryptionConfiguration _studioEncryptionConfiguration;
private string _studioName;
private Dictionary _tags = new Dictionary();
private string _userRoleArn;
///
/// Gets and sets the property AdminRoleArn.
///
/// The IAM role that studio admins will assume when logging in to the Nimble Studio portal.
///
///
[AWSProperty(Required=true, Min=0, Max=2048)]
public string AdminRoleArn
{
get { return this._adminRoleArn; }
set { this._adminRoleArn = value; }
}
// Check to see if AdminRoleArn property is set
internal bool IsSetAdminRoleArn()
{
return this._adminRoleArn != null;
}
///
/// Gets and sets the property ClientToken.
///
/// Unique, case-sensitive identifier that you provide to ensure the idempotency of the
/// request. If you don’t specify a client token, the Amazon Web Services SDK automatically
/// generates a client token and uses it for the request to ensure idempotency.
///
///
[AWSProperty(Min=1, Max=64)]
public string ClientToken
{
get { return this._clientToken; }
set { this._clientToken = value; }
}
// Check to see if ClientToken property is set
internal bool IsSetClientToken()
{
return this._clientToken != null;
}
///
/// Gets and sets the property DisplayName.
///
/// A friendly name for the studio.
///
///
[AWSProperty(Required=true, Sensitive=true, Min=0, Max=64)]
public string DisplayName
{
get { return this._displayName; }
set { this._displayName = value; }
}
// Check to see if DisplayName property is set
internal bool IsSetDisplayName()
{
return this._displayName != null;
}
///
/// Gets and sets the property StudioEncryptionConfiguration.
///
/// The studio encryption configuration.
///
///
public StudioEncryptionConfiguration StudioEncryptionConfiguration
{
get { return this._studioEncryptionConfiguration; }
set { this._studioEncryptionConfiguration = value; }
}
// Check to see if StudioEncryptionConfiguration property is set
internal bool IsSetStudioEncryptionConfiguration()
{
return this._studioEncryptionConfiguration != null;
}
///
/// Gets and sets the property StudioName.
///
/// The studio name that is used in the URL of the Nimble Studio portal when accessed
/// by Nimble Studio users.
///
///
[AWSProperty(Required=true, Min=3, Max=64)]
public string StudioName
{
get { return this._studioName; }
set { this._studioName = value; }
}
// Check to see if StudioName property is set
internal bool IsSetStudioName()
{
return this._studioName != null;
}
///
/// Gets and sets the property Tags.
///
/// A collection of labels, in the form of key-value pairs, that apply to this resource.
///
///
public Dictionary 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 UserRoleArn.
///
/// The IAM role that studio users will assume when logging in to the Nimble Studio portal.
///
///
[AWSProperty(Required=true, Min=0, Max=2048)]
public string UserRoleArn
{
get { return this._userRoleArn; }
set { this._userRoleArn = value; }
}
// Check to see if UserRoleArn property is set
internal bool IsSetUserRoleArn()
{
return this._userRoleArn != null;
}
}
}