aws / aws-cdk

The AWS Cloud Development Kit is a framework for defining cloud infrastructure in code
https://aws.amazon.com/cdk
Apache License 2.0
11.57k stars 3.87k forks source link

aws-ec2: Elasticache Interface VPC endpoint service name in China regions is incorrect #25329

Closed murrmaz closed 1 year ago

murrmaz commented 1 year ago

Describe the bug

The static InterfaceVpcEndpointAwsService ELASTICACHE does not produce the correct service name in China regions (cn-north-1 and cn-northwest-1). Instead, it produces the service name for the Non-China regions.

Expected Behavior

For a Cloudformation Stack in region cn-north-1: { name: 'cn.com.amazonaws.cn-north-1.elasticache', shortName: 'elasticache', port: 443 }

For a Cloudformation Stack in region cn-northwest-1: { name: 'cn.com.amazonaws.cn-northwest-1.elasticache', shortName: 'elasticache', port: 443 }

Current Behavior

For a Cloudformation Stack in region cn-north-1: { name: 'com.amazonaws.cn-north-1.elasticache', shortName: 'elasticache', port: 443 }

For a Cloudformation Stack in region cn-northwest-1: { name: 'com.amazonaws.cn-northwest-1.elasticache', shortName: 'elasticache', port: 443 }

Reproduction Steps

import {Vpc, InterfaceVpcEndpointAwsService} from 'aws-cdk-lib/aws-ec2'

myVpc = new Vpc(...)

// Interface VPC endpoint for Elasticache
elasticacheEndpoint = myVpc.addInterfaceEndpoint('elasticacheEndpoint', {
    service: InterfaceVpcEndpointAwsService.ELASTICACHE
})

Possible Solution

Add elasticache to the list of VPC_ENDPOINT_SERVICE_EXCEPTIONS for cn-north-1 and cn-northwest-1.

This will generate the correct interface VPC endpoint service name prefix (cn.com.amazonaws)

Additional Information/Context

No response

CDK CLI Version

2.74.0 (build 70e2a33)

Framework Version

No response

Node.js Version

v16.20.0

OS

Amazon Linux 2

Language

Typescript

Language Version

TypeScript (4.9.5)

Other information

No response

pahud commented 1 year ago

Yes I can confirm that with the following commands.

This is the list of all vpc interface endpoints in cn-north-1

