in aws_emr_launch/lambda_sources/emr_utilities/update_cluster_tags/lambda_source.py [0:0]
def handler(event: Dict[str, Any], context: Optional[Dict[str, Any]]) -> Any:
logger.info(f"Lambda metadata: {json.dumps(event)} (type = {type(event)})")
new_tags = event.get("ExecutionInput", {}).get("Tags", [])
cluster_config = event.get("Input", {})
current_tags = cluster_config.get("Tags", [])
try:
new_tags_dict = {tag["Key"]: tag["Value"] for tag in new_tags}
current_tags_dict = {tag["Key"]: tag["Value"] for tag in current_tags}
merged_tags_dict = dict(current_tags_dict, **new_tags_dict)
merged_tags = [{"Key": k, "Value": v} for k, v in merged_tags_dict.items()]
cluster_config["Tags"] = merged_tags
return cluster_config
except Exception as e:
logger.error(f"Error processing event {json.dumps(event)}")
logger.exception(e)
raise e