<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sulaiman Olubiyi </title>
    <description>The latest articles on Forem by Sulaiman Olubiyi  (@damdev95).</description>
    <link>https://forem.com/damdev95</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F768082%2F91930d41-e83c-4aa4-8e58-839609bca53c.jpeg</url>
      <title>Forem: Sulaiman Olubiyi </title>
      <link>https://forem.com/damdev95</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/damdev95"/>
    <language>en</language>
    <item>
      <title>Building a RAG-Based AWS VPC Flow Log Analyzer</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sat, 28 Feb 2026 15:06:19 +0000</pubDate>
      <link>https://forem.com/damdev95/building-a-rag-based-aws-vpc-flow-log-analyzer-1g29</link>
      <guid>https://forem.com/damdev95/building-a-rag-based-aws-vpc-flow-log-analyzer-1g29</guid>
      <description>&lt;p&gt;Understanding network traffic inside a Virtual Private Cloud (VPC) directly impacts your security posture, performance visibility, and compliance readiness. Yet most teams still sift through raw flow logs manually, reacting to incidents instead of proactively investigating them.&lt;/p&gt;

&lt;p&gt;Rather than grepping through thousands of log lines or exporting data to spreadsheets, we can turn VPC Flow Logs into an interactive layer.&lt;/p&gt;

&lt;p&gt;What if you could simply ask your logs questions like this?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Was that SSH connection rejected?&lt;br&gt;
Which IP keeps hitting port 443?&lt;br&gt;
Is this traffic normal or a problem?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this article, we’ll build a &lt;strong&gt;Retrieval-Augmented Generation (RAG) powered VPC Flow Log Analyzer&lt;/strong&gt; that turns static network telemetry into an interactive security assistant&lt;/p&gt;
&lt;h2&gt;
  
  
  The Challenge of Manual Log Analysis
&lt;/h2&gt;

&lt;p&gt;AWS VPC Flow Logs capture essential information about network traffic. Yet, analysing these raw logs to detect threats like SQL injection attempts or unauthorised access presents significant challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Information Overload: The sheer volume of logs is overwhelming. Finding specific patterns or anomalies is like searching for a needle in a haystack.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Context Fragmentation: Raw logs lack context. Identifying related packets across different components and time frames is labour-intensive and error-prone.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The RAG-based VPC Flow Log Analyser uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Streamlit (interactive UI)&lt;/li&gt;
&lt;li&gt;LangChain (RAG orchestration)&lt;/li&gt;
&lt;li&gt;Chroma (vector database)&lt;/li&gt;
&lt;li&gt;OpenAI GPT-4o (reasoning engine)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end, you'll have a conversational security assistant capable of answering questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Which IPs were rejected?”&lt;/li&gt;
&lt;li&gt;“Was there unusual traffic to port 22?”&lt;/li&gt;
&lt;li&gt;“Which destinations received the most packets?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidtpb3goo8i6e908cnnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidtpb3goo8i6e908cnnm.png" alt="RAG Workflow" width="643" height="399"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Functional Components
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Data Ingestion &amp;amp; Transformation ("Translator")&lt;br&gt;
Raw VPC Flow Logs are just strings of numbers and IPs (e.g., 2 123... 443 6 ACCEPT).&lt;br&gt;
The Component: A custom Python parser.&lt;br&gt;
It "hydrates" the logs, turning them into human-readable sentences like "Source 10.0.1.5 sent 1000 bytes to Port 443 and was ACCEPTED." This makes it much easier for the AI to "understand" the relationship between data points.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Embedding Model ("Encoder")&lt;br&gt;
We can't search text mathematically, so we have to turn it into numbers (vectors).&lt;br&gt;
Component: OpenAI text-embedding-3-small.&lt;br&gt;
It creates a numerical "fingerprint" for every log line. Similar events (like multiple SSH brute-force attempts) will have similar numerical fingerprints, allowing for "fuzzy" or semantic searching.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vector Database ("Memory")&lt;br&gt;
Standard databases search for exact words; a vector DB searches for meaning.&lt;br&gt;
Component: ChromaDB.&lt;br&gt;
It stores thousands of these "fingerprints" locally. When you ask a question, it instantly finds the top 10 or 15 log entries that are most relevant to your specific query.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RAG Orchestration &amp;amp; LLM ("Brain")&lt;br&gt;
This is where the actual "chatting" happens.&lt;br&gt;
Component: LangChain + GPT-4o.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;LangChain takes the question, grabs the relevant logs from ChromaDB, and hands them both to GPT-4o with a set of instructions: "You are a security engineer; tell me what happened here."&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Streamlit Frontend ("Cockpit")
Component: Streamlit Web Framework.
It provides the UI for uploading .txt files, managing your API keys via .env, and providing the chat interface so you don't have to touch a terminal to investigate your network.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Steps involved in the implementation:
&lt;/h2&gt;

&lt;p&gt;Check out the codebase on &lt;a href="https://github.com/Damdev-95/rag_aws_flow_logs" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 1: Creating Virtual Environment and Installing Dependencies&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/Damdev-95/rag_aws_flow_logs

python -m venv venv

source venv/bin/activate

cd rag_aws_flow_logs

pip install -r requirements.txt

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnl4w7jn9aojoa1tkcjzo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnl4w7jn9aojoa1tkcjzo.png" alt="Workspace Code" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Configuration handling&lt;/p&gt;

&lt;p&gt;The environment variables include handling sensitive data, such as openai keys.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ENV_API_KEY = os.getenv("OPENAI_API_KEY")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Running the streamlit App&lt;/p&gt;

&lt;p&gt;&lt;code&gt;streamlit run app.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufazxf38f6tybh3rj27n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fufazxf38f6tybh3rj27n.png" alt="Web Application" width="800" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once you click on 'Browse files', you will be able to upload log files on the application; ensure the log file format is in txt. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k7814bsm29ac0p7mvxf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3k7814bsm29ac0p7mvxf.png" alt="browse file" width="459" height="711"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select "Build Knowledge Base" to store the raw log data in the vector database after it has been converted into vectors.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad1tchdu20hspt9fdmhj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fad1tchdu20hspt9fdmhj.png" alt="vector data" width="800" height="651"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Successfully created index events after the embedding process&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmbt0q4d2qyivu5p33p3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frmbt0q4d2qyivu5p33p3.png" alt="Index" width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Yes, we are live, I asked the below &lt;br&gt;
&lt;em&gt;&lt;strong&gt;What is the summary of the flow logs based on traffic accept and reject&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewwyusy7ty8mp5gm78nc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fewwyusy7ty8mp5gm78nc.png" alt="Demo" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Additional examples of queries with interaction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzq9hhdhxyio6llf5ced0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzq9hhdhxyio6llf5ced0.png" alt="nice examples" width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iw0i5t2hbzhwi1gjwt0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9iw0i5t2hbzhwi1gjwt0.png" alt="final" width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Stay tuned for additional RAG and GenerativeAI projects in cloud networking by reading my articles.&lt;/p&gt;

&lt;p&gt;I look forward to your comments. &lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>cloudcomputing</category>
      <category>openai</category>
    </item>
    <item>
      <title>The "Zero Latency" AI Battle: RAG vs CAG</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Tue, 24 Feb 2026 14:14:19 +0000</pubDate>
      <link>https://forem.com/damdev95/the-zero-latency-ai-battle-rag-vs-cag-6ik</link>
      <guid>https://forem.com/damdev95/the-zero-latency-ai-battle-rag-vs-cag-6ik</guid>
      <description>&lt;p&gt;We’ve all been there. You’re building a cool internal tool, maybe a bot that helps your team interact with your company internal documents. You ask it a question, and then... you wait.&lt;/p&gt;

