/*
* 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 qldb-2019-01-02.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.QLDB.Model
{
///
/// Container for the parameters to the CreateLedger operation.
/// Creates a new ledger in your Amazon Web Services account in the current Region.
///
public partial class CreateLedgerRequest : AmazonQLDBRequest
{
private bool? _deletionProtection;
private string _kmsKey;
private string _name;
private PermissionsMode _permissionsMode;
private Dictionary _tags = new Dictionary();
///
/// Gets and sets the property DeletionProtection.
///
/// Specifies whether the ledger is protected from being deleted by any user. If not defined
/// during ledger creation, this feature is enabled (true
) by default.
///
///
///
/// If deletion protection is enabled, you must first disable it before you can delete
/// the ledger. You can disable it by calling the UpdateLedger
operation
/// to set this parameter to false
.
///
///
public bool DeletionProtection
{
get { return this._deletionProtection.GetValueOrDefault(); }
set { this._deletionProtection = value; }
}
// Check to see if DeletionProtection property is set
internal bool IsSetDeletionProtection()
{
return this._deletionProtection.HasValue;
}
///
/// Gets and sets the property KmsKey.
///
/// The key in Key Management Service (KMS) to use for encryption of data at rest in the
/// ledger. For more information, see Encryption
/// at rest in the Amazon QLDB Developer Guide.
///
///
///
/// Use one of the following options to specify this parameter:
///
/// -
///
///
AWS_OWNED_KMS_KEY
: Use an KMS key that is owned and managed by Amazon
/// Web Services on your behalf.
///
/// -
///
/// Undefined: By default, use an Amazon Web Services owned KMS key.
///
///
-
///
/// A valid symmetric customer managed KMS key: Use the specified symmetric encryption
/// KMS key in your account that you create, own, and manage.
///
///
///
/// Amazon QLDB does not support asymmetric keys. For more information, see Using
/// symmetric and asymmetric keys in the Key Management Service Developer Guide.
///
///
///
/// To specify a customer managed KMS key, you can use its key ID, Amazon Resource Name
/// (ARN), alias name, or alias ARN. When using an alias name, prefix it with "alias/"
.
/// To specify a key in a different Amazon Web Services account, you must use the key
/// ARN or alias ARN.
///
///
///
/// For example:
///
/// -
///
/// Key ID:
1234abcd-12ab-34cd-56ef-1234567890ab
///
/// -
///
/// Key ARN:
arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
///
///
/// -
///
/// Alias name:
alias/ExampleAlias
///
/// -
///
/// Alias ARN:
arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
///
///
///
/// For more information, see Key
/// identifiers (KeyId) in the Key Management Service Developer Guide.
///
///
[AWSProperty(Max=1600)]
public string KmsKey
{
get { return this._kmsKey; }
set { this._kmsKey = value; }
}
// Check to see if KmsKey property is set
internal bool IsSetKmsKey()
{
return this._kmsKey != null;
}
///
/// Gets and sets the property Name.
///
/// The name of the ledger that you want to create. The name must be unique among all
/// of the ledgers in your Amazon Web Services account in the current Region.
///
///
///
/// Naming constraints for ledger names are defined in Quotas
/// in Amazon QLDB in the Amazon QLDB Developer Guide.
///
///
[AWSProperty(Required=true, Min=1, Max=32)]
public string Name
{
get { return this._name; }
set { this._name = value; }
}
// Check to see if Name property is set
internal bool IsSetName()
{
return this._name != null;
}
///
/// Gets and sets the property PermissionsMode.
///
/// The permissions mode to assign to the ledger that you want to create. This parameter
/// can have one of the following values:
///
/// -
///
///
ALLOW_ALL
: A legacy permissions mode that enables access control with
/// API-level granularity for ledgers.
///
///
///
/// This mode allows users who have the SendCommand
API permission for this
/// ledger to run all PartiQL commands (hence, ALLOW_ALL
) on any tables in
/// the specified ledger. This mode disregards any table-level or command-level IAM permissions
/// policies that you create for the ledger.
///
/// -
///
///
STANDARD
: (Recommended) A permissions mode that enables access
/// control with finer granularity for ledgers, tables, and PartiQL commands.
///
///
///
/// By default, this mode denies all user requests to run any PartiQL commands on any
/// tables in this ledger. To allow PartiQL commands to run, you must create IAM permissions
/// policies for specific table resources and PartiQL actions, in addition to the SendCommand
/// API permission for the ledger. For information, see Getting
/// started with the standard permissions mode in the Amazon QLDB Developer Guide.
///
///
///
/// We strongly recommend using the STANDARD
permissions mode to maximize
/// the security of your ledger data.
///
///
///
[AWSProperty(Required=true)]
public PermissionsMode PermissionsMode
{
get { return this._permissionsMode; }
set { this._permissionsMode = value; }
}
// Check to see if PermissionsMode property is set
internal bool IsSetPermissionsMode()
{
return this._permissionsMode != null;
}
///
/// Gets and sets the property Tags.
///
/// The key-value pairs to add as tags to the ledger that you want to create. Tag keys
/// are case sensitive. Tag values are case sensitive and can be null.
///
///
[AWSProperty(Min=0, Max=200)]
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;
}
}
}