WHY GARTNER’S “CONTEXT MESH” CHANGES EVERYTHING AI CONNECTIVITY: THE ROAD AHEAD DON’T MISS API + AI SUMMIT 2026 SEPT 30 – OCT 1
  • [Why Kong](/company/why-kong)Why Kong
    • Explore the unified API Platform
        • BUILD APIs
        • [
          Kong Insomnia](/products/kong-insomnia)
          Kong Insomnia
        • [
          API Design](/products/kong-insomnia/api-design)
          API Design
        • [
          API Mocking](/products/kong-insomnia/api-mocking)
          API Mocking
        • [
          API Testing and Debugging](/products/kong-insomnia/api-testing-and-debugging)
          API Testing and Debugging
        • [
          MCP Client](/products/kong-insomnia/mcp-client)
          MCP Client
        • RUN APIs
        • [
          API Gateway](/products/kong-gateway)
          API Gateway
        • [
          Context Mesh](/products/kong-konnect/features/context-mesh)
          Context Mesh
        • [
          AI Gateway](/products/kong-ai-gateway)
          AI Gateway
        • [
          Event Gateway](/products/event-gateway)
          Event Gateway
        • [
          Kubernetes Operator](/products/kong-gateway-operator)
          Kubernetes Operator
        • [
          Service Mesh](/products/kong-mesh)
          Service Mesh
        • [
          Ingress Controller](/products/kong-ingress-controller)
          Ingress Controller
        • [
          Runtime Management](/products/kong-konnect/features/runtime-management)
          Runtime Management
        • DISCOVER APIs
        • [
          Developer Portal](/products/kong-konnect/features/developer-portal)
          Developer Portal
        • [
          Service Catalog](/products/kong-konnect/features/api-service-catalog)
          Service Catalog
        • [
          MCP Registry](/products/mcp-registry)
          MCP Registry
        • GOVERN APIs
        • [
          Metering and Billing](/products/kong-konnect/features/usage-based-metering-and-billing)
          Metering and Billing
        • [
          APIOps and Automation](/products/apiops-automation)
          APIOps and Automation
        • [
          API Observability](/products/kong-konnect/features/api-observability)
          API Observability
        • [Why Kong?](/company/why-kong)Why Kong?
      • CLOUD
      • [Cloud API Gateways](/products/kong-konnect/features/dedicated-cloud-gateways)Cloud API Gateways
      • [Need a self-hosted or hybrid option?](/products/kong-enterprise)Need a self-hosted or hybrid option?
      • COMPARE
      • [Considering AI Gateway alternatives? ](/performance-comparison/ai-gateway-alternatives)Considering AI Gateway alternatives?
      • [Kong vs. Postman](/performance-comparison/kong-vs-postman)Kong vs. Postman
      • [Kong vs. MuleSoft](/performance-comparison/kong-vs-mulesoft)Kong vs. MuleSoft
      • [Kong vs. Apigee](/performance-comparison/kong-vs-apigee)Kong vs. Apigee
      • [Kong vs. IBM](/performance-comparison/ibm-api-connect-vs-kong)Kong vs. IBM
      • GET STARTED
      • [Sign Up for Kong Konnect](/products/kong-konnect/register)Sign Up for Kong Konnect
      • [Documentation](https://developer.konghq.com/)Documentation
      • FOR PLATFORM TEAMS
      • [Developer Platform](/solutions/building-developer-platform)Developer Platform
      • [Kubernetes and Microservices](/solutions/build-on-kubernetes)Kubernetes and Microservices
      • [Observability](/solutions/observability)Observability
      • [Service Mesh Connectivity ](/solutions/service-mesh-connectivity)Service Mesh Connectivity
      • [Kafka Event Streaming](/solutions/kafka-stream-api-management)Kafka Event Streaming
      • FOR EXECUTIVES
      • [AI Connectivity](/ai-connectivity)AI Connectivity
      • [Open Banking](/solutions/open-banking)Open Banking
      • [Legacy Migration](/solutions/legacy-api-management-migration)Legacy Migration
      • [Platform Cost Reduction](/solutions/api-platform-consolidation)Platform Cost Reduction
      • [Kafka Cost Optimization](/solutions/reduce-kafka-cost)Kafka Cost Optimization
      • [API Monetization](/solutions/api-monetization)API Monetization
      • [AI Monetization](/solutions/ai-monetization)AI Monetization
      • [AI FinOps](/solutions/ai-cost-governance-finops)AI FinOps
      • FOR AI TEAMS
      • [AI Governance](/solutions/ai-governance)AI Governance
      • [AI Security](/solutions/ai-security)AI Security
      • [AI Cost Control](/solutions/ai-cost-optimization-management)AI Cost Control
      • [Agentic Infrastructure](/solutions/agentic-ai-workflows)Agentic Infrastructure
      • [MCP Production](/solutions/mcp-production-and-consumption)MCP Production
      • [MCP Traffic Gateway](/solutions/mcp-governance)MCP Traffic Gateway
      • FOR DEVELOPERS
      • [Mobile App API Development](/solutions/mobile-application-api-development)Mobile App API Development
      • [GenAI App Development](/solutions/power-openai-applications)GenAI App Development
      • [API Gateway for Istio](/solutions/istio-gateway)API Gateway for Istio
      • [Decentralized Load Balancing](/solutions/decentralized-load-balancing)Decentralized Load Balancing
      • BY INDUSTRY
      • [Financial Services](/solutions/financial-services-industry)Financial Services
      • [Healthcare](/solutions/healthcare)Healthcare
      • [Higher Education](/solutions/api-platform-for-education-services)Higher Education
      • [Insurance](/solutions/insurance)Insurance
      • [Manufacturing](/solutions/manufacturing)Manufacturing
      • [Retail](/solutions/retail)Retail
      • [Software & Technology](/solutions/software-and-technology)Software & Technology
      • [Transportation](/solutions/transportation-and-logistics)Transportation
      • [See all Solutions](/solutions)See all Solutions
  • [Pricing](/pricing)Pricing
      • DOCUMENTATION
      • [Kong Konnect](https://developer.konghq.com/konnect/)Kong Konnect
      • [Kong Gateway](https://developer.konghq.com/gateway/)Kong Gateway
      • [Kong Mesh](https://developer.konghq.com/mesh/)Kong Mesh
      • [Kong AI Gateway](https://developer.konghq.com/ai-gateway/)Kong AI Gateway
      • [Kong Event Gateway](https://developer.konghq.com/event-gateway/)Kong Event Gateway
      • [Kong Insomnia](https://developer.konghq.com/insomnia/)Kong Insomnia
      • [Plugin Hub](https://developer.konghq.com/plugins/)Plugin Hub
      • EXPLORE
      • [Blog](/blog)Blog
      • [Learning Center](/blog/learning-center)Learning Center
      • [eBooks](/resources/e-book)eBooks
      • [Reports](/resources/reports)Reports
      • [Demos](/resources/demos)Demos
      • [Customer Stories](/customer-stories)Customer Stories
      • [Videos](/resources/videos)Videos
      • EVENTS
      • [API + AI Summit](/events/conferences/api-ai-summit)API + AI Summit
      • [Agentic Era World Tour](/agentic-era-world-tour)Agentic Era World Tour
      • [Webinars](/events/webinars)Webinars
      • [User Calls](/events/user-calls)User Calls
      • [Workshops](/events/workshops)Workshops
      • [Meetups](/events/meetups)Meetups
      • [See All Events](/events)See All Events
      • FOR DEVELOPERS
      • [Get Started](https://developer.konghq.com/)Get Started
      • [Community](/community)Community
      • [Certification](/academy/certification)Certification
      • [Training](https://education.konghq.com)Training
      • COMPANY
      • [About Us](/company/about-us)About Us
      • [We're Hiring!](/company/careers)We're Hiring!
      • [Press Room](/company/press-room)Press Room
      • [Contact Us](/company/contact-us)Contact Us
      • [Kong Partner Program](/partners)Kong Partner Program
      • [Enterprise Support Portal](https://support.konghq.com/s/)Enterprise Support Portal
      • [Documentation](https://developer.konghq.com/?_gl=1*tphanb*_gcl_au*MTcxNTQ5NjQ0MC4xNzY5Nzg4MDY0LjIwMTI3NzEwOTEuMTc3MzMxODI2MS4xNzczMzE4MjYw*_ga*NDIwMDU4MTU3LjE3Njk3ODgwNjQ.*_ga_4JK9146J1H*czE3NzQwMjg1MjkkbzE4OSRnMCR0MTc3NDAyODUyOSRqNjAkbDAkaDA)Documentation
  • [](/search)
  • [Login](https://cloud.konghq.com/login)Login
  • [Book Demo](/contact-sales)Book Demo
  • [Get Started](/products/kong-konnect/register)Get Started
[Blog](/blog)Blog
  • [AI Gateway](/blog/tag/ai-gateway)AI Gateway
  • [AI Security](/blog/tag/ai-security)AI Security
  • [AIOps](/blog/tag/aiops)AIOps
  • [API Security](/blog/tag/api-security)API Security
  • [API Gateway](/blog/tag/api-gateway)API Gateway
|
    • [API Management](/blog/tag/api-management)API Management
    • [API Development](/blog/tag/api-development)API Development
    • [API Design](/blog/tag/api-design)API Design
    • [Automation](/blog/tag/automation)Automation
    • [Service Mesh](/blog/tag/service-mesh)Service Mesh
    • [Insomnia](/blog/tag/insomnia)Insomnia
    • [View All Blogs](/blog/page/1)View All Blogs
We're Entering the Age of AI Connectivity [Read more](/blog/news/the-age-of-ai-connectivity)Read moreProducts & Agents:
    • [Kong AI Gateway](/products/kong-ai-gateway)Kong AI Gateway
    • [Kong API Gateway](/products/kong-gateway)Kong API Gateway
    • [Kong Event Gateway](/products/event-gateway)Kong Event Gateway
    • [Kong Metering & Billing](/products/usage-based-metering-and-billing)Kong Metering & Billing
    • [Kong Insomnia](/products/kong-insomnia)Kong Insomnia
    • [Kong Konnect](/products/kong-konnect)Kong Konnect
  • [Documentation](https://developer.konghq.com)Documentation
  • [Book Demo](/contact-sales)Book Demo
  1. Home
  2. Blog
  3. Engineering
  4. Deploying a Multi-Cloud API Gateway on AWS and GCP
[Engineering](/blog/engineering)Engineering
November 16, 2021
8 min read

# Deploying a Multi-Cloud API Gateway on AWS and GCP

Claudio Acquaviva
Principal Architect, Kong

After you've built your [microservices](https://konghq.com/blog/learning-center/what-are-microservices)microservices-backed application, it's time to deploy and connect them. Luckily, there are many cloud providers to choose from, and you can even mix and match.

Many organizations, like [Australia Post](https://konghq.com/case-study/australia-post-delivers-streamline-onboarding-with-kong-konnect)Australia Post, are taking the mix-and-match approach, embracing a multi-cloud architecture. The microservices that make up a system no longer have to stay on a single cloud. Instead, microservices can span across multiple cloud providers, multiple accounts and multiple availability zones.

This approach brings greater visibility across microservices and enables decoupled scaling of only those services that need it, and in environments where it's most cost-effective to do so.

However, you need to pair a multi-cloud strategy with a thoughtful approach to unifying your microservices—now sprawled across multiple clouds—for edge connectivity behind a single point of entry. In this post, we'll walk through how to use Kong Gateway to do just that. We'll walk through the following:

  1. - An overview of our mini-project: an application made up of microservices deployed across both GCP and AWS
  2. - Setup of a local deployment of Kong Gateway ([OSS](https://konghq.com/install#kong-community)OSS)
  3. - Configuring Kong Gateway to point to our microservices
  4. - Applying an [authentication](https://konghq.com/blog/learning-center/api-gateway-authentication)authentication strategy ([JWT](https://docs.konghq.com/hub/kong-inc/jwt)JWT) to manage access
  5. - Applying rate limiting to manage traffic

### Our Mini-Project

To simplify this demo, our application will have three services:

  1. - **Users service**: An admin user can fetch a list of all users (GET /users), while a non-admin user can only get their own record (GET /users/:userId). Non-authenticated requests are rejected.
  2. - **Orders service**: An admin user can fetch a list of orders for a given user ID (GET /orders/:userId), while a non-admin user can only get a list of their own orders (GET /orders/:userId). Non-authenticated requests are rejected.
  3. - **Authentication service**: When a request is sent (POST /login) with a valid email and password combination, the authentication service returns a signed JWT to authenticate requests to the Users and Orders services.

For simplicity, each of our services references a JSON file for its data rather than a full-fledged database layer. This will keep us focused on the task at hand: deploying a multi-cloud API gateway.

We wrote all of our services in Node.js, and you can find the source code [here](https://bit.ly/kong-mc-api-gw)here.

### Multi-Cloud Deployment

We have **deployed our Users service to Google App Engine**. Because we implemented some authorization restrictions (based on JWT payload) to access user information, requests to the endpoints will result in a 403 Forbidden error. After we put JWT authentication in place, the response will be 401 Unauthorized.

To confirm that the service is up and running, we've created a /public endpoint that does not have any authorization restrictions:

$ curl -i -X GET kong-multi-cloud-users-service.uc.r.appspot.com/public
HTTP/1.1 200 OK
Users Service: PUBLIC ENDPOINT

$ curl -i -X GET kong-multi-cloud-users-service.uc.r.appspot.com/
HTTP/1.1 403 Forbidden

Meanwhile, we've **deployed our Orders service as a Docker container running on an AWS EC2 instance**. We've built similar authorization restrictions as well as an open /public endpoint:

$ curl -i -X GET 52.42.165.134/public
HTTP/1.1 200 OK
Orders Service: PUBLIC ENDPOINT

$ curl -i -X GET http://52.42.165.134/3
HTTP/1.1 403 Forbidden
Content-Length: 0

Lastly, our **Authentication service is on AWS Lambda**, which we invoke with the [AWS CLI](https://aws.amazon.com/cli)AWS CLI:

$ aws lambda invoke \
--function-name kong-multi-cloud-auth-service \
--invocation-type=RequestResponse \
--cli-binary-format=raw-in-base64-out \
--payload='{"email":"darren.daniels@example.com","password":"WRONG PASSWORD"}' \
response.js

$ cat response.json 
{"statusCode":401}

$ aws lambda invoke \
--function-name kong-multi-cloud-auth-service \
--invocation-type=RequestResponse \
--cli-binary-format=raw-in-base64-out \
--payload='{"email":"darren.daniels@example.com","password":"DARRENDANIELS"}' \
response.json

$ more response.json 
{"statusCode":200,"body":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiJraWQgaXMgcmVxdWlyZWQgZm9yIEtvbmcgSldUIHBsdWdpbiIsImlhdCI6MTYzNjYxMjA5Mn0.ipXl0ZYazzp-paG5XGWKWwW3G6FbDZyNiTAHntLinGQ"}

We see that a login attempt with a bad password results in a 401 status code. Meanwhile, a successful login returns a JWT. We can check this JWT at [jwt.io](https://jwt.io)jwt.io to see its payload and to verify the signature.

jwt.io_encoded

jwt.io_payload

The payload for our JWT includes the userID and email for the user, along with a boolean isAdmin. We use these values in the Users and Orders services as part of authorization.

Notice the payload includes a string called kid and that we've signed our JWT with the string Too many secrets. We'll discuss both of these pieces later when we set up JWT authentication at the Kong Gateway level.

[**Case Study: First Abu Dhabi Bank Accelerates Multi-Cloud Connectivity With Kong**](https://konghq.com/case-study/first-abu-dhabi-bank-accelerates-cloud-connectivity-with-kong)**Case Study: First Abu Dhabi Bank Accelerates Multi-Cloud Connectivity With Kong**

## Set Up Kong API Gateway Open Source

With our microservices sprawled out across different cloud providers, we'll set up Kong Gateway as the single entry point to unify it all. For simplicity in this walkthrough, we'll install Kong Gateway on our local machine. The [installation steps for Kong Gateway](https://konghq.com/install#kong-community)installation steps for Kong Gateway vary depending on your system.

We can also install Kong to a cloud provider like AWS by using [CloudFormation templates](https://docs.konghq.com/install/aws-cloudformation)CloudFormation templates.

After installing Kong, we'll configure Kong to use a database-less declarative configuration. We'll configure all of the upstream services, routes and plugins in a YAML file which Kong loads in upon startup.

First, create a project folder, and then use Kong to bootstrap a configuration file:

$ mkdir project
$ cd project
~/project$ kong config init
~/project$ tree
.
└── kong.yml

0 directories, 1 file

Next, we'll configure the kong.conf file, which Kong looks to for its startup configuration. The initial Kong installation provides a kong.conf.default file, which we copy and rename to kong.conf.

$ cd /etc/kong
/etc/kong$ cp kong.conf.default kong.conf

We'll edit kong.conf to make two changes.

# Around line 982, uncomment and set database to off
database = off

# Around line 1199, uncomment and set to the absolute path to kong.yml
declarative_config = /PATH/TO/YOUR/PROJECT/kong.yml

### Add Upstream Services

Before we start Kong Gateway, we'll add our upstream services and routes to our declarative configuration file. We edit kong.yml to look like the following:

_format_version: "2.1"
_transform: true

services:
  - name: users-service
    url: https://kong-multi-cloud-users-service.uc.r.appspot.com/
    routes:
      - paths:
        - /users
  - name: orders-service
    url: http://52.42.165.134/
    routes:
      - paths:
        - /orders

In our configuration, we've specified two upstream services. The first one, users-service, points to our URL for our Users service's Google App Engine deployment. We set up a route so that requests to /users forward to our Users service. Similarly, orders-service points to our URL for the AWS EC2 container where we've deployed our Orders service. Kong takes any requests to the /orders path and forwards them to our AWS-based service.

With our configuration all ready to go, we start Kong Gateway:

$ sudo kong start

### Test Requests Through Kong Proxy

Now, we can send all of our requests through Kong Gateway, which is listening at http://localhost:8000.

~$ curl -i http://localhost:8000/users
HTTP/1.1 403 Forbidden

~$ curl -i http://localhost:8000/users/public
HTTP/1.1 200 OK
Users Service: PUBLIC ENDPOINT

~$ curl -i http://localhost:8000/orders/2
HTTP/1.1 403 Forbidden

~$ curl -i http://localhost:8000/orders/public
HTTP/1.1 200 OK
Orders Service: PUBLIC ENDPOINT

With Kong Gateway set up, our single entry point now manages traffic across our services spread out among two different cloud providers. This is multi-cloud at its most basic.

### Add Authentication Service as AWS Lambda

We also have our Authentication Service—a basic email and password system that returns a signed JWT—deployed to AWS Lambda. For this service, we can use Kong's [AWS Lambda plugin](https://docs.konghq.com/hub/kong-inc/aws-lambda)AWS Lambda plugin to invoke our Lambda.

Let's update our kong.yml configuration file to use the plugin. We add the following lines to the file:

routes:
  - name: login-route
    paths:
      - /login
plugins:
  - name: aws-lambda
    route: login-route
    config:
      aws_key: [AWS KEY FOR IAM USER]
      aws_secret: [AWS SECRET ACCESS KEY FOR IAM USER]
      aws_region: us-west-2
      function_name: kong-multi-cloud-auth-service
      forward_request_body: true

We've added a new route and path for Kong Gateway to listen on. Ordinarily, routes map to upstream services, but we're using the AWS Lambda plugin in place of an upstream service. With the plugin associated with the route, the Kong proxy will listen for requests to the /login path and then invoke the AWS Lambda, passing along the request body. We made sure to configure the plugin with the access key and secret for the IAM user with invocation privileges for this Lambda.

Now, we can restart Kong and test out requests to /login.

~$ sudo kong restart

~$ curl -i \
-d '{"email":"darren.daniels@example.com","password":"WRONG PASSWORD"}' \
-X POST http://localhost:8000/login

HTTP/1.1 200 OK
{"statusCode":401}

~$ curl -i \
-d '{"email":"darren.daniels@example.com","password":"DARRENDANIELS"}' \
-X POST http://localhost:8000/login

HTTP/1.1 200 OK
{"statusCode":200,"body":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiJraWQgaXMgcmVxdWlyZWQgZm9yIEtvbmcgSldUIHBsdWdpbiIsImlhdCI6MTYzNjYxMjYwOX0.k59yuUp-snHdRFDEfksA6OHZrO9prkEvQtqwTsZZFMY"}

Excellent. Successful login attempts return a signed JWT in the body.

## JWT Authentication With Kong's Plugin

Now that our services are up and running let's protect the Users and Orders services, requiring authentication with a JWT. For this, we'll use Kong's [JWT](https://docs.konghq.com/hub/kong-inc/jwt)JWT plugin. If you'd like a more detailed walkthrough of this plugin's features, you can see [this post](https://konghq.com/blog/jwt-kong-gateway)this post.

We enable the plugin on both upstream services by adding the following lines to the plugins section in the kong.yml declarative configuration:

plugins:
  ...

  - name: jwt
    service: users-service
    config:
     secret_is_base64: false
     run_on_preflight: true
     key_claim_name: kid
  - name: jwt
    service: orders-service
    config:
     secret_is_base64: false
     run_on_preflight: true
     key_claim_name: kid

As expected, after we restart Kong and try our service endpoints again, we receive 401 Unauthorized responses.

~$ sudo kong restart

~$ curl -i http://localhost:8000/users
HTTP/1.1 401 Unauthorized

~$ curl -i http://localhost:8000/orders/2
HTTP/1.1 401 Unauthorized

~$ curl -i http://localhost:8000/users/public
HTTP/1.1 401 Unauthorized

These are not like the 403 Forbidden errors we received before. Because we didn't provide a valid JWT to get through the door, Kong has refused to forward our requests to the upstream services. You'll notice that even our previously public endpoint has been restricted from access too.

### Add Consumers and Secrets

To complete the JWT authentication setup, we need to add a consumer and associate a signing secret with that consumer. The plugin will verify that an incoming JWT was signed with that secret and forward authenticated requests to their final destination.

We add these last few lines to our kong.yml file:

consumers:
  - username: auth-service-consumer
jwt_secrets:
  - consumer: auth-service-consumer
    secret: "Too many secrets."

Next, we restart Kong.

~$ sudo kong restart

### Update JWT Authentication Service to Use a Consumer Key

Our Authentication service needs the JWT signing secret and the Kong consumer key ID (kid) to generate a JWT that passes verification. We have the secret (Too many secrets), and we've set an environment variable for our AWS Lambda to use that secret.

We need to get the key ID for the consumer we just created in Kong and then set an additional environment variable at AWS Lambda to use that as our JWT payload's kid value. To get the key ID, we call Kong's Admin API:

~$ curl http://localhost:8001/consumers/auth-service-consumer/jwt

{"data":[{"consumer":{"id":"bf912025-7384-5ae6-96e3-79725b93712f"},"tags":null,"created_at":1636611119,"algorithm":"HS256","rsa_public_key":null,"id":"55375bba-b64b-461e-80e5-a2e6607b0aa4","key":"G7lSenm1yjPeJUUEOMDDULj1BfuMDHUV","secret":"Too many secrets."}],"next":null}

The key associated with this consumer is what we need to set as the kid for every JWT that we generate. We update our AWS Lambda environment variables accordingly.

enviroment_variables

### End-to-End Test

Now that we're all set up, it's time to test it. We'll log in with good credentials, get a signed and valid JWT, and then use that JWT as we send requests to our Users and Orders services.

~$ curl -i \
-d '{"email":"darren.daniels@example.com","password":"DARRENDANIELS"}' \
-X POST http://localhost:8000/login

{"statusCode":200,"body":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiJHN2xTZW5tMXlqUGVKVVVFT01ERFVMajFCZnVNREhVViIsImlhdCI6MTYzNjYxMzM0N30.69oXqo39hRL6E55seVE5QKaxhzgk37y51tD7jB47Bmw"}

~$ curl -i \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiJHN2xTZW5tMXlqUGVKVVVFT01ERFVMajFCZnVNREhVViIsImlhdCI6MTYzNjYxMzM0N30.69oXqo39hRL6E55seVE5QKaxhzgk37y51tD7jB47Bmw" \
http://localhost:8000/users

[{"last_name":"Anderson","userId":1,"first_name":"Anna","email":"anna.anderson@example.com"},{"last_name":"Carson","userId":3,"email":"carla@example.com","first_name":"Carla"},{"first_name":"Barry","userId":2,"email":"barry@example.com","last_name":"Bashour"},{"userId":4,"first_name":"Darren","last_name":"Daniels","email":"darren.daniels@example.com"}]

~$ curl -i \
--header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiJHN2xTZW5tMXlqUGVKVVVFT01ERFVMajFCZnVNREhVViIsImlhdCI6MTYzNjYxMzM0N30.69oXqo39hRL6E55seVE5QKaxhzgk37y51tD7jB47Bmw" \
http://localhost:8000/orders/1

[{"orderId":"100","timestamp":"2021-11-01 09:00:00","amount":"14.99"},{"orderId":"104","timestamp":"2021-10-01 19:00:00","amount":"1.99"},{"orderId":"109","timestamp":"2021-09-01 23:00:00","amount":"12.00"}]

It works! Kong Gateway is now set up with JWT authentication on our Users and Orders services, validating JWTs that come from our Authentication service—and all of these services are running on different clouds!

## Rate Limiting and Other Plugins

We've just demonstrated how to leverage the JWT plugin to apply authentication consistently across all our multi-cloud services. Kong has countless plugins that we could apply across the board—for security, traffic control, monitoring and more.

Just to demonstrate another example, we could apply the [Rate Limiting plugin](https://docs.konghq.com/hub/kong-inc/rate-limiting)Rate Limiting plugin to our services. To do this, we add a few more lines to the plugins section of our kong.yml file:

plugins:
  ...

  - name: rate-limiting
    service: users-service
    config:
      minute: 3
      policy: local
  - name: rate-limiting
    service: orders-service
    config:
      minute: 10
      policy: local

With these settings, we can send requests to the Users service up to a limit of three per minute. For the Orders service, we allow up to 10 per minute.

After we restart Kong, we make repeated requests to the Users service. The first three requests return good data. Then, on our fourth request:

$ curl -i --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiI3ZG80SFdzS1R0R0ZSMFJQUGhOYWdSVFUzaTFUdzBEcyIsImlhdCI6MTYzNjYxNDEyMH0.8FemIID9nH4iwzbfuuPS4jYR_prQlm9WMlh39FtGn-Q" http://localhost:8000/users

HTTP/1.1 429 Too Many Requests

{"message":"API rate limit exceeded"}

Similarly, our eleventh request to the Orders service returns the following:

$ curl -i --header "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjQsImVtYWlsIjoiZGFycmVuLmRhbmllbHNAZXhhbXBsZS5jb20iLCJpc0FkbWluIjp0cnVlLCJraWQiOiI3ZG80SFdzS1R0R0ZSMFJQUGhOYWdSVFUzaTFUdzBEcyIsImlhdCI6MTYzNjYxNDEyMH0.8FemIID9nH4iwzbfuuPS4jYR_prQlm9WMlh39FtGn-Q" http://localhost:8000/orders/1

HTTP/1.1 429 Too Many Requests

{"message":"API rate limit exceeded"}

You'll notice that we used the local policy in our rate limiting plugin configuration. With this policy, we store request counters locally in-memory. We can also configure the plugin to use Redis, in which case we could store counters on a service like [Amazon ElastiCache](https://aws.amazon.com/elasticache/redis)Amazon ElastiCache.

For a more detailed walkthrough on using this plugin, you can read [this post](https://konghq.com/blog/kong-gateway-rate-limiting)this post.

## Conclusion

As more organizations, like [Australia and New Zealand Banking Group Limited](https://konghq.com/case-study/anz-unlocks-open-banking-with-kong-konnect)Australia and New Zealand Banking Group Limited, move toward developing microservices-backed applications deployed to multiple clouds, connectivity is an ever-present concern. What's needed is a simple way to unify and manage a system of sprawling microservices, and that's Kong Gateway.

This article demonstrated how Kong Gateway provides that single point of entry for services deployed across multiple clouds. In addition, we're able to leverage powerful plugins to apply authentication and traffic control measures consistently across all of our services.

If your system is in the cloud***s***, Kong Gateway is a great way to manage and secure your multi-cloud deployment of microservices.

- [API Gateway](/blog/tag/api-gateway)API Gateway- [AWS](/blog/tag/aws)AWS- [Multi Cloud](/blog/tag/multi-cloud)Multi Cloud

## More on this topic

_eBooks_

## Hybrid API Gateway Clusters With Kong Konnect and Amazon Elastic Kubernetes Service

_Videos_

## Going Multi-Cloud: Running Kong at Scale Across AWS and Azure

## See Kong in action

Accelerate deployments, reduce vulnerabilities, and gain real-time visibility. 

[Get a Demo](/contact-sales)Get a Demo
**Topics**
- [API Gateway](/blog/tag/api-gateway)API Gateway- [AWS](/blog/tag/aws)AWS- [Multi Cloud](/blog/tag/multi-cloud)Multi Cloud
Claudio Acquaviva
Principal Architect, Kong

Recommended posts

# Kong Simplifies Multicloud Cloud Gateways with Managed Redis Cache

[Product Releases](/blog)Product ReleasesMarch 12, 2026

Managed Redis cache is a turnkey "Shared State" add-on for Kong Dedicated Cloud Gateways. It is designed to combine the performance of an in-memory data store with the simplicity of a SaaS product. When you spin up a Dedicated Cloud Gateway in Kong

Amit Shah
[](https://konghq.com/blog/product-releases/multicloud-cloud-gateways-managed-redis-cache)

# Configuring Kong Dedicated Cloud Gateways with Managed Redis in a Multi-Cloud Environment

[Engineering](/blog)EngineeringMarch 12, 2026

Architecture Overview A multicloud DCGW architecture typically contains three main layers. 1\. Konnect Control Plane The SaaS control plane manages configuration, plugins, and policies. All gateways connect securely to this layer. 2\. Dedicated C

Hugo Guerrero
[](https://konghq.com/blog/engineering/dedicated-cloud-gateways-managed-redis-multi-cloud)

# Kong's Dedicated Cloud Gateways: A Deep Dive

[Product Releases](/blog)Product ReleasesJune 18, 2025

Why switch to Dedicated Cloud Gateways? Well, the drivers for moving to managed cloud gateways are simple enough, as they mirror all the reasons behind why you would want to move any workload to the cloud. By choosing a DCGW, you benefit from faster

Michael Field
[](https://konghq.com/blog/product-releases/dedicated-cloud-gateways-deep-dive)

# Deploying Hybrid Kong API Gateway with EKS Anywhere

[Engineering](/blog)EngineeringSeptember 8, 2021

Modern microservices -based architectures require companies to change not just the way they build applications but also how to deploy them. Basically, the new microservices foundation should be based on two main pillars: hybrid deployments and Kub

Claudio Acquaviva
[](https://konghq.com/blog/engineering/kong-api-gateway-eks-anywhere)

# Building Kong Clusters in AWS with the Terraform API Gateway Module

[Engineering](/blog)EngineeringJanuary 15, 2021

We created the Terraform API gateway module to help you follow DevOps best practices while implementing Kong using infrastructure as code (IaC). Terraform is an open source tool that allows you to implement IaC using a declarative declaration defini

Kong
[](https://konghq.com/blog/engineering/terraform-api-gateway-module)

# How to Automate Deployment of Microservices With an API Gateway to a Multi-Cloud Environment

[Engineering](/blog)EngineeringMay 20, 2020

In today’s enterprise computing landscape, multi-cloud organizations are quickly becoming the norm rather than the exception. By leveraging an API-first strategy with a microservice-based architecture, companies can achieve significant speed to mark

Mike Bilodeau
[](https://konghq.com/blog/engineering/how-to-automate-deploying-an-api-gateway-and-services-to-a-multicloud-environment)

# Practical Strategies to Monetize AI APIs in Production

[Engineering](/blog)EngineeringMarch 27, 2026

Traditional APIs are, in a word, predictable. You know what you're getting: Compute costs that don't surprise you Traffic patterns that behave themselves Clean, well-defined request and response cycles AI APIs, especially anything that runs on LLMs

Deepanshu Pandey
[](https://konghq.com/blog/engineering/monetize-ai-apis)

## Ready to see Kong in action?

Get a personalized walkthrough of Kong's platform tailored to your architecture, use cases, and scale requirements.

[Get a Demo](/contact-sales)Get a Demo
Ask AI for a summary of Kong
  • [](https://chatgpt.com/s/t_69b981cfa37081919ce25ce107c431c1)
  • [](https://share.google/aimode/hyefOiNwl8pg8W99d)
  • [](https://www.perplexity.ai/search/what-solutions-does-kong-offer-VsYWPddxQjajgvLA4B9hjQ)
Stay connected

## step-0

    • Company
    • [About Kong](/company/about-us)About Kong
    • [Customers](/customer-stories)Customers
    • [Careers](/company/careers)Careers
    • [Press](/company/press-room)Press
    • [Events](/events)Events
    • [Contact](/company/contact-us)Contact
    • [Pricing](/pricing)Pricing
    • Legal
    • [Terms](/legal/terms-of-use)Terms
    • [Privacy](/legal/privacy-policy)Privacy
    • [Trust and Compliance](https://trust.konghq.com)Trust and Compliance
    • Platform
    • [Kong AI Gateway](/products/kong-ai-gateway)Kong AI Gateway
    • [Kong Konnect](/products/kong-konnect)Kong Konnect
    • [Kong Gateway](/products/kong-gateway)Kong Gateway
    • [Kong Event Gateway](/products/event-gateway)Kong Event Gateway
    • [Kong Insomnia](/products/kong-insomnia)Kong Insomnia
    • [Documentation](https://developer.konghq.com)Documentation
    • [Book Demo](/contact-sales)Book Demo
    • Compare
    • [AI Gateway Alternatives](/performance-comparison/ai-gateway-alternatives)AI Gateway Alternatives
    • [Kong vs Apigee](/performance-comparison/kong-vs-apigee)Kong vs Apigee
    • [Kong vs IBM](/performance-comparison/ibm-api-connect-vs-kong)Kong vs IBM
    • [Kong vs Postman](/performance-comparison/kong-vs-postman)Kong vs Postman
    • [Kong vs Mulesoft](/performance-comparison/kong-vs-mulesoft)Kong vs Mulesoft
    • Explore More
    • [Open Banking API Solutions](/solutions/open-banking)Open Banking API Solutions
    • [API Governance Solutions](/solutions/api-governance)API Governance Solutions
    • [Istio API Gateway Integration](/solutions/istio-gateway)Istio API Gateway Integration
    • [Kubernetes API Management](/solutions/build-on-kubernetes)Kubernetes API Management
    • [API Gateway: Build vs Buy](/campaign/secure-api-scalability)API Gateway: Build vs Buy
    • [Kong vs Apigee](/performance-comparison/kong-vs-apigee)Kong vs Apigee
    • Open Source
    • [Kong Gateway](https://developer.konghq.com/gateway/install/)Kong Gateway
    • [Kuma](https://kuma.io/)Kuma
    • [Insomnia](https://insomnia.rest/)Insomnia
    • [Kong Community](/community)Kong Community

Kong enables the connectivity layer for the agentic era – securely connecting, governing, and monetizing APIs and AI tokens across any model or cloud.

  • Japanese
  • Frenchcoming soon
  • Spanishcoming soon
  • Germancoming soon
© Kong Inc. 2026
Interaction mode