/* * Copyright 2012-2017 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. */ package com.amazonaws.services.config.model; import java.io.Serializable; import javax.annotation.Generated; import com.amazonaws.protocol.StructuredPojo; import com.amazonaws.protocol.ProtocolMarshaller; /** * <p> * Specifies the types of AWS resource for which AWS Config records configuration changes. * </p> * <p> * In the recording group, you specify whether all supported types or specific types of resources are recorded. * </p> * <p> * By default, AWS Config records configuration changes for all supported types of regional resources that AWS Config * discovers in the region in which it is running. Regional resources are tied to a region and can be used only in that * region. Examples of regional resources are EC2 instances and EBS volumes. * </p> * <p> * You can also have AWS Config record configuration changes for supported types of global resources (for example, IAM * resources). Global resources are not tied to an individual region and can be used in all regions. * </p> * <important> * <p> * The configuration details for any global resource are the same in all regions. If you customize AWS Config in * multiple regions to record global resources, it will create multiple configuration items each time a global resource * changes: one configuration item for each region. These configuration items will contain identical data. To prevent * duplicate configuration items, you should consider customizing AWS Config in only one region to record global * resources, unless you want the configuration items to be available in multiple regions. * </p> * </important> * <p> * If you don't want AWS Config to record all resources, you can specify which types of resources it will record with * the <code>resourceTypes</code> parameter. * </p> * <p> * For a list of supported resource types, see <a * href="http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported resource types</a>. * </p> * <p> * For more information, see <a * href="http://docs.aws.amazon.com/config/latest/developerguide/select-resources.html">Selecting Which Resources AWS * Config Records</a>. * </p> * * @see <a href="http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/RecordingGroup" target="_top">AWS API * Documentation</a> */ @Generated("com.amazonaws:aws-java-sdk-code-generator") public class RecordingGroup implements Serializable, Cloneable, StructuredPojo { /** * <p> * Specifies whether AWS Config records configuration changes for every supported type of regional resource. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional resource, it * automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * </p> */ private Boolean allSupported; /** * <p> * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with * the resources that it records. * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global resource, it * automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate configuration * items, you should consider customizing AWS Config in only one region to record global resources. * </p> */ private Boolean includeGlobalResourceTypes; /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> */ private com.amazonaws.internal.SdkInternalList<String> resourceTypes; /** * <p> * Specifies whether AWS Config records configuration changes for every supported type of regional resource. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional resource, it * automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * </p> * * @param allSupported * Specifies whether AWS Config records configuration changes for every supported type of regional * resource.</p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional * resource, it automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. */ public void setAllSupported(Boolean allSupported) { this.allSupported = allSupported; } /** * <p> * Specifies whether AWS Config records configuration changes for every supported type of regional resource. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional resource, it * automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * </p> * * @return Specifies whether AWS Config records configuration changes for every supported type of regional * resource.</p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional * resource, it automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. */ public Boolean getAllSupported() { return this.allSupported; } /** * <p> * Specifies whether AWS Config records configuration changes for every supported type of regional resource. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional resource, it * automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * </p> * * @param allSupported * Specifies whether AWS Config records configuration changes for every supported type of regional * resource.</p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional * resource, it automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * @return Returns a reference to this object so that method calls can be chained together. */ public RecordingGroup withAllSupported(Boolean allSupported) { setAllSupported(allSupported); return this; } /** * <p> * Specifies whether AWS Config records configuration changes for every supported type of regional resource. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional resource, it * automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. * </p> * * @return Specifies whether AWS Config records configuration changes for every supported type of regional * resource.</p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of regional * resource, it automatically starts recording resources of that type. * </p> * <p> * If you set this option to <code>true</code>, you cannot enumerate a list of <code>resourceTypes</code>. */ public Boolean isAllSupported() { return this.allSupported; } /** * <p> * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with * the resources that it records. * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global resource, it * automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate configuration * items, you should consider customizing AWS Config in only one region to record global resources. * </p> * * @param includeGlobalResourceTypes * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) * with the resources that it records.</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global * resource, it automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate * configuration items, you should consider customizing AWS Config in only one region to record global * resources. */ public void setIncludeGlobalResourceTypes(Boolean includeGlobalResourceTypes) { this.includeGlobalResourceTypes = includeGlobalResourceTypes; } /** * <p> * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with * the resources that it records. * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global resource, it * automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate configuration * items, you should consider customizing AWS Config in only one region to record global resources. * </p> * * @return Specifies whether AWS Config includes all supported types of global resources (for example, IAM * resources) with the resources that it records.</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global * resource, it automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate * configuration items, you should consider customizing AWS Config in only one region to record global * resources. */ public Boolean getIncludeGlobalResourceTypes() { return this.includeGlobalResourceTypes; } /** * <p> * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with * the resources that it records. * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global resource, it * automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate configuration * items, you should consider customizing AWS Config in only one region to record global resources. * </p> * * @param includeGlobalResourceTypes * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) * with the resources that it records.</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global * resource, it automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate * configuration items, you should consider customizing AWS Config in only one region to record global * resources. * @return Returns a reference to this object so that method calls can be chained together. */ public RecordingGroup withIncludeGlobalResourceTypes(Boolean includeGlobalResourceTypes) { setIncludeGlobalResourceTypes(includeGlobalResourceTypes); return this; } /** * <p> * Specifies whether AWS Config includes all supported types of global resources (for example, IAM resources) with * the resources that it records. * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global resource, it * automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate configuration * items, you should consider customizing AWS Config in only one region to record global resources. * </p> * * @return Specifies whether AWS Config includes all supported types of global resources (for example, IAM * resources) with the resources that it records.</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>true</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of global * resource, it automatically starts recording resources of that type. * </p> * <p> * The configuration details for any global resource are the same in all regions. To prevent duplicate * configuration items, you should consider customizing AWS Config in only one region to record global * resources. */ public Boolean isIncludeGlobalResourceTypes() { return this.includeGlobalResourceTypes; } /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> * * @return A comma-separated list that specifies the types of AWS resources for which AWS Config records * configuration changes (for example, <code>AWS::EC2::Instance</code> or * <code>AWS::CloudTrail::Trail</code>).</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it * will not record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a * href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * @see ResourceType */ public java.util.List<String> getResourceTypes() { if (resourceTypes == null) { resourceTypes = new com.amazonaws.internal.SdkInternalList<String>(); } return resourceTypes; } /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> * * @param resourceTypes * A comma-separated list that specifies the types of AWS resources for which AWS Config records * configuration changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code> * ).</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it * will not record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a * href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * @see ResourceType */ public void setResourceTypes(java.util.Collection<String> resourceTypes) { if (resourceTypes == null) { this.resourceTypes = null; return; } this.resourceTypes = new com.amazonaws.internal.SdkInternalList<String>(resourceTypes); } /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> * <p> * <b>NOTE:</b> This method appends the values to the existing list (if any). Use * {@link #setResourceTypes(java.util.Collection)} or {@link #withResourceTypes(java.util.Collection)} if you want * to override the existing values. * </p> * * @param resourceTypes * A comma-separated list that specifies the types of AWS resources for which AWS Config records * configuration changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code> * ).</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it * will not record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a * href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * @return Returns a reference to this object so that method calls can be chained together. * @see ResourceType */ public RecordingGroup withResourceTypes(String... resourceTypes) { if (this.resourceTypes == null) { setResourceTypes(new com.amazonaws.internal.SdkInternalList<String>(resourceTypes.length)); } for (String ele : resourceTypes) { this.resourceTypes.add(ele); } return this; } /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> * * @param resourceTypes * A comma-separated list that specifies the types of AWS resources for which AWS Config records * configuration changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code> * ).</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it * will not record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a * href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * @return Returns a reference to this object so that method calls can be chained together. * @see ResourceType */ public RecordingGroup withResourceTypes(java.util.Collection<String> resourceTypes) { setResourceTypes(resourceTypes); return this; } /** * <p> * A comma-separated list that specifies the types of AWS resources for which AWS Config records configuration * changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code>). * </p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it will not * record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * </p> * * @param resourceTypes * A comma-separated list that specifies the types of AWS resources for which AWS Config records * configuration changes (for example, <code>AWS::EC2::Instance</code> or <code>AWS::CloudTrail::Trail</code> * ).</p> * <p> * Before you can set this option to <code>true</code>, you must set the <code>allSupported</code> option to * <code>false</code>. * </p> * <p> * If you set this option to <code>true</code>, when AWS Config adds support for a new type of resource, it * will not record resources of that type unless you manually add that type to your recording group. * </p> * <p> * For a list of valid <code>resourceTypes</code> values, see the <b>resourceType Value</b> column in <a * href= * "http://docs.aws.amazon.com/config/latest/developerguide/resource-config-reference.html#supported-resources" * >Supported AWS Resource Types</a>. * @return Returns a reference to this object so that method calls can be chained together. * @see ResourceType */ public RecordingGroup withResourceTypes(ResourceType... resourceTypes) { com.amazonaws.internal.SdkInternalList<String> resourceTypesCopy = new com.amazonaws.internal.SdkInternalList<String>(resourceTypes.length); for (ResourceType value : resourceTypes) { resourceTypesCopy.add(value.toString()); } if (getResourceTypes() == null) { setResourceTypes(resourceTypesCopy); } else { getResourceTypes().addAll(resourceTypesCopy); } return this; } /** * Returns a string representation of this object; useful for testing and debugging. * * @return A string representation of this object. * * @see java.lang.Object#toString() */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("{"); if (getAllSupported() != null) sb.append("AllSupported: ").append(getAllSupported()).append(","); if (getIncludeGlobalResourceTypes() != null) sb.append("IncludeGlobalResourceTypes: ").append(getIncludeGlobalResourceTypes()).append(","); if (getResourceTypes() != null) sb.append("ResourceTypes: ").append(getResourceTypes()); sb.append("}"); return sb.toString(); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (obj instanceof RecordingGroup == false) return false; RecordingGroup other = (RecordingGroup) obj; if (other.getAllSupported() == null ^ this.getAllSupported() == null) return false; if (other.getAllSupported() != null && other.getAllSupported().equals(this.getAllSupported()) == false) return false; if (other.getIncludeGlobalResourceTypes() == null ^ this.getIncludeGlobalResourceTypes() == null) return false; if (other.getIncludeGlobalResourceTypes() != null && other.getIncludeGlobalResourceTypes().equals(this.getIncludeGlobalResourceTypes()) == false) return false; if (other.getResourceTypes() == null ^ this.getResourceTypes() == null) return false; if (other.getResourceTypes() != null && other.getResourceTypes().equals(this.getResourceTypes()) == false) return false; return true; } @Override public int hashCode() { final int prime = 31; int hashCode = 1; hashCode = prime * hashCode + ((getAllSupported() == null) ? 0 : getAllSupported().hashCode()); hashCode = prime * hashCode + ((getIncludeGlobalResourceTypes() == null) ? 0 : getIncludeGlobalResourceTypes().hashCode()); hashCode = prime * hashCode + ((getResourceTypes() == null) ? 0 : getResourceTypes().hashCode()); return hashCode; } @Override public RecordingGroup clone() { try { return (RecordingGroup) super.clone(); } catch (CloneNotSupportedException e) { throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e); } } @com.amazonaws.annotation.SdkInternalApi @Override public void marshall(ProtocolMarshaller protocolMarshaller) { com.amazonaws.services.config.model.transform.RecordingGroupMarshaller.getInstance().marshall(this, protocolMarshaller); } }