% AWS_PROFILE=bjs AWS_REGION=cn-north-1 aws ec2 describe-vpc-endpoint-services | jq -r .ServiceNames [ "aws.sagemaker.cn-north-1.notebook", "aws.sagemaker.cn-north-1.studio", "cn.com.amazonaws.cn-north-1.application-autoscaling", "cn.com.amazonaws.cn-north-1.appmesh-envoy-management", "cn.com.amazonaws.cn-north-1.athena", "cn.com.amazonaws.cn-north-1.autoscaling", "cn.com.amazonaws.cn-north-1.awsconnector", "cn.com.amazonaws.cn-north-1.backup", "cn.com.amazonaws.cn-north-1.batch", "cn.com.amazonaws.cn-north-1.cassandra", "cn.com.amazonaws.cn-north-1.cloudcontrolapi", "cn.com.amazonaws.cn-north-1.cloudformation", "cn.com.amazonaws.cn-north-1.codedeploy-commands-secure", "cn.com.amazonaws.cn-north-1.databrew", "cn.com.amazonaws.cn-north-1.dms", "cn.com.amazonaws.cn-north-1.ebs", "cn.com.amazonaws.cn-north-1.ec2", "cn.com.amazonaws.cn-north-1.ecr.api", "cn.com.amazonaws.cn-north-1.ecr.dkr", "cn.com.amazonaws.cn-north-1.eks", "cn.com.amazonaws.cn-north-1.elasticache", "cn.com.amazonaws.cn-north-1.elasticbeanstalk", "cn.com.amazonaws.cn-north-1.elasticfilesystem", "cn.com.amazonaws.cn-north-1.elasticfilesystem-fips", "cn.com.amazonaws.cn-north-1.emr-containers", "cn.com.amazonaws.cn-north-1.execute-api", "cn.com.amazonaws.cn-north-1.fsx", "cn.com.amazonaws.cn-north-1.imagebuilder", "cn.com.amazonaws.cn-north-1.iot.data", "cn.com.amazonaws.cn-north-1.iotsitewise.api", "cn.com.amazonaws.cn-north-1.iotsitewise.data", "cn.com.amazonaws.cn-north-1.kinesis-streams", "cn.com.amazonaws.cn-north-1.lambda", "cn.com.amazonaws.cn-north-1.license-manager", "cn.com.amazonaws.cn-north-1.monitoring", "cn.com.amazonaws.cn-north-1.rds", "cn.com.amazonaws.cn-north-1.redshift", "cn.com.amazonaws.cn-north-1.redshift-data", "cn.com.amazonaws.cn-north-1.s3", "cn.com.amazonaws.cn-north-1.sagemaker.api", "cn.com.amazonaws.cn-north-1.sagemaker.featurestore-runtime", "cn.com.amazonaws.cn-north-1.sagemaker.runtime", "cn.com.amazonaws.cn-north-1.securityhub", "cn.com.amazonaws.cn-north-1.servicecatalog", "cn.com.amazonaws.cn-north-1.sms", "cn.com.amazonaws.cn-north-1.sqs", "cn.com.amazonaws.cn-north-1.states", "cn.com.amazonaws.cn-north-1.sts", "cn.com.amazonaws.cn-north-1.sync-states", "cn.com.amazonaws.cn-north-1.synthetics", "cn.com.amazonaws.cn-north-1.transcribe.cn", "cn.com.amazonaws.cn-north-1.transcribestreaming", "cn.com.amazonaws.cn-north-1.transfer", "cn.com.amazonaws.cn-north-1.xray", "com.amazonaws.cn-north-1.codebuild", "com.amazonaws.cn-north-1.codecommit", "com.amazonaws.cn-north-1.datasync", "com.amazonaws.cn-north-1.dynamodb", "com.amazonaws.cn-north-1.ec2messages", "com.amazonaws.cn-north-1.ecs", "com.amazonaws.cn-north-1.ecs-agent", "com.amazonaws.cn-north-1.ecs-telemetry", "com.amazonaws.cn-north-1.elasticbeanstalk-health", "com.amazonaws.cn-north-1.elasticloadbalancing", "com.amazonaws.cn-north-1.elasticmapreduce", "com.amazonaws.cn-north-1.git-codecommit", "com.amazonaws.cn-north-1.glue", "com.amazonaws.cn-north-1.kinesis-firehose", "com.amazonaws.cn-north-1.kms", "com.amazonaws.cn-north-1.logs", "com.amazonaws.cn-north-1.s3", "com.amazonaws.cn-north-1.secretsmanager", "com.amazonaws.cn-north-1.sns", "com.amazonaws.cn-north-1.ssm", "com.amazonaws.cn-north-1.ssmmessages", "com.amazonaws.cn-north-1.storagegateway", "com.amazonaws.cn-north-1.swf" ]

And in cn-northwest-1

