<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Cloud Journey with Nirav Raychura]]></title><description><![CDATA[Welcome to my tech sanctuary! I'm Nirav Raychura, a seasoned Tech Enthusiast & Cloud Architect. With a journey in tech since 2014, I've mastered AWS, Azure, GCP]]></description><link>https://cloudjourney.in</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 14:04:48 GMT</lastBuildDate><atom:link href="https://cloudjourney.in/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[AI Meets DevOps: Supercharging CI/CD with Amazon CodeGuru]]></title><description><![CDATA[Introduction
In the high-speed world of DevOps, Continuous Integration and Continuous Delivery (CI/CD) pipelines are our bread and butter. But come on, manual code reviews are as thrilling as watching paint dry and just as slow! Fortunately, the AWS ...]]></description><link>https://cloudjourney.in/ai-meets-devops-supercharging-cicd-with-amazon-codeguru</link><guid isPermaLink="true">https://cloudjourney.in/ai-meets-devops-supercharging-cicd-with-amazon-codeguru</guid><category><![CDATA[Devops]]></category><category><![CDATA[AWS]]></category><category><![CDATA[codeguru]]></category><category><![CDATA[DevSecOps]]></category><category><![CDATA[Cloud]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Tue, 15 Apr 2025 09:54:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1744710024846/54120187-9ed8-4a0e-9a93-4f8aaf5815c0.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-introduction"><strong>Introduction</strong></h2>
<p>In the high-speed world of DevOps, Continuous Integration and Continuous Delivery (CI/CD) pipelines are our bread and butter. But come on, manual code reviews are as thrilling as watching paint dry and just as slow! Fortunately, the AWS heroes have provided us with Amazon CodeGuru, an AI-powered tool that makes tedious code reviews a piece of cake.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcfAKQXFCpsktMm17mKhUBynVb0rRDF-nq07uKd00Ltv_s1_sJeV_L3eCzJ55IHaggxjPHNWuU2DkKrqfgUUtFYUqx9lwwzw_0YDw7SaJqusBPBvplr7g12DEnixmGBjoxm5qW8?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<hr />
<h2 id="heading-so-what-exactly-is-amazon-codeguru"><strong>So, What Exactly is Amazon CodeGuru?</strong></h2>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXfiC0bde_Gz06TsVDvcihHBvpIxQofRJptUAJBjrPmYjCYL-cJkIyjQGetHtmw4O4N_LqPHgRHUSgC5WOUzws9KBe9FKalP6yL5v3J4i2nsJaxAOXBXfWC_lTxBZvZB5gMp5_Fc0w?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<p>Suppose your team had an indefatigable, coffee-less intern—who never sleeps, never misses a line of code, and never complains. That's CodeGuru. Amazon CodeGuru uses advanced machine learning to automatically identify bugs, vulnerabilities, performance problems, and even resource leaks in your code.</p>
<h3 id="heading-why-is-codeguru-a-big-deal"><strong>Why is CodeGuru a big deal?</strong></h3>
<ul>
<li><p><strong>Languages Supported:</strong> Java, Python, JavaScript, TypeScript.</p>
</li>
<li><p><strong>Repositories:</strong> GitHub, AWS CodeCommit, Bitbucket.</p>
</li>
<li><p><strong>Key Strengths:</strong> Security, Performance Optimization, Resource Management.  </p>
</li>
</ul>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXd4uWQGQUtwT-j3XnnKtRtQWH43Kf7hVVXG3Pcgb8S3ntQN-rdBOTvkH9uK6SSd6ZbEPRl1JG1tusaJpByRxpqmSdUr0rpAuC-juI33EjBOusam46ze3mzi19j3Qzk7XSO1LGquUg?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<hr />
<h2 id="heading-going-deep-with-codeguru-reviewer"><strong>Going Deep with CodeGuru Reviewer</strong></h2>
<p>CodeGuru Reviewer thoroughly reviews your code for defects such as:</p>
<ul>
<li><p><strong>Security issues</strong> (SQL injections, cross-site scripting)</p>
</li>
<li><p><strong>Concurrency problems &amp; resource leaks</strong> (memory leaks, CPU inefficiencies)</p>
</li>
<li><p><strong>Detection of secret credentials</strong> (leaked AWS keys)</p>
</li>
<li><p><strong>Inefficient API usage</strong> (suboptimal AWS SDK calls)</p>
</li>
</ul>
<p>Just think of it like your own "coding Yoda," calmly prompting you, "Do or do not, there is no try," whenever you are opening up your PR.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcEeWaKalYslPg1k_k-3Zca-_tzTFzfxScJhf9tsQlY3M93nBPiCmnbMj5V7pYHqE0yLshihQoO96gZzHKKe3Cf_7P1I6jqWrRSy26TD3P2YKtAO1IKqCdzsiSlfUIMm2S-GXrpKQ?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdTQP3bvhPE3G2RFuNsPvT9RjuZ9Yf_Y0nazTkd1JlQ9ArNiUFDpNX3YRMQ81KB-OSSp7NCHbZhZs0ZOQw82BCvnB8G8hfo1Nc98BDvHPzJPYDepKiqIdempnaRAx2enTGyL6iP?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<hr />
<h2 id="heading-behind-the-scenes-with-codeguru-profiler"><strong>Behind-the-Scenes with CodeGuru Profiler</strong></h2>
<p>Your applications need top-level fitness. CodeGuru Profiler keeps your running applications under constant watch to identify slowdowns or CPU hogs, providing easy-to-understand visual flame graphs and accurate optimization advice.</p>
<p>Imagine Profiler as your app's Fitbit, pointing out ways that have gained unnecessary weight, leading you to a leaner, quicker, and cheaper application.</p>
<p><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXdgjQDmL9db2DhPtx9hDq6gNGlRGez9imETRCYQmbfViZZeiEkhENBCddjWW-7iWFggwkO__MyKgVaFCw_xD6-yqDtxCieXbA-t3vurIvhiEm7Gpi00limVOdLwpwmb6PGhbkLIoQ?key=fm3RNDxJw_03qRN3Ug5YMIuO" alt /></p>
<hr />
<h2 id="heading-real-life-codeguru-with-github-actions"><strong>Real-Life: CodeGuru with GitHub Actions</strong></h2>
<p>Let's practically integrate CodeGuru Reviewer into your GitHub CI/CD pipeline.</p>
<h3 id="heading-github-actions-workflow-yaml"><strong>GitHub Actions Workflow (YAML):</strong></h3>
<pre><code class="lang-yaml"><span class="hljs-attr">name:</span> <span class="hljs-string">Amazon</span> <span class="hljs-string">CodeGuru</span> <span class="hljs-string">Reviewer</span>

<span class="hljs-attr">on:</span>
  <span class="hljs-attr">pull_request:</span>
    <span class="hljs-attr">branches:</span> [<span class="hljs-string">main</span>]

<span class="hljs-attr">jobs:</span>
  <span class="hljs-attr">codeguru-review:</span>
    <span class="hljs-attr">name:</span> <span class="hljs-string">Run</span> <span class="hljs-string">CodeGuru</span> <span class="hljs-string">Reviewer</span>
    <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>

    <span class="hljs-attr">permissions:</span>
      <span class="hljs-attr">contents:</span> <span class="hljs-string">read</span>
      <span class="hljs-attr">id-token:</span> <span class="hljs-string">write</span>

    <span class="hljs-attr">steps:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Checkout</span> <span class="hljs-string">repository</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v3</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">fetch-depth:</span> <span class="hljs-number">0</span>  

      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Set</span> <span class="hljs-string">up</span> <span class="hljs-string">Python</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/setup-python@v4</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">python-version:</span> <span class="hljs-string">'3.11'</span>

      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Install</span> <span class="hljs-string">dependencies</span> <span class="hljs-string">(optional)</span>
        <span class="hljs-attr">run:</span> <span class="hljs-string">|
          python -m pip install --upgrade pip
          pip install -r requirements.txt || true
</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Configure</span> <span class="hljs-string">AWS</span> <span class="hljs-string">credentials</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">aws-actions/configure-aws-credentials@v3</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">aws-access-key-id:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.AWS_ACCESS_KEY_ID</span> <span class="hljs-string">}}</span>
          <span class="hljs-attr">aws-secret-access-key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.AWS_SECRET_ACCESS_KEY</span> <span class="hljs-string">}}</span>
          <span class="hljs-attr">aws-region:</span> <span class="hljs-string">us-east-1</span>

      <span class="hljs-bullet">-</span> <span class="hljs-attr">name:</span> <span class="hljs-string">Run</span> <span class="hljs-string">Amazon</span> <span class="hljs-string">CodeGuru</span> <span class="hljs-string">Reviewer</span>
        <span class="hljs-attr">uses:</span> <span class="hljs-string">aws-actions/codeguru-reviewer@v1.1</span>
        <span class="hljs-attr">with:</span>
          <span class="hljs-attr">s3_bucket:</span> <span class="hljs-string">codeguru-reviewer-demo-raychuranirav-us</span>
          <span class="hljs-attr">build_path:</span> <span class="hljs-string">.</span>
