{"id":1249,"date":"2020-12-21T14:44:29","date_gmt":"2020-12-21T07:44:29","guid":{"rendered":"https:\/\/vticloud.io\/?p=1249"},"modified":"2021-09-20T09:34:37","modified_gmt":"2021-09-20T02:34:37","slug":"tu-dong-gan-the-cac-tai-nguyen-tren-aws-khi-khoi-tao","status":"publish","type":"post","link":"https:\/\/vticloud.io\/en\/tu-dong-gan-the-cac-tai-nguyen-tren-aws-khi-khoi-tao\/","title":{"rendered":"Automatically tagging resources on AWS upon initialization"},"content":{"rendered":"<p><\/p>\n<h2>Idea<\/h2>\n<p>Imagine that every day you and your coworkers need to create a lot of resources on AWS for work. So how to simplify the process of managing, operating, and tracking usage costs? One of the popular methods is tagging. Not everyone can remember having to tag resources upon initialization. Thus, tagging of resources is the optimal solution for minimizing admin-overhead.<\/p>\n<p>Check out the article below presented by<strong> Mr. Le Hai Dang<\/strong> and <strong>Mr. Do Thanh Tung<\/strong> &#8211; Solutions Architect of VTI Cloud.<\/p>\n<h2>Tagging solutions overview<\/h2>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1250 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-tagging.png\" alt=\"aws tagging\" width=\"801\" height=\"147\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-tagging.png 801w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-tagging-300x55.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-tagging-768x141.png 768w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><\/p>\n<ol class=\"ak-ol\" data-indent-level=\"1\">\n<li>\n<p>User initializes resources on AWS. In this example will be the initialization of EC2 Instance with EBS Volume.<\/p>\n<\/li>\n<li>\n<p><strong>AWS CloudTrail<\/strong> will log the API event.<\/p>\n<\/li>\n<li>\n<p><strong>EventBridge<\/strong> will trigger a Lambda function, for example, event: <em>RunInstance.<\/em><\/p>\n<\/li>\n<li>\n<p><strong>Lambda function<\/strong> will be responsible for tagging resources.<\/p>\n<\/li>\n<\/ol>\n<p data-renderer-start-pos=\"927\">When the Lambda function is successfully triggered by the initialization resource, it will tag the resource with:<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"1031\">IAM User v\u00e0 Assume Role:<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"2\">\n<li>\n<p data-renderer-start-pos=\"1059\"><em>Key: Owner<\/em><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"1074\"><em>Value: example@company.xyz<\/em><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"1106\">Root User:<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"2\">\n<li>\n<p data-renderer-start-pos=\"1120\"><em>Key: Owner<\/em><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"1134\"><em>Value: Root<\/em><\/p>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1251 size-large\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/tagging-1-1024x403.png\" alt=\"tagging 1\" width=\"1024\" height=\"403\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/tagging-1-1024x403.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/tagging-1-300x118.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/tagging-1-768x302.png 768w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/tagging-1.png 1411w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h2 id=\"C\u00e1c-b\u01b0\u1edbc-setup\" data-renderer-start-pos=\"1154\"><strong data-renderer-mark=\"true\">Installation Steps<\/strong><\/h2>\n<p>Let&#8217;s first go through some of the services that you need to use in this article. Most of them are the core services that AWS provides such as <strong>CloudTrail, EventBridge<\/strong> (an extremely &#8220;genuine&#8221; upgrade version of CloudWatch Events), <strong>Lambda <\/strong>or<strong> IAM policy<\/strong>, &#8230;<\/p>\n<h3 id=\"1.-CloudTrail:-Trail-(Multi-region)\" data-renderer-start-pos=\"1421\"><strong data-renderer-mark=\"true\">1. <span id=\"44d00cd9-1fe6-46f9-abb9-6bf00d39d477\" data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"44d00cd9-1fe6-46f9-abb9-6bf00d39d477\">CloudTrail: Trail (Multi-region)<\/span><\/strong><\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1252 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail.png\" alt=\"aws cloudtrail\" width=\"590\" height=\"332\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail.png 590w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-300x169.png 300w\" sizes=\"(max-width: 590px) 100vw, 590px\" \/><\/p>\n<p data-renderer-start-pos=\"1463\">AWS CloudTrail works as a supervisor. All actions on AWS accounts are logged by CloudTrail as events. Trail is a setting that helps you handle events. For example: saving to S3, encrypted with AWS KMS,&#8230;<\/p>\n<p data-renderer-start-pos=\"1686\">First, you need to have Trail to detect and respond to API events when creating resources. Trail can be easily created on the AWS Console, refer <span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/cloudtrail-create-a-trail-using-the-console-first-time.html\" href=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/cloudtrail-create-a-trail-using-the-console-first-time.html\" data-renderer-mark=\"true\">here<\/a><\/span>.<\/p>\n<p data-renderer-start-pos=\"1853\"><span id=\"6e8c23a4-5ded-4589-a2bc-b21c06dc828a\" data-renderer-mark=\"true\" data-mark-type=\"annotation\" data-mark-annotation-type=\"inlineComment\" data-id=\"6e8c23a4-5ded-4589-a2bc-b21c06dc828a\">With the successful setup, <strong>EC2 RunInstances API<\/strong> will give you a lot of information such as the time to create <strong>eventTime<\/strong> resource, the <strong>id<\/strong> of the newly created <strong>EC2 instanceID<\/strong>, the <strong>userID<\/strong> of the resource creator <strong>principalId<\/strong>.\u00a0<\/span><\/p>\n<p data-renderer-start-pos=\"1853\"><img loading=\"lazy\" class=\"aligncenter wp-image-1253 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-event-record.png\" alt=\"aws cloudtrail event record\" width=\"1376\" height=\"537\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-event-record.png 1376w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-event-record-300x117.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-event-record-1024x400.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-cloudtrail-event-record-768x300.png 768w\" sizes=\"(max-width: 1376px) 100vw, 1376px\" \/><\/p>\n<p data-renderer-start-pos=\"1853\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/cloudtrail-user-guide.html\" href=\"https:\/\/docs.aws.amazon.com\/awscloudtrail\/latest\/userguide\/cloudtrail-user-guide.html\" data-renderer-mark=\"true\">Learn more about AWS CloudTrail.<\/a><\/span><\/p>\n<h3 id=\"2.-Lambda-function\" data-renderer-start-pos=\"2112\"><strong data-renderer-mark=\"true\">2. Lambda function<\/strong><\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1254 size-medium\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-lambda-300x99.png\" alt=\"aws lambda\" width=\"300\" height=\"99\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-lambda-300x99.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-lambda.png 389w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p data-renderer-start-pos=\"2135\">AWS Lambda referred to as Function as a Service (FaaS), is a serverless service for programmers who don&#8217;t care about infrastructure when running applications. True to the Function definition, Lambda only runs when called.<\/p>\n<p data-renderer-start-pos=\"2348\">To create a Lambda function, log in to AWS Console, select Lambda, and tick <strong data-renderer-mark=\"true\">Create Function<\/strong>. We will create a Lambda function with a Runtime <strong data-renderer-mark=\"true\">Python 3.8<\/strong>. Copy the code is available in <span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/github.com\/doitintl\/ec2-auto-tag\/blob\/master\/lambda_function.py\" href=\"https:\/\/github.com\/doitintl\/ec2-auto-tag\/blob\/master\/lambda_function.py\" data-renderer-mark=\"true\">GitHub Repo<\/a><\/span>.<\/p>\n<p data-renderer-start-pos=\"2348\"><img loading=\"lazy\" class=\"aligncenter wp-image-1255 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-function-github-repo.png\" alt=\"lambda function github repo\" width=\"1411\" height=\"590\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-function-github-repo.png 1411w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-function-github-repo-300x125.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-function-github-repo-1024x428.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-function-github-repo-768x321.png 768w\" sizes=\"(max-width: 1411px) 100vw, 1411px\" \/><\/p>\n<p data-renderer-start-pos=\"2348\">Scroll down to <strong data-renderer-mark=\"true\">Basic settings<\/strong> and edit <strong data-renderer-mark=\"true\">Timeout<\/strong> to <strong data-renderer-mark=\"true\">60s<\/strong> and <strong data-renderer-mark=\"true\">Memory <\/strong>to\u00a0<strong data-renderer-mark=\"true\">128MB.<\/strong><\/p>\n<p data-renderer-start-pos=\"2348\"><img loading=\"lazy\" class=\"aligncenter wp-image-1256 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/memory-lambda.png\" alt=\"memory lambda\" width=\"899\" height=\"747\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/memory-lambda.png 899w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/memory-lambda-300x249.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/memory-lambda-768x638.png 768w\" sizes=\"(max-width: 899px) 100vw, 899px\" \/><\/p>\n<p data-renderer-start-pos=\"2631\">Remember to click Save \ud83d\ude42<\/p>\n<p data-renderer-start-pos=\"2653\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/welcome.html\" href=\"https:\/\/docs.aws.amazon.com\/lambda\/latest\/dg\/welcome.html\" data-renderer-mark=\"true\">Learn more about Lambda.<\/a><\/span><\/p>\n<h3 id=\"3.-C\u1ea5p-quy\u1ec1n-cho-Lambda-function\" data-renderer-start-pos=\"2679\"><strong data-renderer-mark=\"true\">3. Authorize the Lambda function<\/strong><\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1257 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-permission.png\" alt=\"lambda permission\" width=\"990\" height=\"208\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-permission.png 990w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-permission-300x63.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/lambda-permission-768x161.png 768w\" sizes=\"(max-width: 990px) 100vw, 990px\" \/><\/p>\n<p data-renderer-start-pos=\"2716\">In the Lambda interface click on the<strong> Permission<\/strong> tab, there will be an item <em>Execution role.<\/em> Click on Role name that will direct you through the IAM tab. Here we will add an inline policy, select the JSON tab, and paste the following IAM policy:<\/p>\n<pre><code>\r\n{\r\n    \"Version\": \"2012-10-17\",\r\n    \"Statement\": [\r\n        {\r\n            \"Sid\": \"VisualEditor0\",\r\n            \"Effect\": \"Allow\",\r\n            \"Action\": \"ec2:CreateTags\",\r\n            \"Resource\": [\r\n                \"arn:aws:ec2:*:*:instance\/*\",\r\n                \"arn:aws:ec2:*:*:volume\/*\"\r\n            ]\r\n        },\r\n        {\r\n            \"Sid\": \"VisualEditor1\",\r\n            \"Effect\": \"Allow\",\r\n            \"Action\": [\r\n                \"ec2:DescribeInstances\",\r\n                \"ec2:DescribeVolumes\"\r\n            ],\r\n            \"Resource\": \"*\"\r\n        }\r\n    ]\r\n}\r\n<\/code><\/pre>\n<p data-renderer-start-pos=\"3476\">The above policy will allow the Lambda function to find the instance volume and tagging both the <strong>EC2 instance<\/strong> and the <strong>instance volume.<\/strong> Click <strong>Review policy<\/strong>, enter a name, and <strong>Create policy<\/strong>.<\/p>\n<p data-renderer-start-pos=\"3651\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/access_policies.html\" href=\"https:\/\/docs.aws.amazon.com\/IAM\/latest\/UserGuide\/access_policies.html\" data-renderer-mark=\"true\">Learn more about IAM Policy. <\/a><\/span><\/p>\n<h3 id=\"4.-Trigger-Lambda-function-t\u1eeb-AWS-EventBridge\" data-renderer-start-pos=\"3682\"><strong data-renderer-mark=\"true\">4. Trigger Lambda function from AWS EventBridge<\/strong><\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1263 size-large\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-eventbridge-1024x450.png\" alt=\"aws eventbridge\" width=\"1024\" height=\"450\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-eventbridge-1024x450.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-eventbridge-300x132.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-eventbridge-768x337.png 768w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/aws-eventbridge.png 1411w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p data-renderer-start-pos=\"3733\"><strong>AWS EventBridge<\/strong> provides real-time data flow (events, &#8230;) from your own applications, and routes that data to targets like <strong>AWS Lambda.<\/strong><\/p>\n<p data-renderer-start-pos=\"3733\">In this section, we will use <strong>EventBridge<\/strong> to trigger the<em> Lambda function<\/em>.<\/p>\n<p data-renderer-start-pos=\"3964\">Select<strong data-renderer-mark=\"true\"> Create rule. <\/strong>In this section, you need to define a pattern according to the steps below:<\/p>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"4049\">Select <strong data-renderer-mark=\"true\">Event pattern.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4072\">In <strong data-renderer-mark=\"true\">Event matching pattern, <\/strong>select\u00a0<strong data-renderer-mark=\"true\">Pre-defined pattern.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4130\">Next, in<strong data-renderer-mark=\"true\"> Service provider<\/strong> and<strong data-renderer-mark=\"true\"> Service name,<\/strong> select <strong data-renderer-mark=\"true\">AWS<\/strong> and <strong data-renderer-mark=\"true\">EC2.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4203\">In event type, select <strong data-renderer-mark=\"true\">AWS API Call via CloudTrail.<\/strong><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"4255\">Finally, select <strong data-renderer-mark=\"true\">Specific operation<\/strong>, here you enter <strong data-renderer-mark=\"true\">RunInstance.<\/strong><\/p>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1264 size-full\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/define-patern.png\" alt=\"define patern\" width=\"801\" height=\"892\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/define-patern.png 801w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/define-patern-269x300.png 269w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/define-patern-768x855.png 768w\" sizes=\"(max-width: 801px) 100vw, 801px\" \/><\/p>\n<p><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/docs.aws.amazon.com\/eventbridge\/latest\/userguide\/what-is-amazon-eventbridge.html\" href=\"https:\/\/docs.aws.amazon.com\/eventbridge\/latest\/userguide\/what-is-amazon-eventbridge.html\" data-renderer-mark=\"true\">Learn more about AWS EventBridge.<\/a><\/span><\/p>\n<h3 id=\"5.-K\u1ebft-qu\u1ea3-v\u00e0-nh\u1eefng-\u0111i\u1ec1u-c\u1ea7n-l\u01b0u-\u00fd\" data-renderer-start-pos=\"4363\"><strong data-renderer-mark=\"true\">5. Results and things to note<\/strong><\/h3>\n<p><img loading=\"lazy\" class=\"aligncenter wp-image-1265 size-large\" src=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/results-1024x262.png\" alt=\"tagging 2\" width=\"1024\" height=\"262\" srcset=\"https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/results-1024x262.png 1024w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/results-300x77.png 300w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/results-768x196.png 768w, https:\/\/vticloud.io\/wp-content\/uploads\/2020\/12\/results.png 1411w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p data-renderer-start-pos=\"4402\">After successful implementation of the above steps, the setup is complete, you can completely create an EC2 instance and wait for Lambda to tag itself in the instance you just created.<\/p>\n<h4 id=\"L\u01b0u-\u00fd:\" data-renderer-start-pos=\"4589\"><strong data-renderer-mark=\"true\">Note:<\/strong><\/h4>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p>With this approach, only instances created after the installation of the Lambda function can be tagged automatically.<\/p>\n<\/li>\n<li>\n<p>You need to enable Multi-region on CloudTrail for this solution to work across all regions.<\/p>\n<\/li>\n<li>\n<p>CloudTrail takes some time (up to 1 hour) until EventBridge starts calling (invoke) Lambda function.<\/p>\n<\/li>\n<\/ul>\n<p>Above is how <strong>VTI Cloud<\/strong> has applied to be able to control initialization resources on AWS. In addition, it is possible to add an <strong>Instance Scheduler<\/strong> solution to your Lambda function to automatically launch and pause EC2 and RDS instances by working hours to maximize costs.<\/p>\n<h4 id=\"Chi-ph\u00ed-tham-kh\u1ea3o\" data-renderer-start-pos=\"5243\">Cost of services<\/h4>\n<ul class=\"ak-ul\" data-indent-level=\"1\">\n<li>\n<p data-renderer-start-pos=\"5264\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/aws.amazon.com\/cloudtrail\/pricing\/\" href=\"https:\/\/aws.amazon.com\/cloudtrail\/pricing\/\" data-renderer-mark=\"true\">AWS CloudTrail pricing<\/a><\/span><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"5290\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/aws.amazon.com\/s3\/pricing\/\" href=\"https:\/\/aws.amazon.com\/s3\/pricing\/\" data-renderer-mark=\"true\">Amazon S3 pricing<\/a><\/span><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"5311\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/aws.amazon.com\/eventbridge\/pricing\/\" href=\"https:\/\/aws.amazon.com\/eventbridge\/pricing\/\" data-renderer-mark=\"true\">Amazon EventBridge pricing<\/a><\/span><\/p>\n<\/li>\n<li>\n<p data-renderer-start-pos=\"5341\"><span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/aws.amazon.com\/lambda\/pricing\/\" href=\"https:\/\/aws.amazon.com\/lambda\/pricing\/\" data-renderer-mark=\"true\">AWS Lambda Pricing<\/a><\/span><\/p>\n<\/li>\n<\/ul>\n<h2 data-renderer-start-pos=\"2970\"><strong data-renderer-mark=\"true\">About VTI Cloud<\/strong><\/h2>\n<p data-renderer-start-pos=\"6835\"><strong data-renderer-mark=\"true\">VTI Cloud<\/strong>\u00a0is an\u00a0<span style=\"color: #ff6600;\"><a class=\"sc-iELTvK jHUAie\" style=\"color: #ff6600;\" title=\"https:\/\/vticloud.io\/news_events\/vti-cloud-chinh-thuc-tro-thanh-advanced-consulting-partner-cua-aws\/\" href=\"https:\/\/vticloud.io\/news_events\/vti-cloud-chinh-thuc-tro-thanh-advanced-consulting-partner-cua-aws\/\" data-renderer-mark=\"true\">Advanced Consulting Partner<\/a><\/span>\u00a0of AWS Vietnam with a team of over 50+ AWS certified solution engineers. With the desire to support customers in the journey of digital transformation and migration to the AWS cloud, VTI Cloud is proud to be a pioneer in consulting solutions, developing software, and deploying AWS infrastructure to customers<strong data-renderer-mark=\"true\">\u00a0in Vietnam<\/strong>\u00a0<strong data-renderer-mark=\"true\">and Japan.<\/strong><\/p>\n<p data-renderer-start-pos=\"7217\">Building safe, high-performance, flexible, and cost-effective architectures for customers is\u00a0<strong data-renderer-mark=\"true\">VTI Cloud\u2019s<\/strong>\u00a0leading mission in enterprise technology mission.<\/p>\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Idea Imagine that every day you and your coworkers need to create a lot of resources on AWS for work. So how to simplify the process of managing, operating, and tracking usage costs? One of the popular methods is tagging. Not everyone can remember having to tag resources upon initialization. Thus, tagging of resources is [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":1267,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[13],"tags":[69,67,68,29],"_links":{"self":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/1249"}],"collection":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/comments?post=1249"}],"version-history":[{"count":1,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/1249\/revisions"}],"predecessor-version":[{"id":3141,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/posts\/1249\/revisions\/3141"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/media\/1267"}],"wp:attachment":[{"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/media?parent=1249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/categories?post=1249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vticloud.io\/en\/wp-json\/wp\/v2\/tags?post=1249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}