

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 에서 쿼리 기반 그룹 생성 AWS Resource Groups
<a name="gettingstarted-query"></a>

## 리소스 그룹 쿼리 유형
<a name="getting_started-query_types"></a>

에서 AWS Resource Groups*쿼리*는 쿼리 기반 그룹의 기반입니다. 리소스 그룹은 두 가지 유형의 쿼리 중 하나에 기반할 수 있습니다.

 **태그 기반**   
태그 기반 쿼리에는 다음 형식의 `AWS::service::resource` 및 태그로 지정된 리소스 유형의 목록이 포함됩니다. *태그*는 조직에서 리소스를 식별하고 분류하는 데 도움이 되는 키입니다. 태그에 키 값을 포함시킬 수도 있습니다.  
태그 기반 쿼리의 경우 그룹의 구성원이고 싶은 리소스에서 공유된 태그도 지정합니다. 예를 들어 애플리케이션의 테스트 단계를 실행하는 데 사용하는 Amazon EC2 인스턴스와 Amazon S3 버킷을 모두 포함하는 리소스 그룹을 생성하려고 하며, 이러한 방식으로 태그가 지정된 인스턴스와 버킷을 보유하고 있는 경우, 드롭다운 목록에서 `AWS::EC2::Instance` 및 `AWS::S3::Bucket` 리소스 유형을 선택한 후 태그 키 **Stage**와 태그 값 **Test**를 지정합니다.  
태그 기반 리소스 그룹의 `ResourceQuery` 파라미터 구문에는 다음 요소가 포함됩니다.  
+  `Type` 

  이 요소는 어떤 유형의 쿼리가 이 리소스 그룹을 정의하는지 나타냅니다. 태그 기반 리소스 그룹을 만들려면 다음과 같이 값 `TAG_FILTERS_1_0`을 지정합니다.

  ```
  "Type": "TAG_FILTERS_1_0"
  ```
+  `Query` 

   이 요소는 리소스와 매칭하는 데 사용되는 실제 쿼리를 정의합니다. 이 쿼리에는 다음 요소가 있는 JSON 구조의 문자열 표현이 포함됩니다.
  +  `ResourceTypeFilters` 

    이 요소는 필터와 일치하는 리소스 유형으로 결과를 제한합니다. 다음 값을 지정할 수 있습니다.
    + `"AWS::AllSupported"` - 쿼리와 일치하고 현재 Resource Groups 서비스에서 지원하는 모든 유형의 리소스가 결과에 포함될 수 있음을 지정합니다.
    + `"AWS::service-id::resource-type` - `"AWS::EC2::Instance"`와 같은 형식의 resource-type 사양 문자열이 쉼표로 구분된 목록입니다.
  +  `TagFilters` 

    이 요소는 리소스에 연결된 태그와 비교되는 키/값 문자열 쌍을 지정합니다. 필터와 일치하는 태그 키와 값을 가진 항목은 그룹에 포함됩니다. 각 필터는 다음 요소로 구성됩니다.
    + `"Key"` - 키 이름이 있는 문자열. 필터와 일치하는 키 이름의 태그를 가진 리소스만 그룹의 구성원입니다.
    + `"Values"` - 지정된 키에 대해 쉼표로 구분된 값 목록이 포함된 문자열입니다. 일치하는 태그 키와 이 목록과 일치하는 값을 가진 리소스만 그룹의 구성원입니다.
이러한 모든 JSON 요소를 JSON 구조의 한 줄 문자열 표현으로 결합해야 합니다. 예를 들어, 다음과 같은 JSON 구조 예제의 `Query`를 고려할 수 있습니다. 이 쿼리는 태그가 ‘Stage’이고 값이 ‘Test’인 Amazon EC2 인스턴스만 매칭하기 위한 것입니다.  

```
{
    "ResourceTypeFilters": [ "AWS::EC2::Instance" ],
    "TagFilters": [
        {
            "Key": "Stage",
            "Values": [ "Test" ]
        }
    ]
}
```
해당 JSON은 다음과 같은 한 줄 문자열로 표현될 수 있으며 `Query` 요소의 값으로 사용될 수 있습니다. JSON 구조의 값은 큰따옴표로 묶은 문자열이어야 하므로 포함된 큰따옴표 문자나 슬래시 문자는 다음과 같이 앞에 백슬래시를 붙여 이스케이프해야 합니다.  