</code></pre>
<h2 id="heading-github-actions-workflow-explained"><strong>GitHub Actions Workflow Explained</strong></h2>
<p>Let's peek under the hood to see how our GitHub Actions workflow puts Amazon CodeGuru Reviewer to work. Think of this workflow as the automatic pit crew for your code, tirelessly ensuring everything stays in peak condition.</p>
<h3 id="heading-trigger-on-pull-requests"><strong>Trigger on Pull Requests</strong></h3>
<p>The pipeline gets going whenever someone opens or updates a pull request to the <code>main</code> branch. Because nothing is more comforting than a clean PR!</p>
<h3 id="heading-checkout-repository"><strong>Checkout Repository</strong></h3>
<p>Step one—first, we fetch the latest and greatest from your repository with GitHub's checkout action. We take the whole history <code>(fetch-depth: 0)</code> since CodeGuru Reviewer is a context junkie just like developers are coffee addicts.</p>
<h3 id="heading-setting-up-python-environment"><strong>Setting Up Python Environment</strong></h3>
<p>Then, we establish a Python environment <code>(Python 3.11)</code>. Even if your project does not absolutely need Python, this guarantees compatibility for any dependency analysis and ensures CodeGuru does not skip a beat.</p>
<h3 id="heading-installing-dependencies-optional-but-recommended"><strong>Installing Dependencies (Optional but Recommended)</strong></h3>
<p>We install any dependencies that may be required, as outlined in <code>requirements.txt</code>. Don't panic if your file is empty or does not exist—this step proceeds quietly without complaint. Take this as the "just-in-case toolkit" for your project.</p>
<h3 id="heading-configuring-aws-credentials"><strong>Configuring AWS Credentials</strong></h3>
<p>Then comes the magic key moment (pun intended) which is configuring AWS credentials. We securely connect GitHub Actions to your AWS account using secret keys stored in GitHub Secrets. This enables CodeGuru to do its smart, AI-driven detective work.</p>
<h3 id="heading-running-amazon-codeguru-reviewer"><strong>Running Amazon CodeGuru Reviewer</strong></h3>
<p>Finally, it's showtime! The workflow invokes CodeGuru Reviewer, providing it with the AWS S3 bucket name (<code>codeguru-reviewer-demo-raychuranirav-us</code>) for storing its analysis, and the project directory (<code>build_path: .</code>) to review your code in its entirety.</p>
<p>When this step completes, you'll see thoughtful, AI-powered comments and suggestions directly on your pull request—making your code cleaner, safer, and optimized.</p>
<p>Consider this workflow your own AI code-review ninja-working in the shadows quietly to detect all possible issues before your code ever sees the light of day!</p>
<hr />
<h2 id="heading-common-amp-complex-use-cases"><strong>Common &amp; Complex Use Cases</strong></h2>
<h3 id="heading-common-scenario"><strong>Common Scenario:</strong></h3>
<p><strong>Standard Web Apps</strong></p>
<ul>
<li><p>Regular automated review guarantees fewer bugs and security issues.</p>
</li>
<li><p>Profiler enhances app responsiveness and optimizes expense.  </p>
</li>
</ul>
<h3 id="heading-complex-scenario"><strong>Complex Scenario:</strong></h3>
<p><strong>Enterprise-Scale Microservices</strong></p>
<ul>
<li><p>Reviewer protects multiple repositories at once.</p>
</li>
<li><p>Profiler dramatically enhances performance, optimizes sophisticated resource utilization, and assists with managing large traffic efficiently.  </p>
</li>
</ul>
<p>And as they say, no matter if your app is a lemonade stand or a Netflix-scale service, CodeGuru adapts quicker than your product manager changes requirements!</p>
<hr />
<h2 id="heading-benefits-galore-why-choose-codeguru"><strong>Benefits Galore: Why Choose CodeGuru?</strong></h2>
<ul>
<li><p><strong>Top-notch security:</strong> Automatically identifies security flaws early.</p>
</li>
<li><p><strong>Improved performance:</strong> Identifies performance bottlenecks.</p>
</li>
<li><p><strong>Quality coding:</strong> AI-powered insights enhance code quality.</p>
</li>
<li><p><strong>Cost savings:</strong> Optimize compute resources, reducing AWS costs.  </p>
</li>
</ul>
<p>In short, CodeGuru gets your app purring like a high-performance sports car quick, efficient, and a blast to drive.</p>
<hr />
<h2 id="heading-conclusion"><strong>Conclusion</strong></h2>
<p>Manual code reviews? Seriously, that's so last decade. Level up your DevOps game with Amazon CodeGuru. Your apps (and your sanity!) will thank you.</p>
<hr />
]]></content:encoded></item><item><title><![CDATA[🎉 Hacking the AWS DevOps Exam: From Zero to Hero in 10 Days! 🚀]]></title><description><![CDATA[Yo, fellow tech enthusiasts! Guess what? On the 10th day, I took the plunge and tackled the AWS DevOps Exam like a boss. And guess what? Nailed it! 🤘🎓
How Did I Pull It Off? 🤔
Let me spill the tea on my winning strategy. First off, it's all about ...]]></description><link>https://cloudjourney.in/hacking-the-aws-devops-exam-from-zero-to-hero-in-10-days</link><guid isPermaLink="true">https://cloudjourney.in/hacking-the-aws-devops-exam-from-zero-to-hero-in-10-days</guid><category><![CDATA[AWS]]></category><category><![CDATA[Certification]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[DevOps Journey]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Sat, 03 Feb 2024 07:31:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706945213999/62633cd9-4c36-4093-96ce-1f9ba146a763.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Yo, fellow tech enthusiasts! Guess what? On the 10th day, I took the plunge and tackled the AWS DevOps Exam like a boss. And guess what? Nailed it! 🤘🎓</p>
<h3 id="heading-how-did-i-pull-it-off"><strong>How Did I Pull It Off? 🤔</strong></h3>
<p>Let me spill the tea on my winning strategy. First off, it's all about consistent learning, no slacking! Every day, diving deep into AWS, absorbing all the techy goodness. But hold up, it's not just about cramming info like a robot. Nah! It's about understanding how to put that knowledge to work in real-life situations. Real talk, gotta have that mindset of not just learning but figuring out the "how" in the real world.</p>
<h3 id="heading-blogging-hustle-real-struggle"><strong>Blogging Hustle, Real Struggle! 💻📚</strong></h3>
<p>Now, you might be wondering, "Yo, where are the hands-on examples in them blogs?" Truth bomb – it's a real grind juggling learning and blogging. But hey, I dropped 10 blogs on all the AWS DevOps topics I tackled. Real talk, couldn't go too wild with hands-on examples this time, but best believe, I'm leveling up to drop more fire blogs with mad hands-on action next time. It's a work in progress, fam. 🌐💡</p>
<h3 id="heading-why-you-should-care"><strong>Why You Should Care? 🚨</strong></h3>
<p>If you're on that AWS journey or eyeing that certification, peep my blogs. Real talk, I gotchu! From the struggles to the wins, it's all laid out there. Ain't no fancy words – just raw, real, and relatable. Let's keep it 100 – learning ain't easy, but it's worth it!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-on-linkedinhttpswwwlinkedincominnirav-raychura-912b3a19-or-twitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong> <a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a> <strong>or</strong> <a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 10 of My AWS DevOps Professional Journey! 🚀]]></title><description><![CDATA[Greetings, fellow learners! Today marks another significant milestone in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 10 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 10: Unraveling AWS Co...]]></description><link>https://cloudjourney.in/exciting-day-10-of-my-aws-devops-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-10-of-my-aws-devops-professional-journey</guid><category><![CDATA[aws scp]]></category><category><![CDATA[Aws Detective]]></category><category><![CDATA[AWS]]></category><category><![CDATA[AWS Control Tower]]></category><category><![CDATA[AWS Config]]></category><category><![CDATA[AWS Organizations]]></category><category><![CDATA[AWS IAM Identity Center]]></category><category><![CDATA[aws-waf]]></category><category><![CDATA[#Amazon GuardDuty]]></category><category><![CDATA[aws-inspector]]></category><category><![CDATA[AWS trusted Advisor]]></category><category><![CDATA[AWS secret manager]]></category><category><![CDATA[aws quicksight]]></category><category><![CDATA[AWS Glue]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Sat, 03 Feb 2024 05:00:33 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706789264114/7e19e257-9985-459a-ac7f-3b0f391e898c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, fellow learners! Today marks another significant milestone in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 10 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 10: Unraveling AWS Config, Control Tower, Security Services, and More!</strong></p>
<p>As we delve into AWS Config and a plethora of security-focused services, let's explore the diverse topics covered and gain valuable insights for maintaining robust, secure, and compliant AWS environments.</p>
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<hr />
<h3 id="heading-what-is-aws-config">🌐 <strong>What is AWS Config?</strong></h3>
<p>AWS Config is a service that enables you to assess, audit, and evaluate the configurations of your AWS resources. You can use AWS Config to monitor and record your AWS resource configurations and automate the evaluation of recorded configurations against desired configurations.</p>
<h3 id="heading-aws-config-configurations-recorder-and-aggregator">🔄 <strong>AWS Config Configurations Recorder and Aggregator</strong></h3>
<p>AWS Config Configurations Recorder and Aggregator are two features of AWS Config. Configurations Recorder is a feature that enables you to record the configurations of your AWS resources. Configurations Aggregator is a feature that enables you to aggregate the configurations of your AWS resources across multiple accounts and regions.</p>
<h3 id="heading-aws-config-conformance-packs">🔍 <strong>AWS Config Conformance Packs</strong></h3>
<p>AWS Config Conformance Packs are a collection of AWS Config rules and remediation actions that help you manage your AWS resources for compliance with industry standards and best practices. You can use AWS Config Conformance Packs to evaluate your AWS resources against predefined rules and remediate non-compliant resources.</p>
<h3 id="heading-aws-config-organizational-rules">📄 <strong>AWS Config Organizational Rules</strong></h3>
<p>AWS Config Organizational Rules are a feature of AWS Config that enables you to define rules that apply to all AWS accounts in your organization. You can use AWS Config Organizational Rules to evaluate your AWS resources against predefined rules and remediate non-compliant resources.</p>
<hr />
<h3 id="heading-what-is-aws-organizations">🌐 <strong>What is AWS Organizations?</strong></h3>
<p>AWS Organizations is a service that enables you to consolidate multiple AWS accounts into an organization that you create and centrally manage. You can use AWS Organizations to create groups of AWS accounts and apply policies to those groups.</p>
<h3 id="heading-scp-service-control-policies-in-aws-organization">🌐 <strong>SCP (Service Control Policies) in AWS Organization</strong></h3>
<p>AWS Organizations Service Control Policies (SCPs) are a feature of AWS Organizations that enables you to create policies that apply to all AWS accounts in your organization. You can use SCPs to restrict the actions that users and roles can perform on AWS resources.</p>
<hr />
<h3 id="heading-aws-control-tower-overview">🌐 <strong>AWS Control Tower Overview</strong></h3>
<p>AWS Control Tower is a service that enables you to set up and govern a secure, compliant multi-account environment on AWS. You can use AWS Control Tower to create and manage AWS accounts, apply policies, and enforce compliance.</p>
<h3 id="heading-control-tower-landing-zones">🌐 <strong>Control Tower Landing Zones</strong></h3>
<p>AWS Control Tower Landing Zones are preconfigured templates that enable you to set up and govern a secure, compliant multi-account environment on AWS. You can use Control Tower Landing Zones to create and manage AWS accounts, apply policies, and enforce compliance.</p>
<h3 id="heading-account-factories-and-migrating-accounts-in-aws-control-tower">🔄 <strong>Account Factories and Migrating Accounts in AWS Control Tower</strong></h3>
<p>AWS Control Tower Account Factories are a feature of AWS Control Tower that enables you to create and manage AWS accounts at scale. You can use Account Factories to automate the creation of new AWS accounts and migrate existing AWS accounts to AWS Control Tower.</p>
<h3 id="heading-customizations-for-aws-control-tower-cfct">🌐 <strong>Customizations for AWS Control Tower (CfCT)</strong></h3>
<p>Customizations for AWS Control Tower (CfCT) are a set of tools and resources that enable you to customize AWS Control Tower to meet your specific needs. You can use CfCT to create custom landing zones, integrate with third-party tools, and automate account creation and management.</p>
<h3 id="heading-control-tower-config-integration">🌐 <strong>Control Tower Config Integration</strong></h3>
<p>AWS Control Tower Config Integration is a feature of AWS Control Tower that enables you to use AWS Config to monitor and record the configurations of your AWS resources. You can use Control Tower Config Integration to automate the evaluation of recorded configurations against desired configurations.</p>
<h3 id="heading-account-factory-for-terraform-in-aws-control-tower">🔄 <strong>Account Factory for Terraform in AWS Control Tower</strong></h3>
<p>AWS Control Tower Account Factory for Terraform is a feature of AWS Control Tower that enables you to create and manage AWS accounts using Terraform. You can use Account Factory for Terraform to automate the creation of new AWS accounts and manage existing AWS accounts.</p>
<hr />
<h3 id="heading-iam-identity-center-overview">🌐 <strong>IAM Identity Center Overview</strong></h3>
<p>AWS IAM Identity Center is a feature of AWS Identity and Access Management (IAM) that enables you to manage your IAM users, groups, and roles in a single location. You can use IAM Identity Center to create, manage, and delete IAM users, groups, and roles.</p>
<hr />
<h3 id="heading-aws-web-application-firewall-waf-overview">🔐 <strong>AWS Web Application Firewall (WAF) Overview</strong></h3>
<p>AWS Web Application Firewall (WAF) is a web application firewall that helps protect your web applications from common web exploits. You can use AWS WAF to create custom rules that block common attack patterns, such as SQL injection and cross-site scripting.</p>
<h3 id="heading-aws-firewall-manager-and-policies">🔄 <strong>AWS Firewall Manager and Policies</strong></h3>
<p>AWS Firewall Manager is a service that enables you to centrally manage your AWS WAF rules across multiple accounts and resources. You can use AWS Firewall Manager to create and manage AWS WAF policies that apply to your AWS resources.</p>
<hr />
<h3 id="heading-amazon-guardduty-overview">🔒 <strong>Amazon GuardDuty Overview</strong></h3>
<p>Amazon GuardDuty is a threat detection service that continuously monitors your AWS accounts and workloads for malicious activity. You can use Amazon GuardDuty to detect and respond to threats in real time.</p>
<h3 id="heading-integrating-guardduty-with-cloudformation">🔄 <strong>Integrating GuardDuty with CloudFormation</strong></h3>
<p>You can use AWS CloudFormation to create and manage Amazon GuardDuty resources. You can use CloudFormation to create and manage GuardDuty detectors, member accounts, and publishing destinations.</p>
<hr />
<h3 id="heading-amazon-detective-overview">🕵️ <strong>Amazon Detective Overview</strong></h3>
<p>Amazon Detective is a security service that makes it easy to analyze, investigate, and identify the root cause of security issues in your AWS resources. You can use Amazon Detective to visualize and analyze data from AWS CloudTrail, Amazon VPC Flow Logs, and Amazon GuardDuty.</p>
<hr />
<h3 id="heading-amazon-inspector-overview">🕵️ <strong>Amazon Inspector Overview</strong></h3>
<p>Amazon Inspector is an automated security assessment service that helps improve the security and compliance of your applications deployed on AWS. You can use Amazon Inspector to identify security issues and vulnerabilities in your applications and infrastructure.</p>
<h3 id="heading-setting-up-amazon-inspector-with-ec2">🔄 <strong>Setting Up Amazon Inspector with EC2</strong></h3>
<p>You can use Amazon Inspector to assess the security and compliance of your Amazon EC2 instances. You can use Inspector to identify security issues and vulnerabilities in your EC2 instances and receive detailed reports with remediation steps.</p>
<h3 id="heading-ec2-instance-migrations-using-amis">🔄 <strong>EC2 Instance Migrations Using AMIs</strong></h3>
<p>You can use Amazon Machine Images (AMIs) to migrate your Amazon EC2 instances to different regions or accounts. You can create an AMI of your EC2 instance and then copy the AMI to the destination region or account.</p>
<hr />
<h3 id="heading-aws-trusted-advisor-overview">🔐 <strong>AWS Trusted Advisor Overview</strong></h3>
<p>AWS Trusted Advisor is an online tool that provides recommendations to help you optimize your AWS resources for performance, security, and cost. You can use Trusted Advisor to identify opportunities to save money, improve system performance, and increase security.</p>
<h3 id="heading-aws-trusted-advisor-architectures">🌐 <strong>AWS Trusted Advisor Architectures</strong></h3>
<p>AWS Trusted Advisor provides recommendations for optimizing your AWS resources across five categories: cost optimization, performance, security, fault tolerance, and service limits. You can use Trusted Advisor to identify opportunities to reduce costs, improve performance, and increase security across your AWS resources.</p>
<hr />
<h3 id="heading-aws-secrets-manager-overview">🔐 <strong>AWS Secrets Manager Overview</strong></h3>
<p>AWS Secrets Manager is a service that enables you to store and retrieve secrets such as database credentials, API keys, and other sensitive data. You can use Secrets Manager to manage secrets for your applications and services.</p>
<hr />
<h3 id="heading-aws-tag-editor-overview">🔍 <strong>AWS Tag Editor Overview</strong></h3>
<p>AWS Tag Editor is a service that enables you to manage tags for your AWS resources. You can use Tag Editor to add, edit, or delete tags for your AWS resources.</p>
<hr />
<h3 id="heading-aws-quicksight-overview">📊 <strong>AWS QuickSight Overview</strong></h3>
<p>AWS QuickSight is a business intelligence service that enables you to create interactive dashboards and visualizations from your data. You can use QuickSight to analyze data from a variety of sources, including AWS services, third-party applications, and on-premises databases.</p>
<hr />
<h3 id="heading-aws-glue-overview">📊 <strong>AWS Glue Overview</strong></h3>
<p>AWS Glue is a fully managed extract, transform, and load (ETL) service that makes it easy to move data between data stores. You can use Glue to automate the process of discovering, cataloging, and preparing your data for analysis.</p>
<hr />
<p>As I bid farewell to this transformative AWS DevOps journey, today marks a significant milestone as I prepare to embark on the certification exam. Each day of learning has brought new challenges and discoveries, deepening my understanding of AWS DevOps principles, thanks to the guidance from Stéphane Maarek's Udemy course.</p>
<p>To the community and mentors who have supported and shared in this learning adventure, your insights and engagement have been invaluable. As I face the exam, your good wishes and positive vibes are sincerely appreciated. Here's to showcasing the culmination of dedicated learning and facing the challenge head-on.</p>
<p>In the future, should I emerge triumphant, I'll share my exam experience and the strategies that contributed to my success. Stay tuned for blogs detailing how I navigated the exam process, the resources I found most beneficial, and the approach that worked for me.</p>
<p>While this particular journey may be reaching its conclusion, the spirit of learning remains alive and well. Continuous improvement and staying abreast of the ever-evolving tech landscape will always be at the forefront. As the journey transitions, I invite you to stay connected for future updates. Whether it's new certifications, project implementations, or insights into emerging technologies, the learning adventure continues.</p>
<p>Here's to new horizons and the exciting road ahead! 🌟✨</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-on-linkedinhttpswwwlinkedincominnirav-raychura-912b3a19-or-twitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong> <a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a> <strong>or</strong> <a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 9 of My AWS DevOps Professional Journey! 🚀]]></title><description><![CDATA[Greetings, fellow learners! Today marks another enlightening chapter in my AWS DevOps certification journey, and I'm thrilled to share the knowledge gained on Day 9 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 9: Navigating AWS Ev...]]></description><link>https://cloudjourney.in/exciting-day-9-of-my-aws-devops-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-9-of-my-aws-devops-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[aws devops]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[AWS EventBridge]]></category><category><![CDATA[AWS CloudTrail]]></category><category><![CDATA[aws x-ray]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Fri, 02 Feb 2024 05:00:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706768541957/bb840a37-bfae-461d-a8f1-3dfaa8697b93.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, fellow learners! Today marks another enlightening chapter in my AWS DevOps certification journey, and I'm thrilled to share the knowledge gained on Day 9 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 9: Navigating AWS Event Bridge, S3 Event Notifications, Health Dashboard, and More!</strong></p>
<p>As we delve into AWS services, let's explore the diverse topics covered and gain valuable insights for seamless orchestration, monitoring, and alerting in the cloud.</p>
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<hr />
<h3 id="heading-what-is-aws-event-bridge">🌐 <strong>What is AWS Event Bridge?</strong></h3>
<p>Amazon EventBridge is a serverless event bus service that makes it easy to connect your applications with data from a variety of sources. You can use EventBridge to build event-driven architectures, decouple your applications, and simplify your infrastructure.</p>
<h3 id="heading-event-bridge-content-filtering">🔍 <strong>Event Bridge Content Filtering</strong></h3>
<p>Amazon EventBridge supports declarative content filtering using event patterns. With content filtering, you can write complex event patterns that only match events under very specific conditions. For example, you can create an event pattern that matches an event when a field of the event is within a specific numeric range, or when the event comes from a specific IP address.</p>
<h3 id="heading-event-bridge-input-transformation">🔄 <strong>Event Bridge Input Transformation</strong></h3>
<p>Amazon EventBridge input transformation enables you to customize the text from an event before EventBridge passes the information to the target of a rule. Using the input transformer in the console or the API, you define variables that use JSON path to reference values in the original event source. The transformed event is sent to a target instead of the original event.</p>
<h3 id="heading-s3-event-notification">💾 <strong>S3 Event Notification</strong></h3>
<p>Amazon S3 Event Notifications feature enables you to receive notifications when certain events happen in your S3 bucket. To enable notifications, add a notification configuration that identifies the events that you want Amazon S3 to publish. Make sure that it also identifies the destinations where you want Amazon S3 to send the notifications.</p>
<h3 id="heading-s3-object-integrity">🛡️ <strong>S3 Object Integrity</strong></h3>
<p>Amazon S3 uses checksum values to verify the integrity of data that you upload to or download from Amazon S3. In addition, you can request that another checksum value be calculated for any object that you store in Amazon S3. You can select from one of several checksum algorithms to use when uploading or copying your data.</p>
<h3 id="heading-aws-health-dashboard-overview">🌐 <strong>AWS Health Dashboard Overview</strong></h3>
<p>AWS Health Dashboard provides alerts and guidance for AWS events that might affect your environment. While the Service Health Dashboard shows the general status of AWS services, the Personal Health Dashboard provides proactive and transparent notifications about your specific AWS environment.</p>
<h3 id="heading-aws-health-dashboard-events-and-notifications">🚨 <strong>AWS Health Dashboard Events and Notifications</strong></h3>
<p>AWS Health Dashboard provides a personalized view of events that affect your AWS account or organization. You can view the current and historical status of all AWS services and get a personalized view of events that affect your AWS account or organization.</p>
<h3 id="heading-ec2-status-check">🔄 <strong>EC2 Status Check</strong></h3>
<p>Amazon EC2 provides status checks to help you identify hardware and software issues with your instances. You can view the status check results for your instances using the Amazon EC2 console, the AWS CLI, or the Amazon EC2 API.</p>
<h3 id="heading-cloudtrail-overview">📄 <strong>CloudTrail Overview</strong></h3>
<p>AWS CloudTrail is a service that enables governance, compliance, operational auditing, and risk auditing of your AWS account. With CloudTrail, you can log, continuously monitor and retain account activity related to actions across your AWS infrastructure.</p>
<h3 id="heading-integrating-cloudtrail-with-event-bridge">🔄 <strong>Integrating CloudTrail with Event Bridge</strong></h3>
<p>You can use Amazon EventBridge to receive CloudTrail events and route them to targets such as AWS Lambda functions, Amazon SNS topics, and Amazon SQS queues. You can use EventBridge to filter and transform CloudTrail events before they are sent to targets.</p>
<h3 id="heading-sqs-dead-letter-queue">📬 <strong>SQS Dead Letter Queue</strong></h3>
<p>Amazon Simple Queue Service (SQS) dead-letter queues let you set aside and isolate messages that can’t be processed correctly to determine why their processing didn’t succeed. Dead-letter queues are useful for debugging your application or messaging system because they enable you to isolate problematic messages.</p>
<h3 id="heading-sns-redrive-policy">🔄 <strong>SNS Redrive Policy</strong></h3>
<p>Amazon SNS provides a dead-letter queue (DLQ) feature that lets you set up a separate SQS queue to receive messages that can’t be delivered to their intended recipients. You can use an SNS redrive policy to specify the DLQ to which Amazon SNS should send undeliverable messages.</p>
<h3 id="heading-aws-x-ray-overview">🌐 <strong>AWS X-Ray Overview</strong></h3>
<p>AWS X-Ray is a service that enables you to trace requests made to your application. You can use X-Ray to analyze and debug production, distributed applications, such as those built using a microservices architecture.</p>
<h3 id="heading-integrating-x-ray-with-beanstalk">🔄 <strong>Integrating X-Ray with Beanstalk</strong></h3>
<p>You can use AWS Elastic Beanstalk to deploy and manage applications in the AWS Cloud. You can use X-Ray to trace requests made to your Elastic Beanstalk environment and analyze and debug your application.</p>
<h3 id="heading-aws-distro-for-opentelemetry">🌐 <strong>AWS Distro for OpenTelemetry</strong></h3>
<p>AWS Distro for OpenTelemetry is a secure, production-ready distribution of the OpenTelemetry project. It provides a single distribution of the libraries, agents, and other components that you need to collect telemetry data from your applications and services.</p>
<hr />
<p>✨ <strong>The Journey Continues:</strong> As Day 9 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-onlinkedinhttpswwwlinkedincominnirav-raychura-912b3a19ortwitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong><a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a><strong>or</strong><a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 8 of My AWS DevOps Professional Journey! 🚀]]></title><description><![CDATA[Greetings, fellow learners! Today unfolds another chapter in my AWS DevOps certification journey, and I'm thrilled to share the knowledge gained on Day 8 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 8: Exploring CloudWatch, Amazon...]]></description><link>https://cloudjourney.in/exciting-day-8-of-my-aws-devops-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-8-of-my-aws-devops-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[AWS CloudWatch]]></category><category><![CDATA[Cloud Computing]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[aws athena]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Thu, 01 Feb 2024 05:00:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706698654197/041f78f0-3cb5-4a79-9822-d52c547bf27b.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, fellow learners! Today unfolds another chapter in my AWS DevOps certification journey, and I'm thrilled to share the knowledge gained on Day 8 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 8: Exploring CloudWatch, Amazon Lookout, CloudWatch Logs, Alarms, and More!</strong></p>
<p>As we navigate through AWS CloudWatch and related services, let's dive into the diverse topics covered and gain valuable insights for effective monitoring and analytics in the cloud.</p>
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<hr />
<h3 id="heading-what-are-cloudwatch-metrics">📊 <strong>What are CloudWatch Metrics?</strong></h3>
<p>Amazon CloudWatch is a monitoring service for AWS resources and the applications you run on them. CloudWatch provides data and actionable insights to monitor applications, respond to system-wide performance changes, optimize resource utilization, and get a unified view of operational health. CloudWatch Metrics are the fundamental concept of CloudWatch. They are time-ordered sets of data points that represent the values of a metric over time. Metrics are used to monitor various resources such as EC2 instances, RDS DB instances, and custom metrics.</p>
<h3 id="heading-cloudwatch-custom-metrics">📊 <strong>CloudWatch Custom Metrics</strong></h3>
<p>CloudWatch Custom Metrics are metrics that you define and send to CloudWatch. You can use custom metrics to collect and analyze your own application-specific data. You can publish custom metrics from any application or service that sends data to CloudWatch.</p>
<h3 id="heading-cloudwatch-anomaly-detection">📈 <strong>CloudWatch Anomaly Detection</strong></h3>
<p>Amazon CloudWatch Anomaly Detection is a feature that enables you to monitor your metrics for unusual behavior. It uses machine learning algorithms to continuously analyze your metrics and detect anomalies. When an anomaly is detected, CloudWatch sends an alert to notify you of the issue.</p>
<h3 id="heading-amazon-lookout-for-metrics">🔍 <strong>Amazon Lookout for Metrics</strong></h3>
<p>Amazon Lookout for Metrics is a machine learning service that detects anomalies in your metrics. It uses machine learning to automatically identify anomalies in your metrics and provide you with insights into the root cause of the issue.</p>
<h3 id="heading-cloudwatch-logs">📄 <strong>CloudWatch Logs</strong></h3>
<p>Amazon CloudWatch Logs is a managed service that makes it easy to centralize logs from all your systems, applications, and AWS services in one place. You can use CloudWatch Logs to monitor, store, and access your log files from Amazon EC2 instances, AWS CloudTrail, and other AWS services.</p>
<h3 id="heading-cloudwatch-logs-live-tail">📊 <strong>CloudWatch Logs Live Tail</strong></h3>
<p>CloudWatch Logs Live Tail is a feature that enables you to view real-time log data from your CloudWatch Logs in a web browser. You can use Live Tail to monitor your logs and troubleshoot issues in real-time.</p>
<h3 id="heading-cloudwatch-logs-metric-filter">🔍 <strong>CloudWatch Logs Metric Filter</strong></h3>
<p>CloudWatch Logs Metric Filter is a feature that enables you to extract metric data from your log data. You can use Metric Filters to search for specific terms, phrases, or values in your log data and create metrics based on that data.</p>
<h3 id="heading-cloudwatch-agent-and-cloudwatch-log-agent">📊 <strong>CloudWatch Agent and CloudWatch Log Agent</strong></h3>
<p>CloudWatch Agent and CloudWatch Log Agent are two agents that you can use to collect and send log data to CloudWatch. CloudWatch Agent is used to collect system-level metrics and logs from Amazon EC2 instances and on-premises servers. CloudWatch Log Agent is used to collect and send log data from Amazon EC2 instances and on-premises servers.</p>
<p>📈 <strong>CloudWatch Alarms</strong></p>
<p>CloudWatch Alarms enable you to monitor metrics over a specified time period and perform one or more actions based on the value of the metric relative to a threshold over time. You can use CloudWatch Alarms to monitor any metric that CloudWatch supports.</p>
<h3 id="heading-cloudwatch-synthetics">🔍 <strong>CloudWatch Synthetics</strong></h3>
<p>Amazon CloudWatch Synthetics is a service that enables you to monitor your endpoints and APIs. You can use CloudWatch Synthetics to create canaries, which are scripts that run on a schedule to simulate user interactions with your endpoints and APIs.</p>
<h3 id="heading-amazon-athena">📊 <strong>Amazon Athena</strong></h3>
<p>Amazon Athena is an interactive query service that makes it easy to analyze data in Amazon S3 using standard SQL. Athena is serverless, so there is no infrastructure to manage, and you pay only for the queries that you run.</p>
<hr />
<p>✨ <strong>The Journey Continues:</strong> As Day 8 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-onlinkedinhttpswwwlinkedincominnirav-raychura-912b3a19ortwitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong><a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a><strong>or</strong><a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 7 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Greetings, fellow learners! Today marks another insightful chapter in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 7 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 7: Unveiling AWS Auto Sca...]]></description><link>https://cloudjourney.in/exciting-day-7-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-7-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[aws devops]]></category><category><![CDATA[Devops]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[autoscaling]]></category><category><![CDATA[AWS Elastic Load Balancer]]></category><category><![CDATA[NAT Gateway]]></category><category><![CDATA[multi-az]]></category><category><![CDATA[Blue/Green deployment]]></category><category><![CDATA[Disaster recovery]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Wed, 31 Jan 2024 05:00:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706601481204/f7b6e6f0-5b0c-488d-974d-070fd6020377.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, fellow learners! Today marks another insightful chapter in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 7 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 7: Unveiling AWS Auto Scaling, ALB Rules, Multi-AZ Architectures, and More!</strong></p>
<p>As we navigate through AWS intricacies, let's delve into the diverse topics covered and gain valuable insights for our cloud endeavors.</p>
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<hr />
<h3 id="heading-aws-auto-scaling-groups">🌐 <strong>AWS Auto Scaling Groups</strong></h3>
<p>AWS Auto Scaling Groups is a service that automatically adjusts the number of Amazon EC2 instances in a group based on the demand for the application. Auto Scaling Groups can be used to maintain application availability and scale capacity up or down based on the application’s needs.</p>
<h3 id="heading-auto-scaling-policies">🔄 <strong>Auto Scaling Policies</strong></h3>
<p>Auto Scaling Policies are rules that define how Auto Scaling should adjust the number of instances in a group based on changes in demand. Auto Scaling Policies can be used to scale up or down the number of instances in a group based on metrics such as CPU utilization, network traffic, or other custom metrics.</p>
<h3 id="heading-lifecycle-hooks-in-auto-scaling-groups">🔄 <strong>Lifecycle Hooks in Auto Scaling Groups</strong></h3>
<p>Auto Scaling Lifecycle Hooks are a way to perform custom actions when instances are launched or terminated in an Auto Scaling Group. Lifecycle Hooks can be used to perform tasks such as installing software, configuring instances, or performing other custom actions.</p>
<h3 id="heading-event-notification-in-auto-scaling-group">🌐 <strong>Event Notification in Auto Scaling Group</strong></h3>
<p>Event Notification in Auto Scaling Group is a feature that allows you to receive notifications when certain events occur in your Auto Scaling Group. You can use Amazon SNS or Amazon EventBridge to receive notifications when instances are launched or terminated, or when other events occur in your Auto Scaling Group.</p>
<h3 id="heading-termination-policies-in-auto-scaling-group">🔄 <strong>Termination Policies in Auto Scaling Group</strong></h3>
<p>Termination Policies in Auto Scaling Group are rules that determine which instances should be terminated when scaling in. Termination Policies can be used to control which instances are terminated first when scaling in, based on criteria such as instance age, launch configuration, or other custom criteria.</p>
<h3 id="heading-warm-pools-in-auto-scaling-group">🌐 <strong>Warm Pools in Auto Scaling Group</strong></h3>
<p>Warm Pools in Auto Scaling Group is a feature that allows you to maintain a pool of pre-warmed instances that can be used to quickly scale up your application. Warm Pools can be used to reduce the time it takes to launch new instances when scaling up, by keeping a pool of pre-warmed instances ready to use.</p>
<h3 id="heading-application-auto-scaling">🌐 <strong>Application Auto Scaling</strong></h3>
<p>Application Auto Scaling is a service that lets you automatically scale resources in response to demand for your applications. Application Auto Scaling can be used to scale Amazon EC2 instances, Amazon ECS tasks, Amazon DynamoDB tables, and other AWS resources.</p>
<h3 id="heading-elastic-load-balancer-alb-rules">🌐 <strong>Elastic Load Balancer ALB Rules</strong></h3>
<p>Elastic Load Balancer ALB Rules are a way to route traffic to different target groups based on the content of the request. ALB Rules can be used to route traffic based on the URL path, host header, HTTP header, or query string parameters.</p>
<hr />
<h3 id="heading-nat-gateway">🔒 <strong>NAT Gateway</strong></h3>
<p>NAT Gateway is a service that allows you to provide outbound internet connectivity to resources in a private subnet. NAT Gateway can be used to allow resources in a private subnet to access the internet, while still maintaining a secure environment.</p>
<hr />
<h3 id="heading-multi-az-architectures-in-aws">🔄 <strong>Multi-AZ Architectures in AWS</strong></h3>
<p>Multi-AZ Architectures in AWS are architectures that span multiple Availability Zones in a region. Multi-AZ Architectures can be used to provide high availability and fault tolerance for applications, by ensuring that resources are available even if an entire Availability Zone becomes unavailable.</p>
<h3 id="heading-blue-green-architecture">🔄 Blue-Green Architecture</h3>
<p>Blue-Green Architecture is a deployment strategy that involves running two identical environments, one active and one inactive. Blue-Green Architecture can be used to minimize downtime during deployments, by switching traffic from the inactive environment to the active environment once the deployment is complete.</p>
<h3 id="heading-multi-region-architecture-in-aws">🌐 <strong>Multi-Region Architecture in AWS</strong></h3>
<p>Multi-Region Architecture in AWS is an architecture that spans multiple regions. Multi-Region Architectures can be used to provide high availability and disaster recovery for applications, by ensuring that resources are available even if an entire region becomes unavailable.</p>
<hr />
<h3 id="heading-aws-disaster-recovery">🚨 <strong>AWS Disaster Recovery</strong></h3>
<p>AWS Disaster Recovery is a set of tools and services that can be used to recover from disasters such as natural disasters, cyber-attacks, or other events that can cause data loss or downtime. AWS Disaster Recovery can be used to replicate data across regions, automate failover, and provide other disaster recovery capabilities.</p>
<h3 id="heading-rto-recovery-time-objective-and-rpo-recovery-point-objective">🕐 <strong>RTO (Recovery Time Objective) and RPO (Recovery Point Objective)</strong></h3>
<p>RTO (Recovery Time Objective) and RPO (Recovery Point Objective) are two key parameters for disaster recovery planning. RTO is the maximum amount of time it should take to restore normal operations following an outage or data loss. RPO is the maximum amount of data the organization can tolerate losing. This parameter is measured in time: from the moment a failure occurs to your last valid data backup.</p>
<p>For example, if a company has an RTO of 4 hours and an RPO of 1 hour, it means that the company can tolerate losing up to 1 hour of data and it should take no more than 4 hours to restore normal operations following an outage or data loss.</p>
<hr />
<p>✨ <strong>The Journey Continues:</strong> As Day 7 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-onlinkedinhttpswwwlinkedincominnirav-raychura-912b3a19ortwitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong><a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a><strong>or</strong><a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 6 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Greetings, tech enthusiasts! Today unfolds another chapter in my AWS DevOps certification journey, and I'm thrilled to share the wealth of knowledge gained on Day 6 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 6: Unveiling Amazon ...]]></description><link>https://cloudjourney.in/exciting-day-6-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-6-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[aws devops]]></category><category><![CDATA[AWS DevOps Course]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Kinesis]]></category><category><![CDATA[S3]]></category><category><![CDATA[S3-bucket]]></category><category><![CDATA[kinesis data streams]]></category><category><![CDATA[route53]]></category><category><![CDATA[rds]]></category><category><![CDATA[aurora]]></category><category><![CDATA[Amazon Elasticache]]></category><category><![CDATA[DynamoDB]]></category><category><![CDATA[aws dms]]></category><category><![CDATA[AWS Storage gateway]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Mon, 29 Jan 2024 18:30:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706531358276/1c9c70c3-f4a6-4e6b-924c-7a3b7a6d1cd9.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, tech enthusiasts! Today unfolds another chapter in my AWS DevOps certification journey, and I'm thrilled to share the wealth of knowledge gained on Day 6 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 6: Unveiling Amazon Kinesis, Route 53, Amazon RDS, Aurora, Elasticache, DynamoDB, AWS DMS, S3, and Storage Gateway!</strong></p>
<p>As we continue our exploration of AWS services, let's delve into the diverse topics covered and gain insights for our cloud endeavors.</p>
<hr />
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<hr />
<h3 id="heading-amazon-kinesis">🌊 <strong>Amazon Kinesis</strong></h3>
<p>Amazon Kinesis is a fully managed service that ingests, buffers, and processes streaming data in real-time. With Kinesis, you can ingest real-time data, such as video, audio, application logs, website clickstreams, and IoT telemetry data, for machine learning (ML), analytics, and other applications. Kinesis Data Streams, Kinesis Data Firehose, and Kinesis Data Analytics are the three services that make up the Kinesis streaming data platform.</p>
<h3 id="heading-kinesis-data-streams">🌊 <strong>Kinesis Data Streams</strong></h3>
<p>Amazon Kinesis Data Streams is a serverless streaming data service that simplifies the capture, processing, and storage of data streams at any scale. Kinesis Data Streams enables you to collect and process large streams of data records in real-time. You can create data-processing applications, known as Kinesis Data Streams applications, that use the Kinesis Client Library and run on Amazon EC2 instances.</p>
<h3 id="heading-kinesis-data-stream-consumer-scaling">🌊 Kinesis Data Stream Consumer Scaling</h3>
<p>To scale your Kinesis Data Stream consumers, you can use the enhanced fan-out feature. Enhanced fan-out allows multiple consumers to read data from the same stream in parallel, without contending for read throughput with other consumers. When a consumer uses enhanced fan-out, it gets its own 2 MB/sec allotment of read throughput, allowing multiple consumers to read data from the same stream in parallel.</p>
<h3 id="heading-kinesis-data-firehose">🔥 <strong>Kinesis Data Firehose</strong></h3>
<p>Amazon Kinesis Data Firehose is an extract, transform, and load (ETL) service that reliably captures, transforms, and delivers streaming data to data lakes, data stores, and analytics services. Kinesis Data Firehose is a fully managed service that makes it easy to capture, transform, and load massive volumes of streaming data from hundreds of thousands of sources into Amazon S3, Amazon Redshift, Amazon OpenSearch Service, Kinesis Data Analytics, generic HTTP endpoints, and service providers like Datadog, New Relic, MongoDB, and Splunk.</p>
<h3 id="heading-kinesis-data-analytics">📊 <strong>Kinesis Data Analytics</strong></h3>
<p>Amazon Kinesis Data Analytics is a fully managed service that enables you to process and analyze streaming data using standard SQL. With Kinesis Data Analytics, you can construct applications that transform and provide insights into your data. You can use Kinesis Data Analytics to generate time-series analytics, feed real-time dashboards, and create real-time metrics.</p>
<h3 id="heading-kinesis-data-analytics-using-machine-learning">🤖 <strong>Kinesis Data Analytics Using Machine Learning</strong></h3>
<p>You can use Amazon Kinesis Data Analytics for SQL Applications to perform machine learning (ML) on your streaming data. Kinesis Data Analytics supports the use of user-defined functions (UDFs) to perform custom transformations on your data. You can use UDFs to perform ML operations on your data, such as training models and making predictions.</p>
<hr />
<h3 id="heading-route-53">🌐 <strong>Route 53</strong></h3>
<p>Amazon Route 53 is a highly available and scalable cloud Domain Name System (DNS) web service that translates domain names to IP addresses. Route 53 can be used to route users to Internet applications by translating human-readable names like <a target="_blank" href="http://www.example.com">www.example.com</a> into the numeric IP addresses like 192.0.2.1 that computers use to connect to each other.</p>
<h3 id="heading-routing-policies">🌐 Routing Policies</h3>
<ol>
<li><p><strong>Weighted Routing Policy:</strong> Weighted Routing Policy is a DNS routing policy that allows you to distribute traffic across multiple resources in proportions that you specify.</p>
</li>
<li><p><strong>Latency Routing Policy:</strong> Latency Routing Policy is a DNS routing policy that allows you to route traffic based on the lowest network latency for your end user.</p>
</li>
<li><p><strong>Failover in Routing Policy:</strong> Failover routing policy is a DNS routing policy that allows you to route traffic to a resource when the resource is healthy or to a different resource when the first resource is unhealthy. The primary and secondary records can route traffic to anything from an Amazon S3 bucket that is configured as a website to a complex tree of records. You can use failover routing policy for records in a private hosted zone.</p>
</li>
</ol>
<hr />
<h3 id="heading-amazon-rds">💽 <strong>Amazon RDS</strong></h3>
<p>Amazon Relational Database Service (Amazon RDS) is a fully managed relational database service that makes it easy to set up, operate, and scale a relational database in the cloud. Amazon RDS provides cost-efficient and resizable capacity while automating time-consuming administration tasks such as hardware provisioning, database setup, patching, and backups.</p>
<h3 id="heading-read-replicas-in-rds">🔄 <strong>Read Replicas in RDS</strong></h3>
<p>Amazon RDS Read Replicas are a way to scale reads in an RDS Database by creating multiple read-only, database instances of the primary database. RDS supports up to 15 read replicas per database instance and the read replicas can be located in the same availability zones, in different availability zones, or even in other regions. Every read replica can be promoted to its databases. However, the major limitation of read replicas is that it only supports select clause queries, which means all the database instances except the primary database instance will only support read operations. When data is written to the primary database instance it gets replicated to its read replicas by using asynchronous mode of replication.</p>
<h3 id="heading-rds-multi-az">🔒 <strong>RDS Multi-AZ</strong></h3>
<p>Amazon RDS Multi-AZ deployments provide enhanced availability and durability for database instances within a single region. With Multi-AZ, Amazon RDS automatically provisions and maintains a synchronous standby replica in a different Availability Zone. In the event of a planned or unplanned outage of your primary instance, Amazon RDS automatically switches to the standby replica.</p>
<h3 id="heading-key-difference-between-real-replicas-and-rds-multi-az">🔍 <strong>Key Difference between Real Replicas and RDS Multi-AZ</strong></h3>
<p>The key difference between Read Replicas and Multi-AZ is that Read Replicas are used to scale reads, while Multi-AZ is used to provide enhanced availability and durability for database instances.</p>
<hr />
<h3 id="heading-amazon-aurora">💎 <strong>Amazon Aurora</strong></h3>
<p>Amazon Aurora is a MySQL and PostgreSQL-compatible relational database built for the cloud. Aurora combines the performance and availability of traditional enterprise databases with the simplicity and cost-effectiveness of open-source databases. Aurora is fully managed by Amazon Relational Database Service (RDS), which automates time-consuming administration tasks such as hardware provisioning, database setup, patching, and backups.</p>
<hr />
<h3 id="heading-amazon-elasticache">🚀 <strong>Amazon ElastiCache</strong></h3>
<p>Amazon ElastiCache is a fully managed in-memory data store and cache service that makes it easy to deploy, operate, and scale popular open source compatible in-memory data stores in the cloud. ElastiCache supports two open-source in-memory caching engines: Memcached and Redis.</p>
<h3 id="heading-elasticache-cluster-mode">🔄 <strong>ElastiCache Cluster Mode</strong></h3>
<p>ElastiCache Cluster Mode is a feature that allows you to partition your data across multiple Redis shards. With Cluster Mode enabled, you can scale your Redis workloads beyond the memory and I/O limits of a single node.</p>
<p>When Cluster Mode is disabled, ElastiCache runs Redis in a single-node configuration. The key difference between Cluster Mode enabled and disabled is that with Cluster Mode enabled, you can scale your Redis workloads beyond the memory and I/O limits of a single node.</p>
<hr />
<h3 id="heading-amazon-dynamodb">🌐 <strong>Amazon DynamoDB</strong></h3>
<p>Amazon DynamoDB is a fully managed NoSQL database service that provides fast and predictable performance with seamless scalability. DynamoDB is designed to scale horizontally across multiple servers and geographic regions.</p>
<p><strong>Advanced features of Amazon DynamoDB include:</strong></p>
<ul>
<li><p><strong>DynamoDB Streams</strong>: A feature that captures a time-ordered sequence of item-level modifications in any DynamoDB table.</p>
</li>
<li><p><strong>DynamoDB Global Tables</strong>: A feature that enables you to replicate DynamoDB tables across AWS Regions.</p>
</li>
<li><p><strong>DynamoDB Accelerator (DAX)</strong>: A fully managed, highly available, in-memory cache for DynamoDB that delivers up to a 10x performance improvement.</p>
</li>
</ul>
<hr />
<h3 id="heading-aws-dms">🔍 <strong>AWS DMS</strong></h3>
<p>AWS Database Migration Service (AWS DMS) is a fully managed service that makes it easy to migrate relational databases, data warehouses, and NoSQL databases to AWS. You can use AWS DMS to migrate your data to and from the most widely used commercial and open-source databases.</p>
<h3 id="heading-monitoring-aws-dms">📊 <strong>Monitoring AWS DMS</strong></h3>
<p>You can monitor AWS DMS using Amazon CloudWatch. CloudWatch provides metrics and alarms for monitoring the replication status, latency, and throughput of your AWS DMS tasks.</p>
<hr />
<h3 id="heading-amazon-s3">🌐 <strong>Amazon S3</strong></h3>
<p>Amazon Simple Storage Service (Amazon S3) is an object storage service that offers industry-leading scalability, data availability, security, and performance. S3 provides developers and IT teams with secure, durable, and highly scalable object storage. With S3, you can store and retrieve any amount of data from anywhere on the web.</p>
<h3 id="heading-s3-replication-and-how-to-do-it">🔄 <strong>S3 Replication and How to Do It</strong></h3>
<p>Amazon S3 Replication is a feature that enables you to replicate objects across buckets in different AWS Regions. S3 Replication can be used to replicate objects between buckets in the same account or between buckets in different accounts. To set up S3 Replication, you can use the Amazon S3 Management Console or the AWS CLI. To set up S3 Replication using AWS Management Console you can follow these steps:</p>
<ol>
<li><p>Create an Amazon S3 bucket in the source region.</p>
</li>
<li><p>Create an Amazon S3 bucket in the destination region.</p>
</li>
<li><p>Enable versioning on both the source and destination buckets.</p>
</li>
<li><p>Create an IAM role that Amazon S3 can assume to replicate objects on your behalf.</p>
</li>
<li><p>Add a replication configuration to your source bucket that specifies the destination bucket and the IAM role.</p>
</li>
<li><p>Configure the replication rule to replicate all objects or a subset of objects in the source bucket.</p>
</li>
<li><p>Monitor the replication progress using Amazon S3 metrics and CloudWatch alarms.</p>
</li>
</ol>
<hr />
<h3 id="heading-aws-storage-gateway">💾 <strong>AWS Storage Gateway</strong></h3>
<p>AWS Storage Gateway is a hybrid cloud storage service that enables your on-premises applications to seamlessly use AWS cloud storage. Storage Gateway provides three types of gateways: File Gateway, Volume Gateway, and Tape Gateway. Each gateway type provides a different way to connect your on-premises applications to AWS cloud storage.</p>
<h3 id="heading-file-gateway-cache-refresh">🔄 File Gateway Cache Refresh</h3>
<p>File Gateway Cache Refresh is a feature that enables you to refresh the cache for your Amazon S3 bucket. As your NFS or SMB client performs file system operations, your gateway maintains an inventory of the objects in the Amazon S3 object cache associated with your file share. Your gateway uses this cached inventory to reduce the latency and frequency of Amazon S3 requests. To refresh the S3 bucket object cache for your file share, you can use the Storage Gateway console or the Storage Gateway API.</p>
<hr />
<p>✨ <strong>The Journey Continues:</strong> As Day 6 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestions-or-any-questions-lets-connect-on-linkedinhttpswwwlinkedincominnirav-raychura-912b3a19-or-twitterxhttpstwittercomnivraychura"><strong>If you have any doubts or suggestions or any questions let's connect on</strong> <a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/"><strong>LinkedIn</strong></a> <strong>or</strong> <a target="_blank" href="https://twitter.com/niv_raychura"><strong>Twitter(X)</strong></a><strong>.</strong></h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 5 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Greetings, fellow tech enthusiasts! Today marks another thrilling chapter in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 5 through Stéphane Maarek's Udemy course.
💡 Course Progress - Day 5: Delving into Op...]]></description><link>https://cloudjourney.in/exciting-day-5-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-5-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[aws lambda]]></category><category><![CDATA[AWS Developer Tools]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[Devops]]></category><category><![CDATA[DevOps Journey]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Mon, 29 Jan 2024 05:00:47 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706455786847/c3231ead-adc5-44fe-bd2b-3b9114c75fb9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Greetings, fellow tech enthusiasts! Today marks another thrilling chapter in my AWS DevOps certification journey, and I'm eager to share the knowledge gained on Day 5 through Stéphane Maarek's Udemy course.</p>
<p>💡 <strong>Course Progress - Day 5: Delving into OpsWorks, Lambda, API Gateway, ECS, ECR, and EKS!</strong></p>
<p>As we navigate through diverse AWS services, let's dive into the wealth of insights acquired and the hands-on experiences gained.</p>
<h3 id="heading-key-learnings">🔍 <strong>Key Learnings</strong></h3>
<h3 id="heading-overview-of-opsworks">🛠 <strong>Overview of OpsWorks</strong></h3>
<p>AWS OpsWorks is a configuration management service that provides managed instances of Chef and Puppet. OpsWorks lets you use Chef and Puppet to automate how servers are configured, deployed, and managed across your Amazon EC2 instances or on-premises compute environments.</p>
<h3 id="heading-opsworks-lifecycle-events">🔄 <strong>OpsWorks Lifecycle Events</strong></h3>
<p>AWS OpsWorks Stacks provides a set of lifecycle events that you can use to customize the deployment and configuration of your instances. Each layer has a set of five lifecycle events, each of which has an associated set of recipes that are specific to the layer. When an event occurs on a layer’s instance, AWS OpsWorks Stacks automatically runs the appropriate set of recipes. Here are the five lifecycle events:</p>
<ol>
<li><p><strong>Setup:</strong> This event occurs after a started instance has finished booting. AWS OpsWorks Stacks runs recipes that set the instance up according to its layer. For example, if the instance is a member of the Rails App Server layer, the Setup recipes install Apache, Ruby Enterprise Edition, Passenger, and Ruby on Rails.</p>
</li>
<li><p><strong>Configure:</strong> This event occurs on all of the stack’s instances when one of the following occurs: an instance enters or leaves the online state, you associate an Elastic IP address with an instance or disassociate one from an instance, or you attach an Elastic Load Balancing load balancer to a layer, or detach one from a layer. AWS OpsWorks Stacks responds to the Configure event by running each layer’s Configure recipes, which update the instances’ configuration to reflect the current set of online instances.</p>
</li>
<li><p><strong>Deploy:</strong> This event occurs when you run a Deploy command, typically to deploy an application to a set of application server instances. The instances run recipes that deploy the application and any related files from its repository to the layer’s instances.</p>
</li>
<li><p><strong>Undeploy:</strong> This event occurs when you run an Undeploy command, typically to remove an application from a set of application server instances. The instances run recipes that remove the application and any related files from its repository from the layer’s instances.</p>
</li>
<li><p><strong>Shutdown:</strong> This event corresponds to the Shutdown lifecycle event, which runs the instance’s Shutdown recipes. These recipes perform tasks such as shutting down services, but they do not stop the instance.</p>
</li>
</ol>
<h3 id="heading-note-according-to-the-aws-opsworks-will-get-discontinued-after-may-26-2024-if-you-have-any-more-questions-regarding-to-the-end-of-life-of-opsworks-you-can-click-herehttpsdocsawsamazoncomopsworkslatestuserguidestacks-eol-faqshtml"><strong>Note: According to the AWS, OpsWorks will get discontinued after May 26, 2024. If you have any more questions regarding to the end of life of OpsWorks you can click</strong> <a target="_blank" href="https://docs.aws.amazon.com/opsworks/latest/userguide/stacks-eol-faqs.html"><strong>here</strong></a><strong>.</strong></h3>
<h3 id="heading-opsworks-cloudwatch-event-integration">📊 <strong>OpsWorks CloudWatch Event Integration</strong></h3>
<p>AWS OpsWorks Stacks supports Amazon CloudWatch Logs to simplify the process of monitoring logs on multiple instances. You enable CloudWatch Logs at the layer level in AWS OpsWorks Stacks. CloudWatch Logs integration works with Chef 11.10 and Chef 12 Linux-based stacks.</p>
<h3 id="heading-cleanup-of-opsworks">🧹 <strong>Cleanup of OpsWorks</strong></h3>
<p>To prevent incurring additional charges to your AWS account, you can delete the AWS resources that were used for this walkthrough. These AWS resources include the AWS OpsWorks Stacks stack and the stack’s components. To delete the stack, you can use the AWS Management Console or the AWS CLI.</p>
<hr />
<h3 id="heading-lambda-function-fundamentals">🌐 <strong>Lambda Function Fundamentals</strong></h3>
<p>AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers. Lambda runs your code only when needed and scales automatically, from a few requests per day to thousands per second. You pay only for the compute time that you consume - there is no charge when your code is not running.</p>
<h3 id="heading-versioning-and-aliasing-in-lambda-functions">🔄 <strong>Versioning and Aliasing in Lambda Functions</strong></h3>
<p>You can create aliases for your Lambda function. A Lambda alias is a pointer to a function version that you can update. The function’s users can access the function version using the alias Amazon Resource Name (ARN). When you deploy a new version, you can update the alias to use the new version, or split traffic between two versions.</p>
<h3 id="heading-working-with-environment-variables-in-lambda-functions">🔐 Working with Environment Variables in Lambda Functions</h3>
<p>You can use environment variables to store secrets and configuration values for your Lambda function. Environment variables are key-value pairs that you can dynamically pass to your function code at runtime. You can use environment variables to store sensitive information such as database passwords or API keys.</p>
<h3 id="heading-lambda-concurrency">📈 <strong>Lambda Concurrency</strong></h3>
<p>AWS Lambda automatically scales your application in response to incoming requests. Concurrency is the number of requests that your function is serving at any given time. AWS Lambda automatically provisions enough capacity to handle the request volume, so that your function can scale without requiring you to manage any infrastructure.</p>
<h3 id="heading-mounting-file-system-in-lambda">📂 Mounting File System in Lambda</h3>
<p>You can mount an Amazon Elastic File System (Amazon EFS) file system to your AWS Lambda function. This enables your function to read and write data to the file system. To mount an Amazon EFS file system to your Lambda function, you can use the <code>amazon-efs-utils</code> package.</p>
<h3 id="heading-cross-account-file-system-mounting">🌐 <strong>Cross-Account File System Mounting</strong></h3>
<p>To mount an Amazon EFS file system from another AWS account, you can use AWS Resource Access Manager (RAM). RAM enables you to share your Amazon EFS file systems across AWS accounts. You can use RAM to create a resource share that grants access to your Amazon EFS file system to another AWS account.</p>
<hr />
<h3 id="heading-introduction-to-api-gateway">🚀 <strong>Introduction to API Gateway</strong></h3>
<p>Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. With API Gateway, you can create RESTful APIs that enable real-time two-way communication applications.</p>
<h3 id="heading-stages-and-deployment-in-api-gateway">📊 <strong>Stages and Deployment in API Gateway</strong></h3>
<p>API Gateway enables you to create multiple stages for your APIs, such as development, test, and production. Each stage is a snapshot of your API that you can manage independently. You can deploy your API to a stage by creating a deployment.</p>
<h3 id="heading-openapi-integration-with-aws-api-gateway">📄 <strong>OpenAPI Integration with AWS API Gateway</strong></h3>
<p>OpenAPI is a specification for building APIs. To learn more about OpenAPI click <a target="_blank" href="https://www.openapis.org/">here</a>. You can use OpenAPI to define your API Gateway APIs. To import an OpenAPI definition file into API Gateway, you can use the <code>AWS::ApiGateway::RestApi</code> resource type in your AWS CloudFormation template 1. You can then use the <code>AWS::ApiGateway::Deployment</code> resource type to deploy the API.</p>
<h3 id="heading-api-gateway-caching">📈 <strong>API Gateway Caching</strong></h3>
<p>API Gateway caching is a technique that involves storing the responses from API calls in a cache and serving them directly from the cache instead of making repeated requests to the backend services. This caching mechanism can greatly reduce the response time and alleviate the load on your backend systems.</p>
<h3 id="heading-canary-deployment-in-api-gateway">🚦 <strong>Canary Deployment in API Gateway</strong></h3>
<p>Canary deployment is a software development strategy in which a new version of an API is deployed for testing purposes, and the base version remains deployed as a production release for normal operations on the same stage. In a canary release deployment, total API traffic is separated at random into a production release and a canary release with a pre-configured ratio. The updated API features are only visible to API traffic through the canary.</p>
<h3 id="heading-api-gateway-monitoring-logging-and-tracing">📊 <strong>API Gateway Monitoring, Logging, and Tracing</strong></h3>
<p>Monitoring is an important part of maintaining the reliability, availability, and performance of API Gateway and your AWS solutions. You should collect monitoring data from all of the parts of your AWS solution so that you can more easily debug a multi-point failure if one occurs. AWS provides several tools for monitoring your API Gateway resources and responding to potential incidents, such as Amazon CloudWatch Logs, Amazon CloudWatch Alarms, Access Logging to Kinesis Data Firehose, AWS CloudTrail, AWS X-Ray, and AWS Config.</p>
<hr />
<h3 id="heading-introduction-to-aws-ecs">🌐 <strong>Introduction to AWS ECS</strong></h3>
<p>Amazon Elastic Container Service (Amazon ECS) is a fully managed container orchestration service that helps you easily deploy, manage, and scale containerized applications. As a fully managed service, Amazon ECS comes with AWS configuration and operational best practices built-in. You can run and scale your container workloads across AWS Regions in the cloud, and on-premises, without the complexity of managing a control plane.</p>
<h3 id="heading-types-of-ecs">🔄 <strong>Types of ECS</strong></h3>
<p>There are two types of Amazon ECS launch types: <code>Amazon ECS on EC2</code> and <code>AWS Fargate</code>. Amazon ECS on EC2 allows you to manage your own EC2 instances to run containers, providing maximum control and flexibility. AWS Fargate, on the other hand, abstracts the underlying infrastructure, making it a serverless option ideal for simplified deployments.</p>
<h3 id="heading-ecs-auto-scaling">📈 <strong>ECS Auto Scaling</strong></h3>
<p>Amazon ECS Auto Scaling is a service that automatically scales your Amazon ECS tasks based on the demand of your applications. You can use Amazon ECS Auto Scaling to automatically adjust the number of tasks in your service based on the metrics and thresholds that you specify.</p>
<p><strong>Note: This is different from EC2 Auto Scaling. This is based on TASKS not EC2 INSTANCE.</strong></p>
<h3 id="heading-logging-in-ecs">📊 <strong>Logging in ECS</strong></h3>
<p>You can use Amazon CloudWatch Logs to monitor, store, and access your log files from Amazon ECS. To enable logging for your Amazon ECS tasks, you can use the <code>awslogs</code> log driver in your task definition. You can then use CloudWatch Logs to view and analyze your log data.</p>
<h3 id="heading-introduction-to-aws-ecr">🌐 <strong>Introduction to AWS ECR</strong></h3>
<p>Amazon Elastic Container Registry (Amazon ECR) is a fully-managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images. Amazon ECR eliminates the need to operate your own container repositories or worry about scaling the underlying infrastructure.</p>
<h3 id="heading-introduction-to-aws-eks">🌐 <strong>Introduction to AWS EKS</strong></h3>
<p>Amazon Elastic Kubernetes Service (Amazon EKS) is a fully managed Kubernetes service that makes it easy to deploy, manage, and scale containerized applications using Kubernetes on AWS. Amazon EKS runs the Kubernetes management infrastructure for you across multiple AWS availability zones to eliminate a single point of failure.</p>
<h3 id="heading-logging-in-eks">📊 <strong>Logging in EKS</strong></h3>
<p>You can use Amazon CloudWatch Logs to monitor, store, and access your log files from Amazon EKS. To enable logging for your Amazon EKS cluster, you can use the <code>awslogs</code> log driver in your Kubernetes pod definition. You can then use CloudWatch Logs to view and analyze your log data.</p>
<hr />
<p>✨ <strong>The Journey Continues:</strong> As Day 5 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
<hr />
<h3 id="heading-if-you-have-any-doubts-or-suggestion-or-any-questions-lets-connect-on-linkedinhttpswwwlinkedincominnirav-raychura-912b3a19-or-twitterxhttpstwittercomnivraychura">If you have any doubts or suggestion or any questions let's connect on <a target="_blank" href="https://www.linkedin.com/in/nirav-raychura-912b3a19/">LinkedIn</a> or <a target="_blank" href="https://twitter.com/niv_raychura">Twitter(X)</a>.</h3>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 4 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Hey there, tech enthusiasts! Day 4 of my AWS DevOps certification journey has been a thrilling exploration of a diverse range of AWS services, adding depth to my understanding of cloud operations. Let's dive into the highlights of what I've learned t...]]></description><link>https://cloudjourney.in/exciting-day-4-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-4-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[Devops]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[AWS SSM]]></category><category><![CDATA[Elastic Beanstalk]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Sun, 28 Jan 2024 05:00:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706339060514/401c200d-2dc9-4b89-8476-57fb1069c64f.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey there, tech enthusiasts! Day 4 of my AWS DevOps certification journey has been a thrilling exploration of a diverse range of AWS services, adding depth to my understanding of cloud operations. Let's dive into the highlights of what I've learned today through Stéphane Maarek's Udemy course.</p>
<p>💻 <strong>Course Progress - Day 4: Navigating AWS Service Catalog, Elastic Beanstalk, SAM, CDK, Step Functions, AppConfig, and SSM!</strong></p>
<p>Continuing our journey, today's focus extended to a variety of AWS services, each playing a crucial role in cloud development and operations.</p>
<h3 id="heading-overview-of-service-catalog">🔍 <strong>Overview of Service Catalog</strong></h3>
<p>AWS Service Catalog enables organizations to create and manage catalogs of IT services that are approved for use on AWS. With Service Catalog, you can centrally manage commonly deployed AWS resources, and make them available for users to deploy through a self-service portal.</p>
<p>AWS Service Catalog took center stage, revealing its significance in streamlining service delivery within organizations. It's a game-changer for managing and provisioning cloud resources efficiently.</p>
<h3 id="heading-elastic-beanstalk">💨 <strong>Elastic Beanstalk</strong></h3>
<p>AWS Elastic Beanstalk is a fully managed service that makes it easy to deploy and run applications in multiple languages, including Java, .NET, PHP, Node.js, Python, Ruby, and Go. Elastic Beanstalk automatically handles the deployment, capacity provisioning, load balancing, and scaling of your application.</p>
<p>Elastic Beanstalk, a powerhouse for simplifying application deployment, showcased its prowess. From creating highly available environments to exploring different deployment modes, it's a go-to solution for developers.</p>
<h3 id="heading-how-to-make-a-highly-available-environment-in-elastic-beanstalk">How to make a Highly available environment in Elastic Beanstalk</h3>
<p>To make a highly available environment in Elastic Beanstalk, you can use Elastic Beanstalk’s High Availability configuration option. This option automatically provisions resources across multiple Availability Zones to ensure that your application is highly available and fault tolerant.</p>
<h3 id="heading-what-are-the-elastic-beanstalk-deployment-modes">What are the Elastic Beanstalk deployment modes?</h3>
<p>Elastic Beanstalk supports two deployment modes: web server environment and worker environment. In a web server environment, Elastic Beanstalk deploys your application to a web server environment that can serve HTTP requests. In a worker environment, Elastic Beanstalk deploys your application to a worker environment that can process background tasks.</p>
<h3 id="heading-serverless-application-model-sam">📦 <strong>Serverless Application Model (SAM)</strong></h3>
<p>AWS Serverless Application Model (SAM) is an open-source framework for building serverless applications. SAM provides a simplified way of defining the Amazon API Gateway APIs, AWS Lambda functions, and Amazon DynamoDB tables needed by your serverless application.</p>
<p>The Serverless Application Model (SAM) caught my attention, offering a fantastic framework for building serverless applications. Integrating SAM with CodeDeploy, the deployment process became even more seamless. You can use AWS CodeDeploy with SAM to deploy your serverless applications. CodeDeploy automates the deployment of your application to Amazon S3, AWS Lambda, and Amazon EC2 instances.</p>
<h3 id="heading-cloud-development-kit-cdk">🌐 <strong>Cloud Development Kit (CDK)</strong></h3>
<p>AWS Cloud Development Kit (CDK) is an open-source software development framework to define cloud infrastructure in code and provision it through AWS CloudFormation. CDK provides a high-level object-oriented abstraction on top of AWS CloudFormation</p>
<p>AWS CDK, a tool for defining cloud infrastructure as code using familiar programming languages, provided a fresh perspective. This modern approach to infrastructure management empowers developers with flexibility.</p>
<h3 id="heading-step-functions">🔄 <strong>Step Functions</strong></h3>
<p>AWS Step Functions is a fully managed service that makes it easy to coordinate the components of distributed applications and microservices using visual workflows. You can use Step Functions to build applications from individual building blocks, each of which performs a discrete function.</p>
<p>AWS Step Functions stepped into the limelight, enabling the creation of serverless workflows for coordinating application components. Invoking Lambda functions through Step Functions added a layer of efficiency to the workflow.</p>
<h3 id="heading-how-to-invoke-lambda-using-step-functions">How to invoke lambda using step functions</h3>
<p>To invoke a Lambda function using Step Functions, you can use the <code>AWS::Lambda::Function</code> resource type in your AWS CloudFormation template. You can then use the <code>AWS::StepFunctions::Task</code> resource type to define a task that invokes the Lambda function.</p>
<h3 id="heading-appconfig">🚀 <strong>AppConfig</strong></h3>
<p>AWS AppConfig is a service that enables you to quickly deploy application configurations across your applications. You can use AppConfig to manage configurations for any application running on any environment.</p>
<p>AppConfig took the stage, offering a comprehensive solution for managing application configurations. The insights gained will undoubtedly streamline configuration management in future projects.</p>
<h3 id="heading-ssm">💡 <strong>SSM</strong></h3>
<p>AWS Systems Manager (SSM) is a management service that enables you to manage your EC2 instances, on-premises servers, and virtual machines (VMs) through a single interface. You can use SSM to automate common administrative tasks, such as patch management, configuration management, and instance inventory.</p>
<h3 id="heading-how-to-start-an-ec2-instance-with-an-ssm-agent">How to start an EC2 instance with an SSM agent?</h3>
<p>To start an EC2 instance with an SSM agent, you can use the <code>AWS::EC2::Instance</code> resource type in your AWS CloudFormation template. You can then use the <code>AWS::SSM::Association</code> resource type to associate the instance with an SSM document that installs the SSM agent.</p>
<p>Diving deep into AWS Systems Manager (SSM), I explored starting EC2 instances with SSM agents, understanding the importance of tags, leveraging SSM documents, and run commands for efficient automation.</p>
<h3 id="heading-tags-and-ssm-resources">Tags and SSM Resources</h3>
<p>You can use tags to organize and categorize your SSM resources. You can add tags to your SSM resources when you create them, or you can add tags to existing resources.</p>
<h3 id="heading-ssm-documents-and-ssm-run-commands">SSM Documents and SSM Run commands</h3>
<p>SSM documents are scripts that you can use to automate common administrative tasks on your instances. You can use SSM Run Command to execute SSM documents on your instances.</p>
<h3 id="heading-automation">🤖 <strong>Automation</strong></h3>
<p>SSM documents are scripts that you can use to automate common administrative tasks on your instances. You can use SSM Run Command to execute SSM documents on your instances.</p>
<h3 id="heading-how-can-we-automate-things-with-ssm">How can we Automate things with SSM?</h3>
<p>AWS Systems Manager (SSM) provides a variety of capabilities to automate common administrative tasks on your instances and resources. Here are some ways you can automate things with SSM:</p>
<ul>
<li><p><strong>Automation:</strong> Use Automation to simplify creating Amazon Machine Images (AMIs) from the AWS Marketplace or custom AMIs, using public Systems Manager documents (SSM documents) or by authoring your own workflows.</p>
</li>
<li><p><strong>Compliance:</strong> Use Compliance to monitor the compliance of your instances and resources against predefined policies and to generate compliance reports.</p>
</li>
<li><p><strong>Parameter Store:</strong> Use Parameter Store to centrally manage global configuration settings.</p>
</li>
<li><p><strong>Patch Manager:</strong> Use Patch Manager to roll out patches at scale and increase fleet compliance visibility across your nodes.</p>
</li>
<li><p><strong>Session Manager:</strong> Use Session Manager to troubleshoot issues on your instances, run commands on your instances, and perform administrative tasks on your instances.</p>
</li>
<li><p><strong>Hybrid Environments:</strong> Use SSM Hybrid Environments to manage your on-premises servers and VMs.</p>
</li>
<li><p><strong>IoT Greengrass:</strong> Use SSM with IoT Greengrass to manage your IoT Greengrass devices and to automate common administrative tasks.</p>
</li>
<li><p><strong>Default Host Management Configuration:</strong> Use Default Host Management Configuration to automatically track Amazon EC2 instances using Fleet Manager, use Run Command on remote instances, and securely connect to the instances using Session Manager.</p>
</li>
</ul>
<p>The day unfolded with a deep dive into SSM automation, exploring its varied use cases. From dynamic host management configuration to SSM Compliance, it's clear that automation is at the heart of AWS operational excellence.</p>
<p>✨ <strong>The Journey Continues:</strong> As Day 4 wraps up, I'm excited about the depth of understanding gained and the practical skills acquired. Stay tuned for more updates as my AWS DevOps journey continues to unfold!</p>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 3 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Welcome back to the next chapter of my AWS DevOps certification adventure! Day 3 was a deep dive into the powerful world of AWS CloudFormation, and I'm thrilled to share the wealth of knowledge acquired.
📚 Course Progress - Day 3: AWS CloudFormation...]]></description><link>https://cloudjourney.in/exciting-day-3-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-3-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[AWS CloudFormation]]></category><category><![CDATA[aws devops]]></category><category><![CDATA[AWS DevOps Course]]></category><category><![CDATA[Devops articles]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[Devops]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Sat, 27 Jan 2024 05:00:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706274473831/7fbc4a51-4ce9-4913-bf37-4b694a7e590d.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome back to the next chapter of my AWS DevOps certification adventure! Day 3 was a deep dive into the powerful world of AWS CloudFormation, and I'm thrilled to share the wealth of knowledge acquired.</p>
<p>📚 <strong>Course Progress - Day 3: AWS CloudFormation Deep Dive! 💻🌐</strong></p>
<p>Continuing my AWS DevOps certification journey with the invaluable guidance of Stéphane Maarek's Udemy course, Day 3 marked an in-depth exploration into the powerful realm of AWS CloudFormation.</p>
<p>💡 <strong>AWS CloudFormation Overview:</strong></p>
<ul>
<li>Unveiled the fundamental concepts behind AWS CloudFormation, understanding its role in orchestrating and managing AWS resources.</li>
</ul>
<p>AWS CloudFormation is a service that helps you model and set up your Amazon Web Services resources so that you can spend less time managing those resources and more time focusing on your applications that run in AWS. You create a template that describes all the AWS resources that you want, and AWS CloudFormation takes care of provisioning and configuring those resources for you. You don’t need to individually create and configure AWS resources and figure out what’s dependent on what; AWS CloudFormation handles all of that for you.</p>
<p>🛠️ <strong>Creating CloudFormation Stack:</strong></p>
<ul>
<li>Explored the step-by-step process of creating a CloudFormation stack, laying the foundation for automated resource provisioning.</li>
</ul>
<p>To create a stack, you run the <code>aws cloudformation create-stack</code> command. You must provide the stack name, the location of a valid template, and any input parameters. Parameters are separated with a space and the key names are case sensitive. If you mistype a parameter key name when you run <code>aws cloudformation create-stack</code>, AWS CloudFormation doesn’t create the stack and reports that the template doesn’t contain that parameter. You can use your own bucket and manage its permissions by manually uploading templates to either Amazon S3 or AWS Systems Manager. Then whenever you create or update a stack, specify the Amazon S3 or AWS Systems Manager of a template file. By default, <code>aws cloudformation describe-stacks</code> returns parameter values. To prevent sensitive parameter values such as passwords from being returned, include a NoEcho property set to TRUE in your AWS CloudFormation template.</p>
<p>🚫 <strong>Deleting and Updating Stacks:</strong></p>
<ul>
<li>Learned the intricacies of deleting and updating CloudFormation stacks, ensuring a smooth management process.</li>
</ul>
<p>To delete a stack, you run the <code>aws cloudformation delete-stack</code> command. You must provide the stack name. To update a stack, you run the <code>aws cloudformation update-stack</code> command. You must provide the stack name, the location of a valid template, and any input parameters. Parameters are separated with a space and the key names are case sensitive.</p>
<p><strong>Note: You can also Create, Update &amp; Delete Stacks via AWS Management Console.</strong></p>
<p>📝 <strong>YAML Crash Course:</strong></p>
<ul>
<li>Provided a YAML crash course with sample files, empowering readers to grasp the essentials of writing YAML for CloudFormation templates.</li>
</ul>
<p>YAML is a human-readable data serialization format. It is often used for configuration files and data exchange between languages that are not natively compatible. Here is a sample YAML file that you can use to learn how to write YAML:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">AWSTemplateFormatVersion:</span> <span class="hljs-string">'2010-09-09'</span>
<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">MyBucket:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">'AWS::S3::Bucket'</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">BucketName:</span> <span class="hljs-string">my-bucket-name</span>
      <span class="hljs-attr">AccessControl:</span> <span class="hljs-string">PublicRead</span>