% AWS_PROFILE=bjs AWS_REGION=cn-northwest-1 aws ec2 describe-vpc-endpoint-services | jq -r .ServiceNames [ "aws.sagemaker.cn-northwest-1.notebook", "aws.sagemaker.cn-northwest-1.studio", "cn.com.amazonaws.cn-northwest-1.account", "cn.com.amazonaws.cn-northwest-1.application-autoscaling", "cn.com.amazonaws.cn-northwest-1.appmesh-envoy-management", "cn.com.amazonaws.cn-northwest-1.athena", "cn.com.amazonaws.cn-northwest-1.autoscaling", "cn.com.amazonaws.cn-northwest-1.awsconnector", "cn.com.amazonaws.cn-northwest-1.backup", "cn.com.amazonaws.cn-northwest-1.batch", "cn.com.amazonaws.cn-northwest-1.cassandra", "cn.com.amazonaws.cn-northwest-1.cloudcontrolapi", "cn.com.amazonaws.cn-northwest-1.cloudformation", "cn.com.amazonaws.cn-northwest-1.codedeploy-commands-secure", "cn.com.amazonaws.cn-northwest-1.databrew", "cn.com.amazonaws.cn-northwest-1.dms", "cn.com.amazonaws.cn-northwest-1.ebs", "cn.com.amazonaws.cn-northwest-1.ec2", "cn.com.amazonaws.cn-northwest-1.ecr.api", "cn.com.amazonaws.cn-northwest-1.ecr.dkr", "cn.com.amazonaws.cn-northwest-1.eks", "cn.com.amazonaws.cn-northwest-1.elasticache", "cn.com.amazonaws.cn-northwest-1.elasticbeanstalk", "cn.com.amazonaws.cn-northwest-1.elasticfilesystem", "cn.com.amazonaws.cn-northwest-1.elasticfilesystem-fips", "cn.com.amazonaws.cn-northwest-1.emr-containers", "cn.com.amazonaws.cn-northwest-1.execute-api", "cn.com.amazonaws.cn-northwest-1.fsx", "cn.com.amazonaws.cn-northwest-1.imagebuilder", "cn.com.amazonaws.cn-northwest-1.iot.data", "cn.com.amazonaws.cn-northwest-1.kinesis-streams", "cn.com.amazonaws.cn-northwest-1.lambda", "cn.com.amazonaws.cn-northwest-1.license-manager", "cn.com.amazonaws.cn-northwest-1.monitoring", "cn.com.amazonaws.cn-northwest-1.polly", "cn.com.amazonaws.cn-northwest-1.rds", "cn.com.amazonaws.cn-northwest-1.redshift", "cn.com.amazonaws.cn-northwest-1.redshift-data", "cn.com.amazonaws.cn-northwest-1.s3", "cn.com.amazonaws.cn-northwest-1.sagemaker.api", "cn.com.amazonaws.cn-northwest-1.sagemaker.featurestore-runtime", "cn.com.amazonaws.cn-northwest-1.sagemaker.runtime", "cn.com.amazonaws.cn-northwest-1.securityhub", "cn.com.amazonaws.cn-northwest-1.servicecatalog", "cn.com.amazonaws.cn-northwest-1.sms", "cn.com.amazonaws.cn-northwest-1.sqs", "cn.com.amazonaws.cn-northwest-1.states", "cn.com.amazonaws.cn-northwest-1.sts", "cn.com.amazonaws.cn-northwest-1.sync-states", "cn.com.amazonaws.cn-northwest-1.synthetics", "cn.com.amazonaws.cn-northwest-1.transcribe.cn", "cn.com.amazonaws.cn-northwest-1.transcribestreaming", "cn.com.amazonaws.cn-northwest-1.transfer", "cn.com.amazonaws.cn-northwest-1.workspaces", "cn.com.amazonaws.cn-northwest-1.xray", "com.amazonaws.cn-northwest-1.codebuild", "com.amazonaws.cn-northwest-1.codecommit", "com.amazonaws.cn-northwest-1.datasync", "com.amazonaws.cn-northwest-1.dynamodb", "com.amazonaws.cn-northwest-1.ec2messages", "com.amazonaws.cn-northwest-1.ecs", "com.amazonaws.cn-northwest-1.ecs-agent", "com.amazonaws.cn-northwest-1.ecs-telemetry", "com.amazonaws.cn-northwest-1.elasticbeanstalk-health", "com.amazonaws.cn-northwest-1.elasticloadbalancing", "com.amazonaws.cn-northwest-1.elasticmapreduce", "com.amazonaws.cn-northwest-1.git-codecommit", "com.amazonaws.cn-northwest-1.glue", "com.amazonaws.cn-northwest-1.kinesis-firehose", "com.amazonaws.cn-northwest-1.kms", "com.amazonaws.cn-northwest-1.logs", "com.amazonaws.cn-northwest-1.s3", "com.amazonaws.cn-northwest-1.secretsmanager", "com.amazonaws.cn-northwest-1.sns", "com.amazonaws.cn-northwest-1.ssm", "com.amazonaws.cn-northwest-1.ssmmessages", "com.amazonaws.cn-northwest-1.storagegateway", "com.amazonaws.cn-northwest-1.swf" ]

github-actions[bot] commented 1 year ago

⚠️COMMENT VISIBILITY WARNING⚠️

Comments on closed issues are hard for our team to see. If you need more assistance, please either tag a team member or open a new issue that references this one. If you wish to keep having a conversation with other community members under this issue feel free to do so.