{"id":27957,"date":"2025-08-05T09:38:29","date_gmt":"2025-08-05T09:38:29","guid":{"rendered":"https:\/\/cloud-cod.com\/?p=27957"},"modified":"2025-08-18T07:07:42","modified_gmt":"2025-08-18T07:07:42","slug":"deploying-aws-resources-in-multiple-regions-using-terraform-provider-aliases","status":"publish","type":"post","link":"https:\/\/cloud-cod.com\/index.php\/2025\/08\/05\/deploying-aws-resources-in-multiple-regions-using-terraform-provider-aliases\/","title":{"rendered":"Deploying AWS resources in Multiple-Regions using Terraform Provider Aliases"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"27957\" class=\"elementor elementor-27957\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-594e07b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"594e07b\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-413cb21\" data-id=\"413cb21\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7778bfa elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents\" data-id=\"7778bfa\" data-element_type=\"widget\" data-settings=\"{&quot;exclude_headings_by_selector&quot;:[],&quot;marker_view&quot;:&quot;bullets&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;icon&quot;:{&quot;value&quot;:&quot;fas fa-circle&quot;,&quot;library&quot;:&quot;fa-solid&quot;},&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"table-of-contents.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor-pro - v3.17.0 - 01-11-2023 *\/\n.elementor-widget-table-of-contents .elementor-toc__header-title{color:var(--header-color)}.elementor-widget-table-of-contents.elementor-toc--collapsed .elementor-toc__toggle-button--collapse,.elementor-widget-table-of-contents:not(.elementor-toc--collapsed) .elementor-toc__toggle-button--expand{display:none}.elementor-widget-table-of-contents .elementor-widget-container{min-height:var(--box-min-height);border:var(--box-border-width,1px) solid var(--box-border-color,#9da5ae);border-radius:var(--box-border-radius,3px);background-color:var(--box-background-color);transition:min-height .4s;overflow:hidden}.elementor-toc__header{display:flex;align-items:center;justify-content:space-between;padding:var(--box-padding,20px);background-color:var(--header-background-color);border-bottom:var(--separator-width,1px) solid var(--box-border-color,#9da5ae)}.elementor-toc__header-title{font-size:18px;margin:0;color:var(--header-color)}.elementor-toc__toggle-button{cursor:pointer;display:inline-flex}.elementor-toc__toggle-button i{color:var(--toggle-button-color)}.elementor-toc__toggle-button svg{height:1em;width:1em;fill:var(--toggle-button-color)}.elementor-toc__spinner-container{text-align:center}.elementor-toc__spinner{font-size:2em}.elementor-toc__spinner.e-font-icon-svg{height:1em;width:1em}.elementor-toc__body{padding:var(--box-padding,20px);max-height:var(--toc-body-max-height);overflow-y:auto}.elementor-toc__body::-webkit-scrollbar{width:7px}.elementor-toc__body::-webkit-scrollbar-thumb{background-color:#babfc5;border-radius:10px}.elementor-toc__list-wrapper{list-style:none;padding:0}.elementor-toc__list-item{margin-bottom:.5em}.elementor-toc__list-item.elementor-item-active{font-weight:700}.elementor-toc__list-item .elementor-toc__list-wrapper{margin-top:.5em;margin-left:var(--nested-list-indent,1em)}.elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}.elementor-toc__list-item-text-wrapper{display:flex;align-items:center}.elementor-toc__list-item-text-wrapper:before,.elementor-toc__list-item-text-wrapper i{margin-right:8px;color:var(--marker-color)}.elementor-toc__list-item-text-wrapper svg{margin-right:8px;fill:var(--marker-color);height:var(--marker-size,.5em);width:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper i{font-size:var(--marker-size,.5em)}.elementor-toc__list-item-text-wrapper:before{font-size:var(--marker-size,1em)}.elementor-toc--content-ellipsis .elementor-toc__list-item-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.elementor-toc__list-items--collapsible>.elementor-toc__list-wrapper>.elementor-toc__list-item>.elementor-toc__list-wrapper{display:none}.elementor-toc__heading-anchor{position:absolute}.elementor-toc__body .elementor-toc__list-item-text{color:var(--item-text-color);-webkit-text-decoration:var(--item-text-decoration);text-decoration:var(--item-text-decoration)}.elementor-toc__body .elementor-toc__list-item-text:hover{color:var(--item-text-hover-color);-webkit-text-decoration:var(--item-text-hover-decoration);text-decoration:var(--item-text-hover-decoration)}.elementor-toc__body .elementor-toc__list-item-text.elementor-item-active{color:var(--item-text-active-color);-webkit-text-decoration:var(--item-text-active-decoration);text-decoration:var(--item-text-active-decoration)}ol.elementor-toc__list-wrapper{counter-reset:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item{counter-increment:item}ol.elementor-toc__list-wrapper .elementor-toc__list-item-text-wrapper:before{content:counters(item,\".\") \". \"}<\/style>\t\t<div class=\"elementor-toc__header\">\n\t\t\t<h4 class=\"elementor-toc__header-title\">\n\t\t\t\tTable of Contents\t\t\t<\/h4>\n\t\t\t\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--expand\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__7778bfa\" aria-expanded=\"true\" aria-label=\"Open table of contents\"><i aria-hidden=\"true\" class=\"fas fa-chevron-down\"><\/i><\/div>\n\t\t\t\t<div class=\"elementor-toc__toggle-button elementor-toc__toggle-button--collapse\" role=\"button\" tabindex=\"0\" aria-controls=\"elementor-toc__7778bfa\" aria-expanded=\"true\" aria-label=\"Close table of contents\"><i aria-hidden=\"true\" class=\"fas fa-chevron-up\"><\/i><\/div>\n\t\t\t\t\t<\/div>\n\t\t<div id=\"elementor-toc__7778bfa\" class=\"elementor-toc__body\">\n\t\t\t<div class=\"elementor-toc__spinner-container\">\n\t\t\t\t<i class=\"elementor-toc__spinner eicon-animation-spin eicon-loading\" aria-hidden=\"true\"><\/i>\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0625cd2 elementor-widget elementor-widget-heading\" data-id=\"0625cd2\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.17.0 - 01-11-2023 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Introduction<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9ded7ec elementor-widget elementor-widget-text-editor\" data-id=\"9ded7ec\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.17.0 - 01-11-2023 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>Some time ago, I was asked by the customer to create a Terraform module in AWS for deploying various resources. The module was meant to be used by the customer&#8217;s pipeline. The goal was to enable users to define the AWS Region where resources would be created.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-888c3a5 elementor-widget elementor-widget-text-editor\" data-id=\"888c3a5\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><span data-preserver-spaces=\"true\">Unlike Azure, where you can define the Azure Provider once and deploy the Azure resource across multiple Regions, in AWS, you cannot do that. In AWS, you need one AWS Provider per Region. That complicates things a bit when you face that issue for the first time. However, there is an easy solution to solve it. All you will need are <\/span><strong><span data-preserver-spaces=\"true\">Aliases<\/span><\/strong><span data-preserver-spaces=\"true\"> and multiple provider definitions<\/span> (<a href=\"https:\/\/developer.hashicorp.com\/terraform\/language\/providers\/configuration#alias-multiple-provider-configurations\">Terraform Multiple Provider Configurations<\/a>).<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-31c41d1 elementor-widget elementor-widget-heading\" data-id=\"31c41d1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Passing the AWS Provider Credentials<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-579b019 elementor-widget elementor-widget-text-editor\" data-id=\"579b019\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Please note that the AWS Provider expects values for a couple of arguments: region, credentials (AWS Access Key ID and Secret Access Key). You have several options for passing the credentials securely. I will use the Terraform Cloud Workspace variables. When using TFC Variables to store your AWS Credentials, you must configure them as Environment variables.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-26e700e elementor-widget elementor-widget-image\" data-id=\"26e700e\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.17.0 - 01-11-2023 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-scaled.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"tfc_workspace_variables\" data-elementor-lightbox-description=\"TC_Workspace_Variables_AWS_Provider\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjc5NjIsInVybCI6Imh0dHBzOlwvXC9jbG91ZC1jb2QuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wOFwvdGZjX3dvcmtzcGFjZV92YXJpYWJsZXMtc2NhbGVkLnBuZyJ9\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"236\" src=\"https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-768x236.png\" class=\"attachment-medium_large size-medium_large wp-image-27962\" alt=\"TC_Workspace_Variables_AWS_Provider\" srcset=\"https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-768x236.png 768w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-300x92.png 300w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-1024x315.png 1024w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-1536x472.png 1536w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/tfc_workspace_variables-2048x629.png 2048w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">Terraform Workspace Variables for AWS Provider credentials<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-89c2cf4 elementor-widget elementor-widget-heading\" data-id=\"89c2cf4\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Module Code<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fa3bb4d elementor-widget elementor-widget-text-editor\" data-id=\"fa3bb4d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The module (which I store locally as a folder) will create a VPC. The user will have to provide the CIDR range and the Name.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-20b4279 elementor-widget elementor-widget-text-editor\" data-id=\"20b4279\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The <strong>main.tf<\/strong> file:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7273b41 elementor-widget elementor-widget-code-highlight\" data-id=\"7273b41\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>resource \"aws_vpc\" \"vpc\" {\r\n  provider   = aws.provider\r\n  cidr_block = var.vpc_cidr\r\n  tags = {\r\n    Name = var.vpc_name\r\n  }\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ccef205 elementor-widget elementor-widget-text-editor\" data-id=\"ccef205\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The <strong>variables.tf<\/strong> file:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-df1f25c elementor-widget elementor-widget-code-highlight\" data-id=\"df1f25c\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>variable \"vpc_cidr\" {\r\n  type = string\r\n}\r\n\r\nvariable \"vpc_name\" {\r\n  type = string\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2ae5d71 elementor-widget elementor-widget-text-editor\" data-id=\"2ae5d71\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The <strong>versions.tf<\/strong> file:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-96fdf09 elementor-widget elementor-widget-code-highlight\" data-id=\"96fdf09\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>terraform {\r\n  required_providers {\r\n    aws = {\r\n      source  = \"hashicorp\/aws\"\r\n      version = \"~> 6.0\"\r\n      configuration_aliases = [ aws.provider ] # provider name will be passed to the module\r\n    }\r\n  }\r\n  required_version = \">= 1.2.0\"\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6164e74 elementor-widget elementor-widget-text-editor\" data-id=\"6164e74\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><strong><span data-preserver-spaces=\"true\">Very important!<\/span><\/strong><span data-preserver-spaces=\"true\"> The usage of the argument called <\/span><strong><span data-preserver-spaces=\"true\">configuration_aliases<\/span><\/strong><span data-preserver-spaces=\"true\"> inside the module allows two things:<\/span><\/p><ul><li><span data-preserver-spaces=\"true\">The provider configuration will be passed from the ROOT to the module (and it is the ROOT that will select the Region for the resource)<\/span><\/li><li><span data-preserver-spaces=\"true\">The resources inside the module will be allowed to use the <\/span><strong><span data-preserver-spaces=\"true\">provider<\/span><\/strong><span data-preserver-spaces=\"true\"> argument.<\/span><\/li><\/ul>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-452b4da elementor-widget elementor-widget-heading\" data-id=\"452b4da\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Main Code<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-810694d elementor-widget elementor-widget-text-editor\" data-id=\"810694d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Now, we are ready to deploy a couple of VPCs. Let&#8217;s create three VPCs across different regions.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a858ad4 elementor-widget elementor-widget-text-editor\" data-id=\"a858ad4\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The root <strong>versions.tf<\/strong> file:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e35cc84 elementor-widget elementor-widget-code-highlight\" data-id=\"e35cc84\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>terraform {\r\n  # please put your backend config here\r\n  cloud {\r\n    organization = \"<your-org>\"\r\n\r\n    workspaces {\r\n      name = \"<tfc-workspace-name>\" \r\n    }\r\n  }\r\n  required_providers {\r\n    aws = {\r\n      source  = \"hashicorp\/aws\"\r\n      version = \"~> 6.0\"\r\n    }\r\n  }\r\n}\r\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a5f2705 elementor-widget elementor-widget-text-editor\" data-id=\"a5f2705\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The root <strong>providers.tf<\/strong> file. I define three providers with Aliases. Each provider will have a different Region configured:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ef96aee elementor-widget elementor-widget-code-highlight\" data-id=\"ef96aee\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>provider \"aws\" {\r\n  alias  = \"eu_west_1\"\r\n  region = \"eu-west-1\"\r\n}\r\n\r\nprovider \"aws\" {\r\n  alias  = \"eu_central_1\"\r\n  region = \"eu-central-1\"\r\n}\r\n\r\nprovider \"aws\" {\r\n  alias  = \"us_west_1\"\r\n  region = \"us-west-1\"\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f9a407b elementor-widget elementor-widget-text-editor\" data-id=\"f9a407b\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>The root <strong>main.tf<\/strong> file. I create three VPCs by calling my local module three times. Each time I use a different provider alias.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-dbc574b elementor-widget elementor-widget-code-highlight\" data-id=\"dbc574b\" data-element_type=\"widget\" data-widget_type=\"code-highlight.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"prismjs-default copy-to-clipboard \">\n\t\t\t<pre data-line=\"\" class=\"highlight-height language-javascript line-numbers\">\n\t\t\t\t<code readonly=\"true\" class=\"language-javascript\">\n\t\t\t\t\t<xmp>module \"vpc-eu-central-1\" {\r\n  source = \".\/vpc_module\"\r\n  \r\n  vpc_name = \"vpc-eu-central-1\"\r\n  vpc_cidr = \"10.50.0.0\/16\"\r\n\r\n  providers = {\r\n  \taws.provider = aws.eu_central_1 # we have to instruct the module what provider to be used\r\n  }\r\n}\r\n\r\nmodule \"vpc-eu-west-1\" {\r\n  source = \".\/vpc_module\"\r\n  \r\n  vpc_name = \"vpc-eu-west-1\"\r\n  vpc_cidr = \"10.60.0.0\/16\"\r\n\r\n  providers = {\r\n  \taws.provider = aws.eu_west_1 # we have to instruct the module what provider to be used\r\n  }\r\n}\r\n\r\nmodule \"vpc-us-west-1\" {\r\n  source = \".\/vpc_module\"\r\n  \r\n  vpc_name = \"vpc-us-west-1\"\r\n  vpc_cidr = \"10.70.0.0\/16\"\r\n\r\n  providers = {\r\n  \taws.provider = aws.us_west_1 # we have to instruct the module what provider to be used\r\n  }\r\n}<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2c159a8 elementor-widget elementor-widget-heading\" data-id=\"2c159a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">The Result<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-6eeedfc elementor-widget elementor-widget-text-editor\" data-id=\"6eeedfc\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Quick check in AWS Console, we can see three VPCs have been created:<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d95f06d elementor-widget elementor-widget-image\" data-id=\"d95f06d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t<figure class=\"wp-caption\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"http:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-scaled.png\" data-elementor-open-lightbox=\"yes\" data-elementor-lightbox-title=\"vpcs\" data-e-action-hash=\"#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjc5NzIsInVybCI6Imh0dHBzOlwvXC9jbG91ZC1jb2QuY29tXC93cC1jb250ZW50XC91cGxvYWRzXC8yMDI1XC8wOFwvdnBjcy1zY2FsZWQucG5nIn0%3D\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"437\" src=\"https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-768x437.png\" class=\"attachment-medium_large size-medium_large wp-image-27972\" alt=\"\" srcset=\"https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-768x437.png 768w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-300x171.png 300w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-1024x583.png 1024w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-1536x875.png 1536w, https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/vpcs-2048x1166.png 2048w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t<figcaption class=\"widget-image-caption wp-caption-text\">AWS VPCs created using Terraform Provider Aliases<\/figcaption>\n\t\t\t\t\t\t\t\t\t\t<\/figure>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>How to deploy AWS Resources across Regions using Terraform? The blog post explains how Terraform Provider Aliases work and help with multi-region deployments.<\/p>\n","protected":false},"author":2,"featured_media":27973,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[21,17],"tags":[32,31],"class_list":["post-27957","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-aws","category-terraform","tag-aws-provider","tag-terraform"],"uagb_featured_image_src":{"full":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",1536,1024,false],"thumbnail":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",150,100,false],"medium":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region-300x200.png",300,200,true],"medium_large":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",768,512,false],"large":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",800,533,false],"1536x1536":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",1536,1024,false],"2048x2048":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",1536,1024,false],"onepress-blog-small":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",225,150,false],"onepress-small":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",450,300,false],"onepress-medium":["https:\/\/cloud-cod.com\/wp-content\/uploads\/2025\/08\/thumbnail_AWS_Provider_aliases_multi_region.png",600,400,false]},"uagb_author_info":{"display_name":"Jakub","author_link":"https:\/\/cloud-cod.com\/index.php\/author\/jakub\/"},"uagb_comment_info":9,"uagb_excerpt":"How to deploy AWS Resources across Regions using Terraform? The blog post explains how Terraform Provider Aliases work and help with multi-region deployments.","_links":{"self":[{"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/posts\/27957","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/comments?post=27957"}],"version-history":[{"count":28,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/posts\/27957\/revisions"}],"predecessor-version":[{"id":28055,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/posts\/27957\/revisions\/28055"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/media\/27973"}],"wp:attachment":[{"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/media?parent=27957"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/categories?post=27957"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloud-cod.com\/index.php\/wp-json\/wp\/v2\/tags?post=27957"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}