

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

# Amazon SNS 주제 태그 지정
<a name="sns-tags"></a>

Amazon SNS는 Amazon SNS 주제에 대한 태그 지정을 지원합니다. 이를 통해 주제와 관련된 비용을 추적 및 관리하고, IAM( AWS Identity and Access Management) 정책에서 향상된 보안을 제공하고, 수천 개의 주제를 쉽게 검색하거나 필터링할 수 있습니다. 태그를 지정하면 AWS Resource Groups를 사용하여 Amazon SNS 주제를 관리할 수 있습니다. Resource Groups에 대한 자세한 내용은 [AWS Resource Groups 사용 설명서](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html)를 참조하세요.

## 비용 할당을 위한 태그 지정
<a name="tagging-for-cost-allocation"></a>

비용 할당을 위해 Amazon SNS 주제를 구성하고 식별하려면 주제의 목적을 식별하는 태그를 추가할 수 있습니다. 이 기능은 주제가 많을 때 특히 유용합니다. 비용 할당 태그를 사용하여 자체 비용 구조를 반영하도록 AWS 청구서를 구성할 수 있습니다. 이렇게 하려면 가입하여 태그 키와 값을 포함하는 AWS 계정 청구서를 받습니다. 자세한 내용은 [AWS Billing and Cost Management 사용 설명서](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)에서 [월별 비용 할당 보고서 설정](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html#allocation-report)을 참조하세요.

예를 들어 다음과 같이 Amazon SNS 주제의 비용 센터 및 목적을 나타내는 태그를 추가할 수 있습니다.



- **주제 1**
  - **Key(키):** 비용 센터 / **값:** 43289
  - **Key(키):** 애플리케이션 / **값:** 주문 처리

- **주제 2**
  - **Key(키):** 비용 센터 / **값:** 43289
  - **Key(키):** 애플리케이션 / **값:** 결제 처리

- **주제 3**
  - **Key(키):** 비용 센터 / **값:** 76585
  - **Key(키):** 애플리케이션 / **값:** 보관



이 태그 지정 체계에서는 동일한 비용 센터에서 관련된 작업을 수행하는 2개의 주제를 그룹화할 수 있고, 관련이 없는 활동은 다른 비용 할당 태그를 사용해 태그 지정할 수 있습니다.

## 액세스 제어용 태그 지정
<a name="sns-tagging-for-access-control"></a>

AWS Identity and Access Management 는 태그를 기반으로 리소스에 대한 액세스 제어를 지원합니다. 리소스에 태그를 지정한 후 태그 기반 액세스를 관리하기 위해 IAM 정책의 조건 요소에 리소스 태그에 대한 정보를 제공합니다. [Amazon SNS 콘솔](sns-tags-configuring.md#list-add-update-remove-tags-for-topic-aws-console) 또는 [AWS SDK](sns-tags-configuring.md#tag-resource-aws-sdks)를 사용하여 리소스에 태그를 지정하는 방법에 대한 자세한 내용은 [태그 구성](sns-tags-configuring.md)을 참조하세요.

IAM 자격 증명에 대한 액세스를 제한할 수 있습니다. 예를 들어 키가 `environment`이고 값이 `production`인 태그를 포함하는 모든 Amazon SNS 주제에 대한 `Publish` 및 `PublishBatch` 액세스는 제한하면서 다른 모든 Amazon SNS 주제에 대한 액세스는 허용할 수 있습니다. 아래 예에서 정책은 `production`으로 태그가 지정된 주제에 메시지를 게시하는 기능을 제한하면서 `development`로 태그가 지정된 주제에 메시지를 게시할 수 있도록 허용합니다. 자세한 내용은 IAM 사용 설명서의 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하세요.

**참고**  
`Publish`에 대한 IAM 권한을 설정하면 `Publish` 및 `PublishBatch` 모두에 대한 권한이 설정됩니다.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Deny",
    "Action": [
	"sns:Publish"
    ],
    "Resource": "arn:aws:sns:*:*:*",
    "Condition": {
      "StringEquals": {
        "aws:ResourceTag/environment": "production"
      }
    }
  },
  {
    "Effect": "Allow",
    "Action": [
      "sns:Publish"
    ],
    "Resource": "arn:aws:sns:*:*:*",
    "Condition": {
      "StringEquals": {
        "aws:ResourceTag/environment": "development"
      }
    }
  }]
}
```

------

## 리소스 검색 및 필터링을 위한 태그 지정
<a name="sns-tagging-for-searching-filtering"></a>

 AWS 계정에는 수만 개의 Amazon SNS 주제가 있을 수 있습니다(자세한 내용은 [Amazon SNS 할당량](https://docs.aws.amazon.com/general/latest/gr/sns.html) 참조). 주제에 태그를 지정하여 주제를 검색하거나 필터링하는 프로세스를 간소화할 수 있습니다.

예를 들어 프로덕션 환경과 관련된 수백 개의 주제가 있을 수 있습니다. 이러한 주제를 개별적으로 검색할 필요 없이 지정된 태그가 있는 모든 주제를 쿼리할 수 있습니다.

```
import com.amazonaws.services.resourcegroups.AWSResourceGroups;
import com.amazonaws.services.resourcegroups.AWSResourceGroupsClientBuilder;
import com.amazonaws.services.resourcegroups.model.QueryType;
import com.amazonaws.services.resourcegroups.model.ResourceQuery;
import com.amazonaws.services.resourcegroups.model.SearchResourcesRequest;
import com.amazonaws.services.resourcegroups.model.SearchResourcesResult;

public class Example {
    public static void main(String[] args) {
        // Query Amazon SNS Topics with tag "keyA" as "valueA"
        final String QUERY = "{\"ResourceTypeFilters\":[\"AWS::SNS::Topic\"],\"TagFilters\":[{\"Key\":\"keyA\", \"Values\":[\"valueA\"]}]}";

        // Initialize ResourceGroup client
        AWSResourceGroups awsResourceGroups = AWSResourceGroupsClientBuilder
            .standard()
            .build();

        // Query all resources with certain tags from ResourceGroups 
        SearchResourcesResult result = awsResourceGroups.searchResources(
            new SearchResourcesRequest().withResourceQuery(
                new ResourceQuery()
                .withType(QueryType.TAG_FILTERS_1_0)
                .withQuery(QUERY)
            ));
        System.out.println("SNS Topics with certain tags are " + result.getResourceIdentifiers());
    }
}
```