&lt;p&gt;The "searching..." spinner dances for 3, 4, maybe 5 seconds. By the time the AI answers, you could have just searched the docs by  yourself. This is the &lt;strong&gt;RAG Tax&lt;/strong&gt;, and if you're aiming for a seamless dev experience, it’s a high price to pay.&lt;/p&gt;

&lt;p&gt;But there’s a new architecture called CAG (Cache-Augmented Generation) that promises to kill that latency. &lt;br&gt;
Let’s break down why the AI is lagging and how "Context Caching" changes the game.&lt;/p&gt;

&lt;h1&gt;
  
  
  Understanding the RAG Pipeline
&lt;/h1&gt;

&lt;p&gt;To understand why it's slow, we have to look at the three actors in a standard RAG (Retrieval-Augmented Generation) setup. Think of it like a courtroom trial:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz0eiee674hbvxm9qe7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvz0eiee674hbvxm9qe7o.png" alt="RAG Flow" width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrieval (The Researcher)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;TWhen you ask a question, the Researcher doesn't know the answer. They have to run to the archives and find the relevant folders.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primary Actor: The Vector Database. It performs a mathematical similarity search to find text chunks that "look" like your question.&lt;/li&gt;
&lt;li&gt;Latency Source: This is where the clock starts. Embedding the query and searching a database takes time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Augmentation (The Legal Assistant)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This actor takes those raw folders from the archives and pins them to a clipboard for the Judge to see. They "stuff" the context into the prompt.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primary Actor: The Orchestrator (LangChain, LlamaIndex, or your own Python script). It formats the data so the AI can read it.&lt;/li&gt;
&lt;li&gt;Latency Source: Minimal, but adding thousands of words to a prompt increases the "processing" time for the next step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Generation (The Judge)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Judge looks at the evidence and provides a final verdict (the answer).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Primary Actor: The LLM (Gemini, GPT, etc.).&lt;/li&gt;
&lt;li&gt;Latency Source: The "Time to First Token". The Judge has to read everything on the clipboard before speaking.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Enter CAG: The "Photographic Memory" Upgrade
&lt;/h2&gt;

&lt;p&gt;If RAG is a Researcher with a library card, CAG (Cache-Augmented Generation) is an expert with a photographic memory.&lt;/p&gt;

&lt;p&gt;Instead of searching for data after you ask a question, CAG pre-loads your entire documentation or codebase into the LLM’s "active memory"—specifically the KV (Key-Value) Cache.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vuemhrtbgef8ywk337g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vuemhrtbgef8ywk337g.png" alt="CAG Flow" width="800" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Primary Actor in CAG: The Model Context Window. Because the information is already "warmed up" inside the model, there is no Researcher and no archival search. The "Judge" already has the entire case memorised.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why is it "Zero Latency"?
&lt;/h2&gt;

&lt;p&gt;In CAG, the bottleneck (the Vector DB search) is deleted. You aren't doing "Just-in-Time" retrieval; you're doing "Ahead-of-Time" caching.&lt;/p&gt;

&lt;p&gt;When you hit enter, the LLM doesn't have to wait for a database to return results. It starts streaming the answer instantly. For those of us in SRE, engineering or network automation, this is the difference between fixing a downed router in 10 seconds vs. 60 seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one should you build?
&lt;/h2&gt;

&lt;p&gt;Stick with RAG if you have millions of documents that change every hour (like a live news feed). It’s the "Big Data" solution.&lt;/p&gt;

&lt;p&gt;Move to CAG if you have a specific, high-value knowledge set (like your company's API docs or a specific project's source code). It’s the "High Performance" solution.&lt;/p&gt;

&lt;p&gt;We’re moving toward a world where "context is king", and caching that context is the fastest way to make your AI feel like a natural extension of your brain, rather than a slow search engine.&lt;/p&gt;

&lt;p&gt;I will be writing more about RAG development in my further articles; stay tuned&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reference&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google Gemini&lt;/li&gt;
&lt;li&gt;&lt;a href="https://u.cisco.com/paths/cisco-ai-technical-practitioner-20806" rel="noopener noreferrer"&gt;Cisco AI Technical Series&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>Master AWS Transit Gateway Management with Terraform: A Step-by-Step Guide</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sun, 12 Jan 2025 17:55:49 +0000</pubDate>
      <link>https://forem.com/damdev95/master-aws-transit-gateway-management-with-terraform-a-step-by-step-guide-3g9b</link>
      <guid>https://forem.com/damdev95/master-aws-transit-gateway-management-with-terraform-a-step-by-step-guide-3g9b</guid>
      <description>&lt;p&gt;The Solace Fashion App is ready to redefine how customers shop and engage with style. And at the heart of this exciting journey lies a critical mission: designing and deploying a robust Virtual Private Cloud (VPC) architecture to power it all.&lt;/p&gt;

&lt;p&gt;As the cloud network engineer, you are entrusted with the responsibility of turning this vision into a seamless, scalable, and secure reality. From planning subnets and routing tables to implementing security policies that safeguard sensitive user data, your role is to lay the foundation that ensures the app operates flawlessly under any circumstance. This is more than just building infrastructure; it’s about delivering the reliability, performance, and agility needed to match the bold ambitions of the Solace Fashion App.&lt;/p&gt;

