public IKey Create(string id, IKeyProps keyProps = null)
        {
            if (string.IsNullOrEmpty(id))
            {
                throw new ArgumentException("The provided identifier for the KMS key can not be null or empty");
            }

            return(new Key(Scope, id, keyProps));
        }
 public ISecret Create(string secretName, string encryptionKeyId, IKeyProps encryptionKeyProperties, string charsToExclude = "^{}\"@/;-+=&\\/", int passwordLength = 16)
 {
     return(Create(secretName, string.IsNullOrEmpty(encryptionKeyId) ? null : new Key(Scope, encryptionKeyId, encryptionKeyProperties), charsToExclude, passwordLength));
 }
        /// <summary>
        /// Creates a secret using an existing KMS key from the existing KMS id
        /// </summary>
        /// <param name="secretName"></param>
        /// <param name="encryptionKeyId"></param>
        /// <param name="charsToExclude"></param>
        /// <param name="passwordLength"></param>
        /// <returns></returns>
        public ISecret Create(string secretName, string encryptionKeyId, string charsToExclude = "^{}^{}\"@/;-+=&\\/", int passwordLength = 16, IKeyProps encryptionKeyProperties = null)
        {
            if (string.IsNullOrEmpty(encryptionKeyId))
            {
                throw new ArgumentException("The provided encryptionKeyId can not be null");
            }

            var key = AwsCdkKmsHandler.Locate(encryptionKeyId, null) ?? new Key(Scope, encryptionKeyId, encryptionKeyProperties);

            return(Create(secretName, key, charsToExclude, passwordLength));
        }