

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon SNS トピックのタグ付け
<a name="sns-tags"></a>

Amazon SNS では、Amazon SNS トピックのタグ付けがサポートされています。これにより、トピックに関連するコストを追跡および管理し、 AWS Identity and Access Management (IAM) ポリシーでセキュリティを強化し、数千のトピックを簡単に検索またはフィルタリングできます。タグ付けにより、 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 User Guide」](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html)の[「Setting Up a Monthly Cost Allocation Report」](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html#allocation-report)を参照してください。

たとえば、次のように Amazon SNS のトピックのコストセンターや目的を表すタグを追加することができます。



- **トピック 1**
  - **キー:** コストセンター / **値:** 43289
  - **キー:** アプリケーション / **値:** 注文処理

- **トピック 2**
  - **キー:** コストセンター / **値:** 43289
  - **キー:** アプリケーション / **値:** お支払い方法

- **トピック 3**
  - **キー:** コストセンター / **値:** 76585
  - **キー:** アプリケーション / **値:** アーカイブ



このタグ付けスキームでは、関連するタスクを実行している 2 つのトピックを同じコストセンターにグループ化する一方で、関連性のないアクティビティには別のコスト割り当てタグでタグ付けすることができます。

## アクセス制御のタグ付け
<a name="sns-tagging-for-access-control"></a>

AWS Identity and Access Management は、タグに基づくリソースへのアクセスの制御をサポートしています。リソースにタグ付け後、IAM ポリシーの条件要素でリソース タグに関する情報を提供し、タグベースのアクセスを管理します。[Amazon SNS console](sns-tags-configuring.md#list-add-update-remove-tags-for-topic-aws-console) (Amazon SNS コンソール) または [AWS SDK ](sns-tags-configuring.md#tag-resource-aws-sdks)を使用してリソースにタグ付けする方法については、[「Configuring tags」](sns-tags-configuring.md) (タグを設定する) を参照してください。

IAM アイデンティティのアクセスを制限できます。たとえば、キー `environment` および値 `production` のタグを含むすべてのAmazon SNS トピックへの `Publish` および `PublishBatch` のアクセスを制限し、他のすべての Amazon SNS トピックへのアクセスを許可することができます。次の例では、ポリシーにより、`production` でタグ付けされたトピックにメッセージを公開する機能が制限され、`development` でタグ付けされた トピックにメッセージを公開できるようになります。詳細については、IAM ユーザーガイドの [[Controlling Access Using Tags]](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());
    }
}
```