How to use Boto3 to remove tags from AWS Glue Resources

AWSBoto3PythonServer Side ProgrammingProgramming

In this article, we will see how to remove tags from AWS Glue Resources.

Example

Remove tags “glue-db: tests” in AWS glue database.

 Problem Statement: Use boto3 library in Python to remove tags in AWS Glue Resources.

Approach/Algorithm to solve this problem

  • Step 1: Import boto3 and botocore exceptions to handle exceptions.

  • Step 2: resource_arn and tags_list are the required parameters in this function.

The format of resource_arn should be as following −

Catalogarn:aws:glue:region:account-id:catalog
Databasearn:aws:glue:region:account-id:database/database name
Tablearn:aws:glue:region:account-id:table/database name/table name
Connectionarn:aws:glue:region:account-id:connection/connection name
Crawlerarn:aws:glue:region:account-id:crawler/crawler-name
Jobarn:aws:glue:region:account-id:job/job-name
Triggerarn:aws:glue:region:account-id:trigger/trigger-name
Development endpointarn:aws:glue:region:account-id:devEndpoint/development-endpoint-name
Machine learning transformarn:aws:glue:region:account-id:mlTransform/transform-id

tags_list should be as [“key1,key2…]

  • Step 3: Create an AWS session using boto3 lib. Make sure region_name is mentioned in the default profile. If it is not mentioned, then explicitly pass the region_name while creating the session.

  • Step 4: Create an AWS client for glue.

  • Step 5: Now use the untag_resource function and pass the parameter resource_arn as ResourceArn and tags_list as TagsToRemove.

  • Step 6: It returns the response metadata and removes tags in the resources.

  • Step 7: Handle the generic exception if something went wrong while removing tags.

Example Code

Use the following code to remove tags −

import boto3
from botocore.exceptions import ClientError

def remove_tags_in_resource(resource_arn, tags_list)
   session = boto3.session.Session()
   glue_client = session.client('glue')
   try:
      response = glue_client.untag_resource(ResourceArn= resource_arn,TagsToRemove=tags_list)
      return response
   except ClientError as e:
      raise Exception("boto3 client error in remove_tags_in_resource: " + e.__str__())
   except Exception as e:
      raise Exception("Unexpected error in remove_tags_in_resource: " + e.__str__())
tags_dict = ["glue-db"]
print(remove_tags_in_resource("arn:aws:glue:us-east-1:1122225*****88:database/test- db",tags_list))

Output

{'ResponseMetadata': {'RequestId': 'c9f418b0-***************-fb96', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Fri, 02 Apr 2021 08:04:54 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '27', 'connection': 'keep-alive', 'x-amzn-requestid': 'c9f418b0-******************-fb96'}, 'RetryAttempts': 0}}
raja
Published on 15-Apr-2021 16:36:27
Advertisements