{"id":35631,"date":"2023-05-29T04:51:23","date_gmt":"2023-05-29T04:51:23","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=35631"},"modified":"2023-05-29T05:37:57","modified_gmt":"2023-05-29T05:37:57","slug":"aws-tutorials-aws-codebuild-buildspec-code-for-creating-ami-from-running-instances","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/aws-tutorials-aws-codebuild-buildspec-code-for-creating-ami-from-running-instances\/","title":{"rendered":"AWS Tutorials: AWS CodeBuild &#8211; Buildspec code for creating AMI from running instances"},"content":{"rendered":"\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">version: <span class=\"hljs-number\">0.2<\/span>\n\nphases:\n  build:\n    commands:\n      - |\n        <span class=\"hljs-comment\">#!\/bin\/bash<\/span>\n\n\t\t<span class=\"hljs-comment\"># Author - Rajesh Kumar<\/span>\n\t\t\n        <span class=\"hljs-comment\"># Set AWS region<\/span>\n        export AWS_DEFAULT_REGION=us-east<span class=\"hljs-number\">-1<\/span>\n\n        <span class=\"hljs-comment\"># Get running all instance IDs<\/span>\n        instance_ids=$(aws ec2 describe-instances --filters <span class=\"hljs-string\">\"Name=instance-state-name,Values=running\"<\/span> <span class=\"hljs-string\">\"Name=tag:environment,Values=uat\"<\/span> --query <span class=\"hljs-string\">'Reservations&#91;].Instances&#91;].InstanceId'<\/span> --output text)\n\n        <span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">\"List of Instances: $instance_ids\"<\/span>\n\n        <span class=\"hljs-comment\"># Create AMIs from instance IDs<\/span>\n        <span class=\"hljs-keyword\">for<\/span> instance_id in $instance_ids; <span class=\"hljs-keyword\">do<\/span>\n          instance_name=$(aws ec2 describe-instances --instance-ids $instance_id --query <span class=\"hljs-string\">'Reservations&#91;].Instances&#91;].Tags&#91;?Key==`Name`].Value'<\/span> --output text)\n          timestamp=$(date +%Y-%m-%d-%H-%M-%S)\n          ami_name=<span class=\"hljs-string\">\"$instance_name-$timestamp\"<\/span>\n          aws ec2 create-image --instance-id $instance_id --name <span class=\"hljs-string\">\"$ami_name\"<\/span> --no-reboot\n        done\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JSON \/ JSON with Comments\" data-shcb-language-slug=\"json\"><span><code class=\"hljs language-json\">{\r\n    <span class=\"hljs-attr\">\"Version\"<\/span>: <span class=\"hljs-string\">\"2012-10-17\"<\/span>,\r\n    <span class=\"hljs-attr\">\"Statement\"<\/span>: &#91;\r\n        {\r\n            <span class=\"hljs-attr\">\"Sid\"<\/span>: <span class=\"hljs-string\">\"EC2Read\"<\/span>,\r\n            <span class=\"hljs-attr\">\"Effect\"<\/span>: <span class=\"hljs-string\">\"Allow\"<\/span>,\r\n            <span class=\"hljs-attr\">\"Action\"<\/span>: &#91;\r\n                <span class=\"hljs-string\">\"ec2:DescribeInstances\"<\/span>,\r\n                <span class=\"hljs-string\">\"ec2:DescribeImages\"<\/span>,\r\n                <span class=\"hljs-string\">\"ec2:CreateImage\"<\/span>\r\n            ],\r\n            <span class=\"hljs-attr\">\"Resource\"<\/span>: <span class=\"hljs-string\">\"*\"<\/span>\r\n        }\r\n    ]\r\n}\r\n<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JSON \/ JSON with Comments<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">json<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<script src=\"https:\/\/gist.github.com\/devops-school\/2f6267ed106521e24e82b1e365845087.js\"><\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-35631","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=35631"}],"version-history":[{"count":2,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35631\/revisions"}],"predecessor-version":[{"id":35633,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/35631\/revisions\/35633"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=35631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=35631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=35631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}