</code></pre>
<p>🧱 <strong>CloudFormation Resources:</strong></p>
<ul>
<li>Explored the concept of resources in CloudFormation, understanding how they represent the building blocks of your infrastructure.</li>
</ul>
<p>In AWS CloudFormation, a resource is an AWS entity that you can create, modify, or delete as a single unit in a CloudFormation stack. AWS CloudFormation provides a number of built-in resource types, such as Amazon EC2 instances, Amazon RDS database instances, and Amazon S3 buckets. You can also create custom resources.</p>
<p><strong>Here is an example YAML file for learning CloudFormation Resources.</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">S3BucketName:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">"S3 bucket to create"</span>
    <span class="hljs-attr">AllowedPattern:</span> <span class="hljs-string">"[a-zA-Z][a-zA-Z0-9_-]*"</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">SampleS3Bucket:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::S3::Bucket</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">BucketName:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">S3BucketName</span>
    <span class="hljs-attr">DeletionPolicy:</span> <span class="hljs-string">Delete</span>

  <span class="hljs-attr">S3CustomResource:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">Custom::S3CustomResource</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">ServiceToken:</span> <span class="hljs-type">!GetAtt</span> <span class="hljs-string">AWSLambdaFunction.Arn</span>
      <span class="hljs-attr">bucket_name:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">SampleS3Bucket</span>    <span class="hljs-comment">## Additional parameter here</span>

  <span class="hljs-attr">AWSLambdaFunction:</span>
     <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::Lambda::Function</span>
     <span class="hljs-attr">Properties:</span>
       <span class="hljs-attr">Description:</span> <span class="hljs-string">"Empty an S3 bucket!"</span>
       <span class="hljs-attr">FunctionName:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">'${AWS::StackName}-${AWS::Region}-lambda'</span>
       <span class="hljs-attr">Handler:</span> <span class="hljs-string">index.handler</span>
       <span class="hljs-attr">Role:</span> <span class="hljs-type">!GetAtt</span> <span class="hljs-string">AWSLambdaExecutionRole.Arn</span>
       <span class="hljs-attr">Timeout:</span> <span class="hljs-number">360</span>
       <span class="hljs-attr">Runtime:</span> <span class="hljs-string">python3.8</span>
       <span class="hljs-attr">Code:</span>
         <span class="hljs-attr">ZipFile:</span> <span class="hljs-string">|
          import boto3
          import cfnresponse
          ### cfnresponse module help in sending responses to CloudFormation
          ### instead of writing your own code