&lt;p&gt;Let’s dive into how we’ll bring this cloud architecture to life and ensure saclability.&lt;br&gt;
The architecture consists of the following virtual private clouds (VPCs):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Frontend App VPC: 10.10.100.0/16&lt;/li&gt;
&lt;li&gt;Backend VPC: 172.30.100.0/16&lt;/li&gt;
&lt;li&gt;Database VPC: 192.168.100.0/16&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The objectives of the architecture are as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Restrict Communication: Only allow the App VPC (10.10.100.0/24) to connect to the Backend VPC (172.30.100.0/24).&lt;/li&gt;
&lt;li&gt;Controlled Access: Permit the Backend VPC (172.30.100.0/24) to communicate with the Database VPC (192.168.100.0/24).&lt;/li&gt;
&lt;li&gt;Enforce Isolation: Ensure that direct communication between the App VPC and the Database VPC is strictly prohibited.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are utilizing &lt;strong&gt;Terraform&lt;/strong&gt; to efficiently manage the development and deployment of the architecture.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop Terraform code in a modular structure to enhance maintainability and efficiency by isolating components like VPCs, subnets, and transit gateway into reusable modules. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9dcn3iorznxg5is2r0y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs9dcn3iorznxg5is2r0y.png" alt="folder" width="719" height="425"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using a transit gateway to efficiently manage and centralize the connections between VPCs, ensuring scalability, simplified routing, and streamlined network management.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7vqxl93tmntb1lk7s2c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx7vqxl93tmntb1lk7s2c.png" alt="architecture" width="761" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the following commands to install terraform
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update
sudo apt install terraform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxycbfgg1wdg3ooh82ebn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxycbfgg1wdg3ooh82ebn.png" alt="terrform version" width="561" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Applying aws credentials on the terminal, either using &lt;code&gt;aws configure&lt;/code&gt; or environment variables on your working terminal&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The Transit Gateway comprises three key components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Attachment: Connects VPCs, on-premises networks, or other 
resources to the Transit Gateway.&lt;/li&gt;
&lt;li&gt;Route: Defines the traffic flow between attachments through 
routing tables.&lt;/li&gt;
&lt;li&gt;Propagation: Automatically shares routes from attached resources 
to the Transit Gateway routing tables, enabling dynamic updates.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Creating each vpc using terraform &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbr1soudeni56k6uvxof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbr1soudeni56k6uvxof.png" alt="each vpc" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating the transit gateway and each vpc attachment and route-table&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcdp47nmooe3gvtvcpcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcdp47nmooe3gvtvcpcn.png" alt="tgw" width="721" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tlyp6qif6ig5dcjoowe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tlyp6qif6ig5dcjoowe.png" alt="module tgw" width="670" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;for testing purpose, I will be using the public subnet only&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating EC2 instances for reachability tests to verify network connectivity between VPCs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g6eauird81b5bqn03p9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6g6eauird81b5bqn03p9.png" alt="ec2-instance" width="541" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initializing the terraform code using &lt;code&gt;terrfarom init&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrnzmlcsu4iyc6tomdxp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkrnzmlcsu4iyc6tomdxp.png" alt="tf init" width="800" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formatting the terraform code using &lt;code&gt;terraform fmt&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5e56okggtnh2veuz0g0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5e56okggtnh2veuz0g0.png" alt="tf fmt" width="421" height="56"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Planning the terraform code using &lt;code&gt;terraform plan&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc14wweurxmqoqhjxqsyj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc14wweurxmqoqhjxqsyj.png" alt="tf plan" width="800" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applying the terraform code after the plan was successful using &lt;code&gt;terraform apply --auto-approve&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwc5udehlwdte3za2f5f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flwc5udehlwdte3za2f5f.png" alt="tf apply" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yk71pouss2n4svgso20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3yk71pouss2n4svgso20.png" alt="tf success" width="800" height="562"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing connectivity from Frontend VPC &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PING TO BACKEND VPC REACHABLE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ws7oex4okh4fkyorfy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ws7oex4okh4fkyorfy.png" alt="ping 1" width="670" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PING TO DATABASE VPC NOT REACHABLE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsu3t9da6onivfcu8mb5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvsu3t9da6onivfcu8mb5.png" alt="ping 2" width="624" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing connectivity from Database VPC&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PING TO BACKEND VPC REACHABLE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi87bj5otzpmlqndlmz4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi87bj5otzpmlqndlmz4i.png" alt="ping 3" width="739" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PING TO FRONTEND APP VPC NOT REACHABLE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3crt6koo4zobtbs9l73q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3crt6koo4zobtbs9l73q.png" alt="Image description" width="760" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whaooooo!!!&lt;br&gt;
Been a long ride, I hope you follow through and practice at your pace&lt;br&gt;
Check the &lt;a href="https://github.com/Damdev-95/my-projects" rel="noopener noreferrer"&gt;Project_CodeBase&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>terraform</category>
      <category>networking</category>
    </item>
    <item>
      <title>Demistfying AWS VPC Lattice</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Fri, 10 Jan 2025 07:27:09 +0000</pubDate>
      <link>https://forem.com/damdev95/demistfying-aws-vpc-lattice-23e5</link>
      <guid>https://forem.com/damdev95/demistfying-aws-vpc-lattice-23e5</guid>
      <description>&lt;p&gt;Did you know that AWS VPC Lattice could be the missing piece in achieving seamless cloud deployments? It's like the perfect convergence of service networking—neutral, efficient, and capable of bridging diverse environments with ease.&lt;/p&gt;

&lt;p&gt;AWS VPC Lattice is a fully managed application networking service that simplifies connecting, securing, and monitoring communications between services. It's specifically designed to streamline service-to-service communication in distributed applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq27aeodtnoevm3tmxti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq27aeodtnoevm3tmxti.png" alt="AWS VPC Lattice" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AWS VPC Lattice Reference&lt;br&gt;
Source: &lt;a href="https://aws.amazon.com/blogs/aws/introducing-vpc-lattice-simplify-networking-for-service-to-service-communication-preview/" rel="noopener noreferrer"&gt;https://aws.amazon.com/blogs/aws/introducing-vpc-lattice-simplify-networking-for-service-to-service-communication-preview/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why VPC Lattice Stands Out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s start by understanding what makes AWS VPC Lattice the missing piece in your cloud architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Service Network: Centralizes service-to-service communication for seamless interaction.&lt;/li&gt;
&lt;li&gt;Service Directory: Keeps everything organized with a centralized registry for services.&lt;/li&gt;
&lt;li&gt;Authentication and Authorization: Secures communication using AWS IAM for access control.&lt;/li&gt;
&lt;li&gt;Traffic Management: Provides smart routing and resilience to optimize service performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Roles and Layers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Networking layer: provides connectivity between applications through the deployments. This is managed by the admin team.&lt;/li&gt;
&lt;li&gt;Application layer: applications deployed across multiple VPCs and accounts. This is managed by the Dev team&lt;/li&gt;
&lt;li&gt;Security layer: this is applied across all depths of both networking and deployments; the responsibility is shared among the admin and dev teams.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Developers love speed—spinning up instances and hardcoding credentials to get things moving fast, often ignoring risks like IP conflicts or security gaps. Admins, on the other hand, focus on governance and security, slowing things down with strict controls. The real challenge? Striking a balance between innovation and control, so teams can build fast without compromising on safety.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Components&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Service: Think of a service as a standalone unit of software that performs a specific task. It can live in any VPC or account and run on virtual machines, containers, or serverless functions. A service configuration includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Target Group: The backend where your application runs—this could be EC2 instances, IP addresses, Lambda functions, or Kubernetes Pods. &lt;/li&gt;
&lt;li&gt;Listener: Defines the port and protocol your service uses to receive traffic. Supported protocols include HTTP/1.1, HTTP/2, gRPC, and HTTPS.&lt;/li&gt;
&lt;li&gt;Rule: Determines how traffic is routed, forwarding requests to target groups based on conditions and priorities.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service Network: Picture this as a logical boundary that ties your services together. It simplifies service discovery, enforces common access policies, and ensures connectivity between services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Service Directory: A one-stop registry for all your services within VPC Lattice. Whether they’re yours or shared with you via AWS Resource Access Manager (RAM), you can find them here.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Auth Policies: These IAM resource policies let you enforce authentication and context-specific authorization. Apply them at the service or network level to enhance security and control.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Practical Hands-on&lt;/strong&gt;&lt;br&gt;
I will be creating a web application that has two backend services: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EC2 instance (python application), Below include the app.py on the ec2 instance
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
  return 'Howdy, response from the EC2 instance'