```
"Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"
```
그러면 전체 `ResourceQuery` 문자열이 다음과 같이 CLI 명령 파라미터로 표시됩니다.  

```
--resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
```

  **CloudFormation 스택 기반**   
 CloudFormation 스택 기반 쿼리에서는 현재 리전의 계정에서 CloudFormation 스택을 선택한 다음 그룹에 포함할 스택의 리소스 유형을 선택합니다. 쿼리는 하나의 CloudFormation 스택에만 기반할 수 있습니다.  
 CloudFormation 스택에는 다른 CloudFormation "하위" 스택이 포함될 수 있습니다. 하지만 ‘상위’ 스택을 기반으로 하는 리소스 그룹이 모든 하위 스택의 리소스를 그룹 구성원으로 가져오지는 않습니다. 리소스 그룹은 하위 스택을 상위 스택의 리소스 그룹에 단일 그룹 구성원으로 추가하며 확장하지는 않습니다.
Resource Groups는 다음 상태 중 하나인 CloudFormation 스택을 기반으로 쿼리를 지원합니다.  
+ `CREATE_COMPLETE`
+ `CREATE_IN_PROGRESS`
+ `DELETE_FAILED`
+ `DELETE_IN_PROGRESS`
+ `REVIEW_IN_PROGRESS`
쿼리에서 스택의 일부로 직접 생성된 리소스만 리소스 그룹에 포함됩니다. 나중에 CloudFormation 스택의 멤버가 생성한 리소스는 그룹의 멤버가 되지 않습니다. 예를 들어 스택의 CloudFormation 일부로에서 오토 스케일링을 생성하는 경우 해당 오토 스케일링은 그룹의 멤버***입니다***. 그러나 작업의 일부로 해당 Auto Scaling 그룹에 의해 생성된 Amazon EC2 인스턴스***는 스택 기반 리소스 그룹의 멤버가 아닙니다***. CloudFormation 
 CloudFormation 스택을 기반으로 그룹을 생성하고 스택의 상태가와 같은 그룹 쿼리의 기반으로 더 이상 지원되지 않는 상태로 변경되는 경우 `DELETE_COMPLETE`리소스 그룹은 여전히 존재하지만 멤버 리소스는 없습니다.

리소스 그룹을 만들었으면 그룹의 리소스에 태스크를 수행할 수 있습니다.

CloudFormation 스택 기반 리소스 그룹의 `ResourceQuery` 파라미터 구문에는 다음과 같은 요소가 포함됩니다.
+  `Type` 

  이 요소는 어떤 유형의 쿼리가 이 리소스 그룹을 정의하는지 나타냅니다.

   CloudFormation 스택 기반 리소스 그룹을 생성하려면 다음과 `CLOUDFORMATION_STACK_1_0`같이 값을 지정합니다.

  ```
  "Type": "CLOUDFORMATION_STACK_1_0"
  ```
+  `Query` 

   이 요소는 리소스와 매칭하는 데 사용되는 실제 쿼리를 정의합니다. 이 쿼리에는 다음 요소가 있는 JSON 구조의 문자열 표현이 포함됩니다.
  +  `ResourceTypeFilters` 

    이 요소는 필터와 일치하는 리소스 유형으로 결과를 제한합니다. 다음 값을 지정할 수 있습니다.
    + `"AWS::AllSupported"` - 쿼리와 일치하는 모든 유형의 리소스가 결과에 포함될 수 있음을 지정합니다.
    + `"AWS::service-id::resource-type` - `"AWS::EC2::Instance"`와 같은 형식의 resource-type 사양 문자열이 쉼표로 구분된 목록입니다.
  +  `StackIdentifier` 

    이 요소는 그룹에 포함할 리소스를 가진 CloudFormation 스택의 Amazon 리소스 이름(ARN)을 지정합니다.