</span>
          <span class="hljs-string">def</span> <span class="hljs-string">handler(event,</span> <span class="hljs-string">context):</span>
              <span class="hljs-comment"># Get request type</span>
              <span class="hljs-string">the_event</span> <span class="hljs-string">=</span> <span class="hljs-string">event['RequestType']</span>        
              <span class="hljs-string">print("The</span> <span class="hljs-attr">event is:</span> <span class="hljs-string">", str(the_event))

              response_data = {}
              s3 = boto3.client('s3')

              # Retrieve parameters (bucket name)
              bucket_name = event['ResourceProperties']['bucket_name']

              try:
                  if the_event == 'Delete':
                      print("</span><span class="hljs-string">Deleting</span> <span class="hljs-string">S3</span> <span class="hljs-string">content...")</span>
                      <span class="hljs-string">b_operator</span> <span class="hljs-string">=</span> <span class="hljs-string">boto3.resource('s3')</span>
                      <span class="hljs-string">b_operator.Bucket(str(bucket_name)).objects.all().delete()</span>

                  <span class="hljs-comment"># Everything OK... send the signal back</span>
                  <span class="hljs-string">print("Execution</span> <span class="hljs-string">succesfull!")</span>
                  <span class="hljs-string">cfnresponse.send(event,</span> <span class="hljs-string">context,</span> <span class="hljs-string">cfnresponse.SUCCESS,</span> <span class="hljs-string">response_data)</span>
              <span class="hljs-attr">except Exception as e:</span>
                  <span class="hljs-string">print("Execution</span> <span class="hljs-string">failed...")</span>
                  <span class="hljs-string">print(str(e))</span>
                  <span class="hljs-string">response_data['Data']</span> <span class="hljs-string">=</span> <span class="hljs-string">str(e)</span>
                  <span class="hljs-string">cfnresponse.send(event,</span> <span class="hljs-string">context,</span> <span class="hljs-string">cfnresponse.FAILED,</span> <span class="hljs-string">response_data)</span>

  <span class="hljs-attr">AWSLambdaExecutionRole:</span>
     <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::Role</span>
     <span class="hljs-attr">Properties:</span>
       <span class="hljs-attr">AssumeRolePolicyDocument:</span>
         <span class="hljs-attr">Statement:</span>
         <span class="hljs-bullet">-</span> <span class="hljs-attr">Action:</span>
           <span class="hljs-bullet">-</span> <span class="hljs-string">sts:AssumeRole</span>
           <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
           <span class="hljs-attr">Principal:</span>
             <span class="hljs-attr">Service:</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">lambda.amazonaws.com</span>
         <span class="hljs-attr">Version:</span> <span class="hljs-string">'2012-10-17'</span>
       <span class="hljs-attr">Path:</span> <span class="hljs-string">"/"</span>
       <span class="hljs-attr">Policies:</span>
       <span class="hljs-bullet">-</span> <span class="hljs-attr">PolicyDocument:</span>
           <span class="hljs-attr">Statement:</span>
           <span class="hljs-bullet">-</span> <span class="hljs-attr">Action:</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">logs:CreateLogGroup</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">logs:CreateLogStream</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">logs:PutLogEvents</span>
             <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
             <span class="hljs-attr">Resource:</span> <span class="hljs-string">arn:aws:logs:*:*:*</span>
           <span class="hljs-attr">Version:</span> <span class="hljs-string">'2012-10-17'</span>
         <span class="hljs-attr">PolicyName:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">${AWS::StackName}-${AWS::Region}-AWSLambda-CW</span>
       <span class="hljs-bullet">-</span> <span class="hljs-attr">PolicyDocument:</span>
           <span class="hljs-attr">Statement:</span>
           <span class="hljs-bullet">-</span> <span class="hljs-attr">Action:</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">s3:PutObject</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">s3:DeleteObject</span>
             <span class="hljs-bullet">-</span> <span class="hljs-string">s3:List*</span>
             <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
             <span class="hljs-attr">Resource:</span>
             <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">arn:aws:s3:::${SampleS3Bucket}</span>
             <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">arn:aws:s3:::${SampleS3Bucket}/*</span>
           <span class="hljs-attr">Version:</span> <span class="hljs-string">'2012-10-17'</span>
         <span class="hljs-attr">PolicyName:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">${AWS::StackName}-${AWS::Region}-AWSLambda-S3</span>
       <span class="hljs-attr">RoleName:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">${AWS::StackName}-${AWS::Region}-AWSLambdaExecutionRole</span>
