# Resource Groups Tagging API

Source: /aws/services/resource-groups-tagging-api/

## Introduction

Resource Groups Tagging API helps you centrally manage tags across AWS resources.
You can apply and remove tags for multiple resources at once, and query resources by tag keys and values.
You can also query tagged resources by AWS service, by resource type within a service, or directly by specific resource ARNs.

LocalStack allows you to use the Resource Groups Tagging API in your local environment to test tagging workflows end-to-end.
The supported APIs are available on our [API Coverage section](#api-coverage), which provides information on the extent of Resource Groups Tagging API's integration with LocalStack.

## Getting started

This guide is designed for users new to Resource Groups Tagging API and assumes basic knowledge of the AWS CLI and our [`lstk aws`](/aws/developer-tools/running-localstack/lstk/cloud-and-iac-commands/#aws) command.

Start your LocalStack container using your preferred method.
We will demonstrate how to create resources, tag them, and query them using the Resource Groups Tagging API.

### Create resources to tag

Create an S3 bucket and an SQS queue:

```bash
BUCKET_NAME="rg-tagging-bucket"
QUEUE_NAME="rg-tagging-queue"

lstk aws s3api create-bucket --bucket "$BUCKET_NAME"
QUEUE_URL=$(lstk aws sqs create-queue --queue-name "$QUEUE_NAME" | jq -r '.QueueUrl')
```

Retrieve the resource ARNs:

```bash
BUCKET_ARN="arn:aws:s3:::$BUCKET_NAME"
QUEUE_ARN=$(lstk aws sqs get-queue-attributes \
  --queue-url "$QUEUE_URL" \
  --attribute-names QueueArn | jq -r '.Attributes.QueueArn')
```

### Tag multiple resources

Use the [`TagResources`](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_TagResources.html) API to apply tags:

```bash
lstk aws resourcegroupstaggingapi tag-resources \
  --resource-arn-list "$BUCKET_ARN" "$QUEUE_ARN" \
  --tags '{"Environment":"dev","Team":"platform"}'
```

### Query resources by tags

Use the [`GetResources`](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_GetResources.html) API to list resources with a specific tag:

```bash
lstk aws resourcegroupstaggingapi get-resources \
  --tag-filters Key=Environment,Values=dev
```

You can also inspect available keys and values:

```bash
lstk aws resourcegroupstaggingapi get-tag-keys
lstk aws resourcegroupstaggingapi get-tag-values --key Environment
```

### Remove tags from resources

Use the [`UntagResources`](https://docs.aws.amazon.com/resourcegroupstagging/latest/APIReference/API_UntagResources.html) API to remove one or more tag keys:

```bash
lstk aws resourcegroupstaggingapi untag-resources \
  --resource-arn-list "$BUCKET_ARN" "$QUEUE_ARN" \
  --tag-keys Team
```

## Supported services

LocalStack's Resource Groups Tagging API supports tagging for the following services:

- [AWS Key Management Service (KMS)](/aws/services/kms/)
- [Amazon S3](/aws/services/s3/)
- [AWS Lambda](/aws/services/lambda/)
- [Amazon Route 53](/aws/services/route53/)
- [Amazon SNS](/aws/services/sns/)
- [Amazon SQS](/aws/services/sqs/)
- [Amazon OpenSearch Service](/aws/services/opensearch/)
- [AWS Elastic Beanstalk](/aws/services/elasticbeanstalk/)
- [Amazon EC2](/aws/services/ec2/)

## API Coverage


### Resource Groups Tagging API API coverage

Source service: `resourcegroupstaggingapi`. 5 of 9 tracked operations are implemented.

Service documentation: /aws/services/resource-groups-tagging-api/

| Operation | Status |
| --- | --- |
| DescribeReportCreation | Not implemented |
| GetComplianceSummary | Not implemented |
| GetResources | Implemented |
| GetTagKeys | Implemented |
| GetTagValues | Implemented |
| ListRequiredTags | Not implemented |
| StartReportCreation | Not implemented |
| TagResources | Implemented |
| UntagResources | Implemented |
