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

Cannot create AWS::DMS::DataProvider with postgresql engine #1910

Closed cmogeni closed 4 months ago

cmogeni commented 6 months ago

Name of the resource

Other

Resource Name

AWS::DMS::DataProvider

Issue Description

Unable to create a DMS data provider with the postgresql engine. Attempted two different templates:

Template 1:

Resources:
    DMSTargetDataProvider:
        Type: AWS::DMS::DataProvider
        Properties:
            DataProviderIdentifier: "dms-postgres"
            DataProviderName: "dms-postgres"
            Description: "dms-postgres"
            Engine: "postgresql"
            Settings:
                PostgreSqlSettings:
                    ServerName: "dms-postgres.xxxx.us-east-1.rds.amazonaws.com"
                    Port: 5432
                    DatabaseName: "test"
                    SslMode: "none"

Results in the below error:

Resource handler returned message: "Invalid request provided: DMS doesn't support this database engine. Choose another database engine and try again." (RequestToken: 0ce526a5-9952-0253-5c95-af3aa67d8a49, HandlerErrorCode: InvalidRequest)

Template 2:

Resources:
    DMSTargetDataProvider:
        Type: AWS::DMS::DataProvider
        Properties:
            DataProviderIdentifier: "dms-postgres"
            DataProviderName: "dms-postgres"
            Description: "dms-postgres"
            Engine: "postgres"
            Settings:
                PostgreSqlSettings:
                    ServerName: "dms-postgres.xxxx.us-east-1.rds.amazonaws.com"
                    Port: 5432
                    DatabaseName: "test"
                    SslMode: "none"

Results in the below error:

Properties validation failed for resource DMSTargetDataProvider with message: #/Engine: #: only 1 subschema matches out of 2 #/Engine: failed validation constraint for keyword [enum]

Expected Behavior

Using the engine "postgresql" as described in the documentation should create the provider

Observed Behavior

Neither "postgresql" or "postgres" work

Test Cases

Create an AWS DMS Data Provider with the "postgresql" engine

Other Details

No response

serhiipaamazon commented 4 months ago

This bug was fixed on the CloudFormation side. Now to create AWS::DMS::DataProvider with postgres engine it is necessary to specify Engine: "postgres", just like in Template 2:"

Resources:
    DMSTargetDataProvider:
        Type: AWS::DMS::DataProvider
        Properties:
            DataProviderIdentifier: "dms-postgres"
            DataProviderName: "dms-postgres"
            Description: "dms-postgres"
            Engine: "postgres"
            Settings:
                PostgreSqlSettings:
                    ServerName: "dms-postgres.xxxx.us-east-1.rds.amazonaws.com"
                    Port: 5432
                    DatabaseName: "test"
                    SslMode: "none"