/*
* 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 config-2014-11-12.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.ConfigService.Model
{
///
/// Container for the parameters to the PutOrganizationConfigRule operation.
/// Adds or updates an Config rule for your entire organization to evaluate if your Amazon
/// Web Services resources comply with your desired configurations. For information on
/// how many organization Config rules you can have per account, see
/// Service Limits in the Config Developer Guide.
///
///
///
/// Only a management account and a delegated administrator can create or update an organization
/// Config rule. When calling this API with a delegated administrator, you must ensure
/// Organizations ListDelegatedAdministrator
permissions are added. An organization
/// can have up to 3 delegated administrators.
///
///
///
/// This API enables organization service access through the EnableAWSServiceAccess
/// action and creates a service-linked role AWSServiceRoleForConfigMultiAccountSetup
/// in the management or delegated administrator account of your organization. The service-linked
/// role is created only when the role does not exist in the caller account. Config verifies
/// the existence of role with GetRole
action.
///
///
///
/// To use this API with delegated administrator, register a delegated administrator by
/// calling Amazon Web Services Organization register-delegated-administrator
/// for config-multiaccountsetup.amazonaws.com
.
///
///
///
/// There are two types of rules: Config Managed Rules and Config Custom Rules.
/// You can use PutOrganizationConfigRule
to create both Config Managed Rules
/// and Config Custom Rules.
///
///
///
/// Config Managed Rules are predefined, customizable rules created by Config. For a list
/// of managed rules, see List
/// of Config Managed Rules. If you are adding an Config managed rule, you must specify
/// the rule's identifier for the RuleIdentifier
key.
///
///
///
/// Config Custom Rules are rules that you create from scratch. There are two ways to
/// create Config custom rules: with Lambda functions (
/// Lambda Developer Guide) and with Guard (Guard
/// GitHub Repository), a policy-as-code language. Config custom rules created with
/// Lambda are called Config Custom Lambda Rules and Config custom rules created
/// with Guard are called Config Custom Policy Rules.
///
///
///
/// If you are adding a new Config Custom Lambda rule, you first need to create an Lambda
/// function in the management account or a delegated administrator that the rule invokes
/// to evaluate your resources. You also need to create an IAM role in the managed account
/// that can be assumed by the Lambda function. When you use PutOrganizationConfigRule
/// to add a Custom Lambda rule to Config, you must specify the Amazon Resource Name (ARN)
/// that Lambda assigns to the function.
///
///
///
/// Prerequisite: Ensure you call EnableAllFeatures
API to enable all features
/// in an organization.
///
///
///
/// Make sure to specify one of either OrganizationCustomPolicyRuleMetadata
/// for Custom Policy rules, OrganizationCustomRuleMetadata
for Custom Lambda
/// rules, or OrganizationManagedRuleMetadata
for managed rules.
///
///
///
public partial class PutOrganizationConfigRuleRequest : AmazonConfigServiceRequest
{
private List _excludedAccounts = new List();
private string _organizationConfigRuleName;
private OrganizationCustomPolicyRuleMetadata _organizationCustomPolicyRuleMetadata;
private OrganizationCustomRuleMetadata _organizationCustomRuleMetadata;
private OrganizationManagedRuleMetadata _organizationManagedRuleMetadata;
///
/// Gets and sets the property ExcludedAccounts.
///
/// A comma-separated list of accounts that you want to exclude from an organization Config
/// rule.
///
///
[AWSProperty(Min=0, Max=1000)]
public List ExcludedAccounts
{
get { return this._excludedAccounts; }
set { this._excludedAccounts = value; }
}
// Check to see if ExcludedAccounts property is set
internal bool IsSetExcludedAccounts()
{
return this._excludedAccounts != null && this._excludedAccounts.Count > 0;
}
///
/// Gets and sets the property OrganizationConfigRuleName.
///
/// The name that you assign to an organization Config rule.
///
///
[AWSProperty(Required=true, Min=1, Max=64)]
public string OrganizationConfigRuleName
{
get { return this._organizationConfigRuleName; }
set { this._organizationConfigRuleName = value; }
}
// Check to see if OrganizationConfigRuleName property is set
internal bool IsSetOrganizationConfigRuleName()
{
return this._organizationConfigRuleName != null;
}
///
/// Gets and sets the property OrganizationCustomPolicyRuleMetadata.
///
/// An OrganizationCustomPolicyRuleMetadata
object. This object specifies
/// metadata for your organization's Config Custom Policy rule. The metadata includes
/// the runtime system in use, which accounts have debug logging enabled, and other custom
/// rule metadata, such as resource type, resource ID of Amazon Web Services resource,
/// and organization trigger types that initiate Config to evaluate Amazon Web Services
/// resources against a rule.
///
///
public OrganizationCustomPolicyRuleMetadata OrganizationCustomPolicyRuleMetadata
{
get { return this._organizationCustomPolicyRuleMetadata; }
set { this._organizationCustomPolicyRuleMetadata = value; }
}
// Check to see if OrganizationCustomPolicyRuleMetadata property is set
internal bool IsSetOrganizationCustomPolicyRuleMetadata()
{
return this._organizationCustomPolicyRuleMetadata != null;
}
///
/// Gets and sets the property OrganizationCustomRuleMetadata.
///
/// An OrganizationCustomRuleMetadata
object. This object specifies organization
/// custom rule metadata such as resource type, resource ID of Amazon Web Services resource,
/// Lambda function ARN, and organization trigger types that trigger Config to evaluate
/// your Amazon Web Services resources against a rule. It also provides the frequency
/// with which you want Config to run evaluations for the rule if the trigger type is
/// periodic.
///
///
public OrganizationCustomRuleMetadata OrganizationCustomRuleMetadata
{
get { return this._organizationCustomRuleMetadata; }
set { this._organizationCustomRuleMetadata = value; }
}
// Check to see if OrganizationCustomRuleMetadata property is set
internal bool IsSetOrganizationCustomRuleMetadata()
{
return this._organizationCustomRuleMetadata != null;
}
///
/// Gets and sets the property OrganizationManagedRuleMetadata.
///
/// An OrganizationManagedRuleMetadata
object. This object specifies organization
/// managed rule metadata such as resource type and ID of Amazon Web Services resource
/// along with the rule identifier. It also provides the frequency with which you want
/// Config to run evaluations for the rule if the trigger type is periodic.
///
///
public OrganizationManagedRuleMetadata OrganizationManagedRuleMetadata
{
get { return this._organizationManagedRuleMetadata; }
set { this._organizationManagedRuleMetadata = value; }
}
// Check to see if OrganizationManagedRuleMetadata property is set
internal bool IsSetOrganizationManagedRuleMetadata()
{
return this._organizationManagedRuleMetadata != null;
}
}
}