aws-cloudformation / cloudformation-coverage-roadmap

The AWS CloudFormation Public Coverage Roadmap
https://aws.amazon.com/cloudformation/
Creative Commons Attribution Share Alike 4.0 International
1.1k stars 53 forks source link

[AWS::DynamoDB::GlobalTable] - [BUG] - resources don't receive the aws:cloudformation built-in tags / default service-managed auto-tags #2066

Open rgoltz opened 3 weeks ago

rgoltz commented 3 weeks ago

Name of the resource

AWS::DynamoDB::GlobalTable

Resource Name

No response

Issue Description

To find the right CloudFormation Stack, where a AWS resource is defined/maintained aws:cloudformation:* built-in tags are needed. This is an important function in day-to-day business.

Expected Behavior

Resources with type AWS::DynamoDB::GlobalTable, which are managed as CloudFormations Stacks, should automatically receive the aws:cloudformation:* built-in tags / automatic default CFN AutoTags.

Furthermore those aws:cloudformation: built-in tags must be handled by CloudFormation Drift-Detection correctly (hence, aws:cloudformation: tags are not a drift)

Observed Behavior

When you have an AWS::DynamoDB::GlobalTable resource in your stack, it does not get the built-in tags assigned: aws:cloudformation:stack-name, aws:cloudformation:logical-id and aws:cloudformation:stack-id

Test Cases

Deploy a CloudFormation stack containing this resource named above (e.g. using the example stack below) and check the tags on the console. You can't see aws:cloudformation:* built-in tags.

---
AWSTemplateFormatVersion: '2010-09-09'
Description: CFN - create a new DynamoDB and check aws cloudformation tags

Parameters:
  DBTableName: 
    Type: String
    Default: CfnTestPrices
    Description: Should be the table name to test
  PrimaryRegion: 
    Type: String
    Default: us-east-1
    Description: Region Primary Table is located

Resources:
  CfnTestPrices:
    Type: AWS::DynamoDB::GlobalTable
    DeletionPolicy: Retain
    Properties:
      TableName: !Ref DBTableName
      BillingMode: "PROVISIONED"
      AttributeDefinitions:
      - AttributeName: priceId
        AttributeType: S
      - AttributeName: date
        AttributeType: S
      KeySchema:
      - AttributeName: priceId
        KeyType: HASH
      - AttributeName: date
        KeyType: RANGE
      StreamSpecification:
            StreamViewType: "KEYS_ONLY"
      WriteProvisionedThroughputSettings:
        WriteCapacityAutoScalingSettings:
          MaxCapacity: 20 
          MinCapacity: 10
          TargetTrackingScalingPolicyConfiguration: 
            TargetValue: 70.0
            ScaleInCooldown: 61
            ScaleOutCooldown: 61
            DisableScaleIn: false
      Replicas:
       - 
        Region: !Ref PrimaryRegion
        DeletionProtectionEnabled: true
        ReadProvisionedThroughputSettings:
          ReadCapacityAutoScalingSettings:
            MaxCapacity: 20
            MinCapacity: 10 
            TargetTrackingScalingPolicyConfiguration:
              ScaleInCooldown: 50
              ScaleOutCooldown: 50
              TargetValue: 70.0
              DisableScaleIn: false

I've re-tested it right now in eu-central-1 region. No tags aws:cloudformation:* are added to the resource. Below the screenshot of the deployed resource of DynamoDB:

image

Other Details

It's the same issue for AWS::DynamoDB::Table, please see #2065