</code></pre>
<p>🔄 <strong>CloudFormation Parameters:</strong></p>
<ul>
<li>Dived into CloudFormation parameters, allowing for dynamic input and customization during stack creation.</li>
</ul>
<p>AWS CloudFormation parameters enable you to pass values into your AWS CloudFormation stack at runtime. You can use parameters to customize your stack and make it more reusable.</p>
<p>🗺️ <strong>CloudFormation Mappings:</strong></p>
<ul>
<li>Unpacked CloudFormation mappings, facilitating the association of key-value pairs based on input parameters.</li>
</ul>
<p>AWS CloudFormation mappings enable you to create a lookup table of keys and associated values that you can use to specify conditional parameter values, resource property values, and output values.</p>
<p>💼 <strong>CloudFormation Outputs:</strong></p>
<ul>
<li>Explored CloudFormation outputs, understanding their significance in exposing information from the stack.</li>
</ul>
<p>AWS CloudFormation outputs enable you to export information about the resources in your stack to other stacks or to view them in the AWS Management Console.</p>
<p>🔍 <strong>CloudFormation Conditions:</strong></p>
<ul>
<li>Delved into CloudFormation conditions, enabling the creation of conditional resources based on specific criteria.</li>
</ul>
<p>AWS CloudFormation conditions enable you to control whether certain resources are created or whether certain resource properties are assigned a value during stack creation or update.</p>
<p>🔄 <strong>CloudFormation Intrinsic Functions:</strong></p>
<ul>
<li>Explored CloudFormation intrinsic functions, offering dynamic and flexible options within templates.</li>
</ul>
<p>AWS CloudFormation intrinsic functions enable you to assign values to properties that are not available until runtime, such as the Amazon EC2 instance ID or the Amazon S3 bucket name.</p>
<p>↩️ <strong>CloudFormation Rollback:</strong></p>
<ul>
<li>Understood CloudFormation rollback mechanisms, ensuring reliable and controlled deployments.</li>
</ul>
<p>AWS CloudFormation rollback enables you to automatically roll back to a previous version of your stack if the update fails.</p>
<p>🔄 <strong>CloudFormation Drift:</strong></p>
<ul>
<li>Examined CloudFormation drift detection, allowing for the identification of resource configuration changes.</li>
</ul>
<p>AWS CloudFormation drift detection enables you to detect whether the actual configuration of a stack differs, or has drifted, from its expected configuration.</p>
<p>📜 <strong>CloudFormation Stack Policies:</strong></p>
<ul>
<li>Unveiled CloudFormation stack policies, providing granular control over updates to stack resources.</li>
</ul>
<p>AWS CloudFormation stack policies enable you to prevent updates to specific resources in a stack.</p>
<p>🔄 <strong>Nested Stacks:</strong></p>
<ul>
<li>Explored the concept of nested stacks, facilitating the modularization of complex infrastructure.</li>
</ul>
<p>AWS CloudFormation nested stacks enable you to create stacks within stacks</p>
<p>🔄 <strong>CloudFormation Change Sets:</strong></p>
<ul>
<li>Dived into CloudFormation change sets, enabling preview and execution of proposed changes before implementation.</li>
</ul>
<p>AWS CloudFormation change sets enable you to preview the changes to your stack before you apply them.</p>
<p>🚫 <strong>Deletion Policy:</strong></p>
<ul>
<li>Learned about CloudFormation deletion policies, managing resources during stack deletion.</li>
</ul>
<p>AWS CloudFormation deletion policy enables you to specify how AWS CloudFormation handles the deletion of resources.</p>
<p>🛡️ <strong>Termination Protection:</strong></p>
<ul>
<li>Explored CloudFormation termination protection, preventing accidental deletion of critical stacks.</li>
</ul>
<p>AWS CloudFormation termination protection enables you to prevent a stack from being accidentally deleted.</p>
<p>🖥️ <strong>EC2 UserData in CloudFormation:</strong></p>
<ul>
<li>Delved into EC2 UserData in CloudFormation, allowing for the customization of instances during launch.</li>
</ul>
<p>AWS CloudFormation EC2 user data enables you to run scripts or commands on an Amazon EC2 instance during launch.</p>
<p>📜 <strong>Overview of CloudFormation CNF-init:</strong></p>
<ul>
<li>Explored CloudFormation CNF-init, understanding its role in initializing and configuring instances.</li>
</ul>
<p>You can use the cfn-init command to read template metadata from the AWS::CloudFormation::Init key and act accordingly to fetch and parse metadata from CloudFormation, install packages, write files to disk, enable/disable, and start/stop services. You can also use cfn-init to update an existing file, create a backup copy of the original file in the same directory with a .bak extension, and produce two files: the original file’s contents and the updated contents.</p>
<p>To check if all the stages of user data are completed or not, you can use the cfn-signal command. This command sends a signal to AWS CloudFormation that indicates whether the instance has been successfully configured. If the instance is successfully configured, the cfn-signal command returns a success signal. If the instance is not successfully configured, the cfn-signal command returns a failure signal.</p>
<p><strong>Here are the four stages of AWS CloudFormation CNF-init:</strong></p>
<ul>
<li><p><code>cfn-init</code><strong>:</strong> This command reads template metadata from the AWS::CloudFormation::Init key and acts accordingly to fetch and parse metadata from CloudFormation, install packages, write files to disk, enable/disable, and start/stop services. You can use CNF-init to run scripts or commands on an Amazon EC2 instance during launch.</p>
</li>
<li><p><code>cfn-signal</code><strong>:</strong> This command sends a signal to AWS CloudFormation that indicates whether the instance has been successfully configured . If the instance is successfully configured, the cfn-signal command returns a success signal. If the instance is not successfully configured, the cfn-signal command returns a failure signal.</p>
</li>
<li><p><code>cfn-hup</code><strong>:</strong> This command is used to detect changes to the metadata on an Amazon EC2 instance and to trigger actions based on those changes. You can use cfn-hup to monitor changes to the metadata and to perform actions such as updating configuration files or restarting services.</p>
</li>
<li><p><code>cfn-get-metadata</code><strong>:</strong> A wrapper script making it easy to retrieve either all metadata defined for a resource or path to a specific key or subtree of resource metadata.</p>
</li>
</ul>
<p><strong>Here is an example YAML file for learning how it works.</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">AWSTemplateFormatVersion:</span> <span class="hljs-string">'2010-09-09'</span>
<span class="hljs-attr">Description:</span> <span class="hljs-string">AWS</span> <span class="hljs-string">CloudFormation</span> <span class="hljs-string">Sample</span> <span class="hljs-string">Template</span> <span class="hljs-string">for</span> <span class="hljs-string">CFN</span> <span class="hljs-string">Init</span>
<span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">KeyName:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Name</span> <span class="hljs-string">of</span> <span class="hljs-string">an</span> <span class="hljs-string">existing</span> <span class="hljs-string">EC2</span> <span class="hljs-string">KeyPair</span> <span class="hljs-string">to</span> <span class="hljs-string">enable</span> <span class="hljs-string">SSH</span> <span class="hljs-string">access</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">instances</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::KeyPair::KeyName</span>
    <span class="hljs-attr">ConstraintDescription:</span> <span class="hljs-string">must</span> <span class="hljs-string">be</span> <span class="hljs-string">the</span> <span class="hljs-string">name</span> <span class="hljs-string">of</span> <span class="hljs-string">an</span> <span class="hljs-string">existing</span> <span class="hljs-string">EC2</span> <span class="hljs-string">KeyPair.</span>

  <span class="hljs-attr">SSHLocation:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">The</span> <span class="hljs-string">IP</span> <span class="hljs-string">address</span> <span class="hljs-string">range</span> <span class="hljs-string">that</span> <span class="hljs-string">can</span> <span class="hljs-string">be</span> <span class="hljs-string">used</span> <span class="hljs-string">to</span> <span class="hljs-string">SSH</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">EC2</span> <span class="hljs-string">instances</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">MinLength:</span> <span class="hljs-string">'9'</span>
    <span class="hljs-attr">MaxLength:</span> <span class="hljs-string">'18'</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span><span class="hljs-string">/0</span>
    <span class="hljs-attr">AllowedPattern:</span> <span class="hljs-string">"(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"</span>
    <span class="hljs-attr">ConstraintDescription:</span> <span class="hljs-string">must</span> <span class="hljs-string">be</span> <span class="hljs-string">a</span> <span class="hljs-string">valid</span> <span class="hljs-string">IP</span> <span class="hljs-string">CIDR</span> <span class="hljs-string">range</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">form</span> <span class="hljs-string">x.x.x.x/x.</span>

  <span class="hljs-attr">MyS3BucketName:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Name</span> <span class="hljs-string">of</span> <span class="hljs-string">an</span> <span class="hljs-string">existing</span> <span class="hljs-string">bucket</span> <span class="hljs-string">to</span> <span class="hljs-string">download</span> <span class="hljs-string">files</span> <span class="hljs-string">from</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>

  <span class="hljs-attr">ImageId:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SSM::Parameter::Value&lt;AWS::EC2::Image::Id&gt;</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">WebServerSecurityGroup:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::SecurityGroup</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">GroupDescription:</span> <span class="hljs-string">Enable</span> <span class="hljs-string">HTTP</span> <span class="hljs-string">access</span> <span class="hljs-string">via</span> <span class="hljs-string">port</span> <span class="hljs-number">80</span> <span class="hljs-string">and</span> <span class="hljs-string">SSH</span> <span class="hljs-string">access</span> <span class="hljs-string">via</span> <span class="hljs-string">port</span> <span class="hljs-number">22</span>
      <span class="hljs-attr">SecurityGroupIngress:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">IpProtocol:</span> <span class="hljs-string">tcp</span>
        <span class="hljs-attr">FromPort:</span> <span class="hljs-number">80</span>
        <span class="hljs-attr">ToPort:</span> <span class="hljs-number">80</span>
        <span class="hljs-attr">CidrIp:</span> <span class="hljs-number">0.0</span><span class="hljs-number">.0</span><span class="hljs-number">.0</span><span class="hljs-string">/0</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">IpProtocol:</span> <span class="hljs-string">tcp</span>
        <span class="hljs-attr">FromPort:</span> <span class="hljs-number">22</span>
        <span class="hljs-attr">ToPort:</span> <span class="hljs-number">22</span>
        <span class="hljs-attr">CidrIp:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">SSHLocation</span>

  <span class="hljs-attr">WebServerHost:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::Instance</span>
    <span class="hljs-attr">Metadata:</span>
      <span class="hljs-attr">Comment:</span> <span class="hljs-string">Install</span> <span class="hljs-string">a</span> <span class="hljs-string">simple</span> <span class="hljs-string">PHP</span> <span class="hljs-string">application</span>
      <span class="hljs-attr">AWS::CloudFormation::Init:</span>
        <span class="hljs-attr">config:</span>
          <span class="hljs-attr">packages:</span>
            <span class="hljs-attr">yum:</span>
              <span class="hljs-attr">httpd:</span> []
              <span class="hljs-attr">php:</span> []
          <span class="hljs-attr">groups:</span>
            <span class="hljs-attr">apache:</span> {}
          <span class="hljs-attr">users:</span>
            <span class="hljs-attr">"apache":</span>
              <span class="hljs-attr">groups:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">"apache"</span>
          <span class="hljs-attr">sources:</span>
            <span class="hljs-string">"/home/ec2-user/aws-cli"</span><span class="hljs-string">:</span> <span class="hljs-string">"https://github.com/aws/aws-cli/tarball/master"</span>
          <span class="hljs-attr">files:</span>
            <span class="hljs-string">"/tmp/cwlogs/apacheaccess.conf"</span><span class="hljs-string">:</span>
              <span class="hljs-attr">content:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">|
                [general]
                state_file= /var/awslogs/agent-state
                [/var/log/httpd/access_log]
                file = /var/log/httpd/access_log
                log_group_name = ${AWS::StackName}
                log_stream_name = {instance_id}/apache.log
                datetime_format = %d/%b/%Y:%H:%M:%S