이러한 모든 JSON 요소를 JSON 구조의 한 줄 문자열 표현으로 결합해야 합니다. 예를 들어, 다음과 같은 JSON 구조 예제의 `Query`를 고려할 수 있습니다. 이 쿼리는 지정된 CloudFormation 스택의 일부인 Amazon S3 버킷만 일치시키기 위한 것입니다.

```
{
    "ResourceTypeFilters": [ "AWS::S3::Bucket" ],
    "StackIdentifier": "arn:aws:cloudformation:us-west-2:123456789012:stack/MyCloudFormationStackName/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE"
}
```

해당 JSON은 다음과 같은 한 줄 문자열로 표현될 수 있으며 `Query` 요소의 값으로 사용될 수 있습니다. JSON 구조의 값은 큰따옴표로 묶은 문자열이어야 하므로 포함된 큰따옴표 문자나 슬래시 문자는 다음과 같이 앞에 백슬래시를 붙여 이스케이프해야 합니다.

```
"Query":"{\"ResourceTypeFilters\":[\"AWS::S3::Bucket\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/MyCloudFormationStackName\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\"
```

그러면 전체 `ResourceQuery` 문자열이 다음과 같이 CLI 명령 파라미터로 표시됩니다.

```
--resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::S3::Bucket\"],\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/MyCloudFormationStackName\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\"}'
```

# 태그 기반 쿼리 작성 및 그룹 생성
<a name="gettingstarted-query-tag-based"></a>

다음 절차는 태그 기반 쿼리를 작성하고 이를 사용하여 리소스 그룹을 만드는 방법을 보여줍니다.

------
#### [ Console ]

