{"id":771,"date":"2026-10-28T11:55:49","date_gmt":"2026-10-28T06:25:49","guid":{"rendered":"https:\/\/www.itvedant.com\/blog\/?p=771"},"modified":"2026-10-27T12:05:27","modified_gmt":"2026-10-27T06:35:27","slug":"github-actions-aws-cicd-pipeline","status":"publish","type":"post","link":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/","title":{"rendered":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial"},"content":{"rendered":"\n<p>Imagine developing a website and manually uploading files to a server every time you make a change. This process may work for a small project, but it becomes difficult to manage as the application grows.<\/p>\n\n\n\n<p>Developers need a reliable way to test and deploy changes without repeating the same manual tasks.<\/p>\n\n\n\n<p>That is where a CI\/CD pipeline becomes useful.<\/p>\n\n\n\n<p>In this tutorial, you will learn how GitHub Actions and Amazon Web Services (AWS) can work together to automate the deployment of a simple static website.<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_68_1 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title \" >Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#What_Is_a_CICD_Pipeline\" title=\"What Is a CI\/CD Pipeline?\">What Is a CI\/CD Pipeline?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#How_GitHub_Actions_and_AWS_Work_Together\" title=\"How GitHub Actions and AWS Work Together\">How GitHub Actions and AWS Work Together<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_1_Create_a_GitHub_Repository\" title=\"Step 1: Create a GitHub Repository\">Step 1: Create a GitHub Repository<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_2_Create_an_Amazon_S3_Bucket\" title=\"Step 2: Create an Amazon S3 Bucket\">Step 2: Create an Amazon S3 Bucket<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_3_Configure_AWS_Authentication\" title=\"Step 3: Configure AWS Authentication\">Step 3: Configure AWS Authentication<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_4_Create_a_GitHub_Actions_Workflow\" title=\"Step 4: Create a GitHub Actions Workflow\">Step 4: Create a GitHub Actions Workflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_5_Understand_the_Workflow\" title=\"Step 5: Understand the Workflow\">Step 5: Understand the Workflow<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Step_6_Test_the_Pipeline\" title=\"Step 6: Test the Pipeline\">Step 6: Test the Pipeline<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Common_CICD_Problems\" title=\"Common CI\/CD Problems\">Common CI\/CD Problems<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Access_Denied\" title=\"Access Denied\">Access Denied<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#OIDC_Authentication_Failure\" title=\"OIDC Authentication Failure\">OIDC Authentication Failure<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Workflow_Does_Not_Start\" title=\"Workflow Does Not Start\">Workflow Does Not Start<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Files_Are_Uploaded_but_the_Website_Is_Not_Updated\" title=\"Files Are Uploaded but the Website Is Not Updated\">Files Are Uploaded but the Website Is Not Updated<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#How_to_Extend_This_DevOps_Project\" title=\"How to Extend This DevOps Project\">How to Extend This DevOps Project<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Frequently_Asked_Questions\" title=\"Frequently Asked Questions\">Frequently Asked Questions<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#1_Is_GitHub_Actions_free\" title=\"1. Is GitHub Actions free?\">1. Is GitHub Actions free?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#2_Is_AWS_knowledge_necessary_for_DevOps\" title=\"2. Is AWS knowledge necessary for DevOps?\">2. Is AWS knowledge necessary for DevOps?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#3_What_is_the_difference_between_Jenkins_and_GitHub_Actions\" title=\"3. What is the difference between Jenkins and GitHub Actions?\">3. What is the difference between Jenkins and GitHub Actions?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#4_Can_beginners_build_a_CICD_pipeline\" title=\"4. Can beginners build a CI\/CD pipeline?\">4. Can beginners build a CI\/CD pipeline?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#5_Should_AWS_access_keys_be_stored_in_GitHub\" title=\"5. Should AWS access keys be stored in GitHub?\">5. Should AWS access keys be stored in GitHub?<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#Conclusion\" title=\"Conclusion\">Conclusion<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_Is_a_CICD_Pipeline\"><\/span>What Is a CI\/CD Pipeline?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>CI\/CD stands for Continuous Integration and Continuous Delivery or Deployment.<\/p>\n\n\n\n<p>Continuous Integration involves automatically checking code changes through activities such as builds and tests.<\/p>\n\n\n\n<p>Continuous Delivery prepares validated changes so they can be released reliably, while Continuous Deployment goes further by automatically releasing approved changes without manual intervention.<\/p>\n\n\n\n<p>For example, when a developer pushes code to GitHub, an automated workflow can validate the project and upload the website files to AWS.<\/p>\n\n\n\n<p>This reduces repetitive work and makes the deployment process more consistent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_GitHub_Actions_and_AWS_Work_Together\"><\/span>How GitHub Actions and AWS Work Together<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>GitHub Actions is an automation service that runs workflows in response to repository events.<\/p>\n\n\n\n<p>AWS provides cloud services for hosting applications, storing files and managing infrastructure.<\/p>\n\n\n\n<p>In this project, we will use:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub for source code management<\/li>\n\n\n\n<li>GitHub Actions for workflow automation<\/li>\n\n\n\n<li>AWS Identity and Access Management (IAM) for permissions<\/li>\n\n\n\n<li>Amazon S3 for storing static website files<\/li>\n\n\n\n<li>OpenID Connect (OIDC) for short-lived AWS authentication<\/li>\n<\/ul>\n\n\n\n<p>The workflow will look like this:<\/p>\n\n\n\n<p><strong>Developer pushes code \u2192 GitHub Actions starts \u2192 Project validation runs \u2192 AWS authentication occurs \u2192 Website files are uploaded to S3<\/strong><\/p>\n\n\n\n<p>For production web delivery, Amazon CloudFront can be added in front of a private S3 bucket.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_1_Create_a_GitHub_Repository\"><\/span>Step 1: Create a GitHub Repository<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Create a repository called <code>aws-cicd-demo<\/code>.<\/p>\n\n\n\n<p>Add a simple <code>index.html<\/code> file:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n  &lt;meta charset=\"UTF-8\"&gt;\n  &lt;title&gt;My AWS DevOps Project&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n  &lt;h1&gt;Welcome to My DevOps Project&lt;\/h1&gt;\n  &lt;p&gt;Deployed automatically with GitHub Actions.&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n\n\n\n<p>Commit and push the file to the <code>main<\/code> branch.<\/p>\n\n\n\n<p>This is the website that your pipeline will deploy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_2_Create_an_Amazon_S3_Bucket\"><\/span>Step 2: Create an Amazon S3 Bucket<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Log in to the AWS Management Console and open Amazon S3.<\/p>\n\n\n\n<p>Create a bucket with a globally unique name, such as one based on your project name and a unique identifier.<\/p>\n\n\n\n<p>Choose the appropriate AWS Region.<\/p>\n\n\n\n<p>For this exercise, the bucket will store static HTML files.<\/p>\n\n\n\n<p>Keep S3 Block Public Access enabled. You can use CloudFront with Origin Access Control if you later want to serve the site publicly through HTTPS.<\/p>\n\n\n\n<p>Do not make the bucket public simply to complete the deployment tutorial.<\/p>\n\n\n\n<p>Remember that AWS services may generate charges depending on usage and configuration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_3_Configure_AWS_Authentication\"><\/span>Step 3: Configure AWS Authentication<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Avoid placing permanent AWS access keys directly in your source code or workflow file.<\/p>\n\n\n\n<p>Instead, use OIDC authentication.<\/p>\n\n\n\n<p>This allows GitHub Actions to obtain temporary AWS credentials by assuming an authorized IAM role.<\/p>\n\n\n\n<p>At a high level, the setup requires:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Configuring GitHub&#8217;s OIDC identity provider in AWS IAM.<\/li>\n\n\n\n<li>Creating an IAM role with a trust policy.<\/li>\n\n\n\n<li>Restricting the role to the intended GitHub repository and branch.<\/li>\n\n\n\n<li>Granting only the S3 permissions needed for deployment.<\/li>\n\n\n\n<li>Recording the IAM role ARN for the GitHub workflow.<\/li>\n<\/ol>\n\n\n\n<p>For example, a deployment role may need permission to list a specific bucket and upload or replace objects in that bucket.<\/p>\n\n\n\n<p>If your workflow also deletes obsolete files, it needs the corresponding delete permission.<\/p>\n\n\n\n<p>Avoid broad permissions such as unrestricted administrator access.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_4_Create_a_GitHub_Actions_Workflow\"><\/span>Step 4: Create a GitHub Actions Workflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Inside your repository, create this directory:<\/p>\n\n\n\n<p><code>.github\/workflows\/<\/code><\/p>\n\n\n\n<p>Add a file called <code>deploy.yml<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>name: Deploy Website to AWS\n\non:\n  push:\n    branches: &#91;main]\n\npermissions:\n  id-token: write\n  contents: read\n\njobs:\n  deploy:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout repository\n        uses: actions\/checkout@v4\n\n      - name: Validate website\n        run: test -s index.html\n\n      - name: Configure AWS credentials\n        uses: aws-actions\/configure-aws-credentials@v4\n        with:\n          role-to-assume: ${{ secrets.AWS_ROLE_ARN }}\n          aws-region: ap-south-1\n\n      - name: Upload website\n        run: |\n          aws s3 cp index.html \\\n            s3:\/\/${{ vars.S3_BUCKET_NAME }}\/index.html<\/code><\/pre>\n\n\n\n<p>This sample assumes that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The configured IAM role trusts the correct GitHub repository and branch.<\/li>\n\n\n\n<li><code>AWS_ROLE_ARN<\/code> is available as a GitHub Actions secret.<\/li>\n\n\n\n<li><code>S3_BUCKET_NAME<\/code> is configured as a GitHub Actions variable.<\/li>\n\n\n\n<li>The bucket is in <code>ap-south-1<\/code>, or the workflow Region is updated accordingly.<\/li>\n\n\n\n<li>The role has the required S3 permissions.<\/li>\n<\/ul>\n\n\n\n<p>Pinning actions to reviewed commit SHAs is preferable for production workflows.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_5_Understand_the_Workflow\"><\/span>Step 5: Understand the Workflow<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The workflow runs whenever a commit is pushed to the <code>main<\/code> branch.<\/p>\n\n\n\n<p>First, GitHub Actions retrieves the repository files.<\/p>\n\n\n\n<p>Next, it verifies that <code>index.html<\/code> exists and is not empty.<\/p>\n\n\n\n<p>The workflow then uses OIDC to authenticate with AWS.<\/p>\n\n\n\n<p>Finally, the AWS CLI uploads the HTML file to the selected S3 bucket.<\/p>\n\n\n\n<p>This is a minimal validation-and-deployment pipeline. A real software project should include meaningful automated tests, not just a file existence check.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Step_6_Test_the_Pipeline\"><\/span>Step 6: Test the Pipeline<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Make a small change to your HTML file and push it to GitHub.<\/p>\n\n\n\n<p>Open the <strong>Actions<\/strong> tab in your repository.<\/p>\n\n\n\n<p>You should see the workflow run.<\/p>\n\n\n\n<p>Inspect each step and verify whether it completed successfully.<\/p>\n\n\n\n<p>Next, open your S3 bucket and confirm the expected file was uploaded.<\/p>\n\n\n\n<p>The presence of the file in S3 confirms deployment to storage. It does not automatically mean the website is publicly accessible.<\/p>\n\n\n\n<p>If you configure CloudFront separately, verify the website through its distribution URL and consider cache invalidation when appropriate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Common_CICD_Problems\"><\/span>Common CI\/CD Problems<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Access_Denied\"><\/span>Access Denied<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>The IAM role may not have permission to access the bucket.<\/p>\n\n\n\n<p>Review the role&#8217;s policies and the bucket configuration.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"OIDC_Authentication_Failure\"><\/span>OIDC Authentication Failure<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Check the IAM trust policy, repository name, branch condition and role ARN.<\/p>\n\n\n\n<p>A common mistake is allowing a different repository or branch than the one running the workflow.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Workflow_Does_Not_Start\"><\/span>Workflow Does Not Start<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Confirm that the YAML file is located in <code>.github\/workflows\/<\/code> and the push occurred on the configured branch.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Files_Are_Uploaded_but_the_Website_Is_Not_Updated\"><\/span>Files Are Uploaded but the Website Is Not Updated<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>If CloudFront is serving cached content, an invalidation or appropriate cache policy may be needed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_Extend_This_DevOps_Project\"><\/span>How to Extend This DevOps Project<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Once the basic pipeline works, try adding:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>HTML and JavaScript linting<\/li>\n\n\n\n<li>Automated tests<\/li>\n\n\n\n<li>A production build step<\/li>\n\n\n\n<li>Separate staging and production environments<\/li>\n\n\n\n<li>Deployment approvals<\/li>\n\n\n\n<li>CloudFront integration<\/li>\n\n\n\n<li>Deployment notifications<\/li>\n\n\n\n<li>Rollback procedures<\/li>\n<\/ul>\n\n\n\n<p>For more advanced projects, learn how to deploy containerized applications using Docker and AWS services such as Amazon ECS.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Frequently_Asked_Questions\"><\/span>Frequently Asked Questions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Is_GitHub_Actions_free\"><\/span>1. Is GitHub Actions free?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>GitHub provides GitHub Actions usage allowances depending on the repository and plan. Additional usage or hosted runners may incur costs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Is_AWS_knowledge_necessary_for_DevOps\"><\/span>2. Is AWS knowledge necessary for DevOps?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>AWS is one of several cloud platforms used in <a href=\"https:\/\/www.itvedant.com\/devops-with-aws-course\" title=\"\">DevOps<\/a>. Understanding cloud computing, Linux, networking, automation and CI\/CD is valuable.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_What_is_the_difference_between_Jenkins_and_GitHub_Actions\"><\/span>3. What is the difference between Jenkins and GitHub Actions?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Both support workflow automation. Jenkins is commonly self-managed, while GitHub Actions integrates directly with GitHub repositories.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Can_beginners_build_a_CICD_pipeline\"><\/span>4. Can beginners build a CI\/CD pipeline?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Yes. A simple static website deployment is a useful starting project before moving to containers and complex infrastructure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Should_AWS_access_keys_be_stored_in_GitHub\"><\/span>5. Should AWS access keys be stored in GitHub?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<p>Long-lived access keys should be avoided when suitable short-lived authentication, such as OIDC, is available.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span>Conclusion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Building a CI\/CD pipeline with GitHub Actions and AWS is a practical way to understand automated software delivery.<\/p>\n\n\n\n<p>Begin with a small project, learn how permissions and deployment workflows operate, and then add testing, monitoring and production controls.<\/p>\n\n\n\n<p>CI\/CD pipeline using GitHub Actions and AWS<\/p>\n\n\n\n<p>Explore more hands-on cloud infrastructure and deployment concepts through <a href=\"https:\/\/www.itvedant.com\/\" title=\"\">Itvedant&#8217;s<\/a> <a href=\"https:\/\/www.itvedant.com\/devops-with-aws-course\">DevOps with AWS Course<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Imagine developing a website and manually uploading files to a server every time you make a change. This process may [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":772,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[155],"tags":[557,560,559,558],"class_list":["post-771","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops-aws","tag-aws-devops-project","tag-aws-s3-deployment","tag-ci-cd-pipeline-tutorial","tag-github-actions-aws-deployment"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"itvedant\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Itvedant Blogs: Master Data Science, AI &amp; IT Skills - Practical training and industry insights to make you job-ready\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"CI\/CD Pipeline Using GitHub Actions and AWS\" \/>\n\t\t<meta property=\"og:description\" content=\"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-28T06:25:49+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-27T06:35:27+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n\t\t<meta name=\"twitter:title\" content=\"CI\/CD Pipeline Using GitHub Actions and AWS\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"BlogPosting\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#blogposting\",\"name\":\"CI\\\/CD Pipeline Using GitHub Actions and AWS\",\"headline\":\"How to Build a CI\\\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\",\"author\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/author\\\/itvedant\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Building-a-CI_CD-Pipeline-with-GitHub-Actions-20kb.jpeg\",\"width\":1020,\"height\":555,\"caption\":\"How to Build a CI\\\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\"},\"datePublished\":\"2026-10-28T11:55:49+05:30\",\"dateModified\":\"2026-10-27T12:05:27+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#webpage\"},\"articleSection\":\"DevOps AWS, AWS DevOps project, AWS S3 deployment, CI\\\/CD pipeline tutorial, GitHub Actions AWS deployment\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.itvedant.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/category\\\/devops-aws\\\/#listItem\",\"name\":\"DevOps AWS\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/category\\\/devops-aws\\\/#listItem\",\"position\":2,\"name\":\"DevOps AWS\",\"item\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/category\\\/devops-aws\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#listItem\",\"name\":\"How to Build a CI\\\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#listItem\",\"position\":3,\"name\":\"How to Build a CI\\\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/category\\\/devops-aws\\\/#listItem\",\"name\":\"DevOps AWS\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/#organization\",\"name\":\"Itvedant Blogs: Master Data Science, AI & IT Skills\",\"description\":\"Practical training and industry insights to make you job-ready\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/author\\\/itvedant\\\/#author\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/author\\\/itvedant\\\/\",\"name\":\"itvedant\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f3e2e8562c173f06f1cd8b8b32a02e1c?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"itvedant\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#webpage\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/\",\"name\":\"CI\\\/CD Pipeline Using GitHub Actions and AWS\",\"description\":\"Learn to create a CI\\\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/author\\\/itvedant\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/author\\\/itvedant\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/Building-a-CI_CD-Pipeline-with-GitHub-Actions-20kb.jpeg\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#mainImage\",\"width\":1020,\"height\":555,\"caption\":\"How to Build a CI\\\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/github-actions-aws-cicd-pipeline\\\/#mainImage\"},\"datePublished\":\"2026-10-28T11:55:49+05:30\",\"dateModified\":\"2026-10-27T12:05:27+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/\",\"name\":\"Itvedant Blogs: Master Data Science, AI & IT Skills\",\"description\":\"Practical training and industry insights to make you job-ready\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.itvedant.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"CI\/CD Pipeline Using GitHub Actions and AWS","description":"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.","canonical_url":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"BlogPosting","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#blogposting","name":"CI\/CD Pipeline Using GitHub Actions and AWS","headline":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial","author":{"@id":"https:\/\/www.itvedant.com\/blog\/author\/itvedant\/#author"},"publisher":{"@id":"https:\/\/www.itvedant.com\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/www.itvedant.com\/blog\/wp-content\/uploads\/2026\/10\/Building-a-CI_CD-Pipeline-with-GitHub-Actions-20kb.jpeg","width":1020,"height":555,"caption":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial"},"datePublished":"2026-10-28T11:55:49+05:30","dateModified":"2026-10-27T12:05:27+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#webpage"},"isPartOf":{"@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#webpage"},"articleSection":"DevOps AWS, AWS DevOps project, AWS S3 deployment, CI\/CD pipeline tutorial, GitHub Actions AWS deployment"},{"@type":"BreadcrumbList","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/www.itvedant.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/#listItem","name":"DevOps AWS"}},{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/#listItem","position":2,"name":"DevOps AWS","item":"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/","nextItem":{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#listItem","name":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial"},"previousItem":{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#listItem","position":3,"name":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial","previousItem":{"@type":"ListItem","@id":"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/#listItem","name":"DevOps AWS"}}]},{"@type":"Organization","@id":"https:\/\/www.itvedant.com\/blog\/#organization","name":"Itvedant Blogs: Master Data Science, AI & IT Skills","description":"Practical training and industry insights to make you job-ready","url":"https:\/\/www.itvedant.com\/blog\/"},{"@type":"Person","@id":"https:\/\/www.itvedant.com\/blog\/author\/itvedant\/#author","url":"https:\/\/www.itvedant.com\/blog\/author\/itvedant\/","name":"itvedant","image":{"@type":"ImageObject","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/f3e2e8562c173f06f1cd8b8b32a02e1c?s=96&d=mm&r=g","width":96,"height":96,"caption":"itvedant"}},{"@type":"WebPage","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#webpage","url":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/","name":"CI\/CD Pipeline Using GitHub Actions and AWS","description":"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/www.itvedant.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#breadcrumblist"},"author":{"@id":"https:\/\/www.itvedant.com\/blog\/author\/itvedant\/#author"},"creator":{"@id":"https:\/\/www.itvedant.com\/blog\/author\/itvedant\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/www.itvedant.com\/blog\/wp-content\/uploads\/2026\/10\/Building-a-CI_CD-Pipeline-with-GitHub-Actions-20kb.jpeg","@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#mainImage","width":1020,"height":555,"caption":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial"},"primaryImageOfPage":{"@id":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/#mainImage"},"datePublished":"2026-10-28T11:55:49+05:30","dateModified":"2026-10-27T12:05:27+05:30"},{"@type":"WebSite","@id":"https:\/\/www.itvedant.com\/blog\/#website","url":"https:\/\/www.itvedant.com\/blog\/","name":"Itvedant Blogs: Master Data Science, AI & IT Skills","description":"Practical training and industry insights to make you job-ready","inLanguage":"en-US","publisher":{"@id":"https:\/\/www.itvedant.com\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Itvedant Blogs: Master Data Science, AI &amp; IT Skills - Practical training and industry insights to make you job-ready","og:type":"article","og:title":"CI\/CD Pipeline Using GitHub Actions and AWS","og:description":"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.","og:url":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/","article:published_time":"2026-10-28T06:25:49+00:00","article:modified_time":"2026-10-27T06:35:27+00:00","twitter:card":"summary_large_image","twitter:title":"CI\/CD Pipeline Using GitHub Actions and AWS","twitter:description":"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners."},"aioseo_meta_data":{"post_id":"771","title":"CI\/CD Pipeline Using GitHub Actions and AWS","description":"Learn to create a CI\/CD pipeline using GitHub Actions and AWS S3, with deployment steps, OIDC authentication and best practices for beginners.","keywords":null,"keyphrases":{"focus":{"keyphrase":"CI\/CD pipeline using GitHub Actions and AWS","score":53,"analysis":{"keyphraseInTitle":{"score":9,"maxScore":9,"error":0},"keyphraseInDescription":{"score":9,"maxScore":9,"error":0},"keyphraseLength":{"score":6,"maxScore":9,"error":1,"length":7},"keyphraseInURL":{"score":1,"maxScore":5,"error":1},"keyphraseInIntroduction":{"score":3,"maxScore":9,"error":1},"keyphraseInSubHeadings":{"score":3,"maxScore":9,"error":1},"keyphraseInImageAlt":[],"keywordDensity":{"score":0,"type":"low","maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_custom_url":null,"og_image_custom_fields":null,"og_image_url":null,"og_image_width":null,"og_image_height":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_image_url":null,"twitter_title":null,"twitter_description":null,"schema_type":"default","schema_type_options":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"BlogPosting","isEnabled":true},"graphs":[]},"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","local_seo":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"breadcrumb_settings":null,"seo_analyzer_scan_date":null,"created":"2026-10-27 06:35:27","updated":"2026-10-28 12:13:42"},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.itvedant.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/\" title=\"DevOps AWS\">DevOps AWS<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tHow to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/www.itvedant.com\/blog"},{"label":"DevOps AWS","link":"https:\/\/www.itvedant.com\/blog\/category\/devops-aws\/"},{"label":"How to Build a CI\/CD Pipeline Using GitHub Actions and AWS: A Practical Tutorial","link":"https:\/\/www.itvedant.com\/blog\/github-actions-aws-cicd-pipeline\/"}],"_links":{"self":[{"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/posts\/771"}],"collection":[{"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":1,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"predecessor-version":[{"id":773,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/posts\/771\/revisions\/773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/media\/772"}],"wp:attachment":[{"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.itvedant.com\/blog\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}