From 13c1814c54b5c576f06bdfb5001f1cdcb6ea1b62 Mon Sep 17 00:00:00 2001 From: HarshCasper Date: Fri, 29 Sep 2023 11:58:42 +0000 Subject: [PATCH] deploy: 2da2d33f07043f6641ef73ad66bda32babdc9862 --- categories/dns/index.html | 2 +- categories/dns/index.xml | 31 ++- categories/localstack-pro/index.html | 2 +- categories/localstack-pro/index.xml | 31 ++- categories/tools/index.html | 2 +- categories/tools/index.xml | 31 ++- getting-started/faq/index.html | 9 +- getting-started/installation/index.html | 7 +- .../created-resources/index.html | 5 +- .../endpoint-url/index.html | 120 +++++---- references/network-troubleshooting/index.xml | 240 +++++++++++------- .../transparent-endpoint-injection/index.html | 3 +- sitemap.xml | 2 +- tags/networking/index.xml | 240 +++++++++++------- tags/troubleshooting/index.xml | 240 +++++++++++------- .../dns-server/index.html | 22 +- .../transparent-endpoint-injection/index.xml | 31 ++- 17 files changed, 626 insertions(+), 392 deletions(-) diff --git a/categories/dns/index.html b/categories/dns/index.html index 1d7d541773..3dfb680345 100644 --- a/categories/dns/index.html +++ b/categories/dns/index.html @@ -1,7 +1,7 @@ DNS | Docs

Category: DNS

All Categories
+| docs

Category: DNS

