

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Marcação de tópicos do Amazon SNS
<a name="sns-tags"></a>

O Amazon SNS oferece suporte à marcação de tópicos do Amazon SNS. Isso pode ajudá-lo a monitorar e gerenciar os custos associados aos seus tópicos, fornecer segurança aprimorada em suas políticas de AWS Identity and Access Management (IAM) e permitir que você pesquise ou filtre facilmente milhares de tópicos. A marcação permite que você gerencie seus tópicos do Amazon SNS usando Resource AWS Groups. Para obter mais informações sobre o Resource Groups, consulte o [Guia do usuário do AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html).

## Marcação para alocação de custos
<a name="tagging-for-cost-allocation"></a>

Para organizar e identificar seus tópicos do Amazon SNS para alocação de custos, você pode adicionar etiquetas que identificam o objetivo de um tópico. Isso é especialmente útil quando você tem vários tópicos. Você pode usar etiquetas de alocação de custos para organizar sua AWS fatura de forma a refletir sua própria estrutura de custos. Para fazer isso, inscreva-se para receber a fatura AWS da sua conta e incluir as chaves e valores da tag. Para obter mais informações, consulte [Configurar um relatório de alocação de custos mensal](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html#allocation-report), no [Guia do usuário do AWS Billing and Cost Management](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-what-is.html).

Por exemplo, é possível adicionar etiquetas que representam o centro de custos e o objetivo dos seus tópicos do Amazon SNS, da seguinte maneira.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sns/latest/dg/sns-tags.html)

Esse esquema de marcação permite que você agrupe dois tópicos executando tarefas relacionadas no mesmo centro de custos e, ao mesmo tempo, marcar uma atividade não relacionada com outra etiqueta de alocação de custos.

## Marcação para controle de acesso
<a name="sns-tagging-for-access-control"></a>

