Connect your AWS to GCP with Terraform via IPSec Site-to-Site VPN

Today, I wrote another IaaC (infrastructure as a code) for my needs. You can create a secure VPN connection (IPsec) between Amazon Web Services (AWS) and Google Cloud Platform (GCP).

What can this do?

Creating a Customer Gateway on AWS. Creating a Virtual Private Gateway on AWS. Creating a Site-to-Site VPN Connection on AWS. Creating a Security Group for VPN connection access on AWS. Creating an External IP address for VPN connection on GCP. Creating a Managing the firewall rule for VPN connection on GCP. Creating a Route rule on GCP.



  1. Clone the repositry

    git clone [email protected]:flightlesstux/aws-to-gcp-vpn-w-terraform.git

  2. Authenticate to Google Platform if even google-sdk is not installed. It’s really useful for CI/CD pipelines! If you already logged in to your Google Cloud Platform project like gcloud auth login, you can skip this step.

    export GOOGLE_APPLICATION_CREDENTIALS="service-account-key.json"

  3. Project ID is also declared via terraform but if you don’t export the value, you will probable get an error like below.

    export GOOGLE_PROJECT="0123456789012"

    │ Error: project: required field is not set

    │ with google_compute_instance_group_manager.this,
    │ on line 1, in resource "google_compute_instance_group_manager" "this":
    │ 1: resource "google_compute_instance_group_manager" "this" {

  4. Export your AWS Access Key ID and Secret Access Key to create a resource in your AWS Region.


  5. Set your variables

    Edit values for

  6. State bucket settings

    Set your terraform state bucket via file. You can use AWS S3 or Google Cloud Storage.

  7. Initialize

    terraform init

  8. Deploy!

    terraform apply or terraform apply -auto-approve

Repository Address

I hope, you enjoyed with this article…