diff --git a/moto/logs/models.py b/moto/logs/models.py index 8e960651b..878040185 100644 --- a/moto/logs/models.py +++ b/moto/logs/models.py @@ -410,7 +410,9 @@ class LogGroup(CloudFormationModel): **kwargs: Any, ) -> "LogGroup": properties = cloudformation_json["Properties"] - tags = properties.get("Tags", {}) + tags = properties.get("Tags", []) + tags = dict([tag.values() for tag in tags]) + return logs_backends[account_id][region_name].create_log_group( resource_name, tags, **properties ) diff --git a/tests/test_logs/test_logs_cloudformation.py b/tests/test_logs/test_logs_cloudformation.py new file mode 100644 index 000000000..016581aff --- /dev/null +++ b/tests/test_logs/test_logs_cloudformation.py @@ -0,0 +1,31 @@ +import json + +import boto3 + +from moto import mock_cloudformation, mock_logs + + +@mock_logs +@mock_cloudformation +def test_tagging(): + logs_client = boto3.client("logs", region_name="us-east-1") + cf_client = boto3.client("cloudformation", region_name="us-east-1") + + template = { + "AWSTemplateFormatVersion": "2010-09-09", + "Resources": { + "testGroup": { + "Type": "AWS::Logs::LogGroup", + "Properties": {"Tags": [{"Key": "foo", "Value": "bar"}]}, + } + }, + } + template_json = json.dumps(template) + cf_client.create_stack( + StackName="test_stack", + TemplateBody=template_json, + ) + + arn = logs_client.describe_log_groups()["logGroups"][0]["arn"] + tags = logs_client.list_tags_for_resource(resourceArn=arn)["tags"] + assert tags == {"foo": "bar"}