1. [AWS Resource Groups 콘솔](https://console.aws.amazon.com/resource-groups)에 로그인합니다.

1. 탐색 창에서 **[보안 그룹 생성](https://console.aws.amazon.com/resource-groups/groups/new)**을 선택합니다.

1. **쿼리 기반의 그룹 생성** 페이지의 **그룹 유형**에서 **태그 기반** 그룹 유형을 선택합니다.

1. **그룹화 기준**에서 리소스 그룹에 포함할 리소스 유형을 선택합니다. 한 쿼리에 최대 20개 리소스 유형을 가질 수 있습니다. 이 연습에서는 **AWS::EC2::Instance** 및 **AWS::S3::Bucket**을 선택합니다.

1. 여전히 **그룹화 기준**에 있는 상태에서 **태그**에 태그 키 또는 태그 키/값 쌍을 지정하여 일치하는 리소스가 지정된 값으로 태그가 지정된 리소스만 포함하도록 제한합니다. 태그 지정을 마쳤으면 **추가**를 선택하거나 **Enter**를 누릅니다. 이 예에서는 **Stage**라는 태그 키를 가진 리소스를 필터링합니다. 태그 값은 선택 사항이지만 쿼리 결과를 더욱 좁힐 수 있습니다. 태그 값 사이에 `OR` 연산자를 추가하여 태그 키에 여러 값을 추가할 수 있습니다. 태그를 추가하려면 **추가**를 선택합니다. 쿼리는 태그에 `AND` 연산자를 추가하여 지정한 리소스 유형 및 지정된 모든 태그와 일치하는 리소스가 쿼리를 통해 반환됩니다.

1. 여전히 **그룹화 기준**에 있는 상태에서 **그룹 리소스 미리 보기**를 선택하면 해당 계정에서, 지정된 태그 키와 일치하는 EC2 인스턴스 및 S3 버킷 목록이 반환됩니다.

1. 원하는 결과를 얻었으면 이 쿼리를 기반으로 그룹을 만듭니다.

   1. **그룹 세부 정보**에서**그룹 이름**에 리소스 그룹의 이름을 입력합니다.

      리소스 그룹 이름은 문자, 숫자, 하이픈, 점, 밑줄을 포함할 수 있으며 최대 128자입니다. `AWS` 또는 `aws`로 시작하는 이름을 사용할 수 없습니다. 이러한 이름은 예약되어 있습니다. 리소스 그룹 이름은 해당 계정의 현재 리전에서 고유해야 합니다.

   1. (선택 사항) **그룹 설명**에 그룹에 대한 설명을 입력합니다.

   1. (선택 사항) **그룹 태그**에 그룹의 구성원 리소스가 아니라 해당 리소스 그룹에만 적용되는 태그 키와 값 페어를 추가합니다.

      그룹 태그는 이 그룹을 더 큰 그룹의 구성원으로 만들려고 할 때 유용합니다. 그룹을 만들려면 태그 키를 1개 이상 지정해야 하므로 더 큰 그룹에 포함시키려는 그룹에 **Group tags(그룹 태그)**의 태그 키를 1개 이상 추가해야 합니다.

1. 모두 마쳤으면 **그룹 생성**을 선택합니다.

------
#### [ AWS CLI & AWS SDKs ]

태그 기반 그룹은 유형 `TAG_FILTERS_1_0`의 쿼리에 기반합니다.

1.  AWS CLI 세션에서 다음을 입력한 다음 **Enter** 키를 눌러 그룹 이름, 설명, 리소스 유형, 태그 키 및 태그 값의 값을 사용자의 값으로 바꿉니다. 설명은 문자, 숫자, 하이픈, 밑줄, 구두점 및 공간을 포함할 수 있으며 최대 512자입니다. 한 쿼리에 최대 20개 리소스 유형을 가질 수 있습니다. 리소스 그룹 이름은 문자, 숫자, 하이픈, 점, 밑줄을 포함할 수 있으며 최대 128자입니다. `AWS` 또는 `aws`로 시작하는 이름을 사용할 수 없습니다. 이러한 이름은 예약되어 있습니다. 리소스 그룹 이름은 해당 계정에서 고유해야 합니다.

   `ResourceTypeFilters`에 하나 이상의 값이 필요합니다. 모든 리소스 유형을 지정하려면 `AWS::AllSupported`를 `ResourceTypeFilters` 값으로 사용합니다.

   ```
   $ aws resource-groups create-group \
       --name resource-group-name \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"resource_type1\",\"resource_type2\"],\"TagFilters\":[{\"Key\":\"Key1\",\"Values\":[\"Value1\",\"Value2\"]},{\"Key\":\"Key2\",\"Values\":[\"Value1\",\"Value2\"]}]}"}'
   ```

   다음 명령은 예제입니다.

   ```
   $ aws resource-groups create-group \
       --name my-resource-group \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::EC2::Instance\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
   ```

   다음 명령은 지원되는 모든 리소스 유형을 포함하는 예제입니다.

   ```
   $ aws resource-groups create-group \
       --name my-resource-group \
       --resource-query '{"Type":"TAG_FILTERS_1_0","Query":"{\"ResourceTypeFilters\":[\"AWS::AllSupported\"],\"TagFilters\":[{\"Key\":\"Stage\",\"Values\":[\"Test\"]}]}"}'
   ```

1. 명령을 실행하면 다음이 반환됩니다.
   + 생성한 그룹에 대한 설명
   + 그룹을 만들 때 사용한 리소스 쿼리
   + 그룹과 연결된 태그

------

# CloudFormation 스택 기반 그룹 생성
<a name="gettingstarted-query-stack-based"></a>

다음 절차는 스택 기반 쿼리를 작성하고 이를 사용하여 리소스 그룹을 만드는 방법을 보여줍니다.

------
#### [ Console ]

1. [AWS Resource Groups 콘솔](https://console.aws.amazon.com/resource-groups)에 로그인합니다.

1. 탐색 창에서 **[보안 그룹 생성](https://console.aws.amazon.com/resource-groups/groups/new)**을 선택합니다.

1. **쿼리 기반의 그룹 생성**의 **그룹 유형**에서 **CloudFormation 스택 기반** 그룹 유형을 선택합니다.

1. 그룹의 기반이 될 스택을 선택합니다. 리소스 그룹은 하나의 스택에만 기반할 수 있습니다. 스택 목록을 필터링하려면 스택의 이름을 입력하기 시작합니다. 지원되는 상태를 가진 스택만이 목록에 표시됩니다.

1. 그룹에 포함시키려는 스택의 리소스 유형을 선택합니다. 이 연습에서는 **지원되는 모든 리소스 유형**을 기본으로 유지합니다. 그룹에서 지원되고 그룹에 속할 수 있는 리소스 유형에 대한 자세한 내용은 [AWS Resource Groups 및 Tag Editor와 함께 사용할 수 있는 리소스 유형](supported-resources.md) 단원을 참조하세요.

1. **그룹 리소스 보기를** 선택하여 선택한 리소스 유형과 일치하는 CloudFormation 스택의 리소스 목록을 반환합니다.

1. 원하는 결과를 얻었으면 이 쿼리를 기반으로 그룹을 만듭니다.

   1. **그룹 세부 정보**에서**그룹 이름**에 리소스 그룹의 이름을 입력합니다.

      리소스 그룹 이름은 문자, 숫자, 하이픈, 점, 밑줄을 포함할 수 있으며 최대 128자입니다. `AWS` 또는 `aws`로 시작하는 이름을 사용할 수 없습니다. 이러한 이름은 예약되어 있습니다. 리소스 그룹 이름은 해당 계정의 현재 리전에서 고유해야 합니다.

   1. (선택 사항) **그룹 설명**에 그룹에 대한 설명을 입력합니다.

   1. (선택 사항) **그룹 태그**에 그룹의 구성원 리소스가 아니라 해당 리소스 그룹에만 적용되는 태그 키와 값 페어를 추가합니다.

      그룹 태그는 이 그룹을 더 큰 그룹의 구성원으로 만들려고 할 때 유용합니다. 그룹을 만들려면 태그 키를 1개 이상 지정해야 하므로 더 큰 그룹에 포함시키려는 그룹에 **Group tags(그룹 태그)**의 태그 키를 1개 이상 추가해야 합니다.

1. 모두 마쳤으면 **그룹 생성**을 선택합니다.

------
#### [ AWS CLI & AWS SDKs ]

 CloudFormation 스택 기반 그룹은 유형의 쿼리를 기반으로 합니다`CLOUDFORMATION_STACK_1_0`.

1.  세션에서 다음을 입력한 후 Enter를 누릅니다. 그룹 이름, 설명, 스택 식별자, 리소스 유형을 실제 값으로 바꿉니다. 설명은 문자, 숫자, 하이픈, 밑줄, 구두점 및 공간을 포함할 수 있으며 최대 512자입니다.

   리소스 유형을 지정하지 않을 경우 Resource Groups에는 스택에 지원되는 모든 리소스 유형이 포함됩니다. 한 쿼리에 최대 20개 리소스 유형을 가질 수 있습니다. 리소스 그룹 이름은 문자, 숫자, 하이픈, 점, 밑줄을 포함할 수 있으며 최대 128자입니다. `AWS` 또는 `aws`로 시작하는 이름을 사용할 수 없습니다. 이러한 이름은 예약되어 있습니다. 리소스 그룹 이름은 해당 계정에서 고유해야 합니다.

   *stack\$1identifier*는 명령 예제에 표시된 바와 같은 스택 ARN입니다.

   ```
   $ aws resource-groups create-group \
       --name group_name \
       --description "description" \
       --resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"StackIdentifier\":\"stack_identifier\",\"ResourceTypeFilters\":[\"resource_type1\",\"resource_type2\"]}"}'
   ```

   다음 명령은 예제입니다.

   ```
   $ aws resource-groups create-group \
       --name My-CFN-stack-group \
       --description "My first CloudFormation stack-based group" \
       --resource-query '{"Type":"CLOUDFORMATION_STACK_1_0","Query":"{\"StackIdentifier\":\"arn:aws:cloudformation:us-west-2:123456789012:stack\/AWStestuseraccount\/fb0d5000-aba8-00e8-aa9e-50d5cEXAMPLE\",\"ResourceTypeFilters\":[\"AWS::EC2::Instance\",\"AWS::S3::Bucket\"]}"}'
   ```

1. 명령을 실행하면 다음이 반환됩니다.
   + 생성한 그룹에 대한 설명
   + 그룹을 만들 때 사용한 리소스 쿼리

------