All Categories
\ No newline at end of file diff --git a/categories/dns/index.xml b/categories/dns/index.xml index a6eae73e8c..418e5d5737 100644 --- a/categories/dns/index.xml +++ b/categories/dns/index.xml @@ -1,14 +1,21 @@ Docs – DNS/categories/dns/Recent content in DNS on DocsHugo -- gohugo.ioUser-Guide: DNS Server/user-guide/tools/transparent-endpoint-injection/dns-server/Mon, 01 Jan 0001 00:00:00 +0000/user-guide/tools/transparent-endpoint-injection/dns-server/ -<p>LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> -<p>When the system starts up, the log output contains the IP address of the local DNS server. Typically, this address by default is either <code>0.0.0.0</code> (see example below) or <code>127.0.0.1</code> if LocalStack cannot bind to <code>0.0.0.0</code> due to a conflicting service.</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Starting DNS servers (tcp/udp port 53 on 0.0.0.0)... -</span></span></code></pre></div><h2 id="configuration">Configuration</h2> -<p>The DNS server can be configured to match your usecase using the <code>DNS_ADDRESS</code> environment variable.</p> -<p>To bind the server to <code>127.0.0.1</code>, you can set:</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span>127.0.0.1 -</span></span></code></pre></div><p>You can disable the DNS server (which will prevent LocalStack from binding port 53) using:</p> +<p>All versions of LocalStack include a DNS server that resolves the domain name <code>localhost.localstack.cloud</code> to the LocalStack container. +This enables seamless connectivity from your container to LocalStack, or from created compute resources like Lambda, ECS or EC2 to LocalStack. +In addition, LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> +<p>When the system starts up, the log output contains the IP address of the local DNS server. +If port 53 can be bound on the host, the LocalStack CLI will publish port 53 from the container to the host on IP address <code>127.0.0.1</code>. +Otherwise it will not publish port 53 to the host. +Regardless of whether the port can be bound or not, the DNS server is bound to address <code>0.0.0.0</code> of the LocalStack container so other containers within the same docker network can use the DNS server. +See the <a href="/references/network-troubleshooting/endpoint-url/#from-your-container">Network Troubleshooting guide</a> for more details.</p> +<h2 id="configuration">Configuration</h2> +<p>If you experience problems when running LocalStack and the DNS server is the issue, you can disable the DNS server using:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">0</span> -</span></span></code></pre></div><p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> +</span></span></code></pre></div> +<div class="alert alert-warning" role="alert"> +<h4 class="alert-heading">Warning</h4> +We do not recommend this configuration since this disables resolving <code>localhost.localstack.cloud</code> to the LocalStack container. +</div> +<p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_LOCAL_NAME_PATTERNS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;.*(ecr|lambda).*.amazonaws.com&#39;</span> </span></span></code></pre></div><p>Using this configuration, the LocalStack DNS server only redirects ECR and Lambda domains to LocalStack, and the rest will be resolved via <code>$DNS_SERVER</code>. This can be used for hybrid setups, where certain API calls (e.g., ECR, Lambda) target LocalStack, whereas other services will target real AWS.</p> <div class="alert alert-warning" role="alert"> @@ -125,6 +132,10 @@ LocalStack will not store or share any forwarded DNS requests, except maybe in t <p>If you rely on your local network&rsquo;s DNS, your router/DNS server might block requests due to the DNS Rebind Protection. This feature is enabled by default in pfSense, OPNSense, OpenWRT, AVM FritzBox, and potentially also other devices. Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).</p> +<div class="alert alert-primary" role="alert"> +<h4 class="alert-heading">Note</h4> +If you are using the LocalStack DNS server, DNS rebind protection should not cause any issues. +</div> <p>You can check if your DNS setup works correctly by resolving a subdomain of <code>localhost.localstack.cloud</code>: <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-text" data-lang="text"><span style="display:flex;"><span><span class="command-prefix">$ </span>dig test.localhost.localstack.cloud </span></span><span style="display:flex;"><span> @@ -148,7 +159,7 @@ Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (lik </span></span><span style="display:flex;"><span>;; WHEN: Fr Jän 14 11:23:12 CET 2022 </span></span><span style="display:flex;"><span>;; MSG SIZE rcvd: 90</span></span></code></pre></div> </p> -<p>If the the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. +<p>If the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. If not, please check the configuration of your router / DNS if the Rebind Protection is active or <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#system-dns-configuration">enable the LocalStack DNS on your system</a>.</p> <h2 id="customizing-internal-endpoint-resolution">Customizing internal endpoint resolution</h2> <p>The DNS name <code>localhost.localstack.cloud</code> (and any subdomains like <code>mybucket.s3.localhost.localstack.cloud</code>) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.</p> diff --git a/categories/localstack-pro/index.html b/categories/localstack-pro/index.html index a852526abe..9860ac8d9d 100644 --- a/categories/localstack-pro/index.html +++ b/categories/localstack-pro/index.html @@ -1,7 +1,7 @@ LocalStack Pro | Docs

Category: LocalStack Pro

All Categories
+| docs

Category: LocalStack Pro

All Categories
\ No newline at end of file diff --git a/categories/localstack-pro/index.xml b/categories/localstack-pro/index.xml index c2179bb5e8..2579badbb5 100644 --- a/categories/localstack-pro/index.xml +++ b/categories/localstack-pro/index.xml @@ -2474,16 +2474,23 @@ id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> <li><a href="https://github.com/localstack/localstack-pro-samples/tree/master/lambda-mounting-and-debugging">Lambda Code Mounting and Debugging (Python)</a></li> <li><a href="https://github.com/localstack/localstack-pro-samples/tree/master/sample-archive/spring-cloud-function-microservice">Spring Cloud Function on LocalStack (Kotlin JVM)</a></li> </ul>
User-Guide: DNS Server/user-guide/tools/transparent-endpoint-injection/dns-server/Mon, 01 Jan 0001 00:00:00 +0000/user-guide/tools/transparent-endpoint-injection/dns-server/ -<p>LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> -<p>When the system starts up, the log output contains the IP address of the local DNS server. Typically, this address by default is either <code>0.0.0.0</code> (see example below) or <code>127.0.0.1</code> if LocalStack cannot bind to <code>0.0.0.0</code> due to a conflicting service.</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Starting DNS servers (tcp/udp port 53 on 0.0.0.0)... -</span></span></code></pre></div><h2 id="configuration">Configuration</h2> -<p>The DNS server can be configured to match your usecase using the <code>DNS_ADDRESS</code> environment variable.</p> -<p>To bind the server to <code>127.0.0.1</code>, you can set:</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span>127.0.0.1 -</span></span></code></pre></div><p>You can disable the DNS server (which will prevent LocalStack from binding port 53) using:</p> +<p>All versions of LocalStack include a DNS server that resolves the domain name <code>localhost.localstack.cloud</code> to the LocalStack container. +This enables seamless connectivity from your container to LocalStack, or from created compute resources like Lambda, ECS or EC2 to LocalStack. +In addition, LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> +<p>When the system starts up, the log output contains the IP address of the local DNS server. +If port 53 can be bound on the host, the LocalStack CLI will publish port 53 from the container to the host on IP address <code>127.0.0.1</code>. +Otherwise it will not publish port 53 to the host. +Regardless of whether the port can be bound or not, the DNS server is bound to address <code>0.0.0.0</code> of the LocalStack container so other containers within the same docker network can use the DNS server. +See the <a href="/references/network-troubleshooting/endpoint-url/#from-your-container">Network Troubleshooting guide</a> for more details.</p> +<h2 id="configuration">Configuration</h2> +<p>If you experience problems when running LocalStack and the DNS server is the issue, you can disable the DNS server using:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">0</span> -</span></span></code></pre></div><p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> +</span></span></code></pre></div> +<div class="alert alert-warning" role="alert"> +<h4 class="alert-heading">Warning</h4> +We do not recommend this configuration since this disables resolving <code>localhost.localstack.cloud</code> to the LocalStack container. +</div> +<p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_LOCAL_NAME_PATTERNS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;.*(ecr|lambda).*.amazonaws.com&#39;</span> </span></span></code></pre></div><p>Using this configuration, the LocalStack DNS server only redirects ECR and Lambda domains to LocalStack, and the rest will be resolved via <code>$DNS_SERVER</code>. This can be used for hybrid setups, where certain API calls (e.g., ECR, Lambda) target LocalStack, whereas other services will target real AWS.</p> <div class="alert alert-warning" role="alert"> @@ -2600,6 +2607,10 @@ LocalStack will not store or share any forwarded DNS requests, except maybe in t <p>If you rely on your local network&rsquo;s DNS, your router/DNS server might block requests due to the DNS Rebind Protection. This feature is enabled by default in pfSense, OPNSense, OpenWRT, AVM FritzBox, and potentially also other devices. Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).</p> +<div class="alert alert-primary" role="alert"> +<h4 class="alert-heading">Note</h4> +If you are using the LocalStack DNS server, DNS rebind protection should not cause any issues. +</div> <p>You can check if your DNS setup works correctly by resolving a subdomain of <code>localhost.localstack.cloud</code>: <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-text" data-lang="text"><span style="display:flex;"><span><span class="command-prefix">$ </span>dig test.localhost.localstack.cloud </span></span><span style="display:flex;"><span> @@ -2623,7 +2634,7 @@ Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (lik </span></span><span style="display:flex;"><span>;; WHEN: Fr Jän 14 11:23:12 CET 2022 </span></span><span style="display:flex;"><span>;; MSG SIZE rcvd: 90</span></span></code></pre></div> </p> -<p>If the the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. +<p>If the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. If not, please check the configuration of your router / DNS if the Rebind Protection is active or <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#system-dns-configuration">enable the LocalStack DNS on your system</a>.</p> <h2 id="customizing-internal-endpoint-resolution">Customizing internal endpoint resolution</h2> <p>The DNS name <code>localhost.localstack.cloud</code> (and any subdomains like <code>mybucket.s3.localhost.localstack.cloud</code>) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.</p> diff --git a/categories/tools/index.html b/categories/tools/index.html index a22c8876b2..e1d1ad8243 100644 --- a/categories/tools/index.html +++ b/categories/tools/index.html @@ -1,7 +1,7 @@ Tools | Docs

Category: Tools

All Categories
+| docs

Category: Tools

All Categories
\ No newline at end of file diff --git a/categories/tools/index.xml b/categories/tools/index.xml index 78affee410..b0d8d1cc2e 100644 --- a/categories/tools/index.xml +++ b/categories/tools/index.xml @@ -205,16 +205,23 @@ Similar to the <code>save</code> command, the usage of the Cloud Pod&r </span></span><span style="display:flex;"><span> -n, --name TEXT Name of the Cloud Pod <span style="color:#ce5c00;font-weight:bold">[</span>required<span style="color:#ce5c00;font-weight:bold">]</span> </span></span><span style="display:flex;"><span> --help Show this message and exit. </span></span></code></pre></div>
User-Guide: DNS Server/user-guide/tools/transparent-endpoint-injection/dns-server/Mon, 01 Jan 0001 00:00:00 +0000/user-guide/tools/transparent-endpoint-injection/dns-server/ -<p>LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> -<p>When the system starts up, the log output contains the IP address of the local DNS server. Typically, this address by default is either <code>0.0.0.0</code> (see example below) or <code>127.0.0.1</code> if LocalStack cannot bind to <code>0.0.0.0</code> due to a conflicting service.</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Starting DNS servers (tcp/udp port 53 on 0.0.0.0)... -</span></span></code></pre></div><h2 id="configuration">Configuration</h2> -<p>The DNS server can be configured to match your usecase using the <code>DNS_ADDRESS</code> environment variable.</p> -<p>To bind the server to <code>127.0.0.1</code>, you can set:</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span>127.0.0.1 -</span></span></code></pre></div><p>You can disable the DNS server (which will prevent LocalStack from binding port 53) using:</p> +<p>All versions of LocalStack include a DNS server that resolves the domain name <code>localhost.localstack.cloud</code> to the LocalStack container. +This enables seamless connectivity from your container to LocalStack, or from created compute resources like Lambda, ECS or EC2 to LocalStack. +In addition, LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> +<p>When the system starts up, the log output contains the IP address of the local DNS server. +If port 53 can be bound on the host, the LocalStack CLI will publish port 53 from the container to the host on IP address <code>127.0.0.1</code>. +Otherwise it will not publish port 53 to the host. +Regardless of whether the port can be bound or not, the DNS server is bound to address <code>0.0.0.0</code> of the LocalStack container so other containers within the same docker network can use the DNS server. +See the <a href="/references/network-troubleshooting/endpoint-url/#from-your-container">Network Troubleshooting guide</a> for more details.</p> +<h2 id="configuration">Configuration</h2> +<p>If you experience problems when running LocalStack and the DNS server is the issue, you can disable the DNS server using:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">0</span> -</span></span></code></pre></div><p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> +</span></span></code></pre></div> +<div class="alert alert-warning" role="alert"> +<h4 class="alert-heading">Warning</h4> +We do not recommend this configuration since this disables resolving <code>localhost.localstack.cloud</code> to the LocalStack container. +</div> +<p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_LOCAL_NAME_PATTERNS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;.*(ecr|lambda).*.amazonaws.com&#39;</span> </span></span></code></pre></div><p>Using this configuration, the LocalStack DNS server only redirects ECR and Lambda domains to LocalStack, and the rest will be resolved via <code>$DNS_SERVER</code>. This can be used for hybrid setups, where certain API calls (e.g., ECR, Lambda) target LocalStack, whereas other services will target real AWS.</p> <div class="alert alert-warning" role="alert"> @@ -331,6 +338,10 @@ LocalStack will not store or share any forwarded DNS requests, except maybe in t <p>If you rely on your local network&rsquo;s DNS, your router/DNS server might block requests due to the DNS Rebind Protection. This feature is enabled by default in pfSense, OPNSense, OpenWRT, AVM FritzBox, and potentially also other devices. Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).</p> +<div class="alert alert-primary" role="alert"> +<h4 class="alert-heading">Note</h4> +If you are using the LocalStack DNS server, DNS rebind protection should not cause any issues. +</div> <p>You can check if your DNS setup works correctly by resolving a subdomain of <code>localhost.localstack.cloud</code>: <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-text" data-lang="text"><span style="display:flex;"><span><span class="command-prefix">$ </span>dig test.localhost.localstack.cloud </span></span><span style="display:flex;"><span> @@ -354,7 +365,7 @@ Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (lik </span></span><span style="display:flex;"><span>;; WHEN: Fr Jän 14 11:23:12 CET 2022 </span></span><span style="display:flex;"><span>;; MSG SIZE rcvd: 90</span></span></code></pre></div> </p> -<p>If the the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. +<p>If the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. If not, please check the configuration of your router / DNS if the Rebind Protection is active or <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#system-dns-configuration">enable the LocalStack DNS on your system</a>.</p> <h2 id="customizing-internal-endpoint-resolution">Customizing internal endpoint resolution</h2> <p>The DNS name <code>localhost.localstack.cloud</code> (and any subdomains like <code>mybucket.s3.localhost.localstack.cloud</code>) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.</p> diff --git a/getting-started/faq/index.html b/getting-started/faq/index.html index 7582cb0015..1fed9836d8 100644 --- a/getting-started/faq/index.html +++ b/getting-started/faq/index.html @@ -1,7 +1,7 @@ Frequently Asked Questions | Docs

Frequently Asked Questions

This page answers the frequently asked questions about LocalStack Pro, Enterprise, and Community Editions.

LocalStack Core FAQs

How to update my LocalStack CLI?

If the LocalStack CLI version is heavily outdated, it might lead to issues with container startup and debug commands. If you are using an older version of LocalStack, you can update it by running the following command:

pip install --upgrade localstack localstack-ext

If you are running a newer version of LocalStack, you can check the version by running the following command:

localstack update localstack-cli

localhost.localstack.cloud is the recommended endpoint - especially for S3, in order to enable host-based bucket endpoints. For most of the other services, it is fine to use localhost:4566. Users can rely on the localhost.localstack.cloud domain to be publicly resolvable, and we also publish an SSL certificate that is automatically used inside LocalStack, in order to enable HTTPS endpoints with valid certificates.

Across our docs, we use localhost:4566 instead of localhost.localstack.cloud, to provide a fallback option to users. The primary reason being that some users are behind a corporate firewall or an internet service provider that does not allow resolving localhost.localstack.cloud properly.

How should I use the latest LocalStack Docker images?

To use the latest LocalStack Docker images, you either run docker pull localstack/localstack:latest or use the docker-compose pull if the image is set to localstack/localstack:latest. You can also specify a particular digest to make sure you are using the correct image, like this: localstack/localstack:latest@sha256:f803cc657843c6c7acf2631d15600783c3593e496fba418415afc87680d9d5bc.

You can also use the our diagnose endpoint (http://localhost:4566/_localstack/diagnose) to get the specific image hashes and compare them with the current (latest) images on Docker Hub. + Create project issue

Table of Contents

Frequently Asked Questions

This page answers the frequently asked questions about LocalStack Pro, Enterprise, and Community Editions.

LocalStack Core FAQs

How to update my LocalStack CLI?

If the LocalStack CLI version is heavily outdated, it might lead to issues with container startup and debug commands. If you are using an older version of LocalStack, you can update it by running the following command:

pip install --upgrade localstack localstack-ext

If you are running a newer version of LocalStack, you can check the version by running the following command:

localstack update localstack-cli

localhost.localstack.cloud is the recommended endpoint - especially for S3, in order to enable host-based bucket endpoints.

  • When using this domain within LocalStack compute environments like Lambda, ECS or EC2, this domain name resolves to the LocalStack container via our DNS server available in version 2.3.
  • By configuring your environment, your applications can also use localhost.localstack.cloud to resolve to the LocalStack container via our DNS server.
  • In addition, we also publish an SSL certificate that is automatically used inside LocalStack, in order to enable HTTPS endpoints with valid certificates.

Across our docs, we use localhost:4566 instead of localhost.localstack.cloud, to provide a fallback option to users. +The primary reason being that some users are behind a corporate firewall or an internet service provider that does not allow resolving localhost.localstack.cloud properly.

How should I use the latest LocalStack Docker images?

To use the latest LocalStack Docker images, you either run docker pull localstack/localstack:latest or use the docker-compose pull if the image is set to localstack/localstack:latest. You can also specify a particular digest to make sure you are using the correct image, like this: localstack/localstack:latest@sha256:f803cc657843c6c7acf2631d15600783c3593e496fba418415afc87680d9d5bc.

You can also use the our diagnose endpoint (http://localhost:4566/_localstack/diagnose) to get the specific image hashes and compare them with the current (latest) images on Docker Hub. The diagnose endpoint is only available if you run LocalStack with DEBUG=1.

How can I access LocalStack from an alternative computer?

You can access LocalStack from an alternative computer, by exposing port 4566 to the public network interface (0.0.0.0 instead of 127.0.0.1) in your docker-compose.yml configuration. However, we do not recommend using this setup - for security reasons, as it exposes your local computer to potential attacks from the outside world.

How to fix LocalStack CLI (Python) UTF-8 encoding issue under Windows?

If you are using LocalStack CLI under Windows, you might run into encoding issues. To fix this, set the following environment variables:
Set the system locale (language for non-Unicode programs) to UTF-8 to avoid Unicode errors.

Follow these steps:

  • Open the Control Panel.
  • Go to “Clock and Region” or “Region and Language.”
  • Click on the “Administrative” tab.
  • Click on the “Change system locale” button.
  • Select “Beta: Use Unicode UTF-8 for worldwide language support” and click “OK.”
  • Restart your computer to apply the changes.

If you would like to keep the system locale as it is, you can mitigate the issue by using the command localstack --no-banner.

How do I resolve connection issues with proxy blocking access to LocalStack’s BigData image?

A company proxy can lead to connection issues. To allow access to the localstack/bigdata image, use the following Docker configuration in your docker-compose.yml file:

...
 environment: 
 - HTTP_PROXY = 
@@ -331,7 +332,7 @@
 

LocalStack cannot contact our API to perform the license activation. Confirm with your network administrator that no policies block the connection to our backend.

What should I do if I cannot resolve api.localstack.cloud?

Log output like the following indicates that your machine cannot resolve the domain of the LocalStack API.

WARNING:localstack_ext.bootstrap.licensing: Error activating API key "abc..."(10):
 ...
 socket.gaierror: [Errno -3] Temporary failure in name resolution
-

Confirm this by using a tool like dig:

$ dig api.localstack.cloud

If the result has some other status than status: NOERROR, your machine cannot resolve this domain.

Some corporate DNS servers might filter requests to certain domains. Contact your network administrator to safelist localstack.cloud domains.

How does LocalStack Pro handle security patches and bug fixes?

We take security seriously and respond to any emergency vulnerabilities as soon as possible. Our cloud provider (AWS) handles most of the infrastructure maintenance for us. We also use Infrastructure-as-Code scripts to ensure that our infrastructure configuration is consistent and recoverable in case of a disaster.

How does LocalStack ensure the security of its containers and images?

Our software assets are regularly checked for vulnerabilities, such as code issues and outdated dependencies. We use Dependabot to scan our GitHub repositories, and Trivy as well as Snyk (among other security tools) to scan our Docker images.

Do you have any penetration test reports or SOC2 reports that demonstrate your security compliance?

We conduct regular penetration tests and audits to ensure our services are secure and compliant. If you want to access our security documentation and test reports, please contact us at info@localstack.cloud, and we will be happy to share them with you.

Does LocalStack provide offline capabilities?

LocalStack Community and Pro/Team provide limited offline capabilities. To use a fully-fledged offline mode, you may use LocalStack Enterprise, which can be used in air-gapped environments. The regular LocalStack Docker images may need to download additional dependencies for specific services (e.g., Elasticsearch, Big Data services) at runtime, while the offline image bakes all dependencies into the image, along with any other configuration that you might need. For more details, please take a look at our Enterprise offering.


Last modified September 18, 2023: Enhance docs for xray (#823) (f02f82d76)
+

Confirm this by using a tool like dig:

$ dig api.localstack.cloud

If the result has some other status than status: NOERROR, your machine cannot resolve this domain.

Some corporate DNS servers might filter requests to certain domains. Contact your network administrator to safelist localstack.cloud domains.

How does LocalStack Pro handle security patches and bug fixes?

We take security seriously and respond to any emergency vulnerabilities as soon as possible. Our cloud provider (AWS) handles most of the infrastructure maintenance for us. We also use Infrastructure-as-Code scripts to ensure that our infrastructure configuration is consistent and recoverable in case of a disaster.

How does LocalStack ensure the security of its containers and images?

Our software assets are regularly checked for vulnerabilities, such as code issues and outdated dependencies. We use Dependabot to scan our GitHub repositories, and Trivy as well as Snyk (among other security tools) to scan our Docker images.

Do you have any penetration test reports or SOC2 reports that demonstrate your security compliance?

We conduct regular penetration tests and audits to ensure our services are secure and compliant. If you want to access our security documentation and test reports, please contact us at info@localstack.cloud, and we will be happy to share them with you.

Does LocalStack provide offline capabilities?

LocalStack Community and Pro/Team provide limited offline capabilities. To use a fully-fledged offline mode, you may use LocalStack Enterprise, which can be used in air-gapped environments. The regular LocalStack Docker images may need to download additional dependencies for specific services (e.g., Elasticsearch, Big Data services) at runtime, while the offline image bakes all dependencies into the image, along with any other configuration that you might need. For more details, please take a look at our Enterprise offering.


\ No newline at end of file diff --git a/getting-started/installation/index.html b/getting-started/installation/index.html index 39091e53f7..3546d65a39 100644 --- a/getting-started/installation/index.html +++ b/getting-started/installation/index.html @@ -1,7 +1,7 @@ Installation | Docs

Accessing a resource created by LocalStack

If you have created a resource using LocalStack, such as an OpenSearch cluster or RDS database, you may need to access it from your application. Typically, these resources are accessible through a URL or a hostname provided by LocalStack. While the environment variable HOSTNAME_EXTERNAL can often control the returned hostname, this approach may only work for some cases. This guide will explore different scenarios and provide detailed instructions on accessing resources created by LocalStack under different scenarios.

From your host

For example, suppose you have created an OpenSearch cluster using LocalStack and want to access it from the same computer. In such a case, you can set the HOSTNAME_EXTERNAL environment variable to specify the desired hostname that will be returned. Check out the service-specific documentation for more details.

From a container LocalStack created

Check out our documentation while using the endpoint URL.

The Lambda service in LocalStack also supports the HOSTNAME_FROM_LAMBDA environment variable, which can be handy if LocalStack is reachable through a specific hostname. Suppose you’re running LocalStack in a user-defined network using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. In that case, you can set the HOSTNAME_FROM_LAMBDA environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack.

From your container

Check out our documentation on using the endpoint URL.

From a separate host

LocalStack must listen to the address of the host, or 0.0.0.0.

Check out our FAQ article on accessing LocalStack from another computer.


+ Create project issue
Table of Contents

Accessing a resource created by LocalStack

If you have created a resource using LocalStack, such as an OpenSearch cluster or RDS database, you may need to access it from your application. Typically, these resources are accessible through a URL or a hostname provided by LocalStack. While the environment variable HOSTNAME_EXTERNAL can often control the returned hostname, this approach may only work for some cases. This guide will explore different scenarios and provide detailed instructions on accessing resources created by LocalStack under different scenarios.

From your host

For example, suppose you have created an OpenSearch cluster using LocalStack and want to access it from the same computer. In such a case, you can set the HOSTNAME_EXTERNAL environment variable to specify the desired hostname that will be returned. Check out the service-specific documentation for more details.

From a container LocalStack created

Check out our documentation while using the endpoint URL.

For LocalStack versions before 2.3.0 +The Lambda service in LocalStack also supports the HOSTNAME_FROM_LAMBDA environment variable, which can be handy if LocalStack is reachable through a specific hostname. +Suppose you're running LocalStack in a user-defined network using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. +In that case, you can set the HOSTNAME_FROM_LAMBDA environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack.

From your container

Check out our documentation on using the endpoint URL.

From a separate host

LocalStack must listen to the address of the host, or 0.0.0.0.

Check out our FAQ article on accessing LocalStack from another computer.


\ No newline at end of file diff --git a/references/network-troubleshooting/endpoint-url/index.html b/references/network-troubleshooting/endpoint-url/index.html index fa698ac57b..36c34c782c 100644 --- a/references/network-troubleshooting/endpoint-url/index.html +++ b/references/network-troubleshooting/endpoint-url/index.html @@ -279,7 +279,11 @@
  • Accessing LocalStack via the endpoint URL

    This documentation provides step-by-step guidance on how to access LocalStack services via the endpoint URL and troubleshoot common issues.

    From the same computer

    Suppose you have LocalStack installed on your machine and want to access it using the AWS CLI. To connect, you must expose port 4566 from your LocalStack instance and connect to localhost or a domain name that points to localhost. While the LocalStack CLI does this automatically, when running the Docker container directly or with docker compose, you must configure it manually. Check out the getting started documentation for more information.

    You can also use the EDGE_PORT configuration variable to change the exposed port if necessary.

    From a container LocalStack created

    Suppose your code is running inside an ECS container that LocalStack has created. To enable access to the LocalStack instance, it’s advisable to start LocalStack in a user-defined network, and then set the MAIN_DOCKER_NETWORK environment variable to this network’s name. This allows the code running inside the container to access the LocalStack instance using its hostname. For example:

    # create the network
    + Create project issue
    Table of Contents

    Accessing LocalStack via the endpoint URL

    This documentation provides step-by-step guidance on how to access LocalStack services via the endpoint URL and troubleshoot common issues.

    From the same computer

    Suppose you have LocalStack installed on your machine and want to access it using the AWS CLI. To connect, you must expose port 4566 from your LocalStack instance and connect to localhost or a domain name that points to localhost. While the LocalStack CLI does this automatically, when running the Docker container directly or with docker compose, you must configure it manually. Check out the getting started documentation for more information.

    You can also use the EDGE_PORT configuration variable to change the exposed port if necessary.

    From a container LocalStack created

    Suppose your code is running inside an ECS container that LocalStack has created.

    The LocalStack instance is available at the domain localhost.localstack.cloud. +All subdomains of localhost.localstack.cloud also resolve to the LocalStack instance, e.g. API Gateway default URLs.

    For LocalStack versions before 2.3.0 +To enable access to the LocalStack instance, it's advisable to start LocalStack in a [user-defined network](https://docs.docker.com/network/bridge/), and then set the `MAIN_DOCKER_NETWORK` environment variable to this network's name. +This allows the code running inside the container to access the LocalStack instance using its hostname. +For example:
    # create the network
     docker network create my-network
     # launch localstack
     MAIN_DOCKER_NETWORK=my-network DOCKER_FLAGS="--network my-network" localstack start
    @@ -302,19 +306,82 @@
     
     # Your application code can then use
     # http://localstack:4566 for the
    -# endpoint url

    From your container

    Suppose you’re accessing AWS resources such as S3 in LocalStack by running your application code in a container. To facilitate access to LocalStack from within the container, it’s recommended to start LocalStack in a user-defined network and set the MAIN_DOCKER_NETWORK environment variable to the network’s name. Doing so enables the containerized code to connect to the LocalStack instance using its hostname. For instance:

    # create the network
    +# endpoint url

    From your container

    Suppose you’re accessing AWS resources such as S3 in LocalStack by running your application code in a container. +Your application container should be configured to use LocalStack as its DNS server. +Once this is done, the domain name localhost.localstack.cloud will resolve to the LocalStack container. +All subdomains of localhost.localstack.cloud will also resolve to the LocalStack instance, e.g. API Gateway default URLs.

    To configure your application container:

    • add a user-managed docker network;
    • either determine your LocalStack container IP, or configure your LocalStack container to have a fixed known IP address;
    • set the DNS server of your application container to the IP address of the LocalStack container.
    # start localstack
    +localstack start -d --network ls
    +localstack wait
    +
    +# get the ip address of the LocalStack container
    +docker inspect localstack_main | \
    +	jq -r '.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress'
    +# prints 172.27.0.2
    +
    +# run your application container
    +docker run --rm -it --dns 172.27.0.2 --network ls <arguments> <image name>
    # start localstack
    +docker network create ls
    +docker run --rm -it --network ls --name localstack_main <other flags> localstack/localstack[-pro]
    +
    +# get the ip address of the LocalStack container
    +docker inspect localstack_main | \
    +	jq -r '.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress'
    +# prints 172.27.0.2
    +
    +# run your application container
    +docker run --rm -it --dns 172.27.0.2 --network ls <arguments> <image name>
    version: "3.8"
    +
    +services:
    +  localstack:
    +    container_name: "${LOCALSTACK_DOCKER_NAME-localstack_main}"
    +    image: localstack/localstack
    +    ports:
    +      # Now only required if you need to access LocalStack from the host
    +      - "127.0.0.1:4566:4566"            
    +      # Now only required if you need to access LocalStack from the host
    +      - "127.0.0.1:4510-4559:4510-4559"
    +    environment:
    +      - DEBUG=${DEBUG-}
    +      - DOCKER_HOST=unix:///var/run/docker.sock
    +    volumes:
    +      - "${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack"
    +      - "/var/run/docker.sock:/var/run/docker.sock"
    +    networks:
    +      ls:
    +        # Set the container IP address in the 10.0.2.0/24 subnet
    +        ipv4_address: 10.0.2.20
    +
    +  application:
    +    image: ghcr.io/localstack/localstack-docker-debug:main
    +    entrypoint: ""
    +    command: ["sleep", "infinity"]
    +    dns:
    +      # Set the DNS server to be the LocalStack container
    +      - 10.0.2.20
    +    networks:
    +      - ls
    +
    +networks:
    +  ls:
    +    ipam:
    +      config:
    +        # Specify the subnet range for IP address allocation
    +        - subnet: 10.0.2.0/24
    For LocalStack versions before 2.3.0 +To facilitate access to LocalStack from within the container, it's recommended to start LocalStack in a user-defined network and set the MAIN_DOCKER_NETWORK environment variable to the network's name. +Doing so enables the containerized code to connect to the LocalStack instance using its hostname. +For instance:
    # create the network
     docker network create my-network
     # launch localstack
     DOCKER_FLAGS="--network my-network" localstack start
     # launch your container
     docker run --rm it --network my-network <image name>
    -# then your code can access localstack at its container name (by default: localstack_main)
    # create the network
    +# then your code can access localstack at its container name (by default: localstack_main)
    # create the network
     docker network create my-network
     # launch localstack
     docker run --rm -it --network my-network <other flags> localstack/localstack[-pro]
     # launch your container
     docker run --rm it --network my-network <image name>
    -# then your code can access localstack at its container name (by default: localstack_main)
    services:
    +# then your code can access localstack at its container name (by default: localstack_main)
    services:
       localstack:
         # ... other configuration here
         networks:
    @@ -329,51 +396,14 @@
     
     # Your application code can then use
     # http://localstack:4566 for the
    -# endpoint url

    Wildcard DNS access

    Certain resources created by LocalStack can be accessed using virtual host addressing. For example, an S3 bucket can be accessed at the following address format: <bucket>.s3.<region>.localhost.localstack.cloud.

    By default, the LocalStack container cannot be reached from containers running in your Docker network at the above address. This is because any subdomains of localhost.localstack.cloud is resolved to 127.0.0.1 within the Docker network.

    If Docker supported wildcard DNS configuration with --network-alias (Docker CLI) or aliases: (docker-compose), this could be solved with Docker configuration alone.

    To map more complex domain names to the LocalStack container within the Docker network, the LocalStack container can be utilized as a DNS server. However, this approach requires additional configuration steps.

    Specifically, the LocalStack container must have a static IP address within the network. To set up the LocalStack container as a DNS server, a static IP address must be assigned within the Docker network.

    Here is an example of how you can set it up:

    # Create the network
    -docker network create my-network --subnet <ip address range CIDR>
    -
    -# Start LocalStack
    -docker run --rm -it \
    -    --network my-network \
    -    --ip 10.0.2.20 \
    -    -e DNS_RESOLVE_IP=10.0.2.20 \
    -    <other flags> \
    -    localstack/localstack-pro
    -
    -# Start your application container
    -docker run --rm -it \
    -    --dns 10.0.2.20 \
    -    --network my-network \
    -    <args>
    -# Your code can now access LocalStack at <subdomain>.localhost.localstack.cloud
    services:
    -  localstack:
    -    # ... other configuration here
    -    environment:
    -      - DNS_RESOLVE_IP=10.0.2.20
    -    networks:
    -      ls:
    -        ipv4_address: 10.0.2.20
    -
    -  application:
    -    # ... other configuration here
    -    dns:
    -      - 10.0.2.20
    -    networks:
    -      ls:
    -
    -networks:
    -  ls:
    -    name: ls
    -    ipam:
    -      config:
    -        - subnet: 10.0.2.0/24

    To access LocalStack resources from the application container, you can make requests to the following address format: <bucket-name>.s3.<region>.localhost.localstack.cloud:4566/<key>. This will ensure that the requests reach the LocalStack container.

    From a separate host

    LocalStack must listen to the address of the host, or 0.0.0.0.

    EDGE_BIND_HOST="0.0.0.0" localstack start
    # this command exposes ports on all interfaces by default
    -docker run --rm -it -p 4566:4566 <additional arguments> localstack
    services:
    +# endpoint url

    Wildcard DNS access

    LocalStack newer than version 2.3.0 supports wildcard DNS access by default. +Please update your LocalStack container and see the instructions.

    From a separate host

    LocalStack must listen to the address of the host, or 0.0.0.0.

    EDGE_BIND_HOST="0.0.0.0" localstack start
    # this command exposes ports on all interfaces by default
    +docker run --rm -it -p 4566:4566 <additional arguments> localstack
    services:
       localstack:
         # ... other configuration here
         ports:
           - "4566:4566"
    -      # ... other ports

    Check out our FAQ article on accessing LocalStack from another computer.


    + # ... other ports

    Check out our FAQ article on accessing LocalStack from another computer.


    \ No newline at end of file diff --git a/references/network-troubleshooting/index.xml b/references/network-troubleshooting/index.xml index 6f971a978a..48f1c396bd 100644 --- a/references/network-troubleshooting/index.xml +++ b/references/network-troubleshooting/index.xml @@ -14,7 +14,14 @@ Additionally, if you bind a domain name to <code>localhost</code>, ensure <figure> <img src="../images/4.svg" width="400"/> </figure> -<p>Suppose your code is running inside an ECS container that LocalStack has created. To enable access to the LocalStack instance, it&rsquo;s advisable to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a>, and then set the <code>MAIN_DOCKER_NETWORK</code> environment variable to this network&rsquo;s name. This allows the code running inside the container to access the LocalStack instance using its hostname. For example:</p> +<p>Suppose your code is running inside an ECS container that LocalStack has created.</p> +<p>The LocalStack instance is available at the domain <code>localhost.localstack.cloud</code>. +All subdomains of <code>localhost.localstack.cloud</code> also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To enable access to the LocalStack instance, it's advisable to start LocalStack in a [user-defined network](https://docs.docker.com/network/bridge/), and then set the `MAIN_DOCKER_NETWORK` environment variable to this network's name. +This allows the code running inside the container to access the LocalStack instance using its hostname. +For example: <ul class="nav nav-tabs" id="tabs-5" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -73,11 +80,21 @@ id="tabs-05-02" role="tabpanel" aria-labelled-by="tabs-05-02-tab"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># endpoint url</span></span></span></code></pre></div> </div> </div> +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/7.svg" width="400"/> </figure> -<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. To facilitate access to LocalStack from within the container, it&rsquo;s recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the MAIN_DOCKER_NETWORK environment variable to the network&rsquo;s name. Doing so enables the containerized code to connect to the LocalStack instance using its hostname. For instance:</p> +<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. +Your application container should be configured to use LocalStack as its DNS server. +Once this is done, the domain name <code>localhost.localstack.cloud</code> will resolve to the LocalStack container. +All subdomains of <code>localhost.localstack.cloud</code> will also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<p>To configure your application container:</p> +<ul> +<li>add a user-managed docker network;</li> +<li>either determine your LocalStack container IP, or configure your LocalStack container to have a fixed known IP address;</li> +<li>set the DNS server of your application container to the IP address of the LocalStack container.</li> +</ul> <ul class="nav nav-tabs" id="tabs-7" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -102,6 +119,103 @@ docker-compose.yml <div class="tab-content" id="tabs-7-content"> <div class="tab-pane fade show active" id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>localstack start -d --network ls +</span></span><span style="display:flex;"><span>localstack <span style="color:#204a87">wait</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>docker network create ls +</span></span><span style="display:flex;"><span>docker run --rm -it --network ls --name localstack_main &lt;other flags&gt; localstack/localstack<span style="color:#ce5c00;font-weight:bold">[</span>-pro<span style="color:#ce5c00;font-weight:bold">]</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">version</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;3.8&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">container_name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${LOCALSTACK_DOCKER_NAME-localstack_main}&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">localstack/localstack</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4566:4566&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4510-4559:4510-4559&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DEBUG=${DEBUG-}</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DOCKER_HOST=unix:///var/run/docker.sock</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">volumes</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;/var/run/docker.sock:/var/run/docker.sock&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the container IP address in the 10.0.2.0/24 subnet</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ghcr.io/localstack/localstack-docker-debug:main</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">entrypoint</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">command</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;sleep&#34;</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;infinity&#34;</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the DNS server to be the LocalStack container</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Specify the subnet range for IP address allocation</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> +</div> +</div> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To facilitate access to LocalStack from within the container, it's recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the <code>MAIN_DOCKER_NETWORK</code> environment variable to the network's name. +Doing so enables the containerized code to connect to the LocalStack instance using its hostname. +For instance: +<ul class="nav nav-tabs" id="tabs-8" role="tablist"> +<li class="nav-item"> +<a class="nav-link active persistLang-bash" +id="tabs-08-00-tab" data-toggle="tab" href="#tabs-08-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-08-00" aria-selected="false"> +CLI +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-01-tab" data-toggle="tab" href="#tabs-08-01" role="tab" +aria-controls="tabs-08-01" aria-selected="false"> +Docker +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-02-tab" data-toggle="tab" href="#tabs-08-02" role="tab" +aria-controls="tabs-08-02" aria-selected="false"> +docker-compose.yml +</a> +</li> +</ul> +<div class="tab-content" id="tabs-8-content"> +<div class="tab-pane fade show active" +id="tabs-08-00" role="tabpanel" aria-labelled-by="tabs-08-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -111,7 +225,7 @@ id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +id="tabs-08-01" role="tabpanel" aria-labelled-by="tabs-08-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -121,7 +235,7 @@ id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +id="tabs-08-02" role="tabpanel" aria-labelled-by="tabs-08-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yml" data-lang="yml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -141,122 +255,47 @@ id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> </div> </div> <h3 id="wildcard-dns-access">Wildcard DNS access</h3> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -The Wildcard DNS access feature is part of <a href="https://localstack.cloud/pricing">LocalStack&rsquo;s Pro/Team offering</a> and requires an API key to be configured. -</div> -<p>Certain resources created by LocalStack can be accessed using virtual host addressing. For example, an S3 bucket can be accessed at the following address format: <code>&lt;bucket&gt;.s3.&lt;region&gt;.localhost.localstack.cloud</code>.</p> -<p>By default, the LocalStack container cannot be reached from containers running in your Docker network at the above address. This is because any subdomains of <code>localhost.localstack.cloud</code> is resolved to <code>127.0.0.1</code> within the Docker network.</p> -<p>If Docker supported wildcard DNS configuration with <code>--network-alias</code> (Docker CLI) or <code>aliases:</code> (<code>docker-compose</code>), this could be solved with Docker configuration alone.</p> -<p>To map more complex domain names to the LocalStack container within the Docker network, the LocalStack container can be utilized as a DNS server. However, this approach requires additional configuration steps.</p> -<p>Specifically, the LocalStack container must have a static IP address within the network. To set up the LocalStack container as a DNS server, a static IP address must be assigned within the Docker network.</p> -<p>Here is an example of how you can set it up:</p> -<ul class="nav nav-tabs" id="tabs-9" role="tablist"> -<li class="nav-item"> -<a class="nav-link active persistLang-bash" -id="tabs-09-00-tab" data-toggle="tab" href="#tabs-09-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-09-00" aria-selected="false"> -Docker -</a> -</li><li class="nav-item"> -<a class="nav-link persistLang-yaml" -id="tabs-09-01-tab" data-toggle="tab" href="#tabs-09-01" role="tab" -onclick="persistLang(&#34;yaml&#34;);"aria-controls="tabs-09-01" aria-selected="false"> -docker-compose.yml -</a> -</li> -</ul> -<div class="tab-content" id="tabs-9-content"> -<div class="tab-pane fade show active" -id="tabs-09-00" role="tabpanel" aria-labelled-by="tabs-09-00-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Create the network</span> -</span></span><span style="display:flex;"><span>docker network create my-network --subnet &lt;ip address range CIDR&gt; -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start LocalStack</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --ip 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> -e <span style="color:#000">DNS_RESOLVE_IP</span><span style="color:#ce5c00;font-weight:bold">=</span>10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;other flags&gt; <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> localstack/localstack-pro -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start your application container</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --dns 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;args&gt; -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Your code can now access LocalStack at &lt;subdomain&gt;.localhost.localstack.cloud</span></span></span></code></pre></div> -</div> -<div class="tab-pane fade" -id="tabs-09-01" role="tabpanel" aria-labelled-by="tabs-09-01-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DNS_RESOLVE_IP=10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> -</div> -</div> -<p>To access LocalStack resources from the <em>application</em> container, you can make requests to the following address format: <code>&lt;bucket-name&gt;.s3.&lt;region&gt;.localhost.localstack.cloud:4566/&lt;key&gt;</code>. This will ensure that the requests reach the LocalStack container.</p> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -For optimal configuration, we recommend using a private IP address range, such as 10.0.0.0/8, for your containers. This helps avoid conflicts with IP addresses assigned by Docker. -Additionally, it&rsquo;s advisable to avoid using <code>X.X.X.1</code> as an IP address, as it is commonly reserved for the host within that subnet. -</div> +<p>LocalStack newer than version 2.3.0 supports wildcard DNS access by default. +Please update your LocalStack container and see the <a href="#from-your-container">instructions</a>.</p> +</details> <h2 id="from-a-separate-host">From a separate host</h2> <figure> <img src="../images/10.svg" width="400"/> </figure> <p>LocalStack must listen to the address of the host, or <code>0.0.0.0</code>.</p> -<ul class="nav nav-tabs" id="tabs-12" role="tablist"> +<ul class="nav nav-tabs" id="tabs-11" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" -id="tabs-12-00-tab" data-toggle="tab" href="#tabs-12-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-12-00" aria-selected="false"> +id="tabs-11-00-tab" data-toggle="tab" href="#tabs-11-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-11-00" aria-selected="false"> CLI </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-01-tab" data-toggle="tab" href="#tabs-12-01" role="tab" -aria-controls="tabs-12-01" aria-selected="false"> +id="tabs-11-01-tab" data-toggle="tab" href="#tabs-11-01" role="tab" +aria-controls="tabs-11-01" aria-selected="false"> Docker </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-02-tab" data-toggle="tab" href="#tabs-12-02" role="tab" -aria-controls="tabs-12-02" aria-selected="false"> +id="tabs-11-02-tab" data-toggle="tab" href="#tabs-11-02" role="tab" +aria-controls="tabs-11-02" aria-selected="false"> docker-compose </a> </li> </ul> -<div class="tab-content" id="tabs-12-content"> +<div class="tab-content" id="tabs-11-content"> <div class="tab-pane fade show active" -id="tabs-12-00" role="tabpanel" aria-labelled-by="tabs-12-00-tab"> +id="tabs-11-00" role="tabpanel" aria-labelled-by="tabs-11-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">EDGE_BIND_HOST</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#34;0.0.0.0&#34;</span> localstack start</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-01" role="tabpanel" aria-labelled-by="tabs-12-01-tab"> +id="tabs-11-01" role="tabpanel" aria-labelled-by="tabs-11-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># this command exposes ports on all interfaces by default</span> </span></span><span style="display:flex;"><span>docker run --rm -it -p 4566:4566 &lt;additional arguments&gt; localstack</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-02" role="tabpanel" aria-labelled-by="tabs-12-02-tab"> +id="tabs-11-02" role="tabpanel" aria-labelled-by="tabs-11-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -271,7 +310,13 @@ id="tabs-12-02" role="tabpanel" aria-labelled-by="tabs-12-02-tab"> <figure> <img src="../images/2.svg" width="400"/> </figure> -<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS.</p> +<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS. +You need to make two changes:</p> +<ul> +<li>Publish port 53 from the LocalStack docker container to your host.</li> +<li>Configure your host to use the LocalStack DNS server by default.</li> +</ul> +<p>For more details, see your <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server documentation</a>.</p> <p>For the community edition of LocalStack, you can employ your own DNS server to achieve a similar outcome, but it won&rsquo;t be managed by LocalStack. Note that in both cases, SSL verification must be disabled. See the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#limitations">limitations of the DNS server</a> for more information.</p> <h2 id="from-a-lambda-function">From a lambda function</h2> <figure> @@ -293,7 +338,12 @@ An additional environment variable is available: <code>LOCALSTACK_HOSTNAME< <img src="../images/6.svg" width="400"/> </figure> <p>Check out our documentation while <a href="/references/network-troubleshooting/endpoint-url/#from-a-container-localstack-created">using the endpoint URL</a>.</p> -<p>The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. Suppose you&rsquo;re running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. +Suppose you're running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. +In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack. +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/9.svg" width="400"/> diff --git a/references/network-troubleshooting/transparent-endpoint-injection/index.html b/references/network-troubleshooting/transparent-endpoint-injection/index.html index fe1c0753be..ad72333aff 100644 --- a/references/network-troubleshooting/transparent-endpoint-injection/index.html +++ b/references/network-troubleshooting/transparent-endpoint-injection/index.html @@ -279,7 +279,8 @@
  • Transparent endpoint injection

    Suppose you’re attempting to access LocalStack, but you’re relying on transparent endpoint injection to redirect AWS (*.amazonaws.com) requests. In such cases, there are different approaches you can take depending on your setup.

    From your host

    If you’re using LocalStack with an API key, then you can utilize the DNS server to perform requests to LocalStack as if it were AWS.

    For the community edition of LocalStack, you can employ your own DNS server to achieve a similar outcome, but it won’t be managed by LocalStack. Note that in both cases, SSL verification must be disabled. See the limitations of the DNS server for more information.

    From a lambda function

    Check out our documentation on using transparent endpoint injection for Lambda in LocalStack.


    + Create project issue
    Table of Contents

    Transparent endpoint injection

    Suppose you’re attempting to access LocalStack, but you’re relying on transparent endpoint injection to redirect AWS (*.amazonaws.com) requests. In such cases, there are different approaches you can take depending on your setup.

    From your host

    If you’re using LocalStack with an API key, then you can utilize the DNS server to perform requests to LocalStack as if it were AWS. +You need to make two changes:

    • Publish port 53 from the LocalStack docker container to your host.
    • Configure your host to use the LocalStack DNS server by default.

    For more details, see your DNS server documentation.

    For the community edition of LocalStack, you can employ your own DNS server to achieve a similar outcome, but it won’t be managed by LocalStack. Note that in both cases, SSL verification must be disabled. See the limitations of the DNS server for more information.

    From a lambda function

    Check out our documentation on using transparent endpoint injection for Lambda in LocalStack.


    \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 31bb8cc248..cedd140478 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -/user-guide/aws/feature-coverage/2023-09-18T08:38:19+02:00/references/network-troubleshooting/endpoint-url/2023-08-30T12:00:12+05:30/user-guide/tools/localstack-extensions/aws-replicator-extension/2023-09-26T09:51:09+05:30/academy/localstack-101/course-overview/2023-08-23T14:33:03+05:00/user-guide/aws/2022-12-01T14:30:06+05:30/references/network-troubleshooting/2023-05-19T17:05:51+05:30/developer-hub/2023-03-30T17:05:01+02:00/overview/2023-08-17T22:23:40+05:30/tutorials/schema-evolution-glue-msk/2023-08-17T22:23:40+05:30/user-guide/web-application/accounts/2023-08-17T22:23:40+05:30/user-guide/integrations/aws-cli/2023-02-03T15:18:39+05:30/tutorials/lambda-ecr-container-images/2023-08-17T22:23:40+05:30/getting-started/2023-08-17T22:23:40+05:30/user-guide/integrations/2022-12-01T14:30:06+05:30/user-guide/tools/localstack-extensions/stripe-extension/2023-09-26T09:51:09+05:30/user-guide/web-application/teams/2023-04-17T16:22:53+05:30/references/network-troubleshooting/transparent-endpoint-injection/2023-03-17T10:22:16+00:00/academy/localstack-101/what-is-localstack/2023-08-23T14:33:03+05:00/references/network-troubleshooting/created-resources/2023-03-17T10:22:16+00:00/tutorials/java-notification-app/2023-08-17T22:54:42+05:30/contributing/contributing/2022-12-01T14:30:06+05:30/user-guide/tools/cloud-pods/getting-started/2022-12-01T14:30:06+05:30/user-guide/ci/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-extensions/miniflare-extension/2023-09-26T09:51:09+05:30/tutorials/elb-load-balancing/2023-08-17T22:23:40+05:30/user-guide/web-application/stack-insights/2023-02-20T23:11:36+01:00/academy/localstack-101/why-localstack/2023-08-23T14:33:03+05:00/user-guide/ci/circle-ci/2023-04-27T14:09:45+05:30/user-guide/tools/cloud-pods/community/2023-09-28T16:37:25+05:30/contributing/development-environment-setup/2023-09-26T13:38:02+02:00/academy/localstack-101/getting-started/2023-08-23T14:33:03+05:00/tutorials/s3-static-website-terraform/2023-08-17T22:23:40+05:30/user-guide/tools/localstack-extensions/mailhog/2023-09-26T09:51:09+05:30/user-guide/web-application/resource-browser/2023-04-24T21:27:46+05:30/user-guide/integrations/serverless-framework/2023-03-27T16:55:20+02:00/user-guide/integrations/testcontainers/2023-06-23T00:43:59-06:00/user-guide/integrations/spring-cloud-function/2023-03-27T16:55:20+02:00/user-guide/tools/lambda-tools/hot-reloading/2023-09-16T14:23:55+02:00/user-guide/integrations/architect/2022-12-01T14:30:06+05:30/user-guide/integrations/copilot/2022-12-01T14:30:06+05:30/user-guide/tools/cloud-pods/remotes/2023-09-28T16:37:25+05:30/user-guide/web-application/cloud-pods-browser/2023-04-24T21:27:46+05:30/user-guide/tools/cloud-pods/pods-cli/2023-02-03T15:18:39+05:30/tutorials/reproducible-machine-learning-cloud-pods/2023-08-17T22:23:40+05:30/user-guide/integrations/crossplane/2023-09-06T08:59:00+02:00/user-guide/ci/drone-ci/2023-04-27T14:09:45+05:30/user-guide/ci/github-actions/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-extensions/httpbin-extension/2023-09-26T09:51:09+05:30/references/lambda-provider-v2/2023-05-08T14:00:03+00:00/references/coverage/2023-05-19T17:05:51+05:30/user-guide/tools/testing-tools/2022-12-01T14:30:06+05:30/user-guide/tools/lambda-tools/debugging/2023-09-16T14:23:55+02:00/user-guide/web-application/single-sign-on/azure-ad/2023-03-02T21:22:50+05:30/user-guide/integrations/terraform/2023-09-06T08:59:00+02:00/academy/localstack-101/web-app-resource-browser/2023-08-23T14:33:03+05:00/user-guide/tools/cockpit/2023-04-03T16:21:02+01:00/user-guide/web-application/custom-local-endpoint/custom-local-endpoint/2023-04-24T21:27:46+05:30/tutorials/ecs-ecr-container-app/2023-08-17T22:54:42+05:30/user-guide/tools/localstack-extensions/diagnosis-viewer-extension/2023-09-26T09:51:09+05:30/user-guide/tools/transparent-endpoint-injection/dns-server/2023-05-10T21:47:55+05:30/academy/localstack-101/full-project-demo/2023-08-23T14:33:03+05:00/academy/localstack-101/2023-08-23T14:33:03+05:00/contributing/concepts/2022-12-29T12:19:43+01:00/user-guide/tools/transparent-endpoint-injection/patched-sdks/2023-05-04T17:56:26+05:30/user-guide/ci/travis-ci/2023-04-27T14:09:45+05:30/user-guide/integrations/aws-sam/2022-12-01T14:30:06+05:30/academy/localstack-101/cloud-pods/2023-08-23T14:33:03+05:00/user-guide/ci/gitlab-ci/2023-05-04T11:45:00+05:30/contributing/integration-tests/2023-03-27T16:55:20+02:00/user-guide/tools/localsurf/2023-03-14T14:32:31+05:30/contributing/parity-testing/2023-02-03T15:18:39+05:30/user-guide/web-application/single-sign-on/2023-04-24T21:27:46+05:30/user-guide/2022-12-01T14:30:06+05:30/user-guide/integrations/aws-cdk/2023-06-23T12:19:51+05:30/user-guide/ci/harness-ci/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-docker-extension/2023-01-13T18:45:43+05:30/user-guide/tools/cloud-pods/2023-08-30T12:00:12+05:30/user-guide/tools/cloud-pods/launchpad/2023-02-13T09:00:48-08:00/references/configuration/2023-09-28T19:48:40-04:00/getting-started/installation/2023-09-19T15:32:31+01:00/user-guide/tools/lambda-tools/2022-12-01T14:30:06+05:30/user-guide/integrations/pulumi/2023-02-03T15:18:39+05:30/contributing/terraform-tests/2022-12-01T14:30:06+05:30/user-guide/tools/transparent-endpoint-injection/2023-03-27T16:55:20+02:00/tutorials/2023-03-30T17:05:01+02:00/user-guide/integrations/cdk-for-terraform/2023-04-23T09:59:36+05:30/user-guide/integrations/kafka/2023-04-23T09:59:36+05:30/user-guide/integrations/chalice/2023-04-23T09:59:36+05:30/user-guide/integrations/gitpod/2023-04-23T09:59:36+05:30/getting-started/api-key/2023-09-19T15:32:31+01:00/applications/2023-03-30T17:05:01+02:00/academy/2023-08-23T14:33:03+05:00/getting-started/quickstart/2023-06-23T09:37:24+02:00/user-guide/tools/localstack-extensions/2023-04-14T10:22:02+05:30/getting-started/faq/2023-09-18T08:38:19+02:00/user-guide/tools/2022-12-01T14:30:06+05:30/references/arm64-support/2023-05-19T17:05:51+05:30/references/credentials/2023-05-19T17:05:51+05:30/references/cross-account-access/2023-09-28T12:05:02+05:30/references/custom-tls-certificates/2023-08-02T12:53:03+02:00/references/docker-images/2023-05-19T17:05:51+05:30/references/external-ports/2023-09-04T20:13:29+05:30/references/filesystem/2023-05-19T17:05:51+05:30/getting-started/glossary/2023-08-17T22:23:40+05:30/references/init-hooks/2023-09-13T12:33:31+02:00/references/internal-endpoints/2023-05-19T17:05:51+05:30/references/localstack-extensions/2023-08-28T13:31:25+02:00/references/localstack-on-kubernetes/2023-05-19T17:05:51+05:30/user-guide/web-application/2022-12-01T14:30:06+05:30/references/logging/2023-05-19T17:05:51+05:30/references/multi-account-setups/2023-05-25T10:39:37+05:30/references/persistence-mechanism/2023-08-17T22:23:40+05:30/references/podman/2023-05-19T17:05:51+05:30/references/2023-02-03T15:18:39+05:30/references/usage-tracking/2023-05-19T17:05:51+05:30/contributing/2022-12-01T14:30:06+05:30/getting-started/help-and-support/2023-06-23T09:37:24+02:00/categories/2023-09-28T12:05:02+05:30/tags/dotnet/2023-06-23T00:43:59-06:00/tags/go/2023-06-23T00:43:59-06:00/tags/java/2023-08-17T22:54:42+05:30/tags/jvm/2023-06-23T00:43:59-06:00/tags/kotlin/2023-06-23T00:43:59-06:00/categories/localstack-community/2023-09-18T08:38:19+02:00/categories/localstack-pro/2023-09-21T18:34:37+05:30/tags/2023-09-28T12:05:02+05:30/tags/test/2023-06-23T00:43:59-06:00/tags/testcontainers/2023-06-23T00:43:59-06:00/tags/serverless-framework/2023-08-17T22:23:40+05:30/tags/spring/2023-03-27T16:55:20+02:00/tags/spring-cloud/2023-03-27T16:55:20+02:00/tags/spring-cloud-function/2023-03-27T16:55:20+02:00/applications/temp/2023-03-30T17:05:01+02:00/references/network-troubleshooting/readme/2023-03-17T10:22:16+00:00/user-guide/integrations/sdks/dotnet/2023-09-11T10:43:08+03:00/tags/access-key-id/2023-05-19T17:05:51+05:30/tags/account-id/2023-05-25T10:39:37+05:30/tags/accounts/2023-08-17T22:23:40+05:30/tags/acm/2023-04-28T19:11:32+05:30/references/coverage/coverage_acm/2023-03-20T14:38:19+01:00/user-guide/aws/apigateway/2023-05-11T08:58:11+03:00/applications/amazon-rds-initialization-using-cdk-lambda-ecr-and-secrets-manager/2023-06-28T15:22:44+05:00/tags/amplify/2023-04-27T21:08:52+05:30/references/coverage/coverage_amplify/2023-03-20T14:38:19+01:00/tags/amplify-localstack/2023-04-27T21:08:52+05:30/tags/amplify-plugin/2023-04-27T21:08:52+05:30/tags/amplifylocal/2023-04-27T21:08:52+05:30/tags/apigateway/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigateway/2023-03-20T14:38:19+01:00/tags/apigateway-localstack/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigatewaymanagementapi/2023-03-20T14:38:19+01:00/tags/apigatewayv2/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigatewayv2/2023-03-20T14:38:19+01:00/references/coverage/coverage_appconfig/2023-03-20T14:38:19+01:00/user-guide/aws/appconfig/2023-08-30T15:42:43+05:30/tags/apple/2023-05-19T17:05:51+05:30/user-guide/aws/application-autoscaling/2023-08-31T16:43:39+05:30/references/coverage/coverage_application-autoscaling/2023-03-20T14:38:19+01:00/tags/appsync/2023-06-28T15:22:44+05:00/references/coverage/coverage_appsync/2023-03-20T14:38:19+01:00/user-guide/aws/appsync/2023-09-04T23:45:02+05:30/applications/appsync-graphql-apis-for-dynamodb-and-rds-aurora-postgresql/2023-06-28T15:22:44+05:00/tags/architect/2022-12-01T14:30:06+05:30/references/coverage/coverage_athena/2023-03-20T14:38:19+01:00/user-guide/aws/athena/2023-09-05T13:17:30+05:30/references/coverage/coverage_autoscaling/2023-03-20T14:38:19+01:00/user-guide/aws/amplify/2023-04-27T21:08:52+05:30/user-guide/aws/acm/2023-04-28T19:11:32+05:30/tags/aws-java-sdk/2023-08-17T22:54:42+05:30/user-guide/aws/organization/2022-12-01T14:30:06+05:30/tags/aws-amplify/2023-04-27T21:08:52+05:30/tags/aws-certificate-manager/2023-04-28T19:11:32+05:30/tags/aws-lambda/2023-09-18T08:38:19+02:00/references/coverage/coverage_backup/2023-03-20T14:38:19+01:00/user-guide/aws/backup/2023-08-30T00:43:03+05:30/tags/bash/2023-08-17T22:54:42+05:30/references/coverage/coverage_batch/2023-03-20T14:38:19+01:00/user-guide/aws/batch/2023-09-27T07:30:16+01:00/tags/big-data/2023-06-28T15:22:44+05:00/user-guide/integrations/sdks/cpp/2023-03-07T19:17:35+01:00/tags/cdk/2023-06-23T12:19:51+05:30/tags/cdk-for-terraform/2023-04-23T09:59:36+05:30/tags/cdktf/2023-04-23T09:59:36+05:30/references/coverage/coverage_ce/2023-03-20T14:38:19+01:00/tags/chalice/2023-04-23T09:59:36+05:30/tags/ci/2023-05-04T11:45:00+05:30/categories/cli/2023-02-03T15:18:39+05:30/tags/cloud-pods/2023-08-17T22:23:40+05:30/references/coverage/coverage_cloudformation/2023-03-20T14:38:19+01:00/tags/cloudformation/2023-08-17T22:54:42+05:30/user-guide/aws/cloudformation/2023-08-30T19:47:20+05:30/references/coverage/coverage_cloudfront/2023-03-20T14:38:19+01:00/user-guide/aws/cloudfront/2023-08-31T11:20:16+05:30/references/coverage/coverage_cloudtrail/2023-03-20T14:38:19+01:00/user-guide/aws/cloudtrail/2023-08-29T21:22:38+05:30/references/coverage/coverage_cloudwatch/2023-03-20T14:38:19+01:00/user-guide/aws/cloudwatch/2023-08-10T09:44:16+05:30/references/coverage/coverage_codecommit/2023-03-20T14:38:19+01:00/user-guide/aws/codecommit/2023-09-05T17:51:59+05:30/user-guide/aws/cognito/2023-08-31T11:24:01+05:30/references/coverage/coverage_cognito-identity/2023-03-20T14:38:19+01:00/references/coverage/coverage_cognito-idp/2023-03-20T14:38:19+01:00/tags/compliance/2023-06-28T15:22:44+05:00/references/coverage/coverage_config/2023-03-20T14:38:19+01:00/user-guide/aws/config/2023-09-11T20:12:33+05:30/tags/container/2023-08-17T22:23:40+05:30/tags/container-image/2023-08-17T22:23:40+05:30/tags/continuous-delivery/2023-05-04T11:45:00+05:30/tags/continuous-integration/2023-05-04T11:45:00+05:30/user-guide/aws/cost-explorer/2023-08-31T12:11:26+05:30/tags/crossplane/2023-09-06T08:59:00+02:00/tags/data-analytics/2023-06-28T15:22:44+05:00/tags/databases/2023-06-28T15:22:44+05:00/tags/development-environment/2023-04-23T09:59:36+05:30/categories/dns/2023-05-10T21:47:55+05:30/references/coverage/coverage_docdb/2023-03-20T14:38:19+01:00/tags/docker/2023-08-17T22:23:40+05:30/tags/docker-desktop/2023-01-13T18:45:43+05:30/2021-10-08T11:40:02+02:00/user-guide/aws/docdb/2023-08-04T11:21:49+05:30/tags/dynamodb/2023-06-28T15:22:44+05:00/references/coverage/coverage_dynamodb/2023-03-20T14:38:19+01:00/user-guide/aws/dynamodb/2023-08-30T12:47:00+05:30/references/coverage/coverage_dynamodbstreams/2023-03-20T14:38:19+01:00/references/coverage/coverage_ec2/2023-03-20T14:38:19+01:00/references/coverage/coverage_ecr/2023-03-20T14:38:19+01:00/tags/ecr/2023-08-17T22:54:42+05:30/references/coverage/coverage_ecs/2023-03-20T14:38:19+01:00/tags/ecs/2023-08-17T22:54:42+05:30/references/coverage/coverage_efs/2023-03-20T14:38:19+01:00/references/coverage/coverage_eks/2023-03-20T14:38:19+01:00/user-guide/aws/elastic-beanstalk/2023-08-31T16:39:58+05:30/user-guide/aws/elastic-compute-cloud/2023-09-21T18:34:37+05:30/user-guide/aws/elastic-container-registry/2023-09-05T17:25:25+05:30/user-guide/aws/elastic-container-service/2023-03-27T16:55:20+02:00/user-guide/aws/elastic-file-system/2023-08-29T21:38:11+05:30/user-guide/aws/elastic-kubernetes-service/2023-08-10T11:28:41+05:30/tags/elastic-load-balancing/2023-08-17T22:23:40+05:30/user-guide/aws/elastic-load-balancing/2023-09-04T23:23:09+05:30/user-guide/aws/elastic-mapreduce/2023-06-21T20:27:39+05:30/references/coverage/coverage_elasticache/2023-03-20T14:38:19+01:00/user-guide/aws/elasticache/2023-09-15T17:41:05+02:00/references/coverage/coverage_elasticbeanstalk/2023-03-20T14:38:19+01:00/user-guide/aws/elasticsearch/2023-03-27T16:55:20+02:00/references/coverage/coverage_elb/2023-03-20T14:38:19+01:00/references/coverage/coverage_elbv2/2023-03-20T14:38:19+01:00/user-guide/aws/mediastore/2023-09-13T11:26:44+01:00/references/coverage/coverage_emr/2023-03-20T14:38:19+01:00/references/coverage/coverage_emr-serverless/2023-06-26T09:29:22+02:00/references/coverage/coverage_es/2023-03-20T14:38:19+01:00/applications/event-driven-architecture-with-amazon-sns-fifo-dynamodb-lambda-and-s3/2023-06-28T15:22:44+05:00/tags/event-driven-architecture/2023-07-27T12:31:23+02:00/user-guide/aws/eventbridge/2023-07-23T22:17:43-04:00/references/coverage/coverage_events/2023-03-20T14:38:19+01:00/tags/extensions/2023-08-28T13:31:25+02:00/tags/fargate/2023-08-17T22:54:42+05:30/user-guide/aws/fis/2023-08-30T13:05:02+05:30/references/coverage/coverage_firehose/2023-03-20T14:38:19+01:00/references/coverage/coverage_fis/2023-03-20T14:38:19+01:00/applications/full-stack-application-with-aws-lambda-dynamodb-s3-for-shipment-validation/2023-06-28T15:22:44+05:00/tags/gitpod/2023-04-23T09:59:36+05:30/references/coverage/coverage_glacier/2023-03-20T14:38:19+01:00/user-guide/aws/glacier/2023-09-13T09:09:02+02:00/references/coverage/coverage_glue/2023-03-20T14:38:19+01:00/user-guide/aws/glue/2023-09-12T13:08:30+02:00/tags/glue-schema-registry/2023-08-17T22:23:40+05:30/user-guide/integrations/sdks/go/2023-02-06T15:46:00+01:00/tags/graphql/2023-06-28T15:22:44+05:00/references/coverage/coverage_iam/2023-03-20T14:38:19+01:00/tags/ide-integration/2023-04-23T09:59:36+05:30/tags/identity/2023-06-28T15:22:44+05:00/user-guide/aws/iam/2023-08-13T16:25:17+05:30/tags/infrastructure-as-code/2023-09-06T08:59:00+02:00/tags/internal-endpoints/2023-05-19T17:05:51+05:30/references/coverage/coverage_iot/2023-03-20T14:38:19+01:00/user-guide/aws/iot/2023-09-21T18:34:37+05:30/references/coverage/coverage_iot-data/2023-03-20T14:38:19+01:00/references/coverage/coverage_iotanalytics/2023-03-20T14:38:19+01:00/references/coverage/coverage_iotwireless/2023-03-20T14:38:19+01:00/user-guide/integrations/sdks/java/2023-08-07T21:00:38+02:00/tags/javascript/2023-08-17T22:23:40+05:30/user-guide/integrations/sdks/javascript/2023-08-17T22:23:40+05:30/tags/k8s/2023-05-19T17:05:51+05:30/references/coverage/coverage_kafka/2023-03-20T14:38:19+01:00/tags/kafka/2023-08-17T22:23:40+05:30/user-guide/aws/kms/2023-08-14T18:56:38+02:00/references/coverage/coverage_kinesis/2023-03-20T14:38:19+01:00/user-guide/aws/kinesis/2023-09-04T23:27:09+05:30/user-guide/aws/kinesis-analytics/2023-08-30T13:04:38+05:30/user-guide/aws/kinesis-firehose/2023-08-30T00:36:11+05:30/references/coverage/coverage_kinesisanalytics/2023-03-20T14:38:19+01:00/references/coverage/coverage_kinesisanalyticsv2/2023-03-20T14:38:19+01:00/references/coverage/coverage_kms/2023-03-20T14:38:19+01:00/tags/kubernetes/2023-09-06T08:59:00+02:00/references/coverage/coverage_lakeformation/2023-03-20T14:38:19+01:00/references/coverage/coverage_lambda/2023-03-20T14:38:19+01:00/tags/lambda/2023-09-18T08:38:19+02:00/user-guide/aws/lambda/2023-09-18T08:38:19+02:00/tags/lambda-layers/2023-09-18T08:38:19+02:00/tags/lambda-debugging/2023-09-18T08:38:19+02:00/tags/lambda-hot-reloading/2023-09-18T08:38:19+02:00/tags/lambda-trigger/2023-06-28T15:22:44+05:00/user-guide/integrations/sdks/2022-12-01T14:30:06+05:30/applications/loan-broker-application-with-aws-step-functions-dynamodb-lambda-sqs-and-sns/2023-06-28T15:22:44+05:00/categories/localstack/2023-09-28T12:05:02+05:30/categories/localstack-cockpit/2023-04-03T16:21:02+01:00/tags/localstack-enterprise/2023-04-24T21:27:46+05:30/tags/localstack-pro/2023-08-17T22:23:40+05:30/categories/localstack-pro-enterprise/2023-09-19T15:32:31+01:00/tags/localstack-team/2023-04-24T21:27:46+05:30/tags/localstack-endpoints/2023-05-19T17:05:51+05:30/tags/localstack-lambda/2023-09-18T08:38:19+02:00/tags/localsurf/2023-06-28T15:22:44+05:00/tags/logging/2023-05-19T17:05:51+05:30/references/coverage/coverage_logs/2023-03-20T14:38:19+01:00/user-guide/aws/logs/2022-12-01T14:30:06+05:30/tags/m1/2023-05-19T17:05:51+05:30/tags/machine-learning/2023-08-17T22:23:40+05:30/user-guide/aws/managed-streaming-for-kafka/2023-08-31T12:07:13+05:30/user-guide/aws/mwaa/2023-08-30T12:46:33+05:30/references/coverage/coverage_mediastore/2023-03-20T14:38:19+01:00/references/coverage/coverage_mediastore-data/2023-03-20T14:38:19+01:00/applications/messaging-processing-application-with-sqs-dynamodb-and-fargate/2023-06-28T15:22:44+05:00/tags/microservices/2023-06-28T15:22:44+05:00/applications/mnist-handwritten-digit-recognition-model-running-on-a-local-sagemaker-endpoint/2023-06-28T15:22:44+05:00/references/coverage/coverage_mq/2023-03-20T14:38:19+01:00/user-guide/aws/mq/2023-09-27T11:21:47+02:00/tags/msk/2023-08-17T22:23:40+05:30/tags/multi-account/2023-09-28T12:05:02+05:30/tags/multi-tenant/2023-09-28T12:05:02+05:30/references/coverage/coverage_mwaa/2023-03-20T14:38:19+01:00/tags/namespaces/2023-09-28T12:05:02+05:30/references/coverage/coverage_neptune/2023-03-20T14:38:19+01:00/user-guide/aws/neptune/2023-09-13T12:01:26+02:00/tags/networking/2023-08-30T12:00:12+05:30/tags/nginx/2023-08-17T22:54:42+05:30/tags/node.js/2023-08-17T22:23:40+05:30/applications/note-taking-application-using-aws-sdk-for-javascript/2023-06-28T15:22:44+05:00/references/coverage/coverage_opensearch/2023-03-20T14:38:19+01:00/user-guide/aws/opensearch/2023-08-30T20:58:41+05:30/references/coverage/coverage_organizations/2023-03-20T14:38:19+01:00/categories/persistence/2023-08-30T12:00:12+05:30/user-guide/integrations/sdks/php/2022-12-01T14:30:06+05:30/tags/podman/2023-05-19T17:05:51+05:30/tags/pulumi/2023-02-03T15:18:39+05:30/user-guide/integrations/sdks/python/2023-03-17T10:22:16+00:00/references/coverage/coverage_qldb/2023-03-20T14:38:19+01:00/references/coverage/coverage_qldb-session/2023-03-20T14:38:19+01:00/user-guide/aws/qldb/2023-02-03T15:18:39+05:30/applications/query-data-in-s3-bucket-with-amazon-athena-glue-catalog-cloudformation/2023-06-28T15:22:44+05:00/references/coverage/coverage_ram/2023-09-25T09:26:05+02:00/tags/raspberry-pi/2023-05-19T17:05:51+05:30/tags/rds/2023-06-28T15:22:44+05:00/references/coverage/coverage_rds/2023-03-20T14:38:19+01:00/references/coverage/coverage_rds-data/2023-03-20T14:38:19+01:00/tags/rds-proxy/2023-07-27T12:31:23+02:00/references/coverage/coverage_redshift/2023-03-20T14:38:19+01:00/user-guide/aws/redshift/2023-09-01T15:19:01+05:30/references/coverage/coverage_redshift-data/2023-03-20T14:38:19+01:00/user-guide/aws/rds/2023-09-02T09:23:00+02:00/tags/reproducible/2023-08-17T22:23:40+05:30/user-guide/aws/resourcegroups/2023-09-11T16:47:36+05:30/references/coverage/coverage_resource-groups/2023-03-20T14:38:19+01:00/references/coverage/coverage_resourcegroupstaggingapi/2023-03-20T14:38:19+01:00/references/coverage/coverage_route53/2023-03-20T14:38:19+01:00/user-guide/aws/route53/2023-09-15T09:42:50+05:30/references/coverage/coverage_route53resolver/2023-03-20T14:38:19+01:00/tags/ruby/2023-04-27T11:54:24+05:30/user-guide/integrations/sdks/ruby/2023-04-27T11:54:24+05:30/tags/rule-based-authentication/2023-06-28T15:22:44+05:00/references/coverage/coverage_s3/2023-03-20T14:38:19+01:00/tags/s3/2023-08-17T22:23:40+05:30/user-guide/aws/s3/2023-09-27T07:46:00+02:00/tags/s3-website/2023-08-17T22:23:40+05:30/references/coverage/coverage_s3control/2023-03-20T14:38:19+01:00/references/coverage/coverage_sagemaker/2023-03-20T14:38:19+01:00/user-guide/aws/sagemaker/2023-02-03T15:18:39+05:30/references/coverage/coverage_sagemaker-runtime/2023-03-20T14:38:19+01:00/tags/sam/2022-12-01T14:30:06+05:30/references/coverage/coverage_scheduler/2023-08-07T09:31:39+02:00/tags/schema-evolution/2023-08-17T22:23:40+05:30/tags/sdk/2023-09-11T10:43:08+03:00/applications/search-application-with-lambda-kinesis-firehose-elasticsearch-s3/2023-07-27T12:31:23+02:00/tags/secret-access-key/2023-05-19T17:05:51+05:30/user-guide/aws/secretsmanager/2023-09-11T19:23:39+05:30/references/coverage/coverage_secretsmanager/2023-03-20T14:38:19+01:00/tags/security/2023-06-28T15:22:44+05:00/user-guide/aws/security-token-service/2023-09-13T06:43:17+02:00/tags/self-managed/2023-04-23T09:59:36+05:30/tags/serverless/2023-09-18T08:38:19+02:00/user-guide/aws/serverlessrepo/2023-09-11T19:10:28+05:30/applications/serverless-container-based-apis-with-amazon-ecs-api-gateway/2023-06-28T15:22:44+05:00/applications/serverless-image-resizer-with-aws-lambda-s3-sns-and-ses/2023-06-28T15:22:44+05:00/applications/serverless-microservices-with-amazon-api-gateway-dynamodb-sqs-and-lambda/2023-06-28T15:22:44+05:00/applications/serverless-rds-proxy-with-api-gateway-lambda-and-aurora-rds/2023-07-27T12:31:23+02:00/applications/serverless-transcription-application-using-transcribe-s3-lambda-sqs-and-ses/2023-06-28T15:22:44+05:00/tags/serverless-containers/2023-06-28T15:22:44+05:00/tags/serverless-localstack-plugin/2023-08-17T22:23:40+05:30/references/coverage/coverage_serverlessrepo/2023-03-20T14:38:19+01:00/user-guide/aws/servicediscovery/2023-09-04T23:45:02+05:30/references/coverage/coverage_servicediscovery/2023-03-20T14:38:19+01:00/references/coverage/coverage_ses/2023-03-20T14:38:19+01:00/references/coverage/coverage_sesv2/2023-03-20T14:38:19+01:00/tags/silicon/2023-05-19T17:05:51+05:30/tags/simple-email-service/2023-08-17T22:54:42+05:30/user-guide/aws/ses/2023-09-27T11:21:28+05:30/tags/simple-notification-service/2023-08-17T22:54:42+05:30/user-guide/aws/sns/2023-08-24T22:36:50+05:30/tags/simple-queue-service/2023-08-17T22:54:42+05:30/user-guide/aws/sqs/2023-09-13T06:42:57+02:00/user-guide/aws/swf/2023-09-02T00:15:24+05:30/references/coverage/coverage_sns/2023-03-20T14:38:19+01:00/tags/spring-boot/2023-08-17T22:54:42+05:30/references/coverage/coverage_sqs/2023-03-20T14:38:19+01:00/tags/ssl/2023-08-02T12:53:03+02:00/references/coverage/coverage_ssm/2023-03-20T14:38:19+01:00/tags/sso/2023-04-24T21:27:46+05:30/references/coverage/coverage_sso-admin/2023-05-29T10:37:24+02:00/tags/stack-insights/2023-02-20T23:11:36+01:00/tags/static-website/2023-08-17T22:23:40+05:30/user-guide/aws/stepfunctions/2023-09-02T00:12:48+05:30/applications/step-up-authentication-using-amazon-cognito/2023-06-28T15:22:44+05:00/tags/step-up-auth/2023-06-28T15:22:44+05:00/references/coverage/coverage_stepfunctions/2023-03-20T14:38:19+01:00/references/coverage/coverage_sts/2023-03-20T14:38:19+01:00/references/coverage/coverage_support/2023-03-20T14:38:19+01:00/user-guide/aws/support/2023-08-30T15:39:42+05:30/references/coverage/coverage_swf/2023-03-20T14:38:19+01:00/user-guide/aws/systems-manager/2023-09-11T15:14:44+05:30/tags/terraform/2023-09-06T08:59:00+02:00/tags/testing/2023-05-04T11:45:00+05:30/tags/tflocal-cli/2023-08-17T22:23:40+05:30/user-guide/aws/timestream/2023-07-20T15:44:07+02:00/references/coverage/coverage_timestream-query/2023-03-20T14:38:19+01:00/references/coverage/coverage_timestream-write/2023-03-20T14:38:19+01:00/categories/tools/2023-08-30T12:00:12+05:30/references/coverage/coverage_transcribe/2023-03-20T14:38:19+01:00/user-guide/aws/transcribe/2023-09-27T11:21:47+02:00/references/coverage/coverage_transfer/2023-03-20T14:38:19+01:00/user-guide/aws/transfer/2023-09-11T18:22:02-05:00/tags/troubleshooting/2023-08-30T12:00:12+05:30/user-guide/aws/xray/2023-09-18T08:38:19+02:00/references/coverage/coverage_xray/2023-03-20T14:38:19+01:00 \ No newline at end of file +/user-guide/aws/feature-coverage/2023-09-18T08:38:19+02:00/references/network-troubleshooting/endpoint-url/2023-09-29T12:57:11+01:00/user-guide/tools/localstack-extensions/aws-replicator-extension/2023-09-26T09:51:09+05:30/academy/localstack-101/course-overview/2023-08-23T14:33:03+05:00/user-guide/aws/2022-12-01T14:30:06+05:30/references/network-troubleshooting/2023-05-19T17:05:51+05:30/developer-hub/2023-03-30T17:05:01+02:00/overview/2023-08-17T22:23:40+05:30/tutorials/schema-evolution-glue-msk/2023-08-17T22:23:40+05:30/user-guide/web-application/accounts/2023-08-17T22:23:40+05:30/user-guide/integrations/aws-cli/2023-02-03T15:18:39+05:30/tutorials/lambda-ecr-container-images/2023-08-17T22:23:40+05:30/getting-started/2023-08-17T22:23:40+05:30/user-guide/integrations/2022-12-01T14:30:06+05:30/user-guide/tools/localstack-extensions/stripe-extension/2023-09-26T09:51:09+05:30/user-guide/web-application/teams/2023-04-17T16:22:53+05:30/references/network-troubleshooting/transparent-endpoint-injection/2023-09-29T12:57:11+01:00/academy/localstack-101/what-is-localstack/2023-08-23T14:33:03+05:00/references/network-troubleshooting/created-resources/2023-09-29T12:57:11+01:00/tutorials/java-notification-app/2023-08-17T22:54:42+05:30/contributing/contributing/2022-12-01T14:30:06+05:30/user-guide/tools/cloud-pods/getting-started/2022-12-01T14:30:06+05:30/user-guide/ci/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-extensions/miniflare-extension/2023-09-26T09:51:09+05:30/tutorials/elb-load-balancing/2023-08-17T22:23:40+05:30/user-guide/web-application/stack-insights/2023-02-20T23:11:36+01:00/academy/localstack-101/why-localstack/2023-08-23T14:33:03+05:00/user-guide/ci/circle-ci/2023-04-27T14:09:45+05:30/user-guide/tools/cloud-pods/community/2023-09-28T16:37:25+05:30/contributing/development-environment-setup/2023-09-26T13:38:02+02:00/academy/localstack-101/getting-started/2023-08-23T14:33:03+05:00/tutorials/s3-static-website-terraform/2023-08-17T22:23:40+05:30/user-guide/tools/localstack-extensions/mailhog/2023-09-26T09:51:09+05:30/user-guide/web-application/resource-browser/2023-04-24T21:27:46+05:30/user-guide/integrations/serverless-framework/2023-03-27T16:55:20+02:00/user-guide/integrations/testcontainers/2023-06-23T00:43:59-06:00/user-guide/integrations/spring-cloud-function/2023-03-27T16:55:20+02:00/user-guide/tools/lambda-tools/hot-reloading/2023-09-16T14:23:55+02:00/user-guide/integrations/architect/2022-12-01T14:30:06+05:30/user-guide/integrations/copilot/2022-12-01T14:30:06+05:30/user-guide/tools/cloud-pods/remotes/2023-09-28T16:37:25+05:30/user-guide/web-application/cloud-pods-browser/2023-04-24T21:27:46+05:30/user-guide/tools/cloud-pods/pods-cli/2023-02-03T15:18:39+05:30/tutorials/reproducible-machine-learning-cloud-pods/2023-08-17T22:23:40+05:30/user-guide/integrations/crossplane/2023-09-06T08:59:00+02:00/user-guide/ci/drone-ci/2023-04-27T14:09:45+05:30/user-guide/ci/github-actions/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-extensions/httpbin-extension/2023-09-26T09:51:09+05:30/references/lambda-provider-v2/2023-05-08T14:00:03+00:00/references/coverage/2023-05-19T17:05:51+05:30/user-guide/tools/testing-tools/2022-12-01T14:30:06+05:30/user-guide/tools/lambda-tools/debugging/2023-09-16T14:23:55+02:00/user-guide/web-application/single-sign-on/azure-ad/2023-03-02T21:22:50+05:30/user-guide/integrations/terraform/2023-09-06T08:59:00+02:00/academy/localstack-101/web-app-resource-browser/2023-08-23T14:33:03+05:00/user-guide/tools/cockpit/2023-04-03T16:21:02+01:00/user-guide/web-application/custom-local-endpoint/custom-local-endpoint/2023-04-24T21:27:46+05:30/tutorials/ecs-ecr-container-app/2023-08-17T22:54:42+05:30/user-guide/tools/localstack-extensions/diagnosis-viewer-extension/2023-09-26T09:51:09+05:30/user-guide/tools/transparent-endpoint-injection/dns-server/2023-09-29T12:57:11+01:00/academy/localstack-101/full-project-demo/2023-08-23T14:33:03+05:00/academy/localstack-101/2023-08-23T14:33:03+05:00/contributing/concepts/2022-12-29T12:19:43+01:00/user-guide/tools/transparent-endpoint-injection/patched-sdks/2023-05-04T17:56:26+05:30/user-guide/ci/travis-ci/2023-04-27T14:09:45+05:30/user-guide/integrations/aws-sam/2022-12-01T14:30:06+05:30/academy/localstack-101/cloud-pods/2023-08-23T14:33:03+05:00/user-guide/ci/gitlab-ci/2023-05-04T11:45:00+05:30/contributing/integration-tests/2023-03-27T16:55:20+02:00/user-guide/tools/localsurf/2023-03-14T14:32:31+05:30/contributing/parity-testing/2023-02-03T15:18:39+05:30/user-guide/web-application/single-sign-on/2023-04-24T21:27:46+05:30/user-guide/2022-12-01T14:30:06+05:30/user-guide/integrations/aws-cdk/2023-06-23T12:19:51+05:30/user-guide/ci/harness-ci/2023-04-27T14:09:45+05:30/user-guide/tools/localstack-docker-extension/2023-01-13T18:45:43+05:30/user-guide/tools/cloud-pods/2023-08-30T12:00:12+05:30/user-guide/tools/cloud-pods/launchpad/2023-02-13T09:00:48-08:00/references/configuration/2023-09-28T19:48:40-04:00/getting-started/installation/2023-09-29T12:57:11+01:00/user-guide/tools/lambda-tools/2022-12-01T14:30:06+05:30/user-guide/integrations/pulumi/2023-02-03T15:18:39+05:30/contributing/terraform-tests/2022-12-01T14:30:06+05:30/user-guide/tools/transparent-endpoint-injection/2023-03-27T16:55:20+02:00/tutorials/2023-03-30T17:05:01+02:00/user-guide/integrations/cdk-for-terraform/2023-04-23T09:59:36+05:30/user-guide/integrations/kafka/2023-04-23T09:59:36+05:30/user-guide/integrations/chalice/2023-04-23T09:59:36+05:30/user-guide/integrations/gitpod/2023-04-23T09:59:36+05:30/getting-started/api-key/2023-09-19T15:32:31+01:00/applications/2023-03-30T17:05:01+02:00/academy/2023-08-23T14:33:03+05:00/getting-started/quickstart/2023-06-23T09:37:24+02:00/user-guide/tools/localstack-extensions/2023-04-14T10:22:02+05:30/getting-started/faq/2023-09-29T12:57:11+01:00/user-guide/tools/2022-12-01T14:30:06+05:30/references/arm64-support/2023-05-19T17:05:51+05:30/references/credentials/2023-05-19T17:05:51+05:30/references/cross-account-access/2023-09-28T12:05:02+05:30/references/custom-tls-certificates/2023-08-02T12:53:03+02:00/references/docker-images/2023-05-19T17:05:51+05:30/references/external-ports/2023-09-04T20:13:29+05:30/references/filesystem/2023-05-19T17:05:51+05:30/getting-started/glossary/2023-08-17T22:23:40+05:30/references/init-hooks/2023-09-13T12:33:31+02:00/references/internal-endpoints/2023-05-19T17:05:51+05:30/references/localstack-extensions/2023-08-28T13:31:25+02:00/references/localstack-on-kubernetes/2023-05-19T17:05:51+05:30/user-guide/web-application/2022-12-01T14:30:06+05:30/references/logging/2023-05-19T17:05:51+05:30/references/multi-account-setups/2023-05-25T10:39:37+05:30/references/persistence-mechanism/2023-08-17T22:23:40+05:30/references/podman/2023-05-19T17:05:51+05:30/references/2023-02-03T15:18:39+05:30/references/usage-tracking/2023-05-19T17:05:51+05:30/contributing/2022-12-01T14:30:06+05:30/getting-started/help-and-support/2023-06-23T09:37:24+02:00/categories/2023-09-29T12:57:11+01:00/tags/dotnet/2023-06-23T00:43:59-06:00/tags/go/2023-06-23T00:43:59-06:00/tags/java/2023-08-17T22:54:42+05:30/tags/jvm/2023-06-23T00:43:59-06:00/tags/kotlin/2023-06-23T00:43:59-06:00/categories/localstack-community/2023-09-18T08:38:19+02:00/categories/localstack-pro/2023-09-29T12:57:11+01:00/tags/2023-09-29T12:57:11+01:00/tags/test/2023-06-23T00:43:59-06:00/tags/testcontainers/2023-06-23T00:43:59-06:00/tags/serverless-framework/2023-08-17T22:23:40+05:30/tags/spring/2023-03-27T16:55:20+02:00/tags/spring-cloud/2023-03-27T16:55:20+02:00/tags/spring-cloud-function/2023-03-27T16:55:20+02:00/applications/temp/2023-03-30T17:05:01+02:00/references/network-troubleshooting/readme/2023-03-17T10:22:16+00:00/user-guide/integrations/sdks/dotnet/2023-09-11T10:43:08+03:00/tags/access-key-id/2023-05-19T17:05:51+05:30/tags/account-id/2023-05-25T10:39:37+05:30/tags/accounts/2023-08-17T22:23:40+05:30/tags/acm/2023-04-28T19:11:32+05:30/references/coverage/coverage_acm/2023-03-20T14:38:19+01:00/user-guide/aws/apigateway/2023-05-11T08:58:11+03:00/applications/amazon-rds-initialization-using-cdk-lambda-ecr-and-secrets-manager/2023-06-28T15:22:44+05:00/tags/amplify/2023-04-27T21:08:52+05:30/references/coverage/coverage_amplify/2023-03-20T14:38:19+01:00/tags/amplify-localstack/2023-04-27T21:08:52+05:30/tags/amplify-plugin/2023-04-27T21:08:52+05:30/tags/amplifylocal/2023-04-27T21:08:52+05:30/tags/apigateway/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigateway/2023-03-20T14:38:19+01:00/tags/apigateway-localstack/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigatewaymanagementapi/2023-03-20T14:38:19+01:00/tags/apigatewayv2/2023-05-11T08:58:11+03:00/references/coverage/coverage_apigatewayv2/2023-03-20T14:38:19+01:00/references/coverage/coverage_appconfig/2023-03-20T14:38:19+01:00/user-guide/aws/appconfig/2023-08-30T15:42:43+05:30/tags/apple/2023-05-19T17:05:51+05:30/user-guide/aws/application-autoscaling/2023-08-31T16:43:39+05:30/references/coverage/coverage_application-autoscaling/2023-03-20T14:38:19+01:00/tags/appsync/2023-06-28T15:22:44+05:00/references/coverage/coverage_appsync/2023-03-20T14:38:19+01:00/user-guide/aws/appsync/2023-09-04T23:45:02+05:30/applications/appsync-graphql-apis-for-dynamodb-and-rds-aurora-postgresql/2023-06-28T15:22:44+05:00/tags/architect/2022-12-01T14:30:06+05:30/references/coverage/coverage_athena/2023-03-20T14:38:19+01:00/user-guide/aws/athena/2023-09-05T13:17:30+05:30/references/coverage/coverage_autoscaling/2023-03-20T14:38:19+01:00/user-guide/aws/amplify/2023-04-27T21:08:52+05:30/user-guide/aws/acm/2023-04-28T19:11:32+05:30/tags/aws-java-sdk/2023-08-17T22:54:42+05:30/user-guide/aws/organization/2022-12-01T14:30:06+05:30/tags/aws-amplify/2023-04-27T21:08:52+05:30/tags/aws-certificate-manager/2023-04-28T19:11:32+05:30/tags/aws-lambda/2023-09-18T08:38:19+02:00/references/coverage/coverage_backup/2023-03-20T14:38:19+01:00/user-guide/aws/backup/2023-08-30T00:43:03+05:30/tags/bash/2023-08-17T22:54:42+05:30/references/coverage/coverage_batch/2023-03-20T14:38:19+01:00/user-guide/aws/batch/2023-09-27T07:30:16+01:00/tags/big-data/2023-06-28T15:22:44+05:00/user-guide/integrations/sdks/cpp/2023-03-07T19:17:35+01:00/tags/cdk/2023-06-23T12:19:51+05:30/tags/cdk-for-terraform/2023-04-23T09:59:36+05:30/tags/cdktf/2023-04-23T09:59:36+05:30/references/coverage/coverage_ce/2023-03-20T14:38:19+01:00/tags/chalice/2023-04-23T09:59:36+05:30/tags/ci/2023-05-04T11:45:00+05:30/categories/cli/2023-02-03T15:18:39+05:30/tags/cloud-pods/2023-08-17T22:23:40+05:30/references/coverage/coverage_cloudformation/2023-03-20T14:38:19+01:00/tags/cloudformation/2023-08-17T22:54:42+05:30/user-guide/aws/cloudformation/2023-08-30T19:47:20+05:30/references/coverage/coverage_cloudfront/2023-03-20T14:38:19+01:00/user-guide/aws/cloudfront/2023-08-31T11:20:16+05:30/references/coverage/coverage_cloudtrail/2023-03-20T14:38:19+01:00/user-guide/aws/cloudtrail/2023-08-29T21:22:38+05:30/references/coverage/coverage_cloudwatch/2023-03-20T14:38:19+01:00/user-guide/aws/cloudwatch/2023-08-10T09:44:16+05:30/references/coverage/coverage_codecommit/2023-03-20T14:38:19+01:00/user-guide/aws/codecommit/2023-09-05T17:51:59+05:30/user-guide/aws/cognito/2023-08-31T11:24:01+05:30/references/coverage/coverage_cognito-identity/2023-03-20T14:38:19+01:00/references/coverage/coverage_cognito-idp/2023-03-20T14:38:19+01:00/tags/compliance/2023-06-28T15:22:44+05:00/references/coverage/coverage_config/2023-03-20T14:38:19+01:00/user-guide/aws/config/2023-09-11T20:12:33+05:30/tags/container/2023-08-17T22:23:40+05:30/tags/container-image/2023-08-17T22:23:40+05:30/tags/continuous-delivery/2023-05-04T11:45:00+05:30/tags/continuous-integration/2023-05-04T11:45:00+05:30/user-guide/aws/cost-explorer/2023-08-31T12:11:26+05:30/tags/crossplane/2023-09-06T08:59:00+02:00/tags/data-analytics/2023-06-28T15:22:44+05:00/tags/databases/2023-06-28T15:22:44+05:00/tags/development-environment/2023-04-23T09:59:36+05:30/categories/dns/2023-09-29T12:57:11+01:00/references/coverage/coverage_docdb/2023-03-20T14:38:19+01:00/tags/docker/2023-08-17T22:23:40+05:30/tags/docker-desktop/2023-01-13T18:45:43+05:30/2021-10-08T11:40:02+02:00/user-guide/aws/docdb/2023-08-04T11:21:49+05:30/tags/dynamodb/2023-06-28T15:22:44+05:00/references/coverage/coverage_dynamodb/2023-03-20T14:38:19+01:00/user-guide/aws/dynamodb/2023-08-30T12:47:00+05:30/references/coverage/coverage_dynamodbstreams/2023-03-20T14:38:19+01:00/references/coverage/coverage_ec2/2023-03-20T14:38:19+01:00/references/coverage/coverage_ecr/2023-03-20T14:38:19+01:00/tags/ecr/2023-08-17T22:54:42+05:30/references/coverage/coverage_ecs/2023-03-20T14:38:19+01:00/tags/ecs/2023-08-17T22:54:42+05:30/references/coverage/coverage_efs/2023-03-20T14:38:19+01:00/references/coverage/coverage_eks/2023-03-20T14:38:19+01:00/user-guide/aws/elastic-beanstalk/2023-08-31T16:39:58+05:30/user-guide/aws/elastic-compute-cloud/2023-09-21T18:34:37+05:30/user-guide/aws/elastic-container-registry/2023-09-05T17:25:25+05:30/user-guide/aws/elastic-container-service/2023-03-27T16:55:20+02:00/user-guide/aws/elastic-file-system/2023-08-29T21:38:11+05:30/user-guide/aws/elastic-kubernetes-service/2023-08-10T11:28:41+05:30/tags/elastic-load-balancing/2023-08-17T22:23:40+05:30/user-guide/aws/elastic-load-balancing/2023-09-04T23:23:09+05:30/user-guide/aws/elastic-mapreduce/2023-06-21T20:27:39+05:30/references/coverage/coverage_elasticache/2023-03-20T14:38:19+01:00/user-guide/aws/elasticache/2023-09-15T17:41:05+02:00/references/coverage/coverage_elasticbeanstalk/2023-03-20T14:38:19+01:00/user-guide/aws/elasticsearch/2023-03-27T16:55:20+02:00/references/coverage/coverage_elb/2023-03-20T14:38:19+01:00/references/coverage/coverage_elbv2/2023-03-20T14:38:19+01:00/user-guide/aws/mediastore/2023-09-13T11:26:44+01:00/references/coverage/coverage_emr/2023-03-20T14:38:19+01:00/references/coverage/coverage_emr-serverless/2023-06-26T09:29:22+02:00/references/coverage/coverage_es/2023-03-20T14:38:19+01:00/applications/event-driven-architecture-with-amazon-sns-fifo-dynamodb-lambda-and-s3/2023-06-28T15:22:44+05:00/tags/event-driven-architecture/2023-07-27T12:31:23+02:00/user-guide/aws/eventbridge/2023-07-23T22:17:43-04:00/references/coverage/coverage_events/2023-03-20T14:38:19+01:00/tags/extensions/2023-08-28T13:31:25+02:00/tags/fargate/2023-08-17T22:54:42+05:30/user-guide/aws/fis/2023-08-30T13:05:02+05:30/references/coverage/coverage_firehose/2023-03-20T14:38:19+01:00/references/coverage/coverage_fis/2023-03-20T14:38:19+01:00/applications/full-stack-application-with-aws-lambda-dynamodb-s3-for-shipment-validation/2023-06-28T15:22:44+05:00/tags/gitpod/2023-04-23T09:59:36+05:30/references/coverage/coverage_glacier/2023-03-20T14:38:19+01:00/user-guide/aws/glacier/2023-09-13T09:09:02+02:00/references/coverage/coverage_glue/2023-03-20T14:38:19+01:00/user-guide/aws/glue/2023-09-12T13:08:30+02:00/tags/glue-schema-registry/2023-08-17T22:23:40+05:30/user-guide/integrations/sdks/go/2023-02-06T15:46:00+01:00/tags/graphql/2023-06-28T15:22:44+05:00/references/coverage/coverage_iam/2023-03-20T14:38:19+01:00/tags/ide-integration/2023-04-23T09:59:36+05:30/tags/identity/2023-06-28T15:22:44+05:00/user-guide/aws/iam/2023-08-13T16:25:17+05:30/tags/infrastructure-as-code/2023-09-06T08:59:00+02:00/tags/internal-endpoints/2023-05-19T17:05:51+05:30/references/coverage/coverage_iot/2023-03-20T14:38:19+01:00/user-guide/aws/iot/2023-09-21T18:34:37+05:30/references/coverage/coverage_iot-data/2023-03-20T14:38:19+01:00/references/coverage/coverage_iotanalytics/2023-03-20T14:38:19+01:00/references/coverage/coverage_iotwireless/2023-03-20T14:38:19+01:00/user-guide/integrations/sdks/java/2023-08-07T21:00:38+02:00/tags/javascript/2023-08-17T22:23:40+05:30/user-guide/integrations/sdks/javascript/2023-08-17T22:23:40+05:30/tags/k8s/2023-05-19T17:05:51+05:30/references/coverage/coverage_kafka/2023-03-20T14:38:19+01:00/tags/kafka/2023-08-17T22:23:40+05:30/user-guide/aws/kms/2023-08-14T18:56:38+02:00/references/coverage/coverage_kinesis/2023-03-20T14:38:19+01:00/user-guide/aws/kinesis/2023-09-04T23:27:09+05:30/user-guide/aws/kinesis-analytics/2023-08-30T13:04:38+05:30/user-guide/aws/kinesis-firehose/2023-08-30T00:36:11+05:30/references/coverage/coverage_kinesisanalytics/2023-03-20T14:38:19+01:00/references/coverage/coverage_kinesisanalyticsv2/2023-03-20T14:38:19+01:00/references/coverage/coverage_kms/2023-03-20T14:38:19+01:00/tags/kubernetes/2023-09-06T08:59:00+02:00/references/coverage/coverage_lakeformation/2023-03-20T14:38:19+01:00/references/coverage/coverage_lambda/2023-03-20T14:38:19+01:00/tags/lambda/2023-09-18T08:38:19+02:00/user-guide/aws/lambda/2023-09-18T08:38:19+02:00/tags/lambda-layers/2023-09-18T08:38:19+02:00/tags/lambda-debugging/2023-09-18T08:38:19+02:00/tags/lambda-hot-reloading/2023-09-18T08:38:19+02:00/tags/lambda-trigger/2023-06-28T15:22:44+05:00/user-guide/integrations/sdks/2022-12-01T14:30:06+05:30/applications/loan-broker-application-with-aws-step-functions-dynamodb-lambda-sqs-and-sns/2023-06-28T15:22:44+05:00/categories/localstack/2023-09-28T12:05:02+05:30/categories/localstack-cockpit/2023-04-03T16:21:02+01:00/tags/localstack-enterprise/2023-04-24T21:27:46+05:30/tags/localstack-pro/2023-08-17T22:23:40+05:30/categories/localstack-pro-enterprise/2023-09-19T15:32:31+01:00/tags/localstack-team/2023-04-24T21:27:46+05:30/tags/localstack-endpoints/2023-05-19T17:05:51+05:30/tags/localstack-lambda/2023-09-18T08:38:19+02:00/tags/localsurf/2023-06-28T15:22:44+05:00/tags/logging/2023-05-19T17:05:51+05:30/references/coverage/coverage_logs/2023-03-20T14:38:19+01:00/user-guide/aws/logs/2022-12-01T14:30:06+05:30/tags/m1/2023-05-19T17:05:51+05:30/tags/machine-learning/2023-08-17T22:23:40+05:30/user-guide/aws/managed-streaming-for-kafka/2023-08-31T12:07:13+05:30/user-guide/aws/mwaa/2023-08-30T12:46:33+05:30/references/coverage/coverage_mediastore/2023-03-20T14:38:19+01:00/references/coverage/coverage_mediastore-data/2023-03-20T14:38:19+01:00/applications/messaging-processing-application-with-sqs-dynamodb-and-fargate/2023-06-28T15:22:44+05:00/tags/microservices/2023-06-28T15:22:44+05:00/applications/mnist-handwritten-digit-recognition-model-running-on-a-local-sagemaker-endpoint/2023-06-28T15:22:44+05:00/references/coverage/coverage_mq/2023-03-20T14:38:19+01:00/user-guide/aws/mq/2023-09-27T11:21:47+02:00/tags/msk/2023-08-17T22:23:40+05:30/tags/multi-account/2023-09-28T12:05:02+05:30/tags/multi-tenant/2023-09-28T12:05:02+05:30/references/coverage/coverage_mwaa/2023-03-20T14:38:19+01:00/tags/namespaces/2023-09-28T12:05:02+05:30/references/coverage/coverage_neptune/2023-03-20T14:38:19+01:00/user-guide/aws/neptune/2023-09-13T12:01:26+02:00/tags/networking/2023-09-29T12:57:11+01:00/tags/nginx/2023-08-17T22:54:42+05:30/tags/node.js/2023-08-17T22:23:40+05:30/applications/note-taking-application-using-aws-sdk-for-javascript/2023-06-28T15:22:44+05:00/references/coverage/coverage_opensearch/2023-03-20T14:38:19+01:00/user-guide/aws/opensearch/2023-08-30T20:58:41+05:30/references/coverage/coverage_organizations/2023-03-20T14:38:19+01:00/categories/persistence/2023-08-30T12:00:12+05:30/user-guide/integrations/sdks/php/2022-12-01T14:30:06+05:30/tags/podman/2023-05-19T17:05:51+05:30/tags/pulumi/2023-02-03T15:18:39+05:30/user-guide/integrations/sdks/python/2023-03-17T10:22:16+00:00/references/coverage/coverage_qldb/2023-03-20T14:38:19+01:00/references/coverage/coverage_qldb-session/2023-03-20T14:38:19+01:00/user-guide/aws/qldb/2023-02-03T15:18:39+05:30/applications/query-data-in-s3-bucket-with-amazon-athena-glue-catalog-cloudformation/2023-06-28T15:22:44+05:00/references/coverage/coverage_ram/2023-09-25T09:26:05+02:00/tags/raspberry-pi/2023-05-19T17:05:51+05:30/tags/rds/2023-06-28T15:22:44+05:00/references/coverage/coverage_rds/2023-03-20T14:38:19+01:00/references/coverage/coverage_rds-data/2023-03-20T14:38:19+01:00/tags/rds-proxy/2023-07-27T12:31:23+02:00/references/coverage/coverage_redshift/2023-03-20T14:38:19+01:00/user-guide/aws/redshift/2023-09-01T15:19:01+05:30/references/coverage/coverage_redshift-data/2023-03-20T14:38:19+01:00/user-guide/aws/rds/2023-09-02T09:23:00+02:00/tags/reproducible/2023-08-17T22:23:40+05:30/user-guide/aws/resourcegroups/2023-09-11T16:47:36+05:30/references/coverage/coverage_resource-groups/2023-03-20T14:38:19+01:00/references/coverage/coverage_resourcegroupstaggingapi/2023-03-20T14:38:19+01:00/references/coverage/coverage_route53/2023-03-20T14:38:19+01:00/user-guide/aws/route53/2023-09-15T09:42:50+05:30/references/coverage/coverage_route53resolver/2023-03-20T14:38:19+01:00/tags/ruby/2023-04-27T11:54:24+05:30/user-guide/integrations/sdks/ruby/2023-04-27T11:54:24+05:30/tags/rule-based-authentication/2023-06-28T15:22:44+05:00/references/coverage/coverage_s3/2023-03-20T14:38:19+01:00/tags/s3/2023-08-17T22:23:40+05:30/user-guide/aws/s3/2023-09-27T07:46:00+02:00/tags/s3-website/2023-08-17T22:23:40+05:30/references/coverage/coverage_s3control/2023-03-20T14:38:19+01:00/references/coverage/coverage_sagemaker/2023-03-20T14:38:19+01:00/user-guide/aws/sagemaker/2023-02-03T15:18:39+05:30/references/coverage/coverage_sagemaker-runtime/2023-03-20T14:38:19+01:00/tags/sam/2022-12-01T14:30:06+05:30/references/coverage/coverage_scheduler/2023-08-07T09:31:39+02:00/tags/schema-evolution/2023-08-17T22:23:40+05:30/tags/sdk/2023-09-11T10:43:08+03:00/applications/search-application-with-lambda-kinesis-firehose-elasticsearch-s3/2023-07-27T12:31:23+02:00/tags/secret-access-key/2023-05-19T17:05:51+05:30/user-guide/aws/secretsmanager/2023-09-11T19:23:39+05:30/references/coverage/coverage_secretsmanager/2023-03-20T14:38:19+01:00/tags/security/2023-06-28T15:22:44+05:00/user-guide/aws/security-token-service/2023-09-13T06:43:17+02:00/tags/self-managed/2023-04-23T09:59:36+05:30/tags/serverless/2023-09-18T08:38:19+02:00/user-guide/aws/serverlessrepo/2023-09-11T19:10:28+05:30/applications/serverless-container-based-apis-with-amazon-ecs-api-gateway/2023-06-28T15:22:44+05:00/applications/serverless-image-resizer-with-aws-lambda-s3-sns-and-ses/2023-06-28T15:22:44+05:00/applications/serverless-microservices-with-amazon-api-gateway-dynamodb-sqs-and-lambda/2023-06-28T15:22:44+05:00/applications/serverless-rds-proxy-with-api-gateway-lambda-and-aurora-rds/2023-07-27T12:31:23+02:00/applications/serverless-transcription-application-using-transcribe-s3-lambda-sqs-and-ses/2023-06-28T15:22:44+05:00/tags/serverless-containers/2023-06-28T15:22:44+05:00/tags/serverless-localstack-plugin/2023-08-17T22:23:40+05:30/references/coverage/coverage_serverlessrepo/2023-03-20T14:38:19+01:00/user-guide/aws/servicediscovery/2023-09-04T23:45:02+05:30/references/coverage/coverage_servicediscovery/2023-03-20T14:38:19+01:00/references/coverage/coverage_ses/2023-03-20T14:38:19+01:00/references/coverage/coverage_sesv2/2023-03-20T14:38:19+01:00/tags/silicon/2023-05-19T17:05:51+05:30/tags/simple-email-service/2023-08-17T22:54:42+05:30/user-guide/aws/ses/2023-09-27T11:21:28+05:30/tags/simple-notification-service/2023-08-17T22:54:42+05:30/user-guide/aws/sns/2023-08-24T22:36:50+05:30/tags/simple-queue-service/2023-08-17T22:54:42+05:30/user-guide/aws/sqs/2023-09-13T06:42:57+02:00/user-guide/aws/swf/2023-09-02T00:15:24+05:30/references/coverage/coverage_sns/2023-03-20T14:38:19+01:00/tags/spring-boot/2023-08-17T22:54:42+05:30/references/coverage/coverage_sqs/2023-03-20T14:38:19+01:00/tags/ssl/2023-08-02T12:53:03+02:00/references/coverage/coverage_ssm/2023-03-20T14:38:19+01:00/tags/sso/2023-04-24T21:27:46+05:30/references/coverage/coverage_sso-admin/2023-05-29T10:37:24+02:00/tags/stack-insights/2023-02-20T23:11:36+01:00/tags/static-website/2023-08-17T22:23:40+05:30/user-guide/aws/stepfunctions/2023-09-02T00:12:48+05:30/applications/step-up-authentication-using-amazon-cognito/2023-06-28T15:22:44+05:00/tags/step-up-auth/2023-06-28T15:22:44+05:00/references/coverage/coverage_stepfunctions/2023-03-20T14:38:19+01:00/references/coverage/coverage_sts/2023-03-20T14:38:19+01:00/references/coverage/coverage_support/2023-03-20T14:38:19+01:00/user-guide/aws/support/2023-08-30T15:39:42+05:30/references/coverage/coverage_swf/2023-03-20T14:38:19+01:00/user-guide/aws/systems-manager/2023-09-11T15:14:44+05:30/tags/terraform/2023-09-06T08:59:00+02:00/tags/testing/2023-05-04T11:45:00+05:30/tags/tflocal-cli/2023-08-17T22:23:40+05:30/user-guide/aws/timestream/2023-07-20T15:44:07+02:00/references/coverage/coverage_timestream-query/2023-03-20T14:38:19+01:00/references/coverage/coverage_timestream-write/2023-03-20T14:38:19+01:00/categories/tools/2023-09-29T12:57:11+01:00/references/coverage/coverage_transcribe/2023-03-20T14:38:19+01:00/user-guide/aws/transcribe/2023-09-27T11:21:47+02:00/references/coverage/coverage_transfer/2023-03-20T14:38:19+01:00/user-guide/aws/transfer/2023-09-11T18:22:02-05:00/tags/troubleshooting/2023-09-29T12:57:11+01:00/user-guide/aws/xray/2023-09-18T08:38:19+02:00/references/coverage/coverage_xray/2023-03-20T14:38:19+01:00 \ No newline at end of file diff --git a/tags/networking/index.xml b/tags/networking/index.xml index 6e5073defa..2f9c97d4ad 100644 --- a/tags/networking/index.xml +++ b/tags/networking/index.xml @@ -14,7 +14,14 @@ Additionally, if you bind a domain name to <code>localhost</code>, ensure <figure> <img src="../images/4.svg" width="400"/> </figure> -<p>Suppose your code is running inside an ECS container that LocalStack has created. To enable access to the LocalStack instance, it&rsquo;s advisable to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a>, and then set the <code>MAIN_DOCKER_NETWORK</code> environment variable to this network&rsquo;s name. This allows the code running inside the container to access the LocalStack instance using its hostname. For example:</p> +<p>Suppose your code is running inside an ECS container that LocalStack has created.</p> +<p>The LocalStack instance is available at the domain <code>localhost.localstack.cloud</code>. +All subdomains of <code>localhost.localstack.cloud</code> also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To enable access to the LocalStack instance, it's advisable to start LocalStack in a [user-defined network](https://docs.docker.com/network/bridge/), and then set the `MAIN_DOCKER_NETWORK` environment variable to this network's name. +This allows the code running inside the container to access the LocalStack instance using its hostname. +For example: <ul class="nav nav-tabs" id="tabs-5" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -73,11 +80,21 @@ id="tabs-05-02" role="tabpanel" aria-labelled-by="tabs-05-02-tab"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># endpoint url</span></span></span></code></pre></div> </div> </div> +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/7.svg" width="400"/> </figure> -<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. To facilitate access to LocalStack from within the container, it&rsquo;s recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the MAIN_DOCKER_NETWORK environment variable to the network&rsquo;s name. Doing so enables the containerized code to connect to the LocalStack instance using its hostname. For instance:</p> +<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. +Your application container should be configured to use LocalStack as its DNS server. +Once this is done, the domain name <code>localhost.localstack.cloud</code> will resolve to the LocalStack container. +All subdomains of <code>localhost.localstack.cloud</code> will also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<p>To configure your application container:</p> +<ul> +<li>add a user-managed docker network;</li> +<li>either determine your LocalStack container IP, or configure your LocalStack container to have a fixed known IP address;</li> +<li>set the DNS server of your application container to the IP address of the LocalStack container.</li> +</ul> <ul class="nav nav-tabs" id="tabs-7" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -102,6 +119,103 @@ docker-compose.yml <div class="tab-content" id="tabs-7-content"> <div class="tab-pane fade show active" id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>localstack start -d --network ls +</span></span><span style="display:flex;"><span>localstack <span style="color:#204a87">wait</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>docker network create ls +</span></span><span style="display:flex;"><span>docker run --rm -it --network ls --name localstack_main &lt;other flags&gt; localstack/localstack<span style="color:#ce5c00;font-weight:bold">[</span>-pro<span style="color:#ce5c00;font-weight:bold">]</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">version</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;3.8&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">container_name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${LOCALSTACK_DOCKER_NAME-localstack_main}&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">localstack/localstack</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4566:4566&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4510-4559:4510-4559&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DEBUG=${DEBUG-}</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DOCKER_HOST=unix:///var/run/docker.sock</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">volumes</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;/var/run/docker.sock:/var/run/docker.sock&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the container IP address in the 10.0.2.0/24 subnet</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ghcr.io/localstack/localstack-docker-debug:main</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">entrypoint</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">command</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;sleep&#34;</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;infinity&#34;</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the DNS server to be the LocalStack container</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Specify the subnet range for IP address allocation</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> +</div> +</div> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To facilitate access to LocalStack from within the container, it's recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the <code>MAIN_DOCKER_NETWORK</code> environment variable to the network's name. +Doing so enables the containerized code to connect to the LocalStack instance using its hostname. +For instance: +<ul class="nav nav-tabs" id="tabs-8" role="tablist"> +<li class="nav-item"> +<a class="nav-link active persistLang-bash" +id="tabs-08-00-tab" data-toggle="tab" href="#tabs-08-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-08-00" aria-selected="false"> +CLI +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-01-tab" data-toggle="tab" href="#tabs-08-01" role="tab" +aria-controls="tabs-08-01" aria-selected="false"> +Docker +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-02-tab" data-toggle="tab" href="#tabs-08-02" role="tab" +aria-controls="tabs-08-02" aria-selected="false"> +docker-compose.yml +</a> +</li> +</ul> +<div class="tab-content" id="tabs-8-content"> +<div class="tab-pane fade show active" +id="tabs-08-00" role="tabpanel" aria-labelled-by="tabs-08-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -111,7 +225,7 @@ id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +id="tabs-08-01" role="tabpanel" aria-labelled-by="tabs-08-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -121,7 +235,7 @@ id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +id="tabs-08-02" role="tabpanel" aria-labelled-by="tabs-08-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yml" data-lang="yml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -141,122 +255,47 @@ id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> </div> </div> <h3 id="wildcard-dns-access">Wildcard DNS access</h3> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -The Wildcard DNS access feature is part of <a href="https://localstack.cloud/pricing">LocalStack&rsquo;s Pro/Team offering</a> and requires an API key to be configured. -</div> -<p>Certain resources created by LocalStack can be accessed using virtual host addressing. For example, an S3 bucket can be accessed at the following address format: <code>&lt;bucket&gt;.s3.&lt;region&gt;.localhost.localstack.cloud</code>.</p> -<p>By default, the LocalStack container cannot be reached from containers running in your Docker network at the above address. This is because any subdomains of <code>localhost.localstack.cloud</code> is resolved to <code>127.0.0.1</code> within the Docker network.</p> -<p>If Docker supported wildcard DNS configuration with <code>--network-alias</code> (Docker CLI) or <code>aliases:</code> (<code>docker-compose</code>), this could be solved with Docker configuration alone.</p> -<p>To map more complex domain names to the LocalStack container within the Docker network, the LocalStack container can be utilized as a DNS server. However, this approach requires additional configuration steps.</p> -<p>Specifically, the LocalStack container must have a static IP address within the network. To set up the LocalStack container as a DNS server, a static IP address must be assigned within the Docker network.</p> -<p>Here is an example of how you can set it up:</p> -<ul class="nav nav-tabs" id="tabs-9" role="tablist"> -<li class="nav-item"> -<a class="nav-link active persistLang-bash" -id="tabs-09-00-tab" data-toggle="tab" href="#tabs-09-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-09-00" aria-selected="false"> -Docker -</a> -</li><li class="nav-item"> -<a class="nav-link persistLang-yaml" -id="tabs-09-01-tab" data-toggle="tab" href="#tabs-09-01" role="tab" -onclick="persistLang(&#34;yaml&#34;);"aria-controls="tabs-09-01" aria-selected="false"> -docker-compose.yml -</a> -</li> -</ul> -<div class="tab-content" id="tabs-9-content"> -<div class="tab-pane fade show active" -id="tabs-09-00" role="tabpanel" aria-labelled-by="tabs-09-00-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Create the network</span> -</span></span><span style="display:flex;"><span>docker network create my-network --subnet &lt;ip address range CIDR&gt; -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start LocalStack</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --ip 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> -e <span style="color:#000">DNS_RESOLVE_IP</span><span style="color:#ce5c00;font-weight:bold">=</span>10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;other flags&gt; <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> localstack/localstack-pro -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start your application container</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --dns 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;args&gt; -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Your code can now access LocalStack at &lt;subdomain&gt;.localhost.localstack.cloud</span></span></span></code></pre></div> -</div> -<div class="tab-pane fade" -id="tabs-09-01" role="tabpanel" aria-labelled-by="tabs-09-01-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DNS_RESOLVE_IP=10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> -</div> -</div> -<p>To access LocalStack resources from the <em>application</em> container, you can make requests to the following address format: <code>&lt;bucket-name&gt;.s3.&lt;region&gt;.localhost.localstack.cloud:4566/&lt;key&gt;</code>. This will ensure that the requests reach the LocalStack container.</p> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -For optimal configuration, we recommend using a private IP address range, such as 10.0.0.0/8, for your containers. This helps avoid conflicts with IP addresses assigned by Docker. -Additionally, it&rsquo;s advisable to avoid using <code>X.X.X.1</code> as an IP address, as it is commonly reserved for the host within that subnet. -</div> +<p>LocalStack newer than version 2.3.0 supports wildcard DNS access by default. +Please update your LocalStack container and see the <a href="#from-your-container">instructions</a>.</p> +</details> <h2 id="from-a-separate-host">From a separate host</h2> <figure> <img src="../images/10.svg" width="400"/> </figure> <p>LocalStack must listen to the address of the host, or <code>0.0.0.0</code>.</p> -<ul class="nav nav-tabs" id="tabs-12" role="tablist"> +<ul class="nav nav-tabs" id="tabs-11" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" -id="tabs-12-00-tab" data-toggle="tab" href="#tabs-12-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-12-00" aria-selected="false"> +id="tabs-11-00-tab" data-toggle="tab" href="#tabs-11-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-11-00" aria-selected="false"> CLI </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-01-tab" data-toggle="tab" href="#tabs-12-01" role="tab" -aria-controls="tabs-12-01" aria-selected="false"> +id="tabs-11-01-tab" data-toggle="tab" href="#tabs-11-01" role="tab" +aria-controls="tabs-11-01" aria-selected="false"> Docker </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-02-tab" data-toggle="tab" href="#tabs-12-02" role="tab" -aria-controls="tabs-12-02" aria-selected="false"> +id="tabs-11-02-tab" data-toggle="tab" href="#tabs-11-02" role="tab" +aria-controls="tabs-11-02" aria-selected="false"> docker-compose </a> </li> </ul> -<div class="tab-content" id="tabs-12-content"> +<div class="tab-content" id="tabs-11-content"> <div class="tab-pane fade show active" -id="tabs-12-00" role="tabpanel" aria-labelled-by="tabs-12-00-tab"> +id="tabs-11-00" role="tabpanel" aria-labelled-by="tabs-11-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">EDGE_BIND_HOST</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#34;0.0.0.0&#34;</span> localstack start</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-01" role="tabpanel" aria-labelled-by="tabs-12-01-tab"> +id="tabs-11-01" role="tabpanel" aria-labelled-by="tabs-11-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># this command exposes ports on all interfaces by default</span> </span></span><span style="display:flex;"><span>docker run --rm -it -p 4566:4566 &lt;additional arguments&gt; localstack</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-02" role="tabpanel" aria-labelled-by="tabs-12-02-tab"> +id="tabs-11-02" role="tabpanel" aria-labelled-by="tabs-11-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -383,7 +422,13 @@ LocalStack only binds to IPv4 addresses (e.g. <code>127.0.0.1</code>). Che <figure> <img src="../images/2.svg" width="400"/> </figure> -<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS.</p> +<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS. +You need to make two changes:</p> +<ul> +<li>Publish port 53 from the LocalStack docker container to your host.</li> +<li>Configure your host to use the LocalStack DNS server by default.</li> +</ul> +<p>For more details, see your <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server documentation</a>.</p> <p>For the community edition of LocalStack, you can employ your own DNS server to achieve a similar outcome, but it won&rsquo;t be managed by LocalStack. Note that in both cases, SSL verification must be disabled. See the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#limitations">limitations of the DNS server</a> for more information.</p> <h2 id="from-a-lambda-function">From a lambda function</h2> <figure> @@ -405,7 +450,12 @@ An additional environment variable is available: <code>LOCALSTACK_HOSTNAME< <img src="../images/6.svg" width="400"/> </figure> <p>Check out our documentation while <a href="/references/network-troubleshooting/endpoint-url/#from-a-container-localstack-created">using the endpoint URL</a>.</p> -<p>The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. Suppose you&rsquo;re running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. +Suppose you're running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. +In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack. +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/9.svg" width="400"/> diff --git a/tags/troubleshooting/index.xml b/tags/troubleshooting/index.xml index acd7571cd0..fc29cd16e7 100644 --- a/tags/troubleshooting/index.xml +++ b/tags/troubleshooting/index.xml @@ -14,7 +14,14 @@ Additionally, if you bind a domain name to <code>localhost</code>, ensure <figure> <img src="../images/4.svg" width="400"/> </figure> -<p>Suppose your code is running inside an ECS container that LocalStack has created. To enable access to the LocalStack instance, it&rsquo;s advisable to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a>, and then set the <code>MAIN_DOCKER_NETWORK</code> environment variable to this network&rsquo;s name. This allows the code running inside the container to access the LocalStack instance using its hostname. For example:</p> +<p>Suppose your code is running inside an ECS container that LocalStack has created.</p> +<p>The LocalStack instance is available at the domain <code>localhost.localstack.cloud</code>. +All subdomains of <code>localhost.localstack.cloud</code> also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To enable access to the LocalStack instance, it's advisable to start LocalStack in a [user-defined network](https://docs.docker.com/network/bridge/), and then set the `MAIN_DOCKER_NETWORK` environment variable to this network's name. +This allows the code running inside the container to access the LocalStack instance using its hostname. +For example: <ul class="nav nav-tabs" id="tabs-5" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -73,11 +80,21 @@ id="tabs-05-02" role="tabpanel" aria-labelled-by="tabs-05-02-tab"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#8f5902;font-style:italic"># endpoint url</span></span></span></code></pre></div> </div> </div> +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/7.svg" width="400"/> </figure> -<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. To facilitate access to LocalStack from within the container, it&rsquo;s recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the MAIN_DOCKER_NETWORK environment variable to the network&rsquo;s name. Doing so enables the containerized code to connect to the LocalStack instance using its hostname. For instance:</p> +<p>Suppose you&rsquo;re accessing AWS resources such as S3 in LocalStack by running your application code in a container. +Your application container should be configured to use LocalStack as its DNS server. +Once this is done, the domain name <code>localhost.localstack.cloud</code> will resolve to the LocalStack container. +All subdomains of <code>localhost.localstack.cloud</code> will also resolve to the LocalStack instance, e.g. API Gateway default URLs.</p> +<p>To configure your application container:</p> +<ul> +<li>add a user-managed docker network;</li> +<li>either determine your LocalStack container IP, or configure your LocalStack container to have a fixed known IP address;</li> +<li>set the DNS server of your application container to the IP address of the LocalStack container.</li> +</ul> <ul class="nav nav-tabs" id="tabs-7" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" @@ -102,6 +119,103 @@ docker-compose.yml <div class="tab-content" id="tabs-7-content"> <div class="tab-pane fade show active" id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>localstack start -d --network ls +</span></span><span style="display:flex;"><span>localstack <span style="color:#204a87">wait</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># start localstack</span> +</span></span><span style="display:flex;"><span>docker network create ls +</span></span><span style="display:flex;"><span>docker run --rm -it --network ls --name localstack_main &lt;other flags&gt; localstack/localstack<span style="color:#ce5c00;font-weight:bold">[</span>-pro<span style="color:#ce5c00;font-weight:bold">]</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># get the ip address of the LocalStack container</span> +</span></span><span style="display:flex;"><span>docker inspect localstack_main <span style="color:#000;font-weight:bold">|</span> <span style="color:#4e9a06">\ +</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> jq -r <span style="color:#4e9a06">&#39;.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress&#39;</span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># prints 172.27.0.2</span> +</span></span><span style="display:flex;"><span> +</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># run your application container</span> +</span></span><span style="display:flex;"><span>docker run --rm -it --dns 172.27.0.2 --network ls &lt;arguments&gt; &lt;image name&gt;</span></span></code></pre></div> +</div> +<div class="tab-pane fade" +id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">version</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;3.8&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">container_name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;${LOCALSTACK_DOCKER_NAME-localstack_main}&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">localstack/localstack</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ports</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4566:4566&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Now only required if you need to access LocalStack from the host</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;127.0.0.1:4510-4559:4510-4559&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DEBUG=${DEBUG-}</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DOCKER_HOST=unix:///var/run/docker.sock</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">volumes</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;${LOCALSTACK_VOLUME_DIR:-./volume}:/var/lib/localstack&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#4e9a06">&#34;/var/run/docker.sock:/var/run/docker.sock&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the container IP address in the 10.0.2.0/24 subnet</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">image</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ghcr.io/localstack/localstack-docker-debug:main</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">entrypoint</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;&#34;</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">command</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000;font-weight:bold">[</span><span style="color:#4e9a06">&#34;sleep&#34;</span><span style="color:#000;font-weight:bold">,</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#4e9a06">&#34;infinity&#34;</span><span style="color:#000;font-weight:bold">]</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Set the DNS server to be the LocalStack container</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># Specify the subnet range for IP address allocation</span><span style="color:#f8f8f8;text-decoration:underline"> +</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> +</div> +</div> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +To facilitate access to LocalStack from within the container, it's recommended to start LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> and set the <code>MAIN_DOCKER_NETWORK</code> environment variable to the network's name. +Doing so enables the containerized code to connect to the LocalStack instance using its hostname. +For instance: +<ul class="nav nav-tabs" id="tabs-8" role="tablist"> +<li class="nav-item"> +<a class="nav-link active persistLang-bash" +id="tabs-08-00-tab" data-toggle="tab" href="#tabs-08-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-08-00" aria-selected="false"> +CLI +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-01-tab" data-toggle="tab" href="#tabs-08-01" role="tab" +aria-controls="tabs-08-01" aria-selected="false"> +Docker +</a> +</li><li class="nav-item"> +<a class="nav-link" +id="tabs-08-02-tab" data-toggle="tab" href="#tabs-08-02" role="tab" +aria-controls="tabs-08-02" aria-selected="false"> +docker-compose.yml +</a> +</li> +</ul> +<div class="tab-content" id="tabs-8-content"> +<div class="tab-pane fade show active" +id="tabs-08-00" role="tabpanel" aria-labelled-by="tabs-08-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -111,7 +225,7 @@ id="tabs-07-00" role="tabpanel" aria-labelled-by="tabs-07-00-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> +id="tabs-08-01" role="tabpanel" aria-labelled-by="tabs-08-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># create the network</span> </span></span><span style="display:flex;"><span>docker network create my-network </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># launch localstack</span> @@ -121,7 +235,7 @@ id="tabs-07-01" role="tabpanel" aria-labelled-by="tabs-07-01-tab"> </span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># then your code can access localstack at its container name (by default: localstack_main)</span></span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> +id="tabs-08-02" role="tabpanel" aria-labelled-by="tabs-08-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yml" data-lang="yml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -141,122 +255,47 @@ id="tabs-07-02" role="tabpanel" aria-labelled-by="tabs-07-02-tab"> </div> </div> <h3 id="wildcard-dns-access">Wildcard DNS access</h3> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -The Wildcard DNS access feature is part of <a href="https://localstack.cloud/pricing">LocalStack&rsquo;s Pro/Team offering</a> and requires an API key to be configured. -</div> -<p>Certain resources created by LocalStack can be accessed using virtual host addressing. For example, an S3 bucket can be accessed at the following address format: <code>&lt;bucket&gt;.s3.&lt;region&gt;.localhost.localstack.cloud</code>.</p> -<p>By default, the LocalStack container cannot be reached from containers running in your Docker network at the above address. This is because any subdomains of <code>localhost.localstack.cloud</code> is resolved to <code>127.0.0.1</code> within the Docker network.</p> -<p>If Docker supported wildcard DNS configuration with <code>--network-alias</code> (Docker CLI) or <code>aliases:</code> (<code>docker-compose</code>), this could be solved with Docker configuration alone.</p> -<p>To map more complex domain names to the LocalStack container within the Docker network, the LocalStack container can be utilized as a DNS server. However, this approach requires additional configuration steps.</p> -<p>Specifically, the LocalStack container must have a static IP address within the network. To set up the LocalStack container as a DNS server, a static IP address must be assigned within the Docker network.</p> -<p>Here is an example of how you can set it up:</p> -<ul class="nav nav-tabs" id="tabs-9" role="tablist"> -<li class="nav-item"> -<a class="nav-link active persistLang-bash" -id="tabs-09-00-tab" data-toggle="tab" href="#tabs-09-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-09-00" aria-selected="false"> -Docker -</a> -</li><li class="nav-item"> -<a class="nav-link persistLang-yaml" -id="tabs-09-01-tab" data-toggle="tab" href="#tabs-09-01" role="tab" -onclick="persistLang(&#34;yaml&#34;);"aria-controls="tabs-09-01" aria-selected="false"> -docker-compose.yml -</a> -</li> -</ul> -<div class="tab-content" id="tabs-9-content"> -<div class="tab-pane fade show active" -id="tabs-09-00" role="tabpanel" aria-labelled-by="tabs-09-00-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Create the network</span> -</span></span><span style="display:flex;"><span>docker network create my-network --subnet &lt;ip address range CIDR&gt; -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start LocalStack</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --ip 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> -e <span style="color:#000">DNS_RESOLVE_IP</span><span style="color:#ce5c00;font-weight:bold">=</span>10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;other flags&gt; <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> localstack/localstack-pro -</span></span><span style="display:flex;"><span> -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Start your application container</span> -</span></span><span style="display:flex;"><span>docker run --rm -it <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --dns 10.0.2.20 <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> --network my-network <span style="color:#4e9a06">\ -</span></span></span><span style="display:flex;"><span><span style="color:#4e9a06"></span> &lt;args&gt; -</span></span><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># Your code can now access LocalStack at &lt;subdomain&gt;.localhost.localstack.cloud</span></span></span></code></pre></div> -</div> -<div class="tab-pane fade" -id="tabs-09-01" role="tabpanel" aria-labelled-by="tabs-09-01-tab"> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">environment</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#000">DNS_RESOLVE_IP=10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipv4_address</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">application</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">dns</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#0000cf;font-weight:bold">10.0.2.20</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"></span><span style="color:#204a87;font-weight:bold">networks</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ls</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">name</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#000">ls</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">ipam</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">config</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> -</span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span>- <span style="color:#204a87;font-weight:bold">subnet</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#0000cf;font-weight:bold">10.0.2.0</span><span style="color:#000">/24</span></span></span></code></pre></div> -</div> -</div> -<p>To access LocalStack resources from the <em>application</em> container, you can make requests to the following address format: <code>&lt;bucket-name&gt;.s3.&lt;region&gt;.localhost.localstack.cloud:4566/&lt;key&gt;</code>. This will ensure that the requests reach the LocalStack container.</p> -<div class="alert alert-primary" role="alert"> -<h4 class="alert-heading">Note</h4> -For optimal configuration, we recommend using a private IP address range, such as 10.0.0.0/8, for your containers. This helps avoid conflicts with IP addresses assigned by Docker. -Additionally, it&rsquo;s advisable to avoid using <code>X.X.X.1</code> as an IP address, as it is commonly reserved for the host within that subnet. -</div> +<p>LocalStack newer than version 2.3.0 supports wildcard DNS access by default. +Please update your LocalStack container and see the <a href="#from-your-container">instructions</a>.</p> +</details> <h2 id="from-a-separate-host">From a separate host</h2> <figure> <img src="../images/10.svg" width="400"/> </figure> <p>LocalStack must listen to the address of the host, or <code>0.0.0.0</code>.</p> -<ul class="nav nav-tabs" id="tabs-12" role="tablist"> +<ul class="nav nav-tabs" id="tabs-11" role="tablist"> <li class="nav-item"> <a class="nav-link active persistLang-bash" -id="tabs-12-00-tab" data-toggle="tab" href="#tabs-12-00" role="tab" -onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-12-00" aria-selected="false"> +id="tabs-11-00-tab" data-toggle="tab" href="#tabs-11-00" role="tab" +onclick="persistLang(&#34;bash&#34;);"aria-controls="tabs-11-00" aria-selected="false"> CLI </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-01-tab" data-toggle="tab" href="#tabs-12-01" role="tab" -aria-controls="tabs-12-01" aria-selected="false"> +id="tabs-11-01-tab" data-toggle="tab" href="#tabs-11-01" role="tab" +aria-controls="tabs-11-01" aria-selected="false"> Docker </a> </li><li class="nav-item"> <a class="nav-link" -id="tabs-12-02-tab" data-toggle="tab" href="#tabs-12-02" role="tab" -aria-controls="tabs-12-02" aria-selected="false"> +id="tabs-11-02-tab" data-toggle="tab" href="#tabs-11-02" role="tab" +aria-controls="tabs-11-02" aria-selected="false"> docker-compose </a> </li> </ul> -<div class="tab-content" id="tabs-12-content"> +<div class="tab-content" id="tabs-11-content"> <div class="tab-pane fade show active" -id="tabs-12-00" role="tabpanel" aria-labelled-by="tabs-12-00-tab"> +id="tabs-11-00" role="tabpanel" aria-labelled-by="tabs-11-00-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">EDGE_BIND_HOST</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#34;0.0.0.0&#34;</span> localstack start</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-01" role="tabpanel" aria-labelled-by="tabs-12-01-tab"> +id="tabs-11-01" role="tabpanel" aria-labelled-by="tabs-11-01-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#8f5902;font-style:italic"># this command exposes ports on all interfaces by default</span> </span></span><span style="display:flex;"><span>docker run --rm -it -p 4566:4566 &lt;additional arguments&gt; localstack</span></span></code></pre></div> </div> <div class="tab-pane fade" -id="tabs-12-02" role="tabpanel" aria-labelled-by="tabs-12-02-tab"> +id="tabs-11-02" role="tabpanel" aria-labelled-by="tabs-11-02-tab"> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-yaml" data-lang="yaml"><span style="display:flex;"><span><span style="color:#204a87;font-weight:bold">services</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#204a87;font-weight:bold">localstack</span><span style="color:#000;font-weight:bold">:</span><span style="color:#f8f8f8;text-decoration:underline"> </span></span></span><span style="display:flex;"><span><span style="color:#f8f8f8;text-decoration:underline"> </span><span style="color:#8f5902;font-style:italic"># ... other configuration here</span><span style="color:#f8f8f8;text-decoration:underline"> @@ -383,7 +422,13 @@ LocalStack only binds to IPv4 addresses (e.g. <code>127.0.0.1</code>). Che <figure> <img src="../images/2.svg" width="400"/> </figure> -<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS.</p> +<p>If you&rsquo;re using LocalStack with an <a href="/getting-started/api-key/">API key</a>, then you can utilize the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server</a> to perform requests to LocalStack as if it were AWS. +You need to make two changes:</p> +<ul> +<li>Publish port 53 from the LocalStack docker container to your host.</li> +<li>Configure your host to use the LocalStack DNS server by default.</li> +</ul> +<p>For more details, see your <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/">DNS server documentation</a>.</p> <p>For the community edition of LocalStack, you can employ your own DNS server to achieve a similar outcome, but it won&rsquo;t be managed by LocalStack. Note that in both cases, SSL verification must be disabled. See the <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#limitations">limitations of the DNS server</a> for more information.</p> <h2 id="from-a-lambda-function">From a lambda function</h2> <figure> @@ -405,7 +450,12 @@ An additional environment variable is available: <code>LOCALSTACK_HOSTNAME< <img src="../images/6.svg" width="400"/> </figure> <p>Check out our documentation while <a href="/references/network-troubleshooting/endpoint-url/#from-a-container-localstack-created">using the endpoint URL</a>.</p> -<p>The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. Suppose you&rsquo;re running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack.</p> +<details> +<summary>For LocalStack versions before 2.3.0</summary> +The Lambda service in LocalStack also supports the <code>HOSTNAME_FROM_LAMBDA</code> environment variable, which can be handy if LocalStack is reachable through a specific hostname. +Suppose you're running LocalStack in a <a href="https://docs.docker.com/network/bridge/">user-defined network</a> using Docker, where the LocalStack container can be accessed from other containers in the network using its service name. +In that case, you can set the <code>HOSTNAME_FROM_LAMBDA</code> environment variable to this value to help resolve any issues with lambda functions accessing resources created by LocalStack. +</details> <h2 id="from-your-container">From your container</h2> <figure> <img src="../images/9.svg" width="400"/> diff --git a/user-guide/tools/transparent-endpoint-injection/dns-server/index.html b/user-guide/tools/transparent-endpoint-injection/dns-server/index.html index 50cafeedb8..5f84063646 100644 --- a/user-guide/tools/transparent-endpoint-injection/dns-server/index.html +++ b/user-guide/tools/transparent-endpoint-injection/dns-server/index.html @@ -1,7 +1,7 @@ DNS Server | Docs

    DNS Server

    Use LocalStack as DNS server to redirect AWS queries to LocalStack

    LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.

    When the system starts up, the log output contains the IP address of the local DNS server. Typically, this address by default is either 0.0.0.0 (see example below) or 127.0.0.1 if LocalStack cannot bind to 0.0.0.0 due to a conflicting service.

    Starting DNS servers (tcp/udp port 53 on 0.0.0.0)...
    -

    Configuration

    The DNS server can be configured to match your usecase using the DNS_ADDRESS environment variable.

    To bind the server to 127.0.0.1, you can set:

    DNS_ADDRESS=127.0.0.1
    -

    You can disable the DNS server (which will prevent LocalStack from binding port 53) using:

    DNS_ADDRESS=0
    -

    You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:

    DNS_LOCAL_NAME_PATTERNS='.*(ecr|lambda).*.amazonaws.com'
    + Create project issue
    Table of Contents

    DNS Server

    Use LocalStack as DNS server to redirect AWS queries to LocalStack

    All versions of LocalStack include a DNS server that resolves the domain name localhost.localstack.cloud to the LocalStack container. +This enables seamless connectivity from your container to LocalStack, or from created compute resources like Lambda, ECS or EC2 to LocalStack. +In addition, LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.

    When the system starts up, the log output contains the IP address of the local DNS server. +If port 53 can be bound on the host, the LocalStack CLI will publish port 53 from the container to the host on IP address 127.0.0.1. +Otherwise it will not publish port 53 to the host. +Regardless of whether the port can be bound or not, the DNS server is bound to address 0.0.0.0 of the LocalStack container so other containers within the same docker network can use the DNS server. +See the Network Troubleshooting guide for more details.

    Configuration

    If you experience problems when running LocalStack and the DNS server is the issue, you can disable the DNS server using:

    DNS_ADDRESS=0
    +

    You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:

    DNS_LOCAL_NAME_PATTERNS='.*(ecr|lambda).*.amazonaws.com'
     

    Using this configuration, the LocalStack DNS server only redirects ECR and Lambda domains to LocalStack, and the rest will be resolved via $DNS_SERVER. This can be used for hybrid setups, where certain API calls (e.g., ECR, Lambda) target LocalStack, whereas other services will target real AWS.

    There is the possibility to manually set the DNS server all not-redirected queries will be forwarded to:

    DNS_SERVER=1.1.1.1
     

    Per default, LocalStack uses the Google DNS resolver at 8.8.8.8.

    Self-signed certificates

    When you configure transparent execution mode using DNS, you may still have to configure your application’s AWS SDK to accept self-signed certificates. This is a technical limitation caused by the SSL certificate validation mechanism, due to the fact that we are repointing AWS domain names (e.g., *.amazonaws.com) to localhost. For example, the following command will fail with an SSL error:

    $ aws kinesis list-streams
    @@ -326,7 +330,7 @@
     This will prepend this line in the resolv.conf file even after changes.

    DNS Rebind Protection

    If you rely on your local network’s DNS, your router/DNS server might block requests due to the DNS Rebind Protection. This feature is enabled by default in pfSense, OPNSense, OpenWRT, AVM FritzBox, and potentially also other devices. -Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).

    You can check if your DNS setup works correctly by resolving a subdomain of localhost.localstack.cloud:

    $ dig test.localhost.localstack.cloud
    +Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).

    You can check if your DNS setup works correctly by resolving a subdomain of localhost.localstack.cloud:

    $ dig test.localhost.localstack.cloud
     
     ; <<>> DiG 9.16.8-Ubuntu <<>> test.localhost.localstack.cloud
     ;; global options: +cmd
    @@ -346,8 +350,8 @@
     ;; Query time: 16 msec
     ;; SERVER: 127.0.0.53#53(127.0.0.53)
     ;; WHEN: Fr Jän 14 11:23:12 CET 2022
    -;; MSG SIZE  rcvd: 90

    If the the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. -If not, please check the configuration of your router / DNS if the Rebind Protection is active or enable the LocalStack DNS on your system.

    Customizing internal endpoint resolution

    The DNS name localhost.localstack.cloud (and any subdomains like mybucket.s3.localhost.localstack.cloud) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.

    Please refer to the steps in the Route53 docs for more details on how the internal DNS name can be customized.


    +;; MSG SIZE rcvd: 90

    If the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. +If not, please check the configuration of your router / DNS if the Rebind Protection is active or enable the LocalStack DNS on your system.

    Customizing internal endpoint resolution

    The DNS name localhost.localstack.cloud (and any subdomains like mybucket.s3.localhost.localstack.cloud) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.

    Please refer to the steps in the Route53 docs for more details on how the internal DNS name can be customized.


    \ No newline at end of file diff --git a/user-guide/tools/transparent-endpoint-injection/index.xml b/user-guide/tools/transparent-endpoint-injection/index.xml index a51678fd13..09941f89b6 100644 --- a/user-guide/tools/transparent-endpoint-injection/index.xml +++ b/user-guide/tools/transparent-endpoint-injection/index.xml @@ -1,14 +1,21 @@ Docs – Transparent Endpoint Injection/user-guide/tools/transparent-endpoint-injection/Recent content in Transparent Endpoint Injection on DocsHugo -- gohugo.ioUser-Guide: DNS Server/user-guide/tools/transparent-endpoint-injection/dns-server/Mon, 01 Jan 0001 00:00:00 +0000/user-guide/tools/transparent-endpoint-injection/dns-server/ -<p>LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> -<p>When the system starts up, the log output contains the IP address of the local DNS server. Typically, this address by default is either <code>0.0.0.0</code> (see example below) or <code>127.0.0.1</code> if LocalStack cannot bind to <code>0.0.0.0</code> due to a conflicting service.</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-text" data-lang="text"><span style="display:flex;"><span>Starting DNS servers (tcp/udp port 53 on 0.0.0.0)... -</span></span></code></pre></div><h2 id="configuration">Configuration</h2> -<p>The DNS server can be configured to match your usecase using the <code>DNS_ADDRESS</code> environment variable.</p> -<p>To bind the server to <code>127.0.0.1</code>, you can set:</p> -<div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span>127.0.0.1 -</span></span></code></pre></div><p>You can disable the DNS server (which will prevent LocalStack from binding port 53) using:</p> +<p>All versions of LocalStack include a DNS server that resolves the domain name <code>localhost.localstack.cloud</code> to the LocalStack container. +This enables seamless connectivity from your container to LocalStack, or from created compute resources like Lambda, ECS or EC2 to LocalStack. +In addition, LocalStack Pro supports transparent execution mode, which means that your application code automatically accesses the LocalStack APIs as opposed to the real APIs on AWS.</p> +<p>When the system starts up, the log output contains the IP address of the local DNS server. +If port 53 can be bound on the host, the LocalStack CLI will publish port 53 from the container to the host on IP address <code>127.0.0.1</code>. +Otherwise it will not publish port 53 to the host. +Regardless of whether the port can be bound or not, the DNS server is bound to address <code>0.0.0.0</code> of the LocalStack container so other containers within the same docker network can use the DNS server. +See the <a href="/references/network-troubleshooting/endpoint-url/#from-your-container">Network Troubleshooting guide</a> for more details.</p> +<h2 id="configuration">Configuration</h2> +<p>If you experience problems when running LocalStack and the DNS server is the issue, you can disable the DNS server using:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_ADDRESS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#0000cf;font-weight:bold">0</span> -</span></span></code></pre></div><p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> +</span></span></code></pre></div> +<div class="alert alert-warning" role="alert"> +<h4 class="alert-heading">Warning</h4> +We do not recommend this configuration since this disables resolving <code>localhost.localstack.cloud</code> to the LocalStack container. +</div> +<p>You can also specify which exact URLs should be redirected to LocalStack by defining a hostname regex like:</p> <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#000">DNS_LOCAL_NAME_PATTERNS</span><span style="color:#ce5c00;font-weight:bold">=</span><span style="color:#4e9a06">&#39;.*(ecr|lambda).*.amazonaws.com&#39;</span> </span></span></code></pre></div><p>Using this configuration, the LocalStack DNS server only redirects ECR and Lambda domains to LocalStack, and the rest will be resolved via <code>$DNS_SERVER</code>. This can be used for hybrid setups, where certain API calls (e.g., ECR, Lambda) target LocalStack, whereas other services will target real AWS.</p> <div class="alert alert-warning" role="alert"> @@ -125,6 +132,10 @@ LocalStack will not store or share any forwarded DNS requests, except maybe in t <p>If you rely on your local network&rsquo;s DNS, your router/DNS server might block requests due to the DNS Rebind Protection. This feature is enabled by default in pfSense, OPNSense, OpenWRT, AVM FritzBox, and potentially also other devices. Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (like OpenWRT).</p> +<div class="alert alert-primary" role="alert"> +<h4 class="alert-heading">Note</h4> +If you are using the LocalStack DNS server, DNS rebind protection should not cause any issues. +</div> <p>You can check if your DNS setup works correctly by resolving a subdomain of <code>localhost.localstack.cloud</code>: <div class="highlight"><pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;display:grid;"><code class="language-text" data-lang="text"><span style="display:flex;"><span><span class="command-prefix">$ </span>dig test.localhost.localstack.cloud </span></span><span style="display:flex;"><span> @@ -148,7 +159,7 @@ Some of the vendors might allow upstream responses in the 127.0.0.0/8 range (lik </span></span><span style="display:flex;"><span>;; WHEN: Fr Jän 14 11:23:12 CET 2022 </span></span><span style="display:flex;"><span>;; MSG SIZE rcvd: 90</span></span></code></pre></div> </p> -<p>If the the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. +<p>If the DNS resolves the subdomain to your localhost (127.0.0.1), your setup is working. If not, please check the configuration of your router / DNS if the Rebind Protection is active or <a href="/user-guide/tools/transparent-endpoint-injection/dns-server/#system-dns-configuration">enable the LocalStack DNS on your system</a>.</p> <h2 id="customizing-internal-endpoint-resolution">Customizing internal endpoint resolution</h2> <p>The DNS name <code>localhost.localstack.cloud</code> (and any subdomains like <code>mybucket.s3.localhost.localstack.cloud</code>) is used internally in LocalStack to route requests, e.g., between a Lambda container and the LocalStack APIs.</p>