app.run(host='0.0.0.0', port=8080)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Lamdda function
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exports.handler = async (event) =&amp;gt; {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello Lambda!'),
    };
    return response;
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a target group for each service on VPC Lattice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fng2116cabt64ejypfuzh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fng2116cabt64ejypfuzh.png" alt="Target Group" width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6a9piu813p1udibm9d1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6a9piu813p1udibm9d1.png" alt="ec2-instance-tg" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy43h0buoh2bqx77om7a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy43h0buoh2bqx77om7a9.png" alt="tg-3" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei6t02r90uoak840krq3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fei6t02r90uoak840krq3.png" alt="tg-4" width="800" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Service for the AWS VPC lattice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncb752ulvx1xb72jdxfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fncb752ulvx1xb72jdxfc.png" alt="service-a" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4npr2u1qijep07jwqpxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4npr2u1qijep07jwqpxw.png" alt="service-b" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create service network and associate with service and VPC &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvrwxoyygv3dlkow9mip.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvrwxoyygv3dlkow9mip.png" alt="network-a" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1x5xz1gsmqkbrql12qu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr1x5xz1gsmqkbrql12qu.png" alt="network-b" width="800" height="569"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcapwkhtrvutns2xzjs8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcapwkhtrvutns2xzjs8.png" alt="network-c" width="800" height="353"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing the service from another VPC (Test-VPC)
The test-VPC has been associated with the service network; this will ensure the connectivity test across the VPCs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhe982qxgsjdvkbmom4z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhe982qxgsjdvkbmom4z.png" alt="test-vpc" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo3tcogujmxyo1snltyp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffo3tcogujmxyo1snltyp.png" alt="final result" width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CloudWatch Logs for observability and logging&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9uesb6aj7zox0yxy3v3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9uesb6aj7zox0yxy3v3.png" alt="Cloudwatch logs" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[Everything about AWS VPC Lattice](&lt;a href="https://repost.aws/articles/ARRz07hcqrQ2qcO5s5aYMiAw/get-started-with-amazon-vpc-lattice-resources-content" rel="noopener noreferrer"&gt;https://repost.aws/articles/ARRz07hcqrQ2qcO5s5aYMiAw/get-started-with-amazon-vpc-lattice-resources-content&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>community</category>
      <category>cloudcomputing</category>
      <category>networking</category>
    </item>
    <item>
      <title>A Step-by-Step Guide to Easily Deploying EKS Infrastructure and Applications Using Terraform</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sun, 04 Feb 2024 07:26:22 +0000</pubDate>
      <link>https://forem.com/damdev95/a-step-by-step-guide-to-easily-deploying-eks-infrastructure-and-applications-using-terraform-g1</link>
      <guid>https://forem.com/damdev95/a-step-by-step-guide-to-easily-deploying-eks-infrastructure-and-applications-using-terraform-g1</guid>
      <description>&lt;p&gt;Terraform is like the wizard of deployment tools. It's an open-source Infrastructure as Code (IaC) tool that lets you define and provision infrastructure using a declarative configuration language. Instead of manually setting up infrastructure such as servers, databases, and other resources, you can easily describe your desired infrastructure in code using HashiCorp Configuration Language (HCL).&lt;/p&gt;

&lt;p&gt;This article focus on project using terraform for EKS , deploying applications using respective manifest files, and an application load balancer ingress controller using Helm.&lt;/p&gt;

&lt;p&gt;The Github repository for this project &lt;a href="https://github.com/Damdev-95/k8s-cluster-terraform" rel="noopener noreferrer"&gt;EKS Terraform with application deployment&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below contains the detailed steps in this project, ensure you have an active AWS account before getting started;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;List the contents of the terraform files &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201485457-2d2c7966-dd32-495b-bbde-20ca274cee86.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201485457-2d2c7966-dd32-495b-bbde-20ca274cee86.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initialize terraform on the directory to download required providers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;terraform init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486591-0425184d-39a6-448a-8ab0-2135a73729c3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486591-0425184d-39a6-448a-8ab0-2135a73729c3.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate the terraform file using :&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;terraform plan&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486561-a89b6837-4eaf-4d7f-a09b-00525da790ef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486561-a89b6837-4eaf-4d7f-a09b-00525da790ef.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486498-bfc1c69a-2471-40bd-972e-5a97b6c00f92.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201486498-bfc1c69a-2471-40bd-972e-5a97b6c00f92.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply the terraform configuraton file &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;terraform apply --auto-approve&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201489323-a0aa9335-df43-4cb9-bc0c-e63f3a41b502.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201489323-a0aa9335-df43-4cb9-bc0c-e63f3a41b502.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201489766-5903a5b3-4d0f-4d86-afdc-774d032507ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201489766-5903a5b3-4d0f-4d86-afdc-774d032507ce.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Copy the output of the terraform configuration to the  &lt;code&gt;~/.kube/config&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Installing aws-iam-authenticator&lt;br&gt;
This enables using AWS IAM credentials to authenticate to a Kubernetes cluster&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -Lo aws-iam-authenticator https://github.com/kubernetes-sigs/aws-iam-authenticator/releases/download/v0.5.9/aws-iam-authenticator_0.5.9_linux_amd64
chmod +x ./aws-iam-authenticator
mkdir -p $HOME/bin &amp;amp;&amp;amp; cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator &amp;amp;&amp;amp; export PATH=$PATH:$HOME/bin
echo 'export PATH=$PATH:$HOME/bin' &amp;gt;&amp;gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Communicate with Kuberbetes cluster  using &lt;code&gt;kubectl get all&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511347-0b94734a-5d23-4937-aa9b-9e2305e1b04e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511347-0b94734a-5d23-4937-aa9b-9e2305e1b04e.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Get the pods in the cluster using 'kubectl get pods --all-namespaces'&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511439-ca332277-8e27-412d-a724-64633e878a0b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511439-ca332277-8e27-412d-a724-64633e878a0b.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy the manifest for the pods deployment &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;kubectl apply -f manifests/deployment.yaml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511860-4c441d9a-e3dd-4117-b0ad-390a0dd5c5a0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511860-4c441d9a-e3dd-4117-b0ad-390a0dd5c5a0.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate the deployment using &lt;code&gt;kubectl get pods&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511930-526d28dd-2224-4fa2-8ba1-c2e42553c9b0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201511930-526d28dd-2224-4fa2-8ba1-c2e42553c9b0.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing the deployment using the port forward &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;kubectl port-forward hello-kubernetes-6bf86759db-7jf7j 8080:8080&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201512080-c3041251-00a5-407f-bfa1-9af2f28c0fd9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201512080-c3041251-00a5-407f-bfa1-9af2f28c0fd9.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; ALB Ingress Controller can be installed with Helm &lt;/li&gt;
&lt;li&gt;Install Helm package
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
$ chmod 700 get_helm.sh
$ ./get_helm.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201512846-f9bf14a7-da44-4c51-9519-4b742d6f0faa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201512846-f9bf14a7-da44-4c51-9519-4b742d6f0faa.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the collection of YAML files necessary to run the ALB Ingress Controller. Add the following repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;helm repo add incubator https://charts.helm.sh/incubator&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the ALB Ingress Controller in my cluster
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm install ingress incubator/aws-alb-ingress-controller \
  --set autoDiscoverAwsRegion=true \
  --set autoDiscoverAwsVpcID=true \
  --set clusterName=terraform-eks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201513262-6fa01543-1609-4715-8f46-6cc9f60ab7f5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201513262-6fa01543-1609-4715-8f46-6cc9f60ab7f5.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy the service loadbalancer on the cluster &lt;code&gt;kubectl apply -f manifest/loadbalancer.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201532391-13c0feea-837c-41a9-b5d8-be86a52c6b1c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201532391-13c0feea-837c-41a9-b5d8-be86a52c6b1c.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201532428-e2b3ebd9-2513-4205-9a89-bbd0707b602b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201532428-e2b3ebd9-2513-4205-9a89-bbd0707b602b.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deploy the ingress.yaml for the service
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.9/docs/examples/alb-ingress-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-alb-ingress-controller/v1.1.9/docs/examples/rbac-role.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  the cluster name and vpc id is change in the alb-ingress-controller.yaml
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201527040-63a66c82-7a54-4c65-8e75-e975dc3ef44f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201527040-63a66c82-7a54-4c65-8e75-e975dc3ef44f.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201528085-272a19cf-f04b-46ed-84fb-faa4dd689d43.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201528085-272a19cf-f04b-46ed-84fb-faa4dd689d43.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201528137-a0e139af-adb6-429e-9cfc-89f8813b882e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F71001536%2F201528137-a0e139af-adb6-429e-9cfc-89f8813b882e.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>kubernetes</category>
      <category>community</category>
      <category>aws</category>
    </item>
    <item>
      <title>Log API Calls using AWS CloudTrail</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sat, 20 Jan 2024 21:28:38 +0000</pubDate>
      <link>https://forem.com/damdev95/log-api-calls-using-aws-cloudtrail-2gcc</link>
      <guid>https://forem.com/damdev95/log-api-calls-using-aws-cloudtrail-2gcc</guid>
      <description>&lt;p&gt;Enhanced governance, compliance, operational and risk auditing of your AWS account can be achieved with the aid of AWS CloudTrail.&lt;br&gt;
