Aurora serverles V2 connection - amazon-rds

I've created an Aurora MySQL serverless db cluster in AWS and I want to connect to it from my computer using mySQL Workbench. I've entered the endpoint as well as master user and password, however when I try to connect , it hangs for about one minute and then it says that cannot connect (no further info is given).
Also trying to ping the endpoint, it resolves the name but don't get any answer.
I've read all the documentation from AWS but I really cannot find how to connect. In the vpc security group I've enabled all inbound and outbound traffic on all ports and protocols. The AWS doc says to enable public access in DB settings but I cannot find such an option.

You can't give an Amazon Aurora Serverless V1 DB cluster a public IP address. You can access an Aurora Serverless V1 DB cluster only from within a virtual private cloud (VPC), based on the Amazon VPC service. For Aurora Serverless V2 you can make a cluster public. Make sure you have the proper ingress rules set up and enable public access in database configuration. For more information, see Using Amazon Aurora Serverless.
https://aws.amazon.com/premiumsupport/knowledge-center/aurora-private-public-endpoints/ .

Related

Unable to create a cluster in databricks on a customer managed vpc (private link enabled) - AWS

I’m trying to create a cluster in databricks in a customer managed vpc (AWS) environment. Created both front end and back end endpoints. The cluster got terminated with message ‘NPIP tunnel setup failure.’ Looking at the logs, it throws wait for Ngork tunnel failure.
You need to make sure that you aren't blocking outgoing traffic to the Databricks control plane. The section "Firewall appliance infrastructure" documentation describes that you need to enable traffic to following objects (this list may change over the time):
Databricks web application
Databricks secure cluster connectivity (SCC) relay (ngrok)
AWS S3 global URL
AWS S3 regional URL
AWS STS global URL
AWS STS regional URL
AWS Kinesis regional URL
Table metastore RDS regional URL
Actual global & regional host names could be found in the following table in the same documentation

How to connect/communicate Pod to DocumentDb which is outside eks cluster but within same VPC

I want to deploy my full stack application using AWS EKS, with the backend pod connected to the databases(MongoDB hosted on AWS managed service) outside of the cluster. If the EKS cluster and the databases are in same VPC, how should I configure the pod to connect exterbal database but within same VPC.
We're going to need a bit more details, but see if this blog gives you an idea about how to accomplish this.

AWS EKS node to access RDS

I have AWS EKS nodes access RDS where I have have whitelisted EKS node's public IPs in RDS's security group. But this is not viable solution because EKS Nodes can get replaced and its public IP can changes with it.
How can I make this EKS node's connecting to RDS more stable ?
Last year we have introduced a new feature to assign Security Groups to Kubernetes pods directly to overcome having to assign them at the node level (to avoid ephemerality problems you call out and to create a more secure environment where only the pod that needs to talk to RDS can do so Vs the ENTIRE node). You can follow this tutorial to configure this feature or refer to the official documentation.
If your eks cluster is in the same vpc as the Rds instance, then you can just whitelist your vpc's private ip-address (cidr) range in RDS security group. If they are in different vpc's, then connect both vpc with vpc-peering and whitelist's eks vpc's IP range in rds security group. Dont use public ip's as they will go through outside AWS network. Instead, always use private connections wherever possible as they are faster, reliable and more secure. If you don't want to whitelist complete cidr Then you can also create a NAT gateway for your eks cluster and make routes for outside traffic going outside the EKS cluster go through that NAT gateway and then you can whitelist NAT's IP in rds security group

Aurora Serverless Connection - Using jdbc

Is it possible to connect Aurora ( MySQL ) using the jdbc driver endpoint using workbench or any other tool from my local machine.
Of course, yes. It is same as a usual Aurora database but is serverless. You can connect it by using workbench or any JDBC driver. However, the serverless Aurora cannot be assigned by a public ip, which means that the DB is not accessible from the outside of VPC. Since it is private, you cannot access it directly.
In order to access a private DB, you need a proxy instance, EC2 instance inside of the same VPC with public ip or you can use AWS Direct Connect.
There is some explanation about AWS Direct Connect that can be used to resolve your case.
https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/aurora-serverless.html
This will explain how to connect the private RDS from local by pass the public EC2.
https://medium.com/#carlos.ribeiro/connecting-on-rds-server-that-is-not-publicly-accessible-1aee9e43b870
.
For those who don't want to use EC2 as a proxy and need a solution without using Direct Connect:
Have a look at Amazon Client VPN. Using this tool (in the VPC service), you can configure a connection to the VPC where the database is located and connect to it through VPN.
Here is a guide how to configure Client VPN: https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/cvpn-getting-started.html#cvpn-getting-started-certs

Allow AWS RDS connection from an Azure K8S pods

We are currently migrating from AWS ECS to Azure Kubernetes Service. Our first step is to first migrate the application code and just leave the database in AWS RDS, for now. Our RDS instance is protected by a security group which only allows connection from a set of IP addresses.
When connecting to the RDS instance, what IP address does the database see? How can I configure RDS to allow connection from a kubernetes pod?
If you have an Azure Load Balancer (so any kubernetes service with type LoadBalancer) attached to worker nodes - they will use the first IP attached to the Load Balancer. If not - they will use public IP attached to the VM they run on. If the VM doesnt have a public IP (default for AKS), they will use ethereal IP that might change anytime and you have no control over that.
So just create a service with the type of LoadBalancer in AKS, find its external IP address and whitelist that.

Resources