/*
* 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 grafana-2020-08-18.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.ManagedGrafana.Model
{
///
/// Container for the parameters to the CreateWorkspace operation.
/// Creates a workspace. In a workspace, you can create Grafana dashboards and
/// visualizations to analyze your metrics, logs, and traces. You don't have to build,
/// package, or deploy any hardware to run the Grafana server.
///
///
///
/// Don't use CreateWorkspace
to modify an existing workspace. Instead, use
/// UpdateWorkspace.
///
///
public partial class CreateWorkspaceRequest : AmazonManagedGrafanaRequest
{
private AccountAccessType _accountAccessType;
private List _authenticationProviders = new List();
private string _clientToken;
private string _configuration;
private string _grafanaVersion;
private NetworkAccessConfiguration _networkAccessControl;
private string _organizationRoleName;
private PermissionType _permissionType;
private string _stackSetName;
private Dictionary _tags = new Dictionary();
private VpcConfiguration _vpcConfiguration;
private List _workspaceDataSources = new List();
private string _workspaceDescription;
private string _workspaceName;
private List _workspaceNotificationDestinations = new List();
private List _workspaceOrganizationalUnits = new List();
private string _workspaceRoleArn;
///
/// Gets and sets the property AccountAccessType.
///
/// Specifies whether the workspace can access Amazon Web Services resources in this Amazon
/// Web Services account only, or whether it can also access Amazon Web Services resources
/// in other accounts in the same organization. If you specify ORGANIZATION
,
/// you must specify which organizational units the workspace can access in the workspaceOrganizationalUnits
/// parameter.
///
///
[AWSProperty(Required=true)]
public AccountAccessType AccountAccessType
{
get { return this._accountAccessType; }
set { this._accountAccessType = value; }
}
// Check to see if AccountAccessType property is set
internal bool IsSetAccountAccessType()
{
return this._accountAccessType != null;
}
///
/// Gets and sets the property AuthenticationProviders.
///
/// Specifies whether this workspace uses SAML 2.0, IAM Identity Center (successor to
/// Single Sign-On), or both to authenticate users for using the Grafana console within
/// a workspace. For more information, see User
/// authentication in Amazon Managed Grafana.
///
///
[AWSProperty(Required=true)]
public List AuthenticationProviders
{
get { return this._authenticationProviders; }
set { this._authenticationProviders = value; }
}
// Check to see if AuthenticationProviders property is set
internal bool IsSetAuthenticationProviders()
{
return this._authenticationProviders != null && this._authenticationProviders.Count > 0;
}
///
/// Gets and sets the property ClientToken.
///
/// A unique, case-sensitive, user-provided identifier to ensure the idempotency of the
/// request.
///
///
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 Configuration.
///
/// The configuration string for the workspace that you create. For more information about
/// the format and configuration options available, see Working
/// in your Grafana workspace.
///
///
[AWSProperty(Min=2, Max=65536)]
public string Configuration
{
get { return this._configuration; }
set { this._configuration = value; }
}
// Check to see if Configuration property is set
internal bool IsSetConfiguration()
{
return this._configuration != null;
}
///
/// Gets and sets the property GrafanaVersion.
///
/// Specifies the version of Grafana to support in the new workspace.
///
///
///
/// To get a list of supported version, use the ListVersions
operation.
///
///
[AWSProperty(Min=1, Max=255)]
public string GrafanaVersion
{
get { return this._grafanaVersion; }
set { this._grafanaVersion = value; }
}
// Check to see if GrafanaVersion property is set
internal bool IsSetGrafanaVersion()
{
return this._grafanaVersion != null;
}
///
/// Gets and sets the property NetworkAccessControl.
///
/// Configuration for network access to your workspace.
///
///
///
/// When this is configured, only listed IP addresses and VPC endpoints will be able to
/// access your workspace. Standard Grafana authentication and authorization will still
/// be required.
///
///
///
/// If this is not configured, or is removed, then all IP addresses and VPC endpoints
/// will be allowed. Standard Grafana authentication and authorization will still be required.
///
///
public NetworkAccessConfiguration NetworkAccessControl
{
get { return this._networkAccessControl; }
set { this._networkAccessControl = value; }
}
// Check to see if NetworkAccessControl property is set
internal bool IsSetNetworkAccessControl()
{
return this._networkAccessControl != null;
}
///
/// Gets and sets the property OrganizationRoleName.
///
/// The name of an IAM role that already exists to use with Organizations to access Amazon
/// Web Services data sources and notification channels in other accounts in an organization.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=2048)]
public string OrganizationRoleName
{
get { return this._organizationRoleName; }
set { this._organizationRoleName = value; }
}
// Check to see if OrganizationRoleName property is set
internal bool IsSetOrganizationRoleName()
{
return this._organizationRoleName != null;
}
///
/// Gets and sets the property PermissionType.
///
/// When creating a workspace through the Amazon Web Services API, CLI or Amazon Web Services
/// CloudFormation, you must manage IAM roles and provision the permissions that the workspace
/// needs to use Amazon Web Services data sources and notification channels.
///
///
///
/// You must also specify a workspaceRoleArn
for a role that you will manage
/// for the workspace to use when accessing those datasources and notification channels.
///
///
///
/// The ability for Amazon Managed Grafana to create and update IAM roles on behalf of
/// the user is supported only in the Amazon Managed Grafana console, where this value
/// may be set to SERVICE_MANAGED
.
///
///
///
/// Use only the CUSTOMER_MANAGED
permission type when creating a workspace
/// with the API, CLI or Amazon Web Services CloudFormation.
///
///
///
/// For more information, see Amazon
/// Managed Grafana permissions and policies for Amazon Web Services data sources and
/// notification channels.
///
///
[AWSProperty(Required=true)]
public PermissionType PermissionType
{
get { return this._permissionType; }
set { this._permissionType = value; }
}
// Check to see if PermissionType property is set
internal bool IsSetPermissionType()
{
return this._permissionType != null;
}
///
/// Gets and sets the property StackSetName.
///
/// The name of the CloudFormation stack set to use to generate IAM roles to be used for
/// this workspace.
///
///
public string StackSetName
{
get { return this._stackSetName; }
set { this._stackSetName = value; }
}
// Check to see if StackSetName property is set
internal bool IsSetStackSetName()
{
return this._stackSetName != null;
}
///
/// Gets and sets the property Tags.
///
/// The list of tags associated with the workspace.
///
///
[AWSProperty(Min=0, Max=50)]
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 VpcConfiguration.
///
/// The configuration settings for an Amazon VPC that contains data sources for your Grafana
/// workspace to connect to.
///
///
///
/// Connecting to a private VPC is not yet available in the Asia Pacific (Seoul) Region
/// (ap-northeast-2).
///
///
///
public VpcConfiguration VpcConfiguration
{
get { return this._vpcConfiguration; }
set { this._vpcConfiguration = value; }
}
// Check to see if VpcConfiguration property is set
internal bool IsSetVpcConfiguration()
{
return this._vpcConfiguration != null;
}
///
/// Gets and sets the property WorkspaceDataSources.
///
/// This parameter is for internal use only, and should not be used.
///
///
public List WorkspaceDataSources
{
get { return this._workspaceDataSources; }
set { this._workspaceDataSources = value; }
}
// Check to see if WorkspaceDataSources property is set
internal bool IsSetWorkspaceDataSources()
{
return this._workspaceDataSources != null && this._workspaceDataSources.Count > 0;
}
///
/// Gets and sets the property WorkspaceDescription.
///
/// A description for the workspace. This is used only to help you identify this workspace.
///
///
///
/// Pattern: ^[\\p{L}\\p{Z}\\p{N}\\p{P}]{0,2048}$
///
///
[AWSProperty(Sensitive=true, Min=0, Max=2048)]
public string WorkspaceDescription
{
get { return this._workspaceDescription; }
set { this._workspaceDescription = value; }
}
// Check to see if WorkspaceDescription property is set
internal bool IsSetWorkspaceDescription()
{
return this._workspaceDescription != null;
}
///
/// Gets and sets the property WorkspaceName.
///
/// The name for the workspace. It does not have to be unique.
///
///
[AWSProperty(Sensitive=true)]
public string WorkspaceName
{
get { return this._workspaceName; }
set { this._workspaceName = value; }
}
// Check to see if WorkspaceName property is set
internal bool IsSetWorkspaceName()
{
return this._workspaceName != null;
}
///
/// Gets and sets the property WorkspaceNotificationDestinations.
///
/// Specify the Amazon Web Services notification channels that you plan to use in this
/// workspace. Specifying these data sources here enables Amazon Managed Grafana to create
/// IAM roles and permissions that allow Amazon Managed Grafana to use these channels.
///
///
public List WorkspaceNotificationDestinations
{
get { return this._workspaceNotificationDestinations; }
set { this._workspaceNotificationDestinations = value; }
}
// Check to see if WorkspaceNotificationDestinations property is set
internal bool IsSetWorkspaceNotificationDestinations()
{
return this._workspaceNotificationDestinations != null && this._workspaceNotificationDestinations.Count > 0;
}
///
/// Gets and sets the property WorkspaceOrganizationalUnits.
///
/// Specifies the organizational units that this workspace is allowed to use data sources
/// from, if this workspace is in an account that is part of an organization.
///
///
[AWSProperty(Sensitive=true)]
public List WorkspaceOrganizationalUnits
{
get { return this._workspaceOrganizationalUnits; }
set { this._workspaceOrganizationalUnits = value; }
}
// Check to see if WorkspaceOrganizationalUnits property is set
internal bool IsSetWorkspaceOrganizationalUnits()
{
return this._workspaceOrganizationalUnits != null && this._workspaceOrganizationalUnits.Count > 0;
}
///
/// Gets and sets the property WorkspaceRoleArn.
///
/// Specified the IAM role that grants permissions to the Amazon Web Services resources
/// that the workspace will view data from, including both data sources and notification
/// channels. You are responsible for managing the permissions for this role as new data
/// sources or notification channels are added.
///
///
[AWSProperty(Sensitive=true, Min=1, Max=2048)]
public string WorkspaceRoleArn
{
get { return this._workspaceRoleArn; }
set { this._workspaceRoleArn = value; }
}
// Check to see if WorkspaceRoleArn property is set
internal bool IsSetWorkspaceRoleArn()
{
return this._workspaceRoleArn != null;
}
}
}