

# Athena 리소스 태깅
<a name="tags"></a>

각 태그는 사용자가 정의하는 키와 값으로 구성됩니다. Athena 리소스에 태그를 지정할 때 사용자 지정 메타데이터를 할당합니다. 태그를 사용하여 AWS 리소스를 용도, 소유자, 환경 등으로 다양하게 분류할 수 있습니다. Athena에서 작업 그룹, 데이터 카탈로그 및 용량 예약과 같은 리소스에 태그를 지정할 수 있습니다. 예를 들어, 계정의 작업 그룹에 대해 작업 그룹 소유자를 추적하거나 해당 용도별로 작업 그룹을 식별할 수 있는 태그를 설정할 수 있습니다. Billing and Cost Management 콘솔에서 비용 할당 태그로 태그를 활성화하면 쿼리 실행과 관련된 비용이 해당 비용 할당 태그와 함께 Cost and Usage Report에 나타납니다. AWS [태그 지정 모범 사례](https://docs.aws.amazon.com/whitepapers/latest/tagging-best-practices/tagging-best-practices.html)를 사용하여 각 조직의 요구 사항에 맞게 일관된 태그 세트를 생성하는 것이 좋습니다.

Athena 콘솔이나 API 작업을 사용하여 태그 작업을 수행할 수 있습니다.

**Topics**
+ [태그 기본 사항](#tag-basics)
+ [태그 제한 사항](#tag-restrictions)
+ [작업 그룹에 대한 태그 작업](tags-console.md)
+ [API 및 AWS CLI 태그 작업 사용](tags-operations.md)
+ [태그 기반 IAM 액세스 제어 정책 사용](tags-access-control.md)

## 태그 기본 사항
<a name="tag-basics"></a>

태그는 Athena 리소스에 할당하는 레이블입니다. 각 태그는 사용자가 정의하는 키와 선택적 값으로 구성됩니다.

태그를 사용하면 다양한 방식으로 AWS 리소스를 분류할 수 있습니다. 예를 들어 계정의 작업 그룹에 대해 각 작업 그룹 소유자나 용도를 추적할 수 있는 태그를 정의할 수 있습니다.

새로운 Athena 작업 그룹 또는 데이터 카탈로그를 생성할 때 태그를 추가할 수 있으며, 해당 작업 그룹 또는 데이터 카탈로그에서 태그를 추가, 편집 또는 제거할 수 있습니다. 태그는 콘솔에서 편집할 수 있습니다. API 작업을 사용하여 태그를 편집하려면 기존 태그를 제거하고 새 태그를 추가합니다. 리소스를 삭제하면 리소스 태그도 삭제됩니다.

Athena는 리소스에 태그를 자동으로 할당하지 않습니다. 태그 키와 값을 편집할 수 있으며 언제든지 리소스에서 태그를 제거할 수 있습니다. 태그의 값을 빈 문자열로 설정할 수 있지만 태그의 값을 Null로 설정할 수는 없습니다. 중복된 태그 키를 동일한 리소스에 추가하지 마세요. 이렇게 할 경우 Athena에서 오류 메시지가 표시됩니다. 기존 태그 키를 사용하여 리소스에 태그를 지정하는 데 **TagResource** 작업을 사용하는 경우 새 태그 값이 기존 값을 덮어씁니다.

IAM에서는 Amazon Web Services 계정에서 태그를 생성, 편집, 제거하거나 태그 목록을 조회할 수 있는 권한을 가진 사용자를 제어할 수 있습니다. 자세한 내용은 [태그 기반 IAM 액세스 제어 정책 사용](tags-access-control.md) 단원을 참조하세요.

Amazon Athena 태그 작업의 전체 목록은 [Amazon Athena API 참조](https://docs.aws.amazon.com/athena/latest/APIReference/)의 API 작업 이름을 참조하세요.

청구에 태그를 사용할 수 있습니다. 자세한 내용은 *AWS 결제 및 비용 관리 사용 설명서*의 [결제 목적으로 태그 사용](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/custom-tags.html)을 참조하세요.

자세한 내용은 [태그 제한 사항](#tag-restrictions) 단원을 참조하세요.

## 태그 제한 사항
<a name="tag-restrictions"></a>

태그에는 다음 제한 사항이 있습니다.
+ Athena에서는 작업 그룹, 데이터 카탈로그 및 용량 예약에 태그를 지정할 수 있습니다. 쿼리에는 태그를 지정할 수 없습니다.
+ 리소스당 최대 태그 수는 50개입니다. 한도를 유지하려면 사용하지 않는 태그를 검토하여 삭제하세요.
+ 각 리소스에 대해 각 태그 키는 고유하며 하나의 값만 가질 수 있습니다. 동일한 리소스에 중복된 태그 키를 동시에 추가하지 마세요. 이렇게 할 경우 Athena에서 오류 메시지가 표시됩니다. 개별 `TagResource` 작업의 기존 태그 키를 사용하여 리소스에 태그를 지정할 경우 새 태그 값이 기존 값을 덮어씁니다.
+ 태그 키 길이는 UTF-8 형식의 1-128자의 유니코드 문자입니다.
+ 태그 값 길이는 UTF-8 형식의 0-256자의 유니코드 문자입니다.

  태그 추가, 편집, 제거, 목록 조회 등과 같은 태그 지정 작업을 하려면 작업 그룹 리소스의 ARN을 지정해야 합니다.
+ Athena에서는 UTF-8 형식의 문자, 숫자, 공백 및 \$1 - = . \$1 : / @ 문자를 사용할 수 있습니다.
+ 태그 키와 값은 대/소문자를 구분합니다.
+ 태그 키의 `"aws:"` 접두사는 AWS용으로 예약되어 있습니다. 이 접두사가 지정된 태그 키는 편집하거나 삭제할 수 없습니다. 이 접두사가 지정된 태그는 리소스당 태그 수 제한에 포함되지 않습니다.
+ 할당한 태그는 해당 Amazon Web Services 계정에서만 사용할 수 있습니다.

# 작업 그룹에 대한 태그 작업
<a name="tags-console"></a>

Athena 콘솔을 사용하여 해당 계정의 각 작업 그룹에서 사용 중인 태그를 볼 수 있습니다. 작업 그룹별로만 태그를 볼 수 있습니다. 또한 Athena 콘솔을 사용하여 한 번에 하나의 작업 그룹에서 태그를 적용, 편집, 제거할 수 있습니다.

작성한 태그를 사용하여 작업 그룹을 검색할 수 있습니다.

**Topics**
+ [개별 작업 그룹에 대한 태그 표시](#tags-display)
+ [개별 작업 그룹에 대한 태그 추가 및 삭제](#tags-add-delete)

## 개별 작업 그룹에 대한 태그 표시
<a name="tags-display"></a>

**Athena 콘솔에서 개별 작업 그룹의 태그 표시**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 콘솔 탐색 창이 표시되지 않으면 왼쪽의 확장 메뉴를 선택합니다.  
![\[확장 메뉴를 선택합니다.\]](http://docs.aws.amazon.com/ko_kr/athena/latest/ug/images/nav-pane-expansion.png)

1. 탐색 메뉴에서 **작업 그룹(Workgroups)**을 선택한 다음 원하는 작업 그룹을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + **태그** 탭을 선택합니다. 태그 목록이 긴 경우 검색 상자를 사용합니다.
   + **편집(Edit)**을 선택하고 **태그(Tags)** 섹션까지 아래로 스크롤합니다.

## 개별 작업 그룹에 대한 태그 추가 및 삭제
<a name="tags-add-delete"></a>

**작업 그룹** 탭에서 개별 작업 그룹에 대한 태그를 직접 관리할 수 있습니다.

**참고**  
사용자가 콘솔에서 작업 그룹을 생성할 때 태그를 추가하도록 하거나 **CreateWorkGroup** 작업을 사용할 때 태그를 전달하도록 하려면 **TagResource** 및 **CreateWorkGroup** 작업에 대한 IAM 권한을 해당 사용자에게 부여해야 합니다.

**작업 그룹을 새로 생성할 때 태그 추가**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 탐색 메뉴에서 **작업 그룹(Workgroups)**을 클릭합니다.

1. **작업 그룹 생성(Create workgroup)**을 선택하고 필요에 따라 값을 입력합니다. 자세한 단계는 [작업 그룹 만들기](creating-workgroups.md) 섹션을 참조하세요.

1. **태그(Tags)** 섹션에서 키와 값을 지정하여 태그를 하나 이상 추가합니다. 동일한 작업 그룹에 중복된 태그 키를 동시에 추가하지 마세요. 이렇게 할 경우 Athena에서 오류 메시지가 표시됩니다. 자세한 내용은 [태그 제한 사항](tags.md#tag-restrictions) 단원을 참조하세요.

1. 완료했으면 **작업 그룹 생성(Create workgroup)**을 선택합니다.

**기존 작업 그룹에 대해 태그를 추가하거나 편집하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. 수정할 작업 그룹을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + **태그**(Tags) 탭을 선택한 후 **태그 관리**(Manage tags)를 선택합니다.
   + **편집(Edit)**을 선택하고 **태그(Tags)** 섹션까지 아래로 스크롤합니다.

1. 각 태그에 대한 키 및 값을 지정합니다. 자세한 내용은 [태그 제한 사항](tags.md#tag-restrictions) 섹션을 참조하세요.

1. **저장**을 선택합니다.

**개별 작업 그룹에서 태그를 삭제하려면**

1. [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/home)에서 Athena 콘솔을 엽니다.

1. 탐색 창에서 **작업 그룹(Workgroups)**을 선택합니다.

1. 수정할 작업 그룹을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + **태그**(Tags) 탭을 선택한 후 **태그 관리**(Manage tags)를 선택합니다.
   + **편집(Edit)**을 선택하고 **태그(Tags)** 섹션까지 아래로 스크롤합니다.

1. 태그 목록에서 삭제하려는 태그에 대해 **제거(Remove)**를 선택한 후 **저장(Save)**을 선택합니다.

# API 및 AWS CLI 태그 작업 사용
<a name="tags-operations"></a>

다음 태그 작업을 사용하여 리소스에서 태그를 추가, 제거 또는 나열할 수 있습니다.


****  

| API | CLI | 작업 설명 | 
| --- | --- | --- | 
| TagResource | tag-resource | 지정된 ARN이 있는 리소스에 태그를 한 개 이상 추가하거나 덮어씁니다. | 
| UntagResource | untag-resource | 지정된 ARN이 있는 리소스에서 태그를 한 개 이상 삭제합니다. | 
| ListTagsForResource | list‑tags‑for‑resource | 지정된 ARN이 있는 리소스의 태그를 한 개 이상 나열합니다. | 

**리소스를 생성할 때 태그 추가**  
작업 그룹 또는 데이터 카탈로그를 생성할 때 태그를 추가하려면 `CreateWorkGroup` 또는 `CreateDataCatalog` API 작업이나 AWS CLI `create-work-group` 또는 `create-data-catalog` 명령과 함께 `tags` 파라미터를 사용합니다.

## API 작업을 사용하여 태그 관리
<a name="tags-operations-examples-java"></a>

이 섹션의 예제에서는 태그 API 작업을 사용하여 작업 그룹 및 데이터 카탈로그의 태그를 관리하는 방법을 보여줍니다. 예제는 Java 프로그래밍 언어로 작성되어 있습니다.

### 예 - TagResource
<a name="tags-operations-examples-java-tag-resource"></a>

다음 예제에서는 작업 그룹 `workgroupA`에 두 개의 태그를 추가합니다.

```
List<Tag> tags = new ArrayList<>();
tags.add(new Tag().withKey("tagKey1").withValue("tagValue1"));
tags.add(new Tag().withKey("tagKey2").withValue("tagValue2"));

TagResourceRequest request = new TagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA")
    .withTags(tags);

client.tagResource(request);
```

다음 예제에서는 데이터 카탈로그 `datacatalogA`에 두 개의 태그를 추가합니다.

```
List<Tag> tags = new ArrayList<>();
tags.add(new Tag().withKey("tagKey1").withValue("tagValue1"));
tags.add(new Tag().withKey("tagKey2").withValue("tagValue2"));

TagResourceRequest request = new TagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA")
    .withTags(tags);

client.tagResource(request);
```

**참고**  
중복된 태그 키를 동일한 리소스에 추가하지 마세요. 이렇게 할 경우 Athena에서 오류 메시지가 표시됩니다. 개별 `TagResource` 작업의 기존 태그 키를 사용하여 리소스에 태그를 지정할 경우 새 태그 값이 기존 값을 덮어씁니다.

### 예 - UntagResource
<a name="tags-operations-examples-java-untag-resource"></a>

다음 예제에서는 작업 그룹 `workgroupA`에서 `tagKey2`를 제거합니다.

```
List<String> tagKeys = new ArrayList<>();
tagKeys.add("tagKey2");

UntagResourceRequest request = new UntagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA")
    .withTagKeys(tagKeys);

client.untagResource(request);
```

다음 예제에서는 데이터 카탈로그 `datacatalogA`에서 `tagKey2`를 제거합니다.

```
List<String> tagKeys = new ArrayList<>();
tagKeys.add("tagKey2");

UntagResourceRequest request = new UntagResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA")
    .withTagKeys(tagKeys);

client.untagResource(request);
```

### 예 - ListTagsForResource
<a name="tags-operations-examples-java-list-tags-for-resource"></a>

다음 예제에서는 작업 그룹 `workgroupA`에 대한 태그를 나열합니다.

```
ListTagsForResourceRequest request = new ListTagsForResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA");

ListTagsForResourceResult result = client.listTagsForResource(request);

List<Tag> resultTags = result.getTags();
```

다음 예제에서는 데이터 카탈로그 `datacatalogA`에 대한 태그를 나열합니다.

```
ListTagsForResourceRequest request = new ListTagsForResourceRequest()
    .withResourceARN("arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA");

ListTagsForResourceResult result = client.listTagsForResource(request);

List<Tag> resultTags = result.getTags();
```

## AWS CLI를 사용하여 태그 관리
<a name="tags-operations-examples-cli"></a>

다음 예제는 AWS CLI를 사용하여 데이터 카탈로그에서 태그를 생성하고 관리하는 방법을 보여줍니다.

### 리소스에 태그 추가: tag-resource
<a name="tags-operations-examples-cli-tag-resource"></a>

`tag-resource` 명령은 지정된 리소스에 태그를 한 개 이상 추가합니다.

**구문**  
`aws athena tag-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name --tags Key=string,Value=string Key=string,Value=string`

`--resource-arn` 파라미터는 태그가 추가되는 리소스를 지정합니다. `--tags` 파라미터는 리소스에 태그로 추가할 공백으로 구분된 키-값 페어의 목록을 지정합니다.

**Example**  
다음 예제에서는 데이터 카탈로그 `mydatacatalog`에 태그를 추가합니다.  

```
aws athena tag-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog --tags Key=Color,Value=Orange Key=Time,Value=Now
```
결과를 표시하려면 `list-tags-for-resource` 명령을 사용합니다.  
`create-data-catalog` 명령 사용 시 태그 추가에 대한 자세한 내용은 [카탈로그 등록: Create-data-catalog](datastores-hive-cli.md#datastores-hive-cli-registering-a-catalog) 단원을 참조하세요.

### 리소스에 대한 태그 나열: list-tags-for-resource
<a name="tags-operations-examples-cli-list-tags-for-resource"></a>

`list-tags-for-resource` 명령은 지정된 리소스에 대한 태그를 나열합니다.

**구문**  
`aws athena list-tags-for-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name`

`--resource-arn` 파라미터는 태그를 나열하기 위한 리소스를 지정합니다.

다음 예제에서는 데이터 카탈로그 `mydatacatalog`에 대한 태그를 나열합니다.

```
aws athena list-tags-for-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog
```

다음 샘플 결과는 JSON 형식입니다.

```
{
    "Tags": [
        {
            "Key": "Time",
            "Value": "Now"
        },
        {
            "Key": "Color",
            "Value": "Orange"
        }
    ]
}
```

### 리소스에서 태그 제거: untag-resource
<a name="tags-operations-examples-cli-untag-resource"></a>

`untag-resource` 명령은 지정된 리소스에서 지정된 태그 키 및 관련된 값을 제거합니다.

**구문**  
`aws athena untag-resource --resource-arn arn:aws:athena:region:account_id:datacatalog/catalog_name --tag-keys key_name [key_name ...]` 

`--resource-arn` 파라미터는 태그를 제거하기 위한 리소스를 지정합니다. `--tag-keys` 파라미터는 공백으로 구분된 키 이름 목록을 사용합니다. `untag-resource` 명령은 지정된 각 키 이름에서 키 및 해당 값을 모두 제거합니다.

다음 예제에서는 `Color` 및 `Time` 키와 해당 값을 `mydatacatalog` 카탈로그 리소스에서 제거합니다.

```
aws athena untag-resource --resource-arn arn:aws:athena:us-east-1:111122223333:datacatalog/mydatacatalog --tag-keys Color Time
```

# 태그 기반 IAM 액세스 제어 정책 사용
<a name="tags-access-control"></a>

태그를 사용하면 `Condition` 블록이 포함된 IAM 정책을 작성하여 태그를 기반으로 리소스에 대한 액세스를 제어할 수 있습니다. 이 섹션에는 작업 그룹 및 데이터 카탈로그 리소스에 대한 태그 정책 예제가 포함되어 있습니다.

## 작업 그룹에 대한 태그 정책 예제
<a name="tag-policy-examples-workgroups"></a>

### 예 - 기본 태깅 정책
<a name="tag-policy-examples-workgroups-basic"></a>

다음 IAM 정책은 `workgroupA`라는 작업 그룹에 대해 쿼리를 실행하고 태그 작업을 할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
       {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/workgroupA"
        }
    ]
}
```

------

### 예 - 태그 키와 태그 값 페어를 기반으로 작업 그룹에서 작업을 거부하는 정책 블록
<a name="tag-policy-examples-workgroups-basic"></a>

작업 그룹과 같은 리소스에 연결된 태그를 리소스 태그라고 합니다. 리소스 태그를 사용하면 키-값 페어(예: `stack`, `production`)로 태그가 지정된 작업 그룹에 대해 명시된 작업을 거부하는 다음과 같은 정책 블록을 작성할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:GetWorkGroup",
                "athena:UpdateWorkGroup",
                "athena:DeleteWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery",
                "athena:CreatePreparedStatement",
                "athena:GetPreparedStatement",
                "athena:ListPreparedStatements",
                "athena:UpdatePreparedStatement",
                "athena:DeletePreparedStatement"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stack": "production"
                }
            }
        }
    ]
}
```

------

### 예 - 지정된 태그에 대한 태그 변경 작업 요청을 제한하는 정책 블록
<a name="tag-policy-examples-workgroups-restricted-specific"></a>

태그를 변경하는 작업에 파라미터로 전달되는 태그(예: 태그가 있는 `TagResource`, `UntagResource`, 또는 `CreateWorkGroup`)를 요청 태그라고 합니다. 다음 예제 정책 블록에서는 전달된 태그 중 하나에 `costcenter` 키와 `1`, `2` 또는 `3` 값이 있는 경우에만 `CreateWorkGroup` 작업을 허용합니다.

**참고**  
IAM 역할이 `CreateWorkGroup` 작업의 일환으로 태그를 전달할 수 있도록 하려면 `TagResource` 및 `CreateWorkGroup` 작업에 대한 권한을 해당 역할에 부여해야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateWorkGroup",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/costcenter": [
                        "1",
                        "2",
                        "3"
                    ]
                }
            }
        }
    ]
}
```

------

## 데이터 카탈로그에 대한 태그 정책 예제
<a name="tag-policy-examples-data-catalogs"></a>

### 예 - 기본 태깅 정책
<a name="tag-policy-examples-data-catalogs-basic"></a>

다음 IAM 정책을 사용하면 `datacatalogA`라는 데이터 카탈로그에 대한 태그와 상호 작용할 수 있습니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:ListWorkGroups",
                "athena:ListEngineVersions",
                "athena:ListDataCatalogs",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:GetWorkGroup",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource",
                "athena:StartQueryExecution",
                "athena:GetQueryExecution",
                "athena:BatchGetQueryExecution",
                "athena:ListQueryExecutions",
                "athena:StopQueryExecution",
                "athena:GetQueryResults",
                "athena:GetQueryResultsStream",
                "athena:CreateNamedQuery",
                "athena:GetNamedQuery",
                "athena:BatchGetNamedQuery",
                "athena:ListNamedQueries",
                "athena:DeleteNamedQuery"
            ],
            "Resource": [
                "arn:aws:athena:us-east-1:123456789012:workgroup/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:ListDatabases",
                "athena:GetDatabase",
                "athena:ListTableMetadata",
                "athena:GetTableMetadata",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/datacatalogA"
        }
    ]
}
```

------

### 예 - 태그 키와 태그 값 페어를 기반으로 데이터 카탈로그에서 작업을 거부하는 정책 블록
<a name="tag-policy-examples-data-catalogs-deny-actions"></a>

리소스 태그를 사용하여 특정 태그 키-값 페이로 태그가 지정된 데이터 카탈로그에서 특정 작업을 거부하는 정책 블록을 작성할 수 있습니다. 다음 예제 정책은 태그 키-값 페어(`stack`, `production`)가 있는 데이터 카탈로그에 대한 작업을 거부합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:GetDataCatalog",
                "athena:UpdateDataCatalog",
                "athena:DeleteDataCatalog",
                "athena:GetDatabase",
                "athena:ListDatabases",
                "athena:GetTableMetadata",
                "athena:ListTableMetadata",
                "athena:StartQueryExecution",
                "athena:TagResource",
                "athena:UntagResource",
                "athena:ListTagsForResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/stack": "production"
                }
            }
        }
    ]
}
```

------

### 예 - 지정된 태그에 대한 태그 변경 작업 요청을 제한하는 정책 블록
<a name="tag-policy-examples-data-catalogs-action-specific-tags"></a>

태그를 변경하는 작업에 파라미터로 전달되는 태그(예: 태그가 있는 `TagResource`, `UntagResource`, 또는 `CreateDataCatalog`)를 요청 태그라고 합니다. 다음 예제 정책 블록에서는 전달된 태그 중 하나에 `costcenter` 키와 `1`, `2` 또는 `3` 값이 있는 경우에만 `CreateDataCatalog` 작업을 허용합니다.

**참고**  
IAM 역할이 `CreateDataCatalog` 작업의 일환으로 태그를 전달할 수 있도록 하려면 `TagResource` 및 `CreateDataCatalog` 작업에 대한 권한을 해당 역할에 부여해야 합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "athena:CreateDataCatalog",
                "athena:TagResource"
            ],
            "Resource": "arn:aws:athena:us-east-1:123456789012:datacatalog/*",
            "Condition": {
                "StringEquals": {
                    "aws:RequestTag/costcenter": [
                        "1",
                        "2",
                        "3"
                    ]
                }
            }
        }
    ]
}
```

------