{"id":978,"date":"2017-02-09T12:21:55","date_gmt":"2017-02-09T06:51:55","guid":{"rendered":"https:\/\/pheonixsolutions.com\/blog\/?p=978"},"modified":"2026-09-10T12:19:31","modified_gmt":"2026-09-10T06:49:31","slug":"setup-aws-codedeploy-linux","status":"publish","type":"post","link":"https:\/\/pheonixsolutions.com\/blog\/setup-aws-codedeploy-linux\/","title":{"rendered":"How to Set Up AWS CodeDeploy on Linux for GitHub Deployments"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Deploying application code across multiple servers can be challenging when deployments are performed manually. Traditionally, files may be uploaded to servers using FTP or SFTP, followed by manually restarting the application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy provides a way to automate application deployments to AWS instances. It can be used to deploy application code to multiple servers while providing a structured deployment process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy supports different revision sources, including:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Amazon S3<\/li>\n\n\n\n<li>GitHub<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">In this article, we will explain how to configure <strong>AWS CodeDeploy on Linux and deploy application code from GitHub<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisites<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before starting, make sure you have:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An AWS account.<\/li>\n\n\n\n<li>An AWS EC2 instance.<\/li>\n\n\n\n<li>SSH access to the Linux instance.<\/li>\n\n\n\n<li>An IAM role with the required permissions.<\/li>\n\n\n\n<li>A GitHub repository containing the application code.<\/li>\n\n\n\n<li>Basic knowledge of AWS EC2, IAM, GitHub, and Linux commands.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Implementation<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Create IAM Roles<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The first step is to create the IAM roles required for communication between the EC2 instance and AWS CodeDeploy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create the following two IAM roles:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><code>CodeDeployInstanceRole<\/code><\/li>\n\n\n\n<li><code>CodeDeployServiceRole<\/code><\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Create the CodeDeploy Service Role<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">From the AWS Management Console, navigate to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>IAM \u2192 Create New Role<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create a role named:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CodeDeployServiceRole<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Attach the following policy:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">AWSCodeDeployRole<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Create the CodeDeploy Instance Role<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Create another IAM role named:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CodeDeployInstanceRole<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Attach the following policies:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">AmazonEC2RolePolicyForAWSCodeDeploy\nAutoScalingNotificationAccessRole<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">These roles are used by the CodeDeploy service and EC2 instance during the deployment process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 2: Launch an EC2 Instance with the IAM Role<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>CodeDeployInstanceRole<\/code> created in the previous step needs to be associated with the EC2 instance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While launching the EC2 instance, select:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">IAM role: CodeDeployInstanceRole<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Complete the instance launch process.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After the instance is launched, install the required application stack based on your application requirements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Apache, PHP<\/li>\n\n\n\n<li>Nginx, PHP, MariaDB<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Step 3: Install CodeDeploy Agent Dependencies<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, Ubuntu is used as the Linux host.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Install the required dependencies:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt-get -y install python-pip<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt-get -y install ruby<\/pre>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">apt-get -y install wget<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Step 4: Install the CodeDeploy Agent<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Download the CodeDeploy agent installation script:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">wget https:\/\/aws-codedeploy-eu-central-1.s3.amazonaws.com\/latest\/install<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make the installer executable:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">chmod +x .\/install<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install the CodeDeploy agent:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">.\/install auto<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Start the CodeDeploy agent:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">service codedeploy-agent start<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The CodeDeploy agent is now installed on the EC2 instance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 5: Create the Deployment Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy requires an <code>appspec.yml<\/code> file to define how the application should be deployed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create an <code>appspec.yml<\/code> file in the root of your GitHub repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The original example uses the following configuration:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">version: 0.0\nos: linux\nfiles:\n  - source: \/\n    destination: \/var\/www\/html\n    except:\n    owner: ubuntu\n    group: ubuntu\npermissions:\n  - object: \/var\/www\/html\n    owner: ubuntu\n    group: ubuntu\n    mode: 755\n    type:\n      - directory\n  - object: \/var\/www\/html\n    owner: ubuntu\n    group: ubuntu\n    type:\n      - file\n\nhooks:\n  BeforeInstall:\n    - location: scripts\/install_codedeployment\n      timeout: 40\n      runas: root\n  ApplicationStart:\n    - location: scripts\/restart_nginx.sh\n      timeout: 30\nrunas: root<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>appspec.yml<\/code> file defines the application files, destination directory, permissions, and deployment lifecycle hooks.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 6: Add Deployment Scripts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create a directory named:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">scripts<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">inside the GitHub repository.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Add the required deployment scripts to this directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, create:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">restart_nginx.sh<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">with the following content:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#!\/bin\/bash\nservice nginx restart<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Make sure the script is included in the GitHub repository along with the application source code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 7: Create a CodeDeploy Application<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Log in to the AWS Management Console.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Services \u2192 CodeDeploy<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Create Application<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enter the application details.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Application Name<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enter your application name:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;Your Application Name><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deployment Group<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Enter the deployment group name:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;Deployment Group Name><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Deployment Type<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Select:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>In-Place Deployment<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Add Instances<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Under the instance selection options, choose:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Search by Tags<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy provides options for selecting deployment targets, including:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Amazon EC2<\/li>\n\n\n\n<li>Auto Scaling Group<\/li>\n\n\n\n<li>On-Premises Instance<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For this example, we will use an <strong>Amazon EC2 instance<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select the EC2 instance using its <strong>Name<\/strong> tag.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Deployment Configuration<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Select:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CodeDeployDefault.OneAtATime<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Service Role<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Select the CodeDeploy service role created earlier:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">CodeDeployServiceRole<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Complete the deployment group configuration.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 8: Deploy the Application from GitHub<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Once the CodeDeploy application and deployment group are configured, you can deploy the application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Navigate to:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>AWS CodeDeploy \u2192 Applications<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Select your application.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Choose:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Actions \u2192 Deploy New Version<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For the revision source, select:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>My application is stored in GitHub<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enter the following details:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Repository Name: &lt;Your Git Repository>\nCommit ID: &lt;Git Commit ID><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Click:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Deploy<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy will retrieve the application revision from GitHub and deploy it to the selected EC2 instance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Step 9: Monitor the Deployment<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After starting the deployment, open the deployment details and check the <strong>Deployment ID<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The deployment status allows you to monitor whether the deployment is progressing successfully or whether any lifecycle hook or application step has failed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy can simplify application deployments by automating the process of transferring application code and executing deployment steps on AWS instances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this example, we configured the required IAM roles, launched an EC2 instance with the CodeDeploy instance role, installed the CodeDeploy agent, created an <code>appspec.yml<\/code> configuration, and configured AWS CodeDeploy to retrieve application code from GitHub.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This provides a basic workflow for deploying application code to an AWS EC2 instance using CodeDeploy and GitHub.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Frequently Asked Questions<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. What is AWS CodeDeploy?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">AWS CodeDeploy is an AWS deployment service that automates application deployments to supported compute environments such as EC2 instances.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">2. Why is <code>appspec.yml<\/code> required?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>appspec.yml<\/code> file defines deployment instructions, including where application files should be placed and which scripts should run during different stages of the deployment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">3. What is the purpose of the CodeDeploy agent?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The CodeDeploy agent runs on the deployment target and handles the deployment instructions provided by AWS CodeDeploy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Related Articles<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/aws-infrastructure-architecture-for-startups\/\">AWS Infrastructure Architecture for Startups<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/how-to-troubleshoot-ssh-connection-issues-in-aws-ec2\/\">How to Troubleshoot SSH Connection Issues in AWS EC2<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/pheonixsolutions.com\/blog\/how-to-enable-multi-factor-authentication-mfa-for-an-aws-iam-user\/\">How to Enable Multi-Factor Authentication (MFA) for an AWS IAM User<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Talk to Our Technology Experts<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Planning your AWS infrastructure or looking to improve an existing cloud environment? Our team can help with cloud architecture, infrastructure, DevOps, security, deployment, and ongoing optimization.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong><a href=\"https:\/\/pheonixsolutions.com\/contact\">Connect with our technology experts.<\/a><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Deploying application code across multiple servers can be challenging when deployments are performed manually. Traditionally, files may be uploaded [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","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":"","ast-disable-related-posts":"","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-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":"","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-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":"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":""},"mobile":{"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":""}},"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":true,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1019],"tags":[280,281,283,274],"class_list":["post-978","post","type-post","status-publish","format-standard","hentry","category-cloud-aws","tag-amazon","tag-codedeploy","tag-git","tag-ubuntu","psol-cat-cloud-aws"],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/phn2x7-fM","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/978","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/comments?post=978"}],"version-history":[{"count":1,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/978\/revisions"}],"predecessor-version":[{"id":11620,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/posts\/978\/revisions\/11620"}],"wp:attachment":[{"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/media?parent=978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/categories?post=978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pheonixsolutions.com\/blog\/wp-json\/wp\/v2\/tags?post=978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}