/*
* 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 resource-groups-2017-11-27.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.ResourceGroups.Model
{
///
/// The query you can use to define a resource group or a search for resources. A ResourceQuery
/// specifies both a query Type
and a Query
string as JSON string
/// objects. See the examples section for example JSON strings. For more information about
/// creating a resource group with a resource query, see Build
/// queries and groups in Resource Groups in the Resource Groups User Guide
///
///
///
///
/// When you combine all of the elements together into a single string, any double quotes
/// that are embedded inside another double quote pair must be escaped by preceding the
/// embedded double quote with a backslash character (\). For example, a complete ResourceQuery
/// parameter must be formatted like the following CLI parameter example:
///
///
///
/// --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
///
///
///
///
/// In the preceding example, all of the double quote characters in the value part of
/// the Query
element must be escaped because the value itself is surrounded
/// by double quotes. For more information, see Quoting
/// strings in the Command Line Interface User Guide.
///
///
///
/// For the complete list of resource types that you can use in the array value for ResourceTypeFilters
,
/// see Resources
/// you can use with Resource Groups and Tag Editor in the Resource Groups User
/// Guide. For example:
///
///
///
/// "ResourceTypeFilters":["AWS::S3::Bucket", "AWS::EC2::Instance"]
///
///
public partial class ResourceQuery
{
private string _query;
private QueryType _type;
///
/// Gets and sets the property Query.
///
/// The query that defines a group or a search. The contents depends on the value of the
/// Type
element.
///
/// -
///
///
ResourceTypeFilters
– Applies to all ResourceQuery
objects
/// of either Type
. This element contains one of the following two items:
///
/// -
///
/// The value
AWS::AllSupported
. This causes the ResourceQuery to match resources
/// of any resource type that also match the query.
///
/// -
///
/// A list (a JSON array) of resource type identifiers that limit the query to only resources
/// of the specified types. For the complete list of resource types that you can use in
/// the array value for
ResourceTypeFilters
, see Resources
/// you can use with Resource Groups and Tag Editor in the Resource Groups User
/// Guide.
///
///
///
/// Example: "ResourceTypeFilters": ["AWS::AllSupported"]
or "ResourceTypeFilters":
/// ["AWS::EC2::Instance", "AWS::S3::Bucket"]
///
/// -
///
///
TagFilters
– applicable only if Type
= TAG_FILTERS_1_0
.
/// The Query
contains a JSON string that represents a collection of simple
/// tag filters. The JSON string uses a syntax similar to the GetResources
///
operation, but uses only the
/// ResourceTypeFilters
and TagFilters
///
fields. If you specify more than one tag key, only resources that match all
/// tag keys, and at least one value of each specified tag key, are returned in your query.
/// If you specify more than one value for a tag key, a resource matches the filter if
/// it has a tag key value that matches any of the specified values.
///
///
///
/// For example, consider the following sample query for resources that have two tags,
/// Stage
and Version
, with two values each:
///
///
///
/// [{"Stage":["Test","Deploy"]},{"Version":["1","2"]}]
///
///
///
/// The results of this resource query could include the following.
///
/// -
///
/// An Amazon EC2 instance that has the following two tags:
{"Stage":"Deploy"}
,
/// and {"Version":"2"}
///
/// -
///
/// An S3 bucket that has the following two tags:
{"Stage":"Test"}
, and {"Version":"1"}
///
///
///
///
/// The resource query results would not include the following items in the results,
/// however.
///
/// -
///
/// An Amazon EC2 instance that has only the following tag:
{"Stage":"Deploy"}
.
///
///
///
/// The instance does not have all of the tag keys specified in the filter, so
/// it is excluded from the results.
///
/// -
///
/// An RDS database that has the following two tags:
{"Stage":"Archived"}
/// and {"Version":"4"}
///
///
///
/// The database has all of the tag keys, but none of those keys has an associated value
/// that matches at least one of the specified values in the filter.
///
///
///
/// Example: "TagFilters": [ { "Key": "Stage", "Values": [ "Gamma", "Beta" ] }
///
///
/// -
///
///
StackIdentifier
– applicable only if Type
= CLOUDFORMATION_STACK_1_0
.
/// The value of this parameter is the Amazon Resource Name (ARN) of the CloudFormation
/// stack whose resources you want included in the group.
///
///
///
[AWSProperty(Required=true, Max=4096)]
public string Query
{
get { return this._query; }
set { this._query = value; }
}
// Check to see if Query property is set
internal bool IsSetQuery()
{
return this._query != null;
}
///
/// Gets and sets the property Type.
///
/// The type of the query to perform. This can have one of two values:
///
/// -
///
///
CLOUDFORMATION_STACK_1_0:
Specifies that you want the group
/// to contain the members of an CloudFormation stack. The Query
contains
/// a StackIdentifier
element with an ARN for a CloudFormation stack.
///
/// -
///
///
TAG_FILTERS_1_0:
Specifies that you want the group to include
/// resource that have tags that match the query.
///
///
///
[AWSProperty(Required=true, Min=1, Max=128)]
public QueryType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
}
}