A user, role, or AWS service's actions are referred to as events in CloudTrail. AWS Management Console, AWS CLI, and AWS SDKs and APIs are sources where events can occur.&lt;/p&gt;

&lt;p&gt;CloudTrail stores API calls and activities on the accounts, which include;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Management events: include activities on the control plane such as creating IAM, EC2 instance, and interacting with AWS services on the management level&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data events: include data events such as Lambda invocation, SNS and SQS, and interaction between AWS services.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Detailed steps in creating CloudTrail for your AWS account:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hover to the search bar on the AWS Console, type &lt;strong&gt;CloudTrail&lt;/strong&gt; then click on the **create a trail **as shown below;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf7qz2p0pk1eigj5hbr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwf7qz2p0pk1eigj5hbr1.png" alt="Cloudtrail Figure 1" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Input the relevant parameters, including the trail name and storage bucket&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mqpwr21rsfw8b8bhvd1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7mqpwr21rsfw8b8bhvd1.png" alt="Cloudtrail Figure 2" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The JSON Policy for IAMRole for the CloudTrail to access CloudWatch logs&lt;br&gt;
&lt;code&gt;{&lt;br&gt;
"Version": "2012-10-17",&lt;br&gt;
"Statement": [&lt;br&gt;
{&lt;br&gt;
  "Sid": "AWSCloudTrailCreateLogStream2014110",&lt;br&gt;
  "Effect": "Allow",&lt;br&gt;
  "Action": [&lt;br&gt;
    "logs:CreateLogStream"&lt;br&gt;
  ],&lt;br&gt;
  "Resource": [&lt;br&gt;
    "arn:aws:logs:us-east-1:014285054687:log-group:CloudTrailRoleForCloudWatchLogs-Douxtech:log-stream:014285054687_CloudTrail_us-east-1*",&lt;br&gt;
    "arn:aws:logs:us-east-1:014285054687:log-group:CloudTrailRoleForCloudWatchLogs-Douxtech:log-stream:o-je4worq6xn_*"&lt;br&gt;
  ]&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
  "Sid": "AWSCloudTrailPutLogEvents20141101",&lt;br&gt;
  "Effect": "Allow",&lt;br&gt;
  "Action": [&lt;br&gt;
    "logs:PutLogEvents"&lt;br&gt;
  ],&lt;br&gt;
  "Resource": [&lt;br&gt;
    "arn:aws:logs:us-east-1:014285054687:log-group:CloudTrailRoleForCloudWatchLogs-Douxtech:log-stream:014285054687_CloudTrail_us-east-1*",&lt;br&gt;
    "arn:aws:logs:us-east-1:014285054687:log-group:CloudTrailRoleForCloudWatchLogs-Douxtech:log-stream:o-je4worq6xn_*"&lt;br&gt;
  ]&lt;br&gt;
}&lt;br&gt;
]&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the respective events desired for the cloud trail, either management or data events with the corresponding aws service.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqfmn7bwnd9tfxb4uuml.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqfmn7bwnd9tfxb4uuml.png" alt="Cloudtrail Figure 3" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8yuhahc4y570ezmhfkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8yuhahc4y570ezmhfkq.png" alt="Cloudtrail Figure 4" width="668" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Cloudtrail has been successfully deployed, and the relevant logs streams are shown below.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0vsgac0getncnhi1dbz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft0vsgac0getncnhi1dbz.png" alt="Cloudtrail Figure 5" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flchp2i5dk1v6v4zrfpyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flchp2i5dk1v6v4zrfpyk.png" alt="Cloudtrail Figure 6" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Voilaaa !!!, I hope you find it insightful and am waiting for your feedback.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Comprehensive Guide to Passing the AWS Advanced Networking Specialty Exam</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sun, 18 Jun 2023 18:47:40 +0000</pubDate>
      <link>https://forem.com/damdev95/comprehensive-guide-to-passing-the-aws-advanced-networking-specialty-exam-1ged</link>
      <guid>https://forem.com/damdev95/comprehensive-guide-to-passing-the-aws-advanced-networking-specialty-exam-1ged</guid>
      <description>&lt;p&gt;Becoming an AWS Certified Networking Specialty professional demonstrates your expertise in designing and implementing advanced networking architectures on the AWS platform. This exam reinforces your knowledge skills in hybrid connectivity, DNS resolution and in-depth of AWS cloud networking services.&lt;br&gt;
This certification opens doors to exciting career opportunities and establishes you as a skilled professional in cloud networking. In this article, I will explore valuable resources and links to help you prepare for and pass the AWS Certified Advanced Networking Specialty exam. We'll also dive into the importance of grit and perseverance, showcasing a real-life example of determination and success.&lt;/p&gt;

&lt;p&gt;The Power of Grit and Perseverance:&lt;br&gt;
Success rarely comes without challenges and setbacks. One's journey towards certification often involves hurdles that test their commitment and determination. The path to becoming an AWS Certified Networking Specialty professional is no exception. Let me share my personal experience to illustrate the significance of grit and perseverance.&lt;/p&gt;

&lt;p&gt;My Story:&lt;br&gt;
When I initially attempted the AWS Certified Networking Specialty exam, I poured countless hours into studying, meticulously reviewing resources, and practicing with sample questions. However, despite my efforts, I received a disappointing score of 722, falling short of the passing mark. It would have been easy to get discouraged and abandon my pursuit of the certification. But instead, I chose to embrace the principles of grit and perseverance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbg8m2oyz0wsqv2zdoa2a.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbg8m2oyz0wsqv2zdoa2a.jpeg" alt="First Attempt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Undeterred by my initial setback, I took a step back to reflect on my preparation approach. I analyzed my weaknesses, identified knowledge gaps, and sought out additional resources to strengthen my understanding of complex networking concepts. Determined to succeed, I decided to give the exam another try.&lt;/p&gt;

&lt;p&gt;Armed with renewed determination and an updated study plan, I dove back into my preparations. I enrolled in the AWS Skill Builder Class led by Julie Elkins, which provided invaluable insights and practical guidance specific to the exam. Additionally, I used the following resources in this pursuit, which further enhanced my understanding of advanced networking concepts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyfo231fphsmtr2z3h5k.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyfo231fphsmtr2z3h5k.jpeg" alt="Second Attempt"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Official AWS Certification Exam Guide:&lt;br&gt;
The first step in your exam preparation journey should be to review the official AWS Certified Networking Specialty Exam Guide. This guide provides an overview of the exam domains, knowledge areas, and the specific topics you need to focus on. Understanding the exam blueprint is crucial for effective study planning.&lt;br&gt;
&lt;a href="https://aws.amazon.com/certification/certified-advanced-networking-specialty/" rel="noopener noreferrer"&gt;Link to AWS Certified Networking Specialty Exam Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Exam Readiness Training:&lt;br&gt;
The AWS Certified Networking Specialty Exam Readiness Training is a valuable resource offered by AWS. It is a self-paced online course designed to help you prepare for the exam. The course covers various networking concepts and technologies relevant to the AWS platform, including Amazon VPC, Direct Connect, VPN, Route 53, and more.. Julie Elkins did a detailed work in the readiness training, explain each of the course curriculum topic and what is expected of you to understand for the exam.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Udemy Course&lt;br&gt;
Stephen Maarek and Chettan Aggarwal  offers an in-depth Udemy course titled "Ultimate AWS Certified Advanced Networking - Specialty." This course covers all the exam objectives, provides hands-on labs. The course helps me to understand the fundamentals of those services and solidify my knowledge&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adrian Cantril Course&lt;br&gt;
This is detailed for hands-on practice and configuration, also this course explains the technologies including Direct Connect, VPN connection, Route53 and more.&lt;br&gt;
He also explained basics of networking and security including BGP,DNS,OSI Layers, encryption method and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Twitch videos&lt;br&gt;
This seems like a real life situation for AWS Networking services, AWS Networking experts explains and analyze the services staring with fundamentals, deployment and configuration with best practices.&lt;br&gt;
I really felt more confident after going through those sessions.&lt;br&gt;
&lt;a href="https://www.linkedin.com/posts/olubiyisulaiman_after-attempting-aws-advanced-networking-activity-7045024257797439490--gxy?utm_source=share&amp;amp;utm_medium=member_desktop" rel="noopener noreferrer"&gt;Link for the twitch sessions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqq0zq3faz3vjrcpdqjlr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqq0zq3faz3vjrcpdqjlr.png" alt="Twitch session"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Whitepapers and Architectural Documentation:&lt;br&gt;
AWS offers a collection of whitepapers and architectural documentation that covers advanced networking topics and best practices. These resources delve into network design considerations, hybrid architectures, security, and more. Reading these documents will not only enhance your knowledge but also provide you with insights into real-world scenarios and solutions.&lt;br&gt;
&lt;a href="https://aws.amazon.com/whitepapers/" rel="noopener noreferrer"&gt;Link for AWS Whitepapers&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Practice Tests&lt;br&gt;
Do as much you can, analyse scenarios and case studies, make inference the most cost efficient, most operational efficient and security perspective.&lt;br&gt;
I used Jon Bonso practice test during my preparation which assisted in some scenario based questions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Remember, success is not always immediate, but with the right mindset and continuous effort, you can conquer any challenge. Embrace the power of grit and perseverance as you embark on your journey towards becoming an AWS Certified Networking Specialty professional.Conclusion:&lt;br&gt;
My personal journey highlights the significance of grit and perseverance when pursuing the AWS Certified Networking Specialty certification. It is natural to face setbacks and obstacles along the way, but it is through perseverance that we overcome them. By leveraging the resources and links provided in this guide, combined with unwavering determination, you too can achieve success in the AWS Certified Networking Specialty exam.&lt;/p&gt;

&lt;p&gt;Remember, success is not always immediate, but with the right mindset and continuous effort, you can conquer any challenge. Embrace the power of grit and perseverance as you embark on your journey towards becoming an AWS Certified Networking Specialty professional.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>aws</category>
      <category>community</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Grow like an AWS Transit Gateway.</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sun, 15 Jan 2023 21:14:25 +0000</pubDate>
      <link>https://forem.com/damdev95/grow-like-an-aws-transit-gateway-10ko</link>
      <guid>https://forem.com/damdev95/grow-like-an-aws-transit-gateway-10ko</guid>
      <description>&lt;p&gt;Earlier before the invention of AWS Transit Gateway, solution architect designed connectivity with VPCs using the following methods;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b9g7lxzcs4m6l5k99lh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5b9g7lxzcs4m6l5k99lh.png" alt="Customer VPC network" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;VPC peering&lt;/strong&gt;: full private ip connectivity between VPCs, it is non-transitive. For instance, A company has 10 VPCs, there is a need to enable connectivity across all the VPCs.
Using the full mesh formula,
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;No of VPC peering = n(n-1)/2

where n is the number of VPCS
No of VPC peering = 10(10-1)/2
No of VPC peering = 45
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This infers that the network architect needs to setup &lt;strong&gt;&lt;em&gt;45 VPC peering&lt;/em&gt;&lt;/strong&gt; connections to connectivity across 10 VPCs.&lt;/p&gt;

&lt;p&gt;According to AWS;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;125 Amazon VPC Peering connection per Amazon VPC&lt;/li&gt;
&lt;li&gt;50 static routes per Amazon VPC route table(default)&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VPN connection&lt;/strong&gt;: a secured tunnel connection over the public using a between on-premise network to AWS VPC. The Virtual private network is achieved between the customer gateway CGW and virtual gateway VGW on the AWS VPC.&lt;br&gt;
Also, this is an independent connection to each VPC from the customer network. using the above example, the company would need to setup 10 VPN connections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Direct connect&lt;/strong&gt;: Dedicated connection between the customer network and the AWS network with high bandwidth and availability. Independent connection is built from the direct connect gateway to each VPC.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;With the architecture above has several limitations;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time consuming&lt;/li&gt;
&lt;li&gt;Prone to errors&lt;/li&gt;
&lt;li&gt;Complicated with many routes on the route table&lt;/li&gt;
&lt;li&gt;Non-Scalable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's discuss about the growth...&lt;/p&gt;

&lt;p&gt;Amazon Web Services (AWS) Transit Gateway is a fully managed service that enables customers to connect their Amazon Virtual Private Clouds (VPCs) and on-premises data centers to a single network. This service simplifies the network architecture and management, making it easier for customers to connect their distributed networks.&lt;/p&gt;

&lt;p&gt;One of the main benefits of Transit Gateway is that it allows customers to connect multiple VPCs and on-premises networks to a single transit network, reducing the need for complex peering connections. This simplifies the network architecture and reduces the number of devices required to connect the various VPCs and on-premises networks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jydij9ypsuh5v0f0eeb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1jydij9ypsuh5v0f0eeb.png" alt="AWS Transit Gateway" width="800" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, Transit Gateway enables customers to scale their network connections easily and quickly. customers can add or remove connections to the transit network without any downtime, and the service automatically scales to handle the increased traffic.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;TGW Route Table
VPC A: Attachment 1
VPC B: Attachment 2
VPC C: Attachment 3
VPC D: Attachment 4
On-prem: VPN

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Attachment&lt;/strong&gt;: A VPN and Amazon VPC connection to the Transit Gateway&lt;br&gt;
&lt;strong&gt;Association&lt;/strong&gt;: The packets from the attachment are routed using a route table.&lt;br&gt;
&lt;strong&gt;Propagation&lt;/strong&gt;: Route tables where the attachment's routes are installed.propagation&lt;/p&gt;

&lt;p&gt;According to AWS;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5 TGWs per account/ TGW attachment per Amazon VPC&lt;/li&gt;
&lt;li&gt;10,000 routes per TGW&lt;/li&gt;
&lt;li&gt;5,000 TGW Attachment per region per account&lt;/li&gt;
&lt;li&gt;Support up to 5,000 VPCs &lt;/li&gt;
&lt;li&gt;50Gbps maximum burstable bandwidth per attachment&lt;/li&gt;
&lt;li&gt;1.25Gbps maximum bandwidth per VPN connection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, AWS Transit Gateway has greatly increase the scalability and availability of hybrid connectivity of Amazon VPCs to corporate data centers.&lt;br&gt;
Next article will discuss on the implementation of AWS Transit gateway across VPCs in single and multiple AWS accounts.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>programming</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Fundamentals of Container Networking</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Mon, 09 Jan 2023 07:37:25 +0000</pubDate>
      <link>https://forem.com/damdev95/fundamentals-of-container-networking-3nkb</link>
      <guid>https://forem.com/damdev95/fundamentals-of-container-networking-3nkb</guid>
      <description>&lt;p&gt;Containers are successor to virtual machines, they are abstracted within the operating system level by the container engine. Container networking is a crucial aspect of modern software development and deployment, as it enables communication between containers, microservices, and applications in a containerized environment.In this article, we will explore the basics of container networking and how it works, types, as well as its benefits and challenges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is container networking?&lt;/strong&gt;&lt;br&gt;
Containers are a lightweight and portable way to package and deploy applications, as they include all the necessary libraries, dependencies, and runtime environment in a single package. &lt;br&gt;
Container runtimes use network drivers to define how containers connect with each other by controlling the &lt;strong&gt;&lt;em&gt;host iptables&lt;/em&gt;&lt;/strong&gt;, as well as with external networks and services&lt;/p&gt;

&lt;p&gt;Follow the guidelines to setup a docker engine: &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04" rel="noopener noreferrer"&gt;Docker Installation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verify the Docker engine Installation&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F20adjtnqa066vmu12rdn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F20adjtnqa066vmu12rdn.png" alt="Docker version"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Types of Container networking&lt;/strong&gt;&lt;br&gt;
There are several container networking models, each with its own benefits and limitations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka8pfn7m90cnvnzj0oyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fka8pfn7m90cnvnzj0oyu.png" alt="Types of Container network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;None: With this type of networking for containers, a network stack is provided to the container. Although it only gets a loopback interface, the container lacks an external network interface. When no networking is utilized. This model can be used to setup containers for future network connections, allocate containers without external contact, and test containers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bridge: This is the default network type for docker, in which a network bridge is created on the host system to connect the containers to the host network. To enable single-host networking, bridge networking makes use of iptables for NAT and port mapping&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6nynp9x8lzy60x36z8iz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6nynp9x8lzy60x36z8iz.png" alt="Bridge"&gt;&lt;/a&gt;&lt;br&gt;
This shows the default docker bridge network is 172.17.0.0/16, all containers belong to this network by default&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8wk9lz1wzuc3w1bacyd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn8wk9lz1wzuc3w1bacyd.png" alt="Ubuntu container"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaqbvvdbj7h72vxrcjgx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsaqbvvdbj7h72vxrcjgx.png" alt="Test Container"&gt;&lt;/a&gt;&lt;br&gt;
This shows ubuntu container was assigned an ip address within the docker bridge network(172.17.0.2/16)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Host: A newly built container can interact with the host to share a network namespace. There is no longer a need for NAT because it offers better performance that is practically as fast as bare metal networking. Ports conflict may result from this type of networking model.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67pc2c652gwgke3tb8dp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67pc2c652gwgke3tb8dp.png" alt="Host container"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcuvt2w2fgb6jyvw9c9l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcuvt2w2fgb6jyvw9c9l.png" alt="Host network"&gt;&lt;/a&gt;&lt;br&gt;
The container has access to the host's network interfaces.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Overlay: Another popular type is the overlay model, which creates an additional layer of abstraction on top of the host network to connect the containers. This model allows containers to communicate with each other across multiple hosts using protocols VXLAN, Calico, making it suitable for distributed systems such as kubernetes. The overlay model is more complex to set up and manage than the bridge model, but it offers better isolation and security&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Benefits of container networking&lt;/strong&gt;&lt;br&gt;
There are several benefits to using container networking:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Portability: Containers are designed to be portable, and container networking allows them to communicate and interact with each other and with the host system regardless of the underlying infrastructure. This makes it easier to deploy and scale applications across different environments and platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Isolation: Container networking enables the isolation of different applications and services within the same host system, reducing the risk of interference and conflicts. This is especially useful in multi-tenant environments where multiple applications and services are running on the same host.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Resource efficiency: Containers are lightweight and use fewer resources than traditional virtual machines, and container networking allows multiple containers to share resources and infrastructure. This makes it easier to optimize resource usage and reduce costs.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Challenges of container networking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Despite the benefits of container networking, there are also several challenges to consider:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Complexity: Container networking can be complex to set up and manage, especially in large and distributed systems. It requires a good understanding of networking concepts and technologies, as well as the underlying infrastructure and environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security: Container networking introduces additional security risks, as it allows containers to communicate with each other and with external networks. It is important to implement appropriate security measures and controls to prevent unauthorized access and attacks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Performance: Container networking can impact the performance of applications and services, especially in high-traffic environments. It is important to monitor and optimize the container networking configuration and performance to ensure the best possible user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Your comments and feedbacks will be appreciated, wactchout for the next article on Container Network Management&lt;/p&gt;

</description>
      <category>aws</category>
      <category>containerapps</category>
      <category>networking</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Practical steps using AWS Organization</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Wed, 29 Jun 2022 16:01:10 +0000</pubDate>
      <link>https://forem.com/damdev95/practical-steps-using-aws-organization-1d8</link>
      <guid>https://forem.com/damdev95/practical-steps-using-aws-organization-1d8</guid>
      <description>&lt;p&gt;Scenario where you have to manage several accounts in your company being the Cloud Administrator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PZCBC_mw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ehxnewspim04y4a3yc9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PZCBC_mw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0ehxnewspim04y4a3yc9.png" alt="AWS architecture diagram" width="880" height="481"&gt;&lt;/a&gt;&lt;br&gt;
AWS Organization offers solution to the pain-point with several advantages;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;AWS Organizations helps you centrally manage and govern your environment as you grow and scale your AWS resources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Using AWS Organizations, you can create accounts and allocate resources, group accounts to organize your workflows.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Apply policies for governance using SCP(Service Control Policy)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplify billing by using a single payment method for all of your accounts(consolidated billing)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It consists of two entities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Management/Master account: The management account creates the organization.&lt;/li&gt;
&lt;li&gt;Member account: these are accounts which are invited by the management account.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Steps in creating an AWS Organization
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Click to the &lt;a href="https://aws.amazon.com/console/"&gt;AWS console&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Login to you accounts with your IAM credentials &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for the &lt;strong&gt;aws organization&lt;/strong&gt; on the search bar&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_ylxLk9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxtz4idm5lay9s6cycwm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_ylxLk9H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kxtz4idm5lay9s6cycwm.png" alt="homepage" width="880" height="422"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on the AWS Organization title indicate above &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the &lt;strong&gt;Create Organization&lt;/strong&gt; on the home page &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After creating an organization, invitation can be send to member account either existing account or a new account&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vORHqLrK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x3spqzenhe4gpel1yse.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vORHqLrK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0x3spqzenhe4gpel1yse.png" alt="Add AWS account" width="880" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;An existing account can be invited using account ID or email&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cq7FVgAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3n2f7yzteq6zigvusveg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cq7FVgAF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3n2f7yzteq6zigvusveg.png" alt="existing AWS account" width="880" height="433"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A new account can be invited using &lt;strong&gt;email only&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l0DyB19a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/myyqnqtx1y2nnb8t4qhs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l0DyB19a--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/myyqnqtx1y2nnb8t4qhs.png" alt="new AWS account" width="880" height="513"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;when you create a new account the role is &lt;strong&gt;automatically given&lt;/strong&gt;, BUT adding an existing account requires to &lt;strong&gt;manually create the role&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Grant &lt;strong&gt;OrganizationAccountAccessRole&lt;/strong&gt; to the master account from the member account IAM for trusted entity and permission.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to the &lt;strong&gt;IAM&lt;/strong&gt; service, Click on &lt;em&gt;role&lt;/em&gt;, then create the trusted entity&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---a46IfzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4sxz54xlx50lee9qxb0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---a46IfzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4sxz54xlx50lee9qxb0.png" alt="Trust entity" width="880" height="446"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The account ID of the master account is given as a trusted entity for this role.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eHxEZ0B8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/546877g54yj3fhufyanx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eHxEZ0B8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/546877g54yj3fhufyanx.png" alt="Master account" width="880" height="426"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Also, assign the AWS Managed permission &lt;strong&gt;AdministratorAccess&lt;/strong&gt; to the role&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hx8qPCTZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbhhvofb6bk1whl6whpe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hx8qPCTZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mbhhvofb6bk1whl6whpe.png" alt="Image description" width="880" height="275"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ensure that the role name is &lt;strong&gt;OrganizationAccountAccessRole&lt;/strong&gt; , add description based on your preference&lt;br&gt;
&lt;strong&gt;OrganizationAccountAccessRole&lt;/strong&gt; and click the create icon.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For an existing AWS account, the admin needs to accept the invitation sent by the master account to join the organization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Proceed to Master account and switch role&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3BGmSNzY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g2wvj5d4avwz44r3lu0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3BGmSNzY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g2wvj5d4avwz44r3lu0x.png" alt="Image description" width="880" height="324"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Login into the member accounts with the credentials created earlier.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7TCKqtnI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f95e7tobzzowv0inox4f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7TCKqtnI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f95e7tobzzowv0inox4f.png" alt="Switch role 1" width="880" height="442"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Pv7c_8BT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32s06wkzytxf48aq9yr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Pv7c_8BT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/32s06wkzytxf48aq9yr4.png" alt="Switch role 2" width="880" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After putting the correct login credentials, you will be successfully login into the member account as a &lt;strong&gt;Federated user&lt;/strong&gt;*
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WispDC7T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wpl3mhfizbnczqo8ikev.png" alt="login" width="880" height="335"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  HIERACCCHY STRUCTURE
&lt;/h2&gt;

&lt;p&gt;This enable to create the OU(Organizational Unit) within the root container of the organization. Members account can be grouped into the OU.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In the AWS Organization Dashboard (Master Account), tick the root as specified , then click actions&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lEBg11cq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cujeroovyxhixervp169.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lEBg11cq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cujeroovyxhixervp169.png" alt="Organizational unit" width="880" height="453"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create the Organizational unit to structure the member accounts&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Hqg8jP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5gczypac043lof3wslrv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Hqg8jP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5gczypac043lof3wslrv.png" alt="OU deployment" width="880" height="466"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click the member account to add to OU, then click on actions to move.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WllTi_Zg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flg629dya3ntgz45pcon.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WllTi_Zg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/flg629dya3ntgz45pcon.png" alt="Adding account to OU 1" width="880" height="479"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ve3rDtWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5od344ubwiy2eotpve9f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ve3rDtWJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5od344ubwiy2eotpve9f.png" alt="Adding account to OU 2" width="880" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  USING SERVICE CONTROL POLICY(SCP).
&lt;/h2&gt;

&lt;p&gt;SCP is used to perform permission across member accounts, the permission given should also be allowed in the IAM of the member accounts.&lt;br&gt;
SCP basically restricts the access to AWS services prior before the IAM permission takes over.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YFiTLr5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zaek3cmqxsadf9o3rocy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YFiTLr5J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zaek3cmqxsadf9o3rocy.png" alt="SCP" width="880" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By default, the SCP is &lt;strong&gt;disabled&lt;/strong&gt; in the organization.&lt;/p&gt;

&lt;p&gt;Thanks for reading!!!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>compliance</category>
    </item>
    <item>
      <title>AWS VPC: What you need to understand</title>
      <dc:creator>Sulaiman Olubiyi </dc:creator>
      <pubDate>Sun, 23 Jan 2022 18:47:01 +0000</pubDate>
      <link>https://forem.com/damdev95/aws-vpc-what-you-need-to-understand-2dbk</link>
      <guid>https://forem.com/damdev95/aws-vpc-what-you-need-to-understand-2dbk</guid>
      <description>&lt;p&gt;Have you been wondering how AWS defines the backbone of its networking service?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flc2249q8mnsjcdtbtqka.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flc2249q8mnsjcdtbtqka.png" alt="AWS VPC diagram"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well, this is all thanks to VPC Virtual Private Cloud, a virtual network within the AWS cloud, and it comprises the following: security groups, network access control list (NACl), subnet, route tables, internet gateway and NAT gateway.&lt;br&gt;
Using an analogy, AWS cloud can be described as an estate which contains several houses.&lt;br&gt;
A VPC is an individual house in that estate and you can place your properties in different positions in your house. Some properties may be placed in the living room while others in the bedroom. When expecting a visitor, that is, traffic from the internet. This can refer to the isolated logical network in the AWS cloud where you provision your resources such as application and database servers. The concept of VPC components are explained thus:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wmrzasxc5kmau1jren9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3wmrzasxc5kmau1jren9.jpg" alt="Typical Analogy of VPC in form of estate"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Internet Gateway: This is likened to the telephone in your house and it is the only way for anyone that wants to visit you to reach you. If your telephone line is off, nobody can reach your house and only the people within your house can talk to each other.
In AWS, this refers to the default route to the internet which enables your resources in the VPC to communicate with the internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56rm77btdgl2t8sy2bpz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F56rm77btdgl2t8sy2bpz.jpg" alt="Image showing the estate and the visitor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Subnets: These are logical segmentation of your resources, they can be likened to the properties in your house. The properties placed in the living room are public subnets, all your visitors can see them such as television, stereo system etc. &lt;br&gt;
In AWS, Web/Application servers are deployed in the public subnets, external users can have access to them and are reachable on the internet.&lt;br&gt;
The properties placed in your bedroom are private subnets, they are accessible within your house, that is, only your family members have access to them.&lt;br&gt;
In AWS, database servers are mostly placed in the private subnets in VPC because they are only accessible within your VPC network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;NAT Gateway: By default, only people staying in the living room can meet the visitors, perhaps you are in the bedroom and you want to meet the visitor, you can use your mobile phone to talk to them, but you would be the one to make a call request.&lt;br&gt;
In AWS, this allows resources deployed in the private subnets to have access to the internet, and is especially used for upgrade and software patches for database servers or to enhance the security level of the system.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8a7pxd3aiawpvppl0txs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8a7pxd3aiawpvppl0txs.jpg" alt="Security measure towards the house"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Network Access Control List: These are the security guards guarding your home, they will check the visitor,to either grant access to the building or not.&lt;br&gt;
In AWS, this serves as a security measure at the subnet level for your VPC network to deny or allow inbound and outbound traffic. At default, it allows both inbound and outbound traffic.&lt;br&gt;
Inbound traffic: User's request entering the VPC &lt;br&gt;
Outbound traffic: User's response leaving the VPC&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security Group: You have an electronic door which checks the visitors before they can come in. If they have an appointment or invite, they will be granted access to your living room and welcomed to your home, and when the visitor is departing, he wouldn’t be subjected to another check (stateful).&lt;br&gt;
In AWS, this is a security measure at the instance level, it only allows traffic and it is stateful which means once the traffic is allowed in, automatically the traffic will be permitted out.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I hope you understand the basics of VPC, your comments are welcome&lt;br&gt;
Cheers 😊&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