AWS Identity and Access Management suporta o controle do acesso a recursos com base em tags. Após a marcação dos seus recursos, forneça informações sobre as etiquetas de recurso no elemento de condição de uma política do IAM para gerenciar o acesso baseado em etiquetas. Para obter informações sobre como marcar seus recursos usando o [console do Amazon SNS](sns-tags-configuring.md#list-add-update-remove-tags-for-topic-aws-console) ou o [AWS SDK](sns-tags-configuring.md#tag-resource-aws-sdks), consulte [Configurar etiquetas](sns-tags-configuring.md).

É possível restringir o acesso de uma identidade do IAM. Por exemplo, você pode restringir o acesso de `Publish` e `PublishBatch` a todos os tópicos do Amazon SNS que incluem uma etiqueta com a chave `environment` e o valor `production`, enquanto permite acesso a todos os outros tópicos do Amazon SNS. No exemplo abaixo, a política restringe a capacidade de publicar mensagens em tópicos marcados com`production`, enquanto permite que mensagens sejam publicadas em tópicos marcados com `development`. Para obter mais informações, consulte [Controlar o acesso usando etiquetas](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html), no Guia do usuário do IAM.

**nota**  
Configurar a permissão do IAM para `Publish` define a permissão para `Publish` e `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"
      }
    }
  }]
}
```

------

## Marcação para pesquisa e filtragem de recursos
<a name="sns-tagging-for-searching-filtering"></a>

Uma AWS conta pode ter dezenas de milhares de tópicos do Amazon SNS (consulte Cotas do [Amazon SNS](https://docs.aws.amazon.com/general/latest/gr/sns.html) para obter detalhes). Por meio da marcação de tópicos, é possível simplificar o processo de pesquisa ou filtragem de tópicos.

Por exemplo, você pode ter centenas de tópicos que estão associados ao seu ambiente de produção. Em vez de ter que pesquisar manualmente esses tópicos, você pode consultar todos eles com uma determinada etiqueta:

```
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());
    }
}
```

# Configurar etiquetas de tópicos do Amazon SNS
<a name="sns-tags-configuring"></a>

Este tópico explica como configurar tags para um [tópico do Amazon SNS](sns-tags.md) usando o Console de gerenciamento da AWS, um AWS SDK ou o. AWS CLI

**Importante**  
Não adicione informações de identificação pessoal (PII) nem outras informações confidenciais ou sigilosas em tags. As etiquetas são acessíveis a outros Amazon Web Services, incluindo o faturamento. As tags não devem ser usadas para dados sensíveis ou privados.

## Listar, adicionar e remover tags para um tópico do Amazon SNS usando o Console de gerenciamento da AWS
<a name="list-add-update-remove-tags-for-topic-aws-console"></a>

1. Faça login no [console do Amazon SNS](https://console.aws.amazon.com/sns/home).

1. No painel de navegação, escolha **Tópicos**.

1. Na página **Topics (Tópicos)**, escolha um tópico e selecione **Edit (Editar)**.

1. Expanda a seção **Tags**.

   As tags adicionadas ao tópico serão listadas.

1. Modifique as tags do tópico:
   + Para adicionar uma etiqueta, escolha **Add tag** (Adicionar etiqueta) e insira uma **Key** (Chave) e um **Value** (Valor) (opcional).
   + Para remover uma tag, escolha **Remove tag (Remover tag)** ao lado de um par chave/valor.

1. Escolha **Salvar alterações**.

## Adicionar tags a um tópico usando um AWS SDK
<a name="tag-resource-aws-sdks"></a>

Para usar um AWS SDK, você deve configurá-lo com suas credenciais. Para obter mais informações, consulte [Os arquivos compartilhados de configuração e credenciais no Guia](https://docs.aws.amazon.com/sdkref/latest/guide/creds-config-files.html) de *referência de ferramentas AWS SDKs e ferramentas*.

Os exemplos de código a seguir mostram como usar o `TagResource`.

------
#### [ CLI ]

**AWS CLI**  
**Para adicionar uma tag a um tópico**  
O exemplo `tag-resource` a seguir adiciona uma tag de metadados ao tópico do Amazon SNS especificado.  

```
aws sns tag-resource \
    --resource-arn arn:aws:sns:us-west-2:123456789012:MyTopic \
    --tags Key=Team,Value=Alpha
```
Este comando não produz saída.  
+  Para obter detalhes da API, consulte [TagResource](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/tag-resource.html)em *Referência de AWS CLI Comandos*. 

------
#### [ Java ]

**SDK para Java 2.x**  
 Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/sns#code-examples). 

```
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sns.SnsClient;
import software.amazon.awssdk.services.sns.model.SnsException;
import software.amazon.awssdk.services.sns.model.Tag;
import software.amazon.awssdk.services.sns.model.TagResourceRequest;
import java.util.ArrayList;
import java.util.List;

/**
 * Before running this Java V2 code example, set up your development
 * environment, including your credentials.
 *
 * For more information, see the following documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class AddTags {
    public static void main(String[] args) {
        final String usage = """

                Usage:    <topicArn>

                Where:
                   topicArn - The ARN of the topic to which tags are added.

                """;

        if (args.length != 1) {
            System.out.println(usage);
            System.exit(1);
        }

        String topicArn = args[0];
        SnsClient snsClient = SnsClient.builder()
                .region(Region.US_EAST_1)
                .build();

        addTopicTags(snsClient, topicArn);
        snsClient.close();
    }

    public static void addTopicTags(SnsClient snsClient, String topicArn) {
        try {
            Tag tag = Tag.builder()
                    .key("Team")
                    .value("Development")
                    .build();

            Tag tag2 = Tag.builder()
                    .key("Environment")
                    .value("Gamma")
                    .build();

            List<Tag> tagList = new ArrayList<>();
            tagList.add(tag);
            tagList.add(tag2);

            TagResourceRequest tagResourceRequest = TagResourceRequest.builder()
                    .resourceArn(topicArn)
                    .tags(tagList)
                    .build();

            snsClient.tagResource(tagResourceRequest);
            System.out.println("Tags have been added to " + topicArn);

        } catch (SnsException e) {
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
}
```
+  Para obter detalhes da API, consulte [TagResource](https://docs.aws.amazon.com/goto/SdkForJavaV2/sns-2010-03-31/TagResource)a *Referência AWS SDK for Java 2.x da API*. 

------
#### [ Kotlin ]

**SDK para Kotlin**  
 Tem mais sobre GitHub. Encontre o exemplo completo e saiba como configurar e executar no [AWS Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/kotlin/services/sns#code-examples). 

```
suspend fun addTopicTags(topicArn: String) {
    val tag =
        Tag {
            key = "Team"
            value = "Development"
        }

    val tag2 =
        Tag {
            key = "Environment"
            value = "Gamma"
        }

    val tagList = mutableListOf<Tag>()
    tagList.add(tag)
    tagList.add(tag2)

    val request =
        TagResourceRequest {
            resourceArn = topicArn
            tags = tagList
        }

    SnsClient.fromEnvironment { region = "us-east-1" }.use { snsClient ->
        snsClient.tagResource(request)
        println("Tags have been added to $topicArn")
    }
}
```
+  Para obter detalhes da API, consulte a [TagResource](https://sdk.amazonaws.com/kotlin/api/latest/index.html)referência da API *AWS SDK for Kotlin*. 

------

## Gerenciar etiquetas com ações de API do Amazon SNS
<a name="manage-tags-with-sns-api-actions"></a>

Para gerenciar etiquetas usando a API do Amazon SNS, use as seguintes ações de API:
+ [https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html](https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html](https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html](https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html)

## Ações de API com suporte para o ABAC
<a name="api-actions-that-support-abac"></a>

A lista a seguir inclui as ações de API que oferecem suporte ao controle de acesso baseado em atributos (ABAC). Para obter mais detalhes sobre o ABAC, consulte Para [que serve o ABAC](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction_attribute-based-access-control.html)? AWS no *Guia do usuário do IAM*.
+ [https://docs.aws.amazon.com/sns/latest/api/API_AddPermission.html](https://docs.aws.amazon.com/sns/latest/api/API_AddPermission.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html](https://docs.aws.amazon.com/sns/latest/api/API_ConfirmSubscription.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html](https://docs.aws.amazon.com/sns/latest/api/API_DeleteTopic.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_GetDataProtectionPolicy.html](https://docs.aws.amazon.com/sns/latest/api/API_GetDataProtectionPolicy.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_GetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_GetSubscriptionAttributes.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_GetTopicAttributes.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptionsByTopic.html](https://docs.aws.amazon.com/sns/latest/api/API_ListSubscriptionsByTopic.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html](https://docs.aws.amazon.com/sns/latest/api/API_ListTagsForResource.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_Publish.html](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_PublishBatch.html](https://docs.aws.amazon.com/sns/latest/api/API_PublishBatch.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_PutDataProtectionPolicy.html](https://docs.aws.amazon.com/sns/latest/api/API_PutDataProtectionPolicy.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_RemovePermission.html](https://docs.aws.amazon.com/sns/latest/api/API_RemovePermission.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetSubscriptionAttributes.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html](https://docs.aws.amazon.com/sns/latest/api/API_SetTopicAttributes.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Subscribe.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html](https://docs.aws.amazon.com/sns/latest/api/API_TagResource.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html](https://docs.aws.amazon.com/sns/latest/api/API_Unsubscribe.html)
+ [https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html](https://docs.aws.amazon.com/sns/latest/api/API_UntagResource.html)