</span>              <span class="hljs-attr">mode:</span> <span class="hljs-string">'000400'</span>
              <span class="hljs-attr">owner:</span> <span class="hljs-string">apache</span>
              <span class="hljs-attr">group:</span> <span class="hljs-string">apache</span>
            <span class="hljs-string">"/var/www/html/index.php"</span><span class="hljs-string">:</span>
              <span class="hljs-attr">content:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">|
                &lt;?php
                echo '&lt;h1&gt;AWS CloudFormation sample PHP application for ${AWS::StackName}&lt;/h1&gt;';
                ?&gt;
</span>              <span class="hljs-attr">mode:</span> <span class="hljs-string">'000644'</span>
              <span class="hljs-attr">owner:</span> <span class="hljs-string">apache</span>
              <span class="hljs-attr">group:</span> <span class="hljs-string">apache</span>
            <span class="hljs-string">"/etc/cfn/cfn-hup.conf"</span><span class="hljs-string">:</span>
              <span class="hljs-attr">content:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">|
                [main]
                stack=${AWS::StackId}
                region=${AWS::Region}
</span>              <span class="hljs-attr">mode:</span> <span class="hljs-string">"000400"</span>
              <span class="hljs-attr">owner:</span> <span class="hljs-string">"root"</span>
              <span class="hljs-attr">group:</span> <span class="hljs-string">"root"</span>
            <span class="hljs-string">"/etc/cfn/hooks.d/cfn-auto-reloader.conf"</span><span class="hljs-string">:</span>
              <span class="hljs-attr">content:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">|
                [cfn-auto-reloader-hook]
                triggers=post.update
                path=Resources.WebServerHost.Metadata.AWS::CloudFormation::Init
                action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerHost --region ${AWS::Region}
</span>              <span class="hljs-attr">mode:</span> <span class="hljs-string">"000400"</span>
              <span class="hljs-attr">owner:</span> <span class="hljs-string">"root"</span>
              <span class="hljs-attr">group:</span> <span class="hljs-string">"root"</span>
            <span class="hljs-comment"># Fetch a webpage from a private S3 bucket</span>
            <span class="hljs-string">"/var/www/html/webpage.html"</span><span class="hljs-string">:</span>
              <span class="hljs-attr">source:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">"https://${MyS3BucketName}.s3.${AWS::Region}.amazonaws.com/webpage.html"</span>
              <span class="hljs-attr">mode:</span> <span class="hljs-string">'000644'</span>
              <span class="hljs-attr">owner:</span> <span class="hljs-string">apache</span>
              <span class="hljs-attr">group:</span> <span class="hljs-string">apache</span>
              <span class="hljs-attr">authentication:</span> <span class="hljs-string">S3AccessCreds</span>
          <span class="hljs-attr">commands:</span>
            <span class="hljs-attr">test:</span>
              <span class="hljs-attr">command:</span> <span class="hljs-string">"echo \"$MAGIC\" &gt; test.txt"</span>
              <span class="hljs-attr">env:</span>
                <span class="hljs-attr">MAGIC:</span> <span class="hljs-string">"I come from the environment!"</span>
              <span class="hljs-attr">cwd:</span> <span class="hljs-string">"~"</span>
          <span class="hljs-attr">services:</span>
            <span class="hljs-attr">sysvinit:</span>
              <span class="hljs-attr">httpd:</span>
                <span class="hljs-attr">enabled:</span> <span class="hljs-string">'true'</span>
                <span class="hljs-attr">ensureRunning:</span> <span class="hljs-string">'true'</span>
              <span class="hljs-attr">postfix:</span>
                <span class="hljs-attr">enabled:</span> <span class="hljs-string">'false'</span>
                <span class="hljs-attr">ensureRunning:</span> <span class="hljs-string">'false'</span>
              <span class="hljs-attr">cfn-hup:</span>
                <span class="hljs-attr">enable:</span> <span class="hljs-string">'true'</span>
                <span class="hljs-attr">ensureRunning:</span> <span class="hljs-string">'true'</span>
                <span class="hljs-attr">files:</span>
                  <span class="hljs-bullet">-</span> <span class="hljs-string">"/etc/cfn/cfn-hup.conf"</span>
                  <span class="hljs-bullet">-</span> <span class="hljs-string">"/etc/cfn/hooks.d/cfn-auto-reloader.conf"</span>
      <span class="hljs-attr">AWS::CloudFormation::Authentication:</span>
        <span class="hljs-comment"># Define S3 access credentials</span>
        <span class="hljs-attr">S3AccessCreds:</span>
          <span class="hljs-attr">type:</span> <span class="hljs-string">S3</span>
          <span class="hljs-attr">buckets:</span>
            <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">${MyS3BucketName}</span>
          <span class="hljs-attr">roleName:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">InstanceRole</span>
    <span class="hljs-attr">CreationPolicy:</span>
      <span class="hljs-attr">ResourceSignal:</span>
        <span class="hljs-attr">Timeout:</span> <span class="hljs-string">PT15M</span>

    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">ImageId:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ImageId</span>
      <span class="hljs-attr">KeyName:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">KeyName</span>
      <span class="hljs-attr">InstanceType:</span> <span class="hljs-string">t2.micro</span>
      <span class="hljs-attr">IamInstanceProfile:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">InstanceProfile</span> <span class="hljs-comment"># Reference Instance Profile</span>
      <span class="hljs-attr">SecurityGroups:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">WebServerSecurityGroup</span>
      <span class="hljs-attr">UserData:</span>
        <span class="hljs-attr">Fn::Base64:</span>
          <span class="hljs-type">!Sub</span> <span class="hljs-string">|
            #!/bin/bash -xe
</span>
            <span class="hljs-comment"># Get the latest CloudFormation helper scripts</span>
            <span class="hljs-string">yum</span> <span class="hljs-string">install</span> <span class="hljs-string">-y</span> <span class="hljs-string">aws-cfn-bootstrap</span>

            <span class="hljs-comment"># Start cfn-init</span>
            <span class="hljs-string">/opt/aws/bin/cfn-init</span> <span class="hljs-string">-v</span> <span class="hljs-string">--stack</span> <span class="hljs-string">${AWS::StackName}</span> <span class="hljs-string">--resource</span> <span class="hljs-string">WebServerHost</span> <span class="hljs-string">--region</span> <span class="hljs-string">${AWS::Region}</span>

            <span class="hljs-comment"># cfn-init completed so signal success or not</span>
            <span class="hljs-string">/opt/aws/bin/cfn-signal</span> <span class="hljs-string">-e</span> <span class="hljs-string">$?</span> <span class="hljs-string">--stack</span> <span class="hljs-string">${AWS::StackName}</span> <span class="hljs-string">--resource</span> <span class="hljs-string">WebServerHost</span> <span class="hljs-string">--region</span> <span class="hljs-string">${AWS::Region}</span>


  <span class="hljs-attr">InstanceRole:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::Role</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">AssumeRolePolicyDocument:</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Action:</span> <span class="hljs-string">'sts:AssumeRole'</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span> <span class="hljs-string">ec2.amazonaws.com</span>
            <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Sid:</span> <span class="hljs-string">''</span>
      <span class="hljs-attr">Policies:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">PolicyName:</span> <span class="hljs-string">AuthenticatedS3GetObjects</span>
          <span class="hljs-attr">PolicyDocument:</span>
            <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
            <span class="hljs-attr">Statement:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-attr">Action:</span>
                  <span class="hljs-bullet">-</span> <span class="hljs-string">'s3:GetObject'</span>
                <span class="hljs-attr">Resource:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">'arn:aws:s3:::${MyS3BucketName}/*'</span>
                <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>

  <span class="hljs-attr">InstanceProfile:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::InstanceProfile</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">Path:</span> <span class="hljs-string">/</span>
      <span class="hljs-attr">Roles:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">InstanceRole</span>

<span class="hljs-attr">Outputs:</span>
  <span class="hljs-attr">InstanceId:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">The</span> <span class="hljs-string">instance</span> <span class="hljs-string">ID</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">web</span> <span class="hljs-string">server</span>
    <span class="hljs-attr">Value:</span>
      <span class="hljs-type">!Ref</span> <span class="hljs-string">WebServerHost</span>
  <span class="hljs-attr">WebsiteURL:</span>
    <span class="hljs-attr">Value:</span>
      <span class="hljs-type">!Sub</span> <span class="hljs-string">'http://${WebServerHost.PublicDnsName}'</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">URL</span> <span class="hljs-string">for</span> <span class="hljs-string">newly</span> <span class="hljs-string">created</span> <span class="hljs-string">LAMP</span> <span class="hljs-string">stack</span>
  <span class="hljs-attr">PublicIP:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Public</span> <span class="hljs-string">IP</span> <span class="hljs-string">address</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">web</span> <span class="hljs-string">server</span>
    <span class="hljs-attr">Value:</span>
      <span class="hljs-type">!GetAtt</span> <span class="hljs-string">WebServerHost.PublicIp</span>
</code></pre>
<p>🔄 <strong>Continue Rollingback and Update:</strong></p>
<ul>
<li>Understood the continuation of rollback and update processes in CloudFormation.</li>
</ul>
<p>AWS CloudFormation continue rollback and update enables you to continue rolling back or updating a stack even if one or more resources in the stack fail to create or update. This feature enables you to recover from failed stack updates more easily and reduces the risk of downtime.</p>
<p>🔄 <strong>Custom Resources in CloudFormation:</strong></p>
<ul>
<li>Explored the creation and utilization of custom resources, enhancing template flexibility.</li>
</ul>
<p>AWS CloudFormation custom resources enable you to write custom provisioning logic in AWS Lambda functions and use them in your CloudFormation templates. You can use custom resources to create, modify, or delete resources that are not available as CloudFormation resource types.</p>
<p>🧑‍🔧 <strong>CloudFormation Service Role:</strong></p>
<ul>
<li>Gained insights into CloudFormation service roles, defining the permissions required for stack operations.</li>
</ul>
<p>AWS CloudFormation service role is an AWS Identity and Access Management (IAM) role that AWS CloudFormation assumes when it creates or updates resources in your stack. The service role enables AWS CloudFormation to perform actions on your behalf, such as creating or deleting Amazon S3 buckets or launching Amazon EC2 instances.</p>
<p>🔐 <strong>CloudFormation SSM Parameters:</strong></p>
<ul>
<li>Understood the integration of AWS Systems Manager (SSM) parameters within CloudFormation.</li>
</ul>
<p>AWS CloudFormation SSM parameters enable you to store and manage configuration data for your applications and services. You can use SSM parameters to store secrets, such as database passwords, and other configuration data, such as the IP addresses of your Amazon EC2 instances.</p>
<p><strong>Here is an example YAML file to learn SSM Perameters.</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">InstanceType:</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">WebServer</span> <span class="hljs-string">EC2</span> <span class="hljs-string">instance</span> <span class="hljs-string">type</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SSM::Parameter::Value&lt;String&gt;</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">/dev/ec2/instanceType</span>

  <span class="hljs-attr">ImageId:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SSM::Parameter::Value&lt;AWS::EC2::Image::Id&gt;</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">MyEC2Instance:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::Instance</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">InstanceType:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">InstanceType</span>
      <span class="hljs-attr">ImageId:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ImageId</span>
</code></pre>
<p>🔄 <strong>CloudFormation Dynamic Reference:</strong></p>
<ul>
<li>Delved into CloudFormation dynamic references, enabling dynamic retrieval of parameter values.</li>
</ul>
<p>AWS CloudFormation dynamic references enable you to reference values that are not available until runtime, such as the Amazon EC2 instance ID or the Amazon S3 bucket name.</p>
<p><strong>Here is an example of how to use Dynamic Reference.</strong></p>
<pre><code class="lang-yaml"><span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">KeyName:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::KeyPair::KeyName</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Name</span> <span class="hljs-string">of</span> <span class="hljs-string">an</span> <span class="hljs-string">existing</span> <span class="hljs-string">EC2</span> <span class="hljs-string">KeyPair</span> <span class="hljs-string">to</span> <span class="hljs-string">enable</span> <span class="hljs-string">SSH</span> <span class="hljs-string">access</span> <span class="hljs-string">to</span> <span class="hljs-string">the</span> <span class="hljs-string">instances</span>
  <span class="hljs-attr">ImageId:</span> <span class="hljs-comment"># Public SSM Paramater</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SSM::Parameter::Value&lt;AWS::EC2::Image::Id&gt;</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">MyEC2Instance:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::Instance</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">ImageId:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ImageId</span>
      <span class="hljs-attr">KeyName:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">KeyName</span>
      <span class="hljs-comment"># ssm dynamic reference</span>
      <span class="hljs-attr">InstanceType:</span> <span class="hljs-string">'<span class="hljs-template-variable">{{resolve:ssm:/ec2/instanceType:1}}</span>'</span>

  <span class="hljs-attr">MyIAMUser:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::User</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">UserName:</span> <span class="hljs-string">'sample-user'</span>
      <span class="hljs-attr">LoginProfile:</span>
        <span class="hljs-comment"># ssm-secure dynamic reference (latest version)</span>
        <span class="hljs-attr">Password:</span> <span class="hljs-string">'<span class="hljs-template-variable">{{resolve:ssm-secure:/iam/userPassword}}</span>'</span>

  <span class="hljs-attr">MyDBInstance:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::RDS::DBInstance</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">DBInstanceClass:</span> <span class="hljs-string">db.t2.micro</span>
      <span class="hljs-attr">Engine:</span> <span class="hljs-string">mysql</span>
      <span class="hljs-attr">AllocatedStorage:</span> <span class="hljs-string">"20"</span>
      <span class="hljs-attr">VPCSecurityGroups:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-type">!GetAtt</span> [<span class="hljs-string">DBEC2SecurityGroup</span>, <span class="hljs-string">GroupId</span>]
      <span class="hljs-comment"># secretsmanager dynamic reference</span>
      <span class="hljs-attr">MasterUsername:</span> <span class="hljs-string">'<span class="hljs-template-variable">{{resolve:secretsmanager:MyRDSSecret:SecretString:username}}</span>'</span>
      <span class="hljs-attr">MasterUserPassword:</span> <span class="hljs-string">'<span class="hljs-template-variable">{{resolve:secretsmanager:MyRDSSecret:SecretString:password}}</span>'</span>

  <span class="hljs-attr">DBEC2SecurityGroup:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::EC2::SecurityGroup</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">GroupDescription:</span> <span class="hljs-string">'Allow access from anywhwere to database'</span>
      <span class="hljs-attr">SecurityGroupIngress:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">IpProtocol:</span> <span class="hljs-string">tcp</span>
        <span class="hljs-attr">FromPort:</span> <span class="hljs-number">3306</span>
        <span class="hljs-attr">ToPort:</span> <span class="hljs-number">3306</span>
        <span class="hljs-attr">CidrIp:</span> <span class="hljs-string">"0.0.0.0/0"</span>
</code></pre>
<p>🌐 <strong>CloudFormation Stack Sets:</strong></p>
<ul>
<li>Explored CloudFormation stack sets, simplifying the management of stacks across multiple accounts and regions.</li>
</ul>
<p>AWS CloudFormation stack sets enable you to create, update, or delete stacks across multiple accounts and regions with a single CloudFormation template. Stack sets enable you to manage your infrastructure at scale and reduce the time and effort required to deploy changes across your organization.</p>
<p>🌐 <strong>How to create Stack Sets:</strong></p>
<p>To create a stack set, you can use the AWS Management Console or the AWS CLI. Here are the high-level steps to create a stack set:</p>
<ol>
<li><p>Create a CloudFormation template that you want to use to create stacks.</p>
</li>
<li><p>Specify the target accounts in which you want to create stacks.</p>
</li>
<li><p>Identify the AWS Regions in which you want to deploy stacks in your target accounts.</p>
</li>
<li><p>Create the stack set using the create-stack-set command in the AWS CLI.</p>
<p> You can create a stack set with either self-managed or service-managed permissions. With self-managed permissions, you can deploy stack instances to specific AWS accounts in specific Regions. With service-managed permissions, you can deploy stack instances to any AWS account in which you have permission to create an IAM role.</p>
</li>
</ol>
<p>🔄 <strong>Finding Stack Set Drifts:</strong></p>
<ul>
<li>Learned how to detect drifts in CloudFormation stack sets, ensuring consistent configurations.</li>
</ul>
<p>To find stack set drifts, you can use the <code>describe-stack-set-operation</code> command. This command returns information about the status of a stack set operation, including any drift detection results.</p>
<p>🚫 <strong>Deleting Stack Sets:</strong></p>
<ul>
<li>Explored the process of deleting CloudFormation stack sets when they are no longer needed.</li>
</ul>
<p>To delete a stack set, you can use the <code>delete-stack-set</code> command. This command deletes the specified stack set and all associated stack instances.</p>
<p>I am giving you 3 YAML files to learn Stack sets. Refer it and see how everything works.</p>
<ol>
<li>This is Stack Set</li>
</ol>
<pre><code class="lang-yaml"><span class="hljs-attr">AWSTemplateFormatVersion:</span> <span class="hljs-number">2010-09-09</span>
<span class="hljs-attr">Description:</span> <span class="hljs-string">Enable</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span>

<span class="hljs-attr">Metadata:</span>
  <span class="hljs-attr">AWS::CloudFormation::Interface:</span>
    <span class="hljs-attr">ParameterGroups:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">Label:</span>
          <span class="hljs-attr">default:</span> <span class="hljs-string">Recorder</span> <span class="hljs-string">Configuration</span>
        <span class="hljs-attr">Parameters:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">AllSupported</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">IncludeGlobalResourceTypes</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">ResourceTypes</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">Label:</span>
          <span class="hljs-attr">default:</span> <span class="hljs-string">Delivery</span> <span class="hljs-string">Channel</span> <span class="hljs-string">Configuration</span>
        <span class="hljs-attr">Parameters:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">DeliveryChannelName</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">Frequency</span>
      <span class="hljs-bullet">-</span> <span class="hljs-attr">Label:</span>
          <span class="hljs-attr">default:</span> <span class="hljs-string">Delivery</span> <span class="hljs-string">Notifications</span>
        <span class="hljs-attr">Parameters:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">TopicArn</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">NotificationEmail</span>
    <span class="hljs-attr">ParameterLabels:</span>
      <span class="hljs-attr">AllSupported:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">Support</span> <span class="hljs-string">all</span> <span class="hljs-string">resource</span> <span class="hljs-string">types</span>
      <span class="hljs-attr">IncludeGlobalResourceTypes:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">Include</span> <span class="hljs-string">global</span> <span class="hljs-string">resource</span> <span class="hljs-string">types</span>
      <span class="hljs-attr">ResourceTypes:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">List</span> <span class="hljs-string">of</span> <span class="hljs-string">resource</span> <span class="hljs-string">types</span> <span class="hljs-string">if</span> <span class="hljs-string">not</span> <span class="hljs-string">all</span> <span class="hljs-string">supported</span>
      <span class="hljs-attr">DeliveryChannelName:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">Configuration</span> <span class="hljs-string">delivery</span> <span class="hljs-string">channel</span> <span class="hljs-string">name</span>
      <span class="hljs-attr">Frequency:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">Snapshot</span> <span class="hljs-string">delivery</span> <span class="hljs-string">frequency</span>
      <span class="hljs-attr">TopicArn:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">SNS</span> <span class="hljs-string">topic</span> <span class="hljs-string">name</span>
      <span class="hljs-attr">NotificationEmail:</span>
        <span class="hljs-attr">default:</span> <span class="hljs-string">Notification</span> <span class="hljs-string">Email</span> <span class="hljs-string">(optional)</span>

<span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">AllSupported:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-literal">True</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Indicates</span> <span class="hljs-string">whether</span> <span class="hljs-string">to</span> <span class="hljs-string">record</span> <span class="hljs-string">all</span> <span class="hljs-string">supported</span> <span class="hljs-string">resource</span> <span class="hljs-string">types.</span>
    <span class="hljs-attr">AllowedValues:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-literal">True</span>
      <span class="hljs-bullet">-</span> <span class="hljs-literal">False</span>

  <span class="hljs-attr">IncludeGlobalResourceTypes:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-literal">True</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Indicates</span> <span class="hljs-string">whether</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span> <span class="hljs-string">records</span> <span class="hljs-string">all</span> <span class="hljs-string">supported</span> <span class="hljs-string">global</span> <span class="hljs-string">resource</span> <span class="hljs-string">types.</span>
    <span class="hljs-attr">AllowedValues:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-literal">True</span>
      <span class="hljs-bullet">-</span> <span class="hljs-literal">False</span>

  <span class="hljs-attr">ResourceTypes:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">List&lt;String&gt;</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">A</span> <span class="hljs-string">list</span> <span class="hljs-string">of</span> <span class="hljs-string">valid</span> <span class="hljs-string">AWS</span> <span class="hljs-string">resource</span> <span class="hljs-string">types</span> <span class="hljs-string">to</span> <span class="hljs-string">include</span> <span class="hljs-string">in</span> <span class="hljs-string">this</span> <span class="hljs-string">recording</span> <span class="hljs-string">group,</span> <span class="hljs-string">such</span> <span class="hljs-string">as</span> <span class="hljs-string">AWS::EC2::Instance</span> <span class="hljs-string">or</span> <span class="hljs-string">AWS::CloudTrail::Trail.</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">&lt;All&gt;</span>

  <span class="hljs-attr">DeliveryChannelName:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">&lt;Generated&gt;</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">The</span> <span class="hljs-string">name</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">delivery</span> <span class="hljs-string">channel.</span>

  <span class="hljs-attr">Frequency:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">24hours</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">The</span> <span class="hljs-string">frequency</span> <span class="hljs-string">with</span> <span class="hljs-string">which</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span> <span class="hljs-string">delivers</span> <span class="hljs-string">configuration</span> <span class="hljs-string">snapshots.</span>
    <span class="hljs-attr">AllowedValues:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">1hour</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">3hours</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">6hours</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">12hours</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">24hours</span>

  <span class="hljs-attr">TopicArn:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">&lt;New</span> <span class="hljs-string">Topic&gt;</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">The</span> <span class="hljs-string">Amazon</span> <span class="hljs-string">Resource</span> <span class="hljs-string">Name</span> <span class="hljs-string">(ARN)</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">Amazon</span> <span class="hljs-string">Simple</span> <span class="hljs-string">Notification</span> <span class="hljs-string">Service</span> <span class="hljs-string">(Amazon</span> <span class="hljs-string">SNS)</span> <span class="hljs-string">topic</span> <span class="hljs-string">that</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span> <span class="hljs-string">delivers</span> <span class="hljs-string">notifications</span> <span class="hljs-string">to.</span>

  <span class="hljs-attr">NotificationEmail:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Default:</span> <span class="hljs-string">&lt;None&gt;</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">Email</span> <span class="hljs-string">address</span> <span class="hljs-string">for</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span> <span class="hljs-string">notifications</span> <span class="hljs-string">(for</span> <span class="hljs-string">new</span> <span class="hljs-string">topics).</span>

<span class="hljs-attr">Conditions:</span>
  <span class="hljs-attr">IsAllSupported:</span> <span class="hljs-type">!Equals</span>
    <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">AllSupported</span>
    <span class="hljs-bullet">-</span> <span class="hljs-literal">True</span>
  <span class="hljs-attr">IsGeneratedDeliveryChannelName:</span> <span class="hljs-type">!Equals</span>
    <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">DeliveryChannelName</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">&lt;Generated&gt;</span>
  <span class="hljs-attr">CreateTopic:</span> <span class="hljs-type">!Equals</span>
    <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">TopicArn</span>
    <span class="hljs-bullet">-</span> <span class="hljs-string">&lt;New</span> <span class="hljs-string">Topic&gt;</span>
  <span class="hljs-attr">CreateSubscription:</span> <span class="hljs-type">!And</span>
    <span class="hljs-bullet">-</span> <span class="hljs-type">!Condition</span> <span class="hljs-string">CreateTopic</span>
    <span class="hljs-bullet">-</span> <span class="hljs-type">!Not</span>
      <span class="hljs-bullet">-</span> <span class="hljs-type">!Equals</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">NotificationEmail</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">&lt;None&gt;</span>

<span class="hljs-attr">Mappings:</span>
  <span class="hljs-attr">Settings:</span>
    <span class="hljs-attr">FrequencyMap:</span>
      <span class="hljs-attr">1hour   :</span> <span class="hljs-string">One_Hour</span>
      <span class="hljs-attr">3hours  :</span> <span class="hljs-string">Three_Hours</span>
      <span class="hljs-attr">6hours  :</span> <span class="hljs-string">Six_Hours</span>
      <span class="hljs-attr">12hours :</span> <span class="hljs-string">Twelve_Hours</span>
      <span class="hljs-attr">24hours :</span> <span class="hljs-string">TwentyFour_Hours</span>

<span class="hljs-attr">Resources:</span>

  <span class="hljs-attr">ConfigBucket:</span>
    <span class="hljs-attr">DeletionPolicy:</span> <span class="hljs-string">Retain</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::S3::Bucket</span>

  <span class="hljs-attr">ConfigBucketPolicy:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::S3::BucketPolicy</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">Bucket:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigBucket</span>
      <span class="hljs-attr">PolicyDocument:</span>
        <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Sid:</span> <span class="hljs-string">AWSConfigBucketPermissionsCheck</span>
            <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">config.amazonaws.com</span>
            <span class="hljs-attr">Action:</span> <span class="hljs-string">s3:GetBucketAcl</span>
            <span class="hljs-attr">Resource:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">"arn:${AWS::Partition}:s3:::${ConfigBucket}"</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Sid:</span> <span class="hljs-string">AWSConfigBucketDelivery</span>
            <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">config.amazonaws.com</span>
            <span class="hljs-attr">Action:</span> <span class="hljs-string">s3:PutObject</span>
            <span class="hljs-attr">Resource:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">"arn:${AWS::Partition}:s3:::${ConfigBucket}/AWSLogs/${AWS::AccountId}/*"</span>

  <span class="hljs-attr">ConfigTopic:</span>
    <span class="hljs-attr">Condition:</span> <span class="hljs-string">CreateTopic</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SNS::Topic</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">TopicName:</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">"config-topic-${AWS::AccountId}"</span>
      <span class="hljs-attr">DisplayName:</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Config</span> <span class="hljs-string">Notification</span> <span class="hljs-string">Topic</span>

  <span class="hljs-attr">ConfigTopicPolicy:</span>
    <span class="hljs-attr">Condition:</span> <span class="hljs-string">CreateTopic</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SNS::TopicPolicy</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">Topics:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigTopic</span>
      <span class="hljs-attr">PolicyDocument:</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Sid:</span> <span class="hljs-string">AWSConfigSNSPolicy</span>
            <span class="hljs-attr">Action:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-string">sns:Publish</span>
            <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Resource:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigTopic</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">config.amazonaws.com</span>

  <span class="hljs-attr">EmailNotification:</span>
    <span class="hljs-attr">Condition:</span> <span class="hljs-string">CreateSubscription</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::SNS::Subscription</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">Endpoint:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">NotificationEmail</span>
      <span class="hljs-attr">Protocol:</span> <span class="hljs-string">email</span>
      <span class="hljs-attr">TopicArn:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigTopic</span>

  <span class="hljs-attr">ConfigRecorderRole:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::Role</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">AssumeRolePolicyDocument:</span>
        <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-string">config.amazonaws.com</span>
            <span class="hljs-attr">Action:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-string">sts:AssumeRole</span>
      <span class="hljs-attr">Path:</span> <span class="hljs-string">/</span>
      <span class="hljs-attr">ManagedPolicyArns:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">"arn:${AWS::Partition}:iam::aws:policy/service-role/AWS_ConfigRole"</span>

  <span class="hljs-attr">ConfigRecorder:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::Config::ConfigurationRecorder</span>
    <span class="hljs-attr">DependsOn:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">ConfigBucketPolicy</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">RoleARN:</span> <span class="hljs-type">!GetAtt</span> <span class="hljs-string">ConfigRecorderRole.Arn</span>
      <span class="hljs-attr">RecordingGroup:</span>
        <span class="hljs-attr">AllSupported:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">AllSupported</span>
        <span class="hljs-attr">IncludeGlobalResourceTypes:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">IncludeGlobalResourceTypes</span>
        <span class="hljs-attr">ResourceTypes:</span> <span class="hljs-type">!If</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">IsAllSupported</span>
          <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">AWS::NoValue</span>
          <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ResourceTypes</span>

  <span class="hljs-attr">ConfigDeliveryChannel:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::Config::DeliveryChannel</span>
    <span class="hljs-attr">DependsOn:</span>
      <span class="hljs-bullet">-</span> <span class="hljs-string">ConfigBucketPolicy</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">Name:</span> <span class="hljs-type">!If</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">IsGeneratedDeliveryChannelName</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">AWS::NoValue</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">DeliveryChannelName</span>
      <span class="hljs-attr">ConfigSnapshotDeliveryProperties:</span>
        <span class="hljs-attr">DeliveryFrequency:</span> <span class="hljs-type">!FindInMap</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">Settings</span>
          <span class="hljs-bullet">-</span> <span class="hljs-string">FrequencyMap</span>
          <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">Frequency</span>
      <span class="hljs-attr">S3BucketName:</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigBucket</span>
      <span class="hljs-attr">SnsTopicARN:</span> <span class="hljs-type">!If</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">CreateTopic</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">ConfigTopic</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">TopicArn</span>
</code></pre>
<ol>
<li>This is to set the execution role.</li>
</ol>
<pre><code class="lang-yaml"><span class="hljs-attr">AWSTemplateFormatVersion:</span> <span class="hljs-number">2010-09-09</span>
<span class="hljs-attr">Description:</span> <span class="hljs-string">Configure</span> <span class="hljs-string">the</span> <span class="hljs-string">AWSCloudFormationStackSetExecutionRole</span> <span class="hljs-string">to</span> <span class="hljs-string">enable</span> <span class="hljs-string">use</span> <span class="hljs-string">of</span> <span class="hljs-string">your</span> <span class="hljs-string">account</span> <span class="hljs-string">as</span> <span class="hljs-string">a</span> <span class="hljs-string">target</span> <span class="hljs-string">account</span> <span class="hljs-string">in</span> <span class="hljs-string">AWS</span> <span class="hljs-string">CloudFormation</span> <span class="hljs-string">StackSets.</span>

<span class="hljs-attr">Parameters:</span>
  <span class="hljs-attr">AdministratorAccountId:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">String</span>
    <span class="hljs-attr">Description:</span> <span class="hljs-string">AWS</span> <span class="hljs-string">Account</span> <span class="hljs-string">Id</span> <span class="hljs-string">of</span> <span class="hljs-string">the</span> <span class="hljs-string">administrator</span> <span class="hljs-string">account</span> <span class="hljs-string">(the</span> <span class="hljs-string">account</span> <span class="hljs-string">in</span> <span class="hljs-string">which</span> <span class="hljs-string">StackSets</span> <span class="hljs-string">will</span> <span class="hljs-string">be</span> <span class="hljs-string">created).</span>
    <span class="hljs-attr">MaxLength:</span> <span class="hljs-number">12</span>
    <span class="hljs-attr">MinLength:</span> <span class="hljs-number">12</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">ExecutionRole:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::Role</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">RoleName:</span> <span class="hljs-string">AWSCloudFormationStackSetExecutionRole</span>
      <span class="hljs-attr">AssumeRolePolicyDocument:</span>
        <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">AWS:</span>
                <span class="hljs-bullet">-</span> <span class="hljs-type">!Ref</span> <span class="hljs-string">AdministratorAccountId</span>
            <span class="hljs-attr">Action:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-string">sts:AssumeRole</span>
      <span class="hljs-attr">Path:</span> <span class="hljs-string">/</span>
      <span class="hljs-attr">ManagedPolicyArns:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-type">!Sub</span> <span class="hljs-string">arn:${AWS::Partition}:iam::aws:policy/AdministratorAccess</span>
</code></pre>
<ol>
<li>To assume role.</li>
</ol>
<pre><code class="lang-yaml"><span class="hljs-attr">AWSTemplateFormatVersion:</span> <span class="hljs-number">2010-09-09</span>
<span class="hljs-attr">Description:</span> <span class="hljs-string">Configure</span> <span class="hljs-string">the</span> <span class="hljs-string">AWSCloudFormationStackSetAdministrationRole</span> <span class="hljs-string">to</span> <span class="hljs-string">enable</span> <span class="hljs-string">use</span> <span class="hljs-string">of</span> <span class="hljs-string">AWS</span> <span class="hljs-string">CloudFormation</span> <span class="hljs-string">StackSets.</span>

<span class="hljs-attr">Resources:</span>
  <span class="hljs-attr">AdministrationRole:</span>
    <span class="hljs-attr">Type:</span> <span class="hljs-string">AWS::IAM::Role</span>
    <span class="hljs-attr">Properties:</span>
      <span class="hljs-attr">RoleName:</span> <span class="hljs-string">AWSCloudFormationStackSetAdministrationRole</span>
      <span class="hljs-attr">AssumeRolePolicyDocument:</span>
        <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
        <span class="hljs-attr">Statement:</span>
          <span class="hljs-bullet">-</span> <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
            <span class="hljs-attr">Principal:</span>
              <span class="hljs-attr">Service:</span> <span class="hljs-string">cloudformation.amazonaws.com</span>
            <span class="hljs-attr">Action:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-string">sts:AssumeRole</span>
      <span class="hljs-attr">Path:</span> <span class="hljs-string">/</span>
      <span class="hljs-attr">Policies:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-attr">PolicyName:</span> <span class="hljs-string">AssumeRole-AWSCloudFormationStackSetExecutionRole</span>
          <span class="hljs-attr">PolicyDocument:</span>
            <span class="hljs-attr">Version:</span> <span class="hljs-number">2012-10-17</span>
            <span class="hljs-attr">Statement:</span>
              <span class="hljs-bullet">-</span> <span class="hljs-attr">Effect:</span> <span class="hljs-string">Allow</span>
                <span class="hljs-attr">Action:</span>
                  <span class="hljs-bullet">-</span> <span class="hljs-string">sts:AssumeRole</span>
                <span class="hljs-attr">Resource:</span>
                  <span class="hljs-bullet">-</span> <span class="hljs-string">"arn:*:iam::*:role/AWSCloudFormationStackSetExecutionRole"</span>
</code></pre>
<p>This Day 3 journey was a comprehensive exploration of AWS CloudFormation, offering in-depth insights into its multitude of features and capabilities. Stay tuned for more as the AWS DevOps journey unfolds!</p>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 2 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Hey tech enthusiasts! Welcome back to my AWS DevOps certification journey. Day 2 has been a whirlwind of learning and exploration, and I can't wait to share my insights and hands-on experiences with you.
📚 Course Progress: Continuing with the fantas...]]></description><link>https://cloudjourney.in/exciting-day-2-of-my-aws-devops-engineer-professional-journey</link><guid isPermaLink="true">https://cloudjourney.in/exciting-day-2-of-my-aws-devops-engineer-professional-journey</guid><category><![CDATA[AWS]]></category><category><![CDATA[AWS certification]]></category><category><![CDATA[Devops]]></category><category><![CDATA[DevOps Journey]]></category><category><![CDATA[Devops articles]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Fri, 26 Jan 2024 05:00:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706186765740/8d2664e3-e1d3-413a-8025-0969f0b861f1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hey tech enthusiasts! Welcome back to my AWS DevOps certification journey. Day 2 has been a whirlwind of learning and exploration, and I can't wait to share my insights and hands-on experiences with you.</p>
<p>📚 <strong>Course Progress:</strong> Continuing with the fantastic Udemy course by Stéphane Maarek, today's focus was on AWS CodeBuild, AWS CodeDeploy, AWS CodeArtifact, AWS CodeGuru, EC2 Image Builder, and AWS Amplify.</p>
<p>💻 <strong>AWS CodeBuild:</strong></p>
<ul>
<li><p><strong>Introduction:</strong> Unpacked the fundamentals of AWS CodeBuild, a fully managed continuous integration service.</p>
</li>
<li><p><strong>Hands-on Basics:</strong> Got hands-on with basic CodeBuild tasks, understanding how it seamlessly compiles and tests code.</p>
</li>
</ul>
<p>🛠️ <strong>Advanced CodeBuild Concepts:</strong></p>
<ul>
<li><p><strong>Build Specifications:</strong> Delved into advanced concepts, particularly build specifications, to fine-tune and customize the build process.</p>
</li>
<li><p><strong>Build Environments:</strong> Explored different build environments, optimizing for various project requirements.</p>
</li>
</ul>
<p>AWS CodeBuild is a fully managed continuous integration service that compiles source code, runs tests, and produces software packages that are ready to deploy. It eliminates the need to provision, manage, and scale your own build servers. CodeBuild scales continuously and processes multiple builds concurrently, so your builds are not left waiting in a queue. You can use CodeBuild to build applications for any language, including .NET, Java, Python, Ruby, Go, and more. You can also use CodeBuild to build Docker images. CodeBuild integrates with other AWS services such as AWS CodeCommit, AWS CodePipeline, and AWS CodeDeploy, making it easy to set up a complete continuous delivery and deployment pipeline.</p>
<p>🚀 <strong>Overview of AWS CodeDeploy:</strong></p>
<ul>
<li><p><strong>Deployment Automation:</strong> Explored AWS CodeDeploy, focusing on its role in automating application deployments.</p>
</li>
<li><p><strong>EC2 Deep Dive:</strong> Dived deep into CodeDeploy with a focus on EC2 instances, understanding deployment strategies and best practices.</p>
</li>
<li><p><strong>ECS Deep Dive:</strong> Extended the knowledge to ECS, exploring seamless deployments in containerized environments.</p>
</li>
<li><p><strong>Lambda Deep Dive:</strong> Delved into serverless deployments with AWS Lambda using CodeDeploy.</p>
</li>
</ul>
<p>AWS CodeDeploy is a fully managed deployment service that automates software deployments to a variety of compute services such as Amazon EC2, AWS Fargate, AWS Lambda, and your on-premises servers. CodeDeploy makes it easier to rapidly release new features, helps you avoid downtime during application deployment, and handles the complexity of updating your applications. You can use CodeDeploy to deploy a nearly unlimited variety of application content, such as code, web and configuration files, executables, packages, scripts, multimedia files, and so on. CodeDeploy can deploy application content stored in Amazon S3 buckets, GitHub repositories, or Bitbucket repositories. CodeDeploy also provides a set of deployment strategies, such as rolling deployments, blue/green deployments, and canary deployments, to help you minimize downtime and reduce the risk of failed deployments.</p>
<p>🚀 <strong>EC2 Deep Dive on CodeDeploy</strong></p>
<p>Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides resizable compute capacity in the cloud. It is designed to make web-scale cloud computing easier for developers. Amazon EC2’s simple web service interface allows you to obtain and configure capacity with minimal friction. It provides you with complete control of your computing resources and lets you run on Amazon’s proven computing environment. AWS CodeDeploy can deploy your applications to Amazon EC2 instances running Windows or Linux operating systems.</p>
<p>🚀 <strong>ECS Deep Dive on CodeDeploy</strong></p>
<p>Amazon Elastic Container Service (Amazon ECS) is a fully managed container orchestration service that makes it easy to run, stop, and manage Docker containers on a cluster. You can use Amazon ECS to deploy a scalable and highly available containerized application. AWS CodeDeploy can deploy your applications to Amazon ECS clusters.</p>
<p>🚀 <strong>Lambda Deep Dive on CodeDeploy</strong></p>
<p>AWS Lambda is a serverless compute service that lets you run code without provisioning or managing servers. You can use AWS Lambda to run your code in response to events, such as changes to data in an Amazon S3 bucket, or to run your code in response to HTTP requests using Amazon API Gateway. AWS CodeDeploy can deploy your Lambda functions.</p>
<p>🔍 <strong>CodeDeploy Rollbacks and Troubleshooting:</strong></p>
<ul>
<li><p><strong>Rollback Strategies:</strong> Explored strategies for rolling back deployments, ensuring system stability in case of issues.</p>
</li>
<li><p><strong>Troubleshooting Techniques:</strong> Learned effective troubleshooting techniques for CodeDeploy, ensuring smooth deployments.</p>
</li>
</ul>
<p>AWS CodeDeploy provides a set of rollback and troubleshooting features to help you quickly recover from failed deployments. CodeDeploy can automatically roll back a deployment if errors occur during the deployment process. CodeDeploy also provides detailed deployment logs, which you can use to troubleshoot issues that arise during deployment.</p>
<p>📦 <strong>Overview of AWS CodeArtifact:</strong></p>
<p>AWS CodeArtifact is a fully managed artifact repository service that makes it easy to store, publish, and share software packages. You can use CodeArtifact to store and manage artifacts such as Maven and Python packages, Docker images, and npm packages. CodeArtifact integrates with other AWS services such as AWS CodeBuild, AWS CodePipeline, and AWS CodeDeploy, making it easy to set up a complete continuous delivery and deployment pipeline.</p>
<p>🧠 <strong>Overview of AWS CodeGuru:</strong></p>
<ul>
<li><strong>Code Optimization:</strong> Gained insights into AWS CodeGuru, focusing on its capabilities in providing automated code reviews and performance recommendations.</li>
</ul>
<p>AWS CodeGuru is a machine learning-based service that provides automated code reviews and application performance recommendations. CodeGuru uses machine learning algorithms to identify issues such as resource leaks, concurrency bugs, and incorrect handling of sensitive data. CodeGuru provides actionable recommendations to help you improve your code quality and application performance.</p>
<p>💻 <strong>EC2 Image Builder:</strong></p>
<ul>
<li><strong>Automated Image Creation:</strong> Explored EC2 Image Builder, automating the creation of Amazon Machine Images (AMIs) with pre-configured software.</li>
</ul>
<p>EC2 Image Builder is a fully managed service that makes it easy to build and maintain secure and up-to-date Amazon Machine Images (AMIs). You can use EC2 Image Builder to automate the creation, management, and deployment of AMIs for your applications. EC2 Image Builder integrates with other AWS services such as AWS CodeCommit, AWS CodePipeline, and AWS CodeDeploy, making it easy to set up a complete continuous delivery and deployment pipeline.</p>
<p>🌐 <strong>Overview of AWS Amplify:</strong></p>
<ul>
<li><strong>Full-Stack App Development:</strong> Wrapped up the day with an overview of AWS Amplify, a powerful tool for full-stack app development with simplified workflows.</li>
</ul>
<p>AWS Amplify is a development platform that makes it easy to develop and deploy cloud-powered mobile and web applications. With Amplify, you can build full-stack web and mobile apps in hours with a few lines of code. You can configure a backend, connect to data sources, add features like authentication, storage, and hosting, and scale to millions of users with AWS services and pricing.</p>
<p>Amplify provides frontend libraries, UI components, backend building, and frontend hosting for building full-stack cloud apps 1. It offers a declarative interface across different categories of operations to make common tasks easier to add into your application 2. Amplify provides a set of deployment strategies, such as rolling deployments, blue/green deployments, and canary deployments, to help you minimize downtime and reduce the risk of failed deployments.</p>
<p>Amplify also provides a set of features to help you build and deploy your applications quickly and easily. For example, you can use Amplify to build cloud-connected UIs with dozens of pre-built, themeable, and responsive cloud-connected React components 1. You can also use Amplify to build secure, real-time GraphQL APIs backed by AWS databases quickly and easily 1. Amplify provides a set of features to enable secure authentication flows with email/social sign-up and multi-factor auth 1. You can also store user-created content and application data in Amazon S3 buckets and enable file uploading and display with pre-built components.</p>
<p>In summary, AWS Amplify is a powerful development platform that provides a wide range of features and tools to help you build and deploy cloud-powered mobile and web applications quickly and easily. With Amplify, you can build full-stack cloud apps in hours with a few lines of code, and scale to millions of users with AWS services and pricing.</p>
<p>This Day 2 journey has been packed with technical depth and hands-on exploration. Stay tuned for more updates as I progress in this exciting AWS DevOps certification adventure! 🚀💻🌐</p>
]]></content:encoded></item><item><title><![CDATA[🚀 Exciting Day 1 of My AWS DevOps Engineer Professional Journey! 🚀]]></title><description><![CDATA[Thrilled to share that today marks my Day 1 in the incredible journey towards becoming an AWS DevOps Engineer Professional. 🌐💻 This adventure has been nothing short of amazing, and I'm excited to keep you all in the loop on my progress.
📚 Course U...]]></description><link>https://cloudjourney.in/aws-devops-engineer-professional-certificate-journey-day-1</link><guid isPermaLink="true">https://cloudjourney.in/aws-devops-engineer-professional-certificate-journey-day-1</guid><category><![CDATA[AWS]]></category><category><![CDATA[Devops]]></category><category><![CDATA[ci-cd]]></category><category><![CDATA[Certification]]></category><category><![CDATA[AWS certification]]></category><dc:creator><![CDATA[Nirav Raychura]]></dc:creator><pubDate>Thu, 25 Jan 2024 05:00:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1706248539343/8afa7331-fc7b-4ef9-9122-48acedb2e424.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Thrilled to share that today marks my Day 1 in the incredible journey towards becoming an AWS DevOps Engineer Professional. 🌐💻 This adventure has been nothing short of amazing, and I'm excited to keep you all in the loop on my progress.</p>
<p>📚 <strong>Course Update:</strong> Embarked on this journey with an outstanding Udemy course led by the seasoned instructor Stéphane Maarek. The insights and hands-on experience gained have set the stage for what promises to be an enlightening and fulfilling learning experience.</p>
<p>💡 <strong>Today's Learnings:</strong> As a beginner in this space, Day 1 was packed with foundational concepts and practical experiences.</p>
<p>🔗 <strong>Concept of CI/CD:</strong></p>
<ul>
<li>Explored the significance of Continuous Integration (CI) and Continuous Deployment (CD) in the DevOps lifecycle.</li>
</ul>
<p>🛠️ <strong>Overview Of AWS CodeCommit:</strong></p>
<ul>
<li>Dived into AWS CodeCommit, understanding its role as a fully managed source control service for secure and scalable Git repositories.</li>
</ul>
<p>🖐️ <strong>Hands-on in CodeCommit:</strong></p>
<ul>
<li>Applied version control principles through hands-on exercises, getting a feel for collaborative coding.</li>
</ul>
<p>🚀 <strong>Advanced CodeCommit Concepts:</strong></p>
<ul>
<li>Delved into advanced features, realizing the power of robust version control practices.</li>
</ul>
<ol>
<li><p><strong>Concept of CI/CD:</strong></p>
<ul>
<li><p><strong>Continuous Integration (CI):</strong> Explored the practice of regularly integrating code changes into a shared repository. This promotes early detection of integration issues, ensuring a more stable codebase.</p>
</li>
<li><p><strong>Continuous Deployment (CD):</strong> Understood the concept of automating the deployment process to rapidly and reliably deliver software changes to production.</p>
</li>
</ul>
</li>
<li><p><strong>AWS CodeCommit:</strong></p>
<ul>
<li><p><strong>Managed Source Control:</strong> AWS CodeCommit serves as a secure and scalable Git repository hosting service. It eliminates the need for managing infrastructure, allowing teams to focus on coding.</p>
</li>
<li><p><strong>Collaboration Features:</strong> Explored collaboration features within CodeCommit, such as pull requests, branch management, and access control, fostering effective teamwork.</p>
</li>
</ul>
</li>
<li><p><strong>Hands-on in CodeCommit:</strong></p>
<ul>
<li><p><strong>Version Control Practice:</strong> Engaged in hands-on exercises to practice version control, commit changes, and understand the collaboration workflow within a team setting.</p>
</li>
<li><p><strong>Repository Management:</strong> Explored repository creation, branching, and merging, gaining practical experience in maintaining a clean and organized codebase.</p>
</li>
</ul>
</li>
<li><p><strong>Advanced CodeCommit Concepts:</strong></p>
<ul>
<li><p><strong>Branch Policies:</strong> Explored advanced features like branch policies, ensuring code quality through automated checks before changes are merged into critical branches.</p>
</li>
<li><p><strong>Triggers and Hooks:</strong> Delved into triggers and hooks for events like commits and push requests, automating workflows and enhancing overall efficiency.</p>
</li>
</ul>
</li>
</ol>
<p>    🚧 <strong>Overview of AWS CodePipeline:</strong></p>
<ul>
<li>Explored AWS CodePipeline, a key player in automating the deployment pipeline.</li>
</ul>
<p>    🔧 <strong>Hands-on in CodePipeline:</strong></p>
<ul>
<li>Got hands-on with CodePipeline, witnessing the magic of automation in action.</li>
</ul>
<p>    🔗 <strong>Integrating CloudFormation into CodePipeline:</strong></p>
<ul>
<li>Unpacked the seamless integration of AWS CloudFormation into CodePipeline, understanding its benefits.</li>
</ul>
<p>    🌟 <strong>Benefits of Integration:</strong></p>
<ul>
<li>Realized the advantages of integrating CloudFormation into CodePipeline – a game-changer for scalable and repeatable deployments.</li>
</ul>
<p>    🚀 <strong>Advanced CodePipeline Concepts:</strong></p>
<ul>
<li>Wrapped up Day 1 by diving into advanced CodePipeline concepts, setting the stage for a deeper understanding.</li>
</ul>
<ol>
<li><p><strong>AWS CodePipeline:</strong></p>
<ul>
<li><p><strong>Continuous Delivery Service:</strong> Understood the role of AWS CodePipeline in automating the build, test, and deployment phases of the release process.</p>
</li>
<li><p><strong>Pipeline Structure:</strong> Explored the structure of CodePipeline, including stages, actions, and transitions, to create a streamlined deployment workflow.</p>
</li>
</ul>
</li>
<li><p><strong>Hands-on in CodePipeline:</strong></p>
<ul>
<li><p><strong>Pipeline Configuration:</strong> Engaged in hands-on activities to configure pipelines, linking various stages to automate the flow from code changes to production deployment.</p>
</li>
<li><p><strong>Artifact Management:</strong> Learned about artifact management within CodePipeline, ensuring the reliable storage and retrieval of build artifacts.</p>
</li>
</ul>
</li>
<li><p><strong>Integrating CloudFormation into CodePipeline:</strong></p>
<ul>
<li><p><strong>Infrastructure as Code (IaC):</strong> Explored the concept of treating infrastructure as code using AWS CloudFormation, allowing for the automated provisioning and management of AWS resources.</p>
</li>
<li><p><strong>Integration Benefits:</strong> Examined the benefits of integrating CloudFormation into CodePipeline, including repeatability, consistency, and scalability in infrastructure management.</p>
</li>
</ul>
</li>
<li><p><strong>Advanced CodePipeline Concepts:</strong></p>
<ul>
<li><p><strong>Custom Actions:</strong> Delved into the creation of custom actions within CodePipeline, extending its capabilities to suit specific deployment needs.</p>
</li>
<li><p><strong>Pipeline Orchestration:</strong> Explored advanced orchestration features, ensuring a flexible and adaptive deployment pipeline.</p>
</li>
</ul>
</li>
</ol>
<p>I'm ecstatic about the journey ahead and can't wait to share more insights as I progress. If you're on a similar journey or have tips to share, let's connect and learn together! 🚀🌐💡</p>
]]></content:encoded></item></channel></rss>