<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nam La</title>
    <description>The latest articles on DEV Community by Nam La (@namlahai9).</description>
    <link>https://dev.to/namlahai9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3104748%2Fa00d19a4-c91f-44b4-adda-36e86df7fcff.JPG</url>
      <title>DEV Community: Nam La</title>
      <link>https://dev.to/namlahai9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/namlahai9"/>
    <language>en</language>
    <item>
      <title>Migrate Droplet from DO to AWS using AWS Migration Application Service (MGN)</title>
      <dc:creator>Nam La</dc:creator>
      <pubDate>Mon, 29 Dec 2025 08:51:36 +0000</pubDate>
      <link>https://dev.to/namlahai9/migrate-droplet-from-do-to-aws-using-aws-migration-application-service-mgn-o93</link>
      <guid>https://dev.to/namlahai9/migrate-droplet-from-do-to-aws-using-aws-migration-application-service-mgn-o93</guid>
      <description>&lt;h2&gt;
  
  
  I. Preparation
&lt;/h2&gt;

&lt;p&gt;Before you begin, make sure you have the following information and permissions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Account: Activated and authorized to create EC2, VPC, and MGN.&lt;/li&gt;
&lt;li&gt;DigitalOcean Account: Root access (SSH) to the Droplet to be migrated.&lt;/li&gt;
&lt;li&gt;AWS IAM User: Create an IAM User with the AWSApplicationMigrationAgentInstallationPolicy permission to obtain the Access Key ID and Secret Access Key.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  II. Steps
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Initialize the VPC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initialize the VPC as the environment for the server to migrate to AWS.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to VPC → Create VPC to create a VPC with the following configuration:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rb4y1zyp7qeyyup9aua.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9rb4y1zyp7qeyyup9aua.png" alt=" " width="487" height="742"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3viu6iph45j45qhtjvdh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3viu6iph45j45qhtjvdh.png" alt=" " width="486" height="763"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verify the VPC after initialization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Initialize AWS MGN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If this is your first time using MGN in this Region, you need to initialize the service:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in to the AWS Console.&lt;/li&gt;
&lt;li&gt;Search for and select the AWS Application Migration Service.&lt;/li&gt;
&lt;li&gt;Click Get started to initialize MGN:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fki99vf3dr4gcmoacyfdv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fki99vf3dr4gcmoacyfdv.jpg" alt=" " width="800" height="273"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On the Replication settings screen → Edit, configure the template for the Replication instance:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9hiftz1c403m22jfneh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw9hiftz1c403m22jfneh.png" alt=" " width="800" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Staging area subnet: Select the subnet in the VPC that you want to use to receive temporary data.&lt;/li&gt;
&lt;li&gt;Replication Server instance type: Select the instance type that suits your needs; it will usually have a configuration equivalent to the server on DO.&lt;/li&gt;
&lt;li&gt;Leave the remaining items as default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz30sb5h2v9v30f5d98pr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz30sb5h2v9v30f5d98pr.png" alt=" " width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click Save template.&lt;/li&gt;
&lt;li&gt;Go to Launch template → Edit to configure Launch template.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzntxv991sijigkj9cyt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzntxv991sijigkj9cyt.png" alt=" " width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uncheck "Activate instance type right-sizing" to customize the configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F420vu96nugq77qic4t4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F420vu96nugq77qic4t4c.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select SG and instance type.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz9bbphnhepoa6l93soy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz9bbphnhepoa6l93soy.png" alt=" " width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Install the Replication Agent on the DigitalOcean Droplet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This step connects the Droplet to AWS. You need to SSH into your Droplet and change the password for the "root" account.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: You need to back up your server on DO before proceeding.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the AWS MGN Console, select the Source servers menu.&lt;/li&gt;
&lt;li&gt;Click the Add server button.&lt;/li&gt;
&lt;li&gt;Select the operating system (Linux or Windows). For example, select Linux.&lt;/li&gt;
&lt;li&gt;Copy the two commands provided by AWS to download and install the Agent. They will look like this:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;sudo wget -O ./aws-replication-installer-init https://aws-application-migration-service-ap-southeast-1.s3.ap-southeast-1.amazonaws.com/latest/linux/aws-replication-installer-init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo chmod +x aws-replication-installer-init; sudo ./aws-replication-installer-init --region ap-southeast-1&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After running the command, enter the Access Key ID &amp;amp; Secret Access Key and select the hard drive to sync to AWS. The installation process will then take approximately 5-10 minutes to complete, and the AWS Replication Agent will begin replicating data to AWS.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Configure Launch Settings (Configure the Target Server)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After installing the Agent, the Droplet will appear in the list of Source servers on AWS MGN. At this point, AWS is starting to synchronize data (Initial Sync). While waiting, configure the target server (an EC2 will be created).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffy4a563hfjy8chd0xox2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffy4a563hfjy8chd0xox2.png" alt=" " width="800" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click on the server name that appears in the list.&lt;/li&gt;
&lt;li&gt;Select the Launch settings tab.&lt;/li&gt;
&lt;li&gt;In the EC2 Launch Template section, click Edit.&lt;/li&gt;
&lt;li&gt;The Launch Template window will appear; you need to edit the important parameters for the target server:

&lt;ul&gt;
&lt;li&gt;Instance Type: Select the desired server configuration (e.g., t3.medium, c5.large,...)&lt;/li&gt;
&lt;li&gt;Subnet: Select the subnet where EC2 will officially run.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save the Launch Template.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Launch Test Instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.1 Launch Test Instance&lt;/strong&gt;&lt;br&gt;
This step will guide you on how to launch a test instance after the data migration process is complete.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bggb6htog22xrup15hk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bggb6htog22xrup15hk.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait for the replication process to complete; the Migration lifecycle column will show "Ready for testing" and the Data replication status will show "Healthy".&lt;/li&gt;
&lt;li&gt;Tick Server → Test and cutover → select Launch test instances.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1q4lhr95b6tf2pspang4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1q4lhr95b6tf2pspang4.png" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lifecycle will now switch to Test in progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.2 Verify Test instance&lt;/strong&gt;&lt;br&gt;
This step will verify that the created test instance has been successfully tested.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuitfcqvlwvdfrz3qxf93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuitfcqvlwvdfrz3qxf93.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wait for the test instance launch process to complete; MGN will display a notification like the one shown in the image.&lt;/li&gt;
&lt;li&gt;In EC2, you will see an EC2 instance with a hostname similar to the Source Server that has been created.&lt;/li&gt;
&lt;li&gt;Go to MGN → Launch history to view the test instance launch log.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5.3 Launch Cutover&lt;/strong&gt;&lt;br&gt;
This step will perform a cutover to launch the official EC2 instance.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to MGN → select server → Test and cutover → Mark as Ready for cutover to delete the test instance.&lt;/li&gt;
&lt;li&gt;Wait for the migration lifecycle to change to Ready for cutover → click Test and cutover → Launch cutover instances&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfgg0r67cd21wkqtd3ce.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpfgg0r67cd21wkqtd3ce.png" alt=" " width="615" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.4 Verify the Cutover process and check that the data has been migrated.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upon accessing EC2, you will see that MGN has created an EC2 instance configured according to the Launch template. This EC2 instance was created from snapshots that were replicated previously.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc23ad21x1rju8ezck01e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc23ad21x1rju8ezck01e.png" alt=" " width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.5 Finalize cutover&lt;/strong&gt;&lt;br&gt;
The finalize cutover will mark the end of the migration process, and MGN will stop data from the source to AWS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiji8vn3rqse2zrcae0al.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiji8vn3rqse2zrcae0al.png" alt=" " width="800" height="284"&gt;&lt;/a&gt;&lt;br&gt;
Done!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;I will address the issues encountered during the migration process in a later article. Thank you for taking the time to read.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>ec2</category>
    </item>
    <item>
      <title>Budget Controls for AWS: Automatically Manage Your Cloud Costs</title>
      <dc:creator>Nam La</dc:creator>
      <pubDate>Wed, 17 Sep 2025 10:04:34 +0000</pubDate>
      <link>https://dev.to/namlahai9/budget-controls-for-aws-automatically-manage-your-cloud-costs-4m1d</link>
      <guid>https://dev.to/namlahai9/budget-controls-for-aws-automatically-manage-your-cloud-costs-4m1d</guid>
      <description>&lt;p&gt;If you are new to AWS, you may be wondering how you can learn and experiment with cloud services while keeping your spend under your control. Budget Controls for AWS is an open-source solution designed to solve this problem. This solution was designed for customers new to AWS with no prior experience. It automatically watches your spending and takes actions you define when costs reach certain thresholds. &lt;/p&gt;

&lt;p&gt;The solution uses a custom tag named &lt;strong&gt;&lt;em&gt;BudgetControlAction&lt;/em&gt;&lt;/strong&gt; which is automatically applied to supported resources. The allowed case-sensitive values for this tag are &lt;strong&gt;&lt;em&gt;Inform&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Stop&lt;/em&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;em&gt;Terminate&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The default value is &lt;strong&gt;Inform&lt;/strong&gt;. When the budget is consumed and the actions are triggered, with this value set, the account owner is simply reminded that this resource is in use, and no further action is taken.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The next allowed value is &lt;strong&gt;Stop&lt;/strong&gt;. If this value is set by the account owner, when the actions are triggered, this will stop the resource. The resource will no longer generate charges, and can be restarted whenever the account owner wishes. Note, any service dependencies, such as storage attached to compute instances, will continue to generate charges.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The last allowed value is &lt;strong&gt;Terminate&lt;/strong&gt;, which is destructive. When the actions are triggered, resources with this tag value will be permanently deleted. This value should be used for test or development resources that can be easily recreated later. As a reminder, this action is permanent, and not reversible.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;The Budget Controls for AWS solution can be found on Github at &lt;a href="https://github.com/awslabs/budget-controls-for-aws" rel="noopener noreferrer"&gt;https://github.com/awslabs/budget-controls-for-aws&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6c1vauxdzy6q7lg9djh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs6c1vauxdzy6q7lg9djh.jpg" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deploying the solution&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create Stack in CloudFormation&lt;/strong&gt;&lt;br&gt;
The file named &lt;em&gt;budgetcontrol_resources.yaml&lt;/em&gt; is an AWS CloudFormation template that you will use to deploy the solution. &lt;br&gt;
&lt;em&gt;Note: The Budget Controls for AWS solution runs in a single region.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7tq4egkewj9diilc2ma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq7tq4egkewj9diilc2ma.png" alt=" " width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click &lt;strong&gt;Next&lt;/strong&gt;, and you will be taken to the &lt;strong&gt;Specify stack details&lt;/strong&gt; page. Supply the required parameters for the stack. Pay attention to spending values ​​and email feedback information.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3mh8bjf8vh3eoz4udfq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs3mh8bjf8vh3eoz4udfq.png" alt=" " width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Managing the tag values&lt;/strong&gt;&lt;br&gt;
Entering a new value for the tag. I use the "Stop" value so that when the spending threshold is reached the tagged resource will stop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtuff2vplyyyrj3mtms6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwtuff2vplyyyrj3mtms6.png" alt=" " width="800" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check if resource is tagged or not? Here I have tagged a running ec2 instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdpgasayqtd054hq4xfo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqdpgasayqtd054hq4xfo.png" alt=" " width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actions taken once budget is spent&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When your budget is 80% consumed, an email will be sent. No further actions will be taken.&lt;/li&gt;
&lt;li&gt;When your budget is 90% consumed, AWS Budgets will send a message to an SNS topic, which causes the workflow to execute.&lt;/li&gt;
&lt;li&gt;By default the workflow is triggered at 90% of the budget. You may change this default behavior to trigger at 100% by manually editing the budget in the Billing and Cost Management console, under Budgets.&lt;/li&gt;
&lt;li&gt;After the workflow has executed, the resources can be restarted or rebuilt as desired. Unless the budget is changed to a higher amount, it will only trigger the workflow at most once each month. When the budget is reset on the first day of the next month, it will not change the state of any resources.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Note: OpenSearch clusters cannot be stopped; they can only be deleted. Therefore, "Terminate" is the only tag value that will result in a destructive action for OpenSearch clusters. Values of "Inform" and "Stop" will simply report that the resource is in use.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>cloudcomputing</category>
    </item>
    <item>
      <title>MASTERING AWS COSTS Simple, Effective Strategies</title>
      <dc:creator>Nam La</dc:creator>
      <pubDate>Tue, 05 Aug 2025 07:53:27 +0000</pubDate>
      <link>https://dev.to/namlahai9/mastering-aws-costs-simple-effective-strategies-3693</link>
      <guid>https://dev.to/namlahai9/mastering-aws-costs-simple-effective-strategies-3693</guid>
      <description>&lt;p&gt;&lt;em&gt;This is my presentation at AWS Community Day Vietnam 2025&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Optimize AWS Costs Effectively with Service Screener&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When using Amazon Web Services (AWS) cloud services, cost control and optimization is one of the top priorities for every individual and organization. And today I will introduce a useful tool that helps us evaluate and improve the system on our AWS environment, which is &lt;strong&gt;Service-Screener&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1j2lug19jje224l97tp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1j2lug19jje224l97tp.png" alt=" " width="698" height="221"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Service-Screener&lt;/strong&gt; is an open source tool from AWS that allows us to automatically scan our entire AWS environment. It will provide recommendations based on AWS best practices for Security, Reliability, Performance, and Cost Optimization.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why use Screener?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95zu5vop69mfzl0odcxb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F95zu5vop69mfzl0odcxb.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: Detect potential security vulnerabilities and suboptimal configurations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reliability&lt;/strong&gt;: Ensure systems are built to be stable and resilient.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cost Optimization&lt;/strong&gt;: Report on opportunities to reduce costs without compromising performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Operational Excellence&lt;/strong&gt;: Improve operational processes and manage your AWS environment effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance Efficiency&lt;/strong&gt;: Ensure resources are used in the most efficient way.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Deploy screener for organization&lt;/strong&gt;
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;I will leave the demo video below&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Suppose there is an organization with many member companies, each company is an aws account that joins the same Organization. We will call the member accounts &lt;strong&gt;User Accounts&lt;/strong&gt; and the organization's administrative account &lt;strong&gt;Management Account&lt;/strong&gt;.&lt;br&gt;
The steps are as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I.  Create IAM Role&lt;/strong&gt;&lt;br&gt;
Need to create IAM Role on User Accounts and declare External ID. Enter ID information of the administrator account (root). Finally, assign it "&lt;em&gt;ReadOnlyAccess&lt;/em&gt;" permission and set RoleName as:"&lt;em&gt;ServiceScreenerAssumeRole&lt;/em&gt;" or any value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7n9gr92zg2cnuu6oj5x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7n9gr92zg2cnuu6oj5x.png" alt=" " width="656" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;II. Create Stackset&lt;/strong&gt;&lt;br&gt;
On Management Account create Stackset in CloudFormation with External ID value &amp;amp; RoleName declared above.&lt;br&gt;
I will leave the crossAccountRoleCF.yml file information here: "&lt;a href="https://github.com/aws-samples/service-screener-v2/blob/main/usecases/crossAccounts/crossAccountRoleCF.yml" rel="noopener noreferrer"&gt;https://github.com/aws-samples/service-screener-v2/blob/main/usecases/crossAccounts/crossAccountRoleCF.yml&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d192wmebc5arm104j6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4d192wmebc5arm104j6w.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0j4i8bcauh67ukcgwcb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx0j4i8bcauh67ukcgwcb.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;III. Install Screener&lt;/strong&gt;&lt;br&gt;
Proceed to install Service-Screener on Management Account&lt;br&gt;
&lt;code&gt;cd /tmp&lt;br&gt;
python3 -m venv .&lt;br&gt;
source bin/activate&lt;br&gt;
python3 -m pip install --upgrade pip&lt;br&gt;
rm -rf service-screener-v2&lt;br&gt;
git clone https://github.com/aws-samples/service-screener-v2.git&lt;br&gt;
cd service-screener-v2&lt;br&gt;
pip install -r requirements.txt&lt;br&gt;
python3 unzip_botocore_lambda_runtime.py&lt;br&gt;
alias screener='python3 $(pwd)/main.py'&lt;/code&gt;&lt;br&gt;
"&lt;a href="https://github.com/aws-samples/service-screener-v2" rel="noopener noreferrer"&gt;https://github.com/aws-samples/service-screener-v2&lt;/a&gt;" &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IV. Create configuration file&lt;/strong&gt;&lt;br&gt;
After completing the installation, proceed to create configuration file to select the accounts to scan.&lt;br&gt;
&lt;code&gt;python3 organizationAccountsInit.py&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut2b3dm1wsxlgd874ur3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fut2b3dm1wsxlgd874ur3.png" alt=" " width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter the RoleName &amp;amp; ExternalID values as set above. In case the Role name has been set to the same value, press Enter to skip.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V. Scan&lt;/strong&gt;&lt;br&gt;
After completing the above steps, Screener will suggest a script to scan the selected accounts.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;screener --region ALL --crossAccounts 1&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr185hzkbnka76bs21no.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr185hzkbnka76bs21no.png" alt=" " width="666" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The tool will use the &lt;em&gt;crossAccounts.json&lt;/em&gt; file to perform AssumeRole on each member account and scan. The results will be aggregated and displayed in a single report. Download the file to see the results displayed on the .html file.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Video Demo:&lt;/strong&gt;&lt;/em&gt; "&lt;a href="https://drive.google.com/file/d/19OK4hZWZeVhVYSNN4K8_YbJ0jJ31mveO/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/19OK4hZWZeVhVYSNN4K8_YbJ0jJ31mveO/view?usp=sharing&lt;/a&gt;"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Thanks for your time. I hope you enjoy it.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>programming</category>
      <category>productivity</category>
      <category>cloud</category>
    </item>
    <item>
      <title>[AWS] Cloud Financial Management (CFM)</title>
      <dc:creator>Nam La</dc:creator>
      <pubDate>Thu, 03 Jul 2025 08:47:53 +0000</pubDate>
      <link>https://dev.to/namlahai9/aws-cloud-financial-management-cfm-2dme</link>
      <guid>https://dev.to/namlahai9/aws-cloud-financial-management-cfm-2dme</guid>
      <description>&lt;p&gt;&lt;strong&gt;Cloud financial management (CFM)&lt;/strong&gt; is not just about controlling costs, but also about transforming existing financial processes to ensure cost transparency, better control, rational planning, and optimization in the AWS (Amazon Web Services) environment. Cloud financial management (CFM) is not just about reducing costs, but also about leveraging the agility, innovation, and scalability of AWS to maximize the value that the cloud brings to the business.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;## Key Components of AWS CFM&lt;/strong&gt;&lt;br&gt;
AWS CFM is built on four key pillars: Culture Change, Platform, Visualization, and Service Optimization. Each component plays a critical role in achieving cost efficiency and financial governance in the cloud.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Culture Change&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtue33n4wll1tnplgrbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhtue33n4wll1tnplgrbb.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;br&gt;
 Implementing CFM requires a change in organizational culture to promote cost awareness and accountability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build CFM Strategy&lt;/li&gt;
&lt;li&gt;Foster Cost-Aware Culture&lt;/li&gt;
&lt;li&gt;Create Communication Channels&lt;/li&gt;
&lt;li&gt;Ongoing Education&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Foundations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gqvo0p0klhiwak8bv0n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gqvo0p0klhiwak8bv0n.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;br&gt;
 Here are the basic technical steps to get started with cost management.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Setup Budgets&lt;/strong&gt;: Set limits and track spending.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup Cost Anomaly Detection&lt;/strong&gt;: Detect unusual costs and set alerts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Setup Tagging Strategy&lt;/strong&gt;: Build policies and implement resource tagging to easily allocate costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use AWS Trusted Advisor&lt;/strong&gt;: Review cost optimization recommendations and implement changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enable AWS Compute Optimizer&lt;/strong&gt;: Analyze usage patterns and optimize computing resources..&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Visualizations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1sqcrcb5zyed21d77ye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc1sqcrcb5zyed21d77ye.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;br&gt;
 Visualization tools provide insights into cloud spending and usage:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Cost Explorer&lt;/strong&gt;: Analyze and forecast AWS costs and usage trends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cloud Intelligence Dashboards&lt;/strong&gt;: Use interactive dashboards to monitor cloud resources in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AWS Data Exports&lt;/strong&gt;: Export AWS data for external analysis and reporting to support decision making.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Service Optimization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftver783svc420misogf5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftver783svc420misogf5.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Optimizing specific AWS services is key to reducing costs while maintaining performance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rightsizing&lt;/strong&gt;: Adjust EC2, RDS, EBS to match workload needs, eliminating inefficiencies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimize Storage&lt;/strong&gt;: Use S3 and Glacier to store and tier data, reducing storage costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reserved Instances (RIs)&lt;/strong&gt; and &lt;strong&gt;Savings Plans&lt;/strong&gt;: Apply long-term pricing models for stable workloads to save significant costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Idle Resource Management&lt;/strong&gt;: Monitor and turn off unused or idle resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Auto-Scaling&lt;/strong&gt;: Automatically scale resources based on actual demand to optimize costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Practices&lt;/strong&gt;: Apply cost-saving strategies such as using spot instances or optimizing data transfer costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;5. Benefits of AWS CFM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Implementing CFM brings many practical benefits to organizations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduce Total AWS Costs&lt;/strong&gt;: Systematic optimization leads to significant cost savings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increase Resource Utilization&lt;/strong&gt;: Ensure compute and storage resources are used efficiently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Improve Cost Visibility&lt;/strong&gt;: Tools like AWS Cost Explorer provide clear visibility into spending trends.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Proactive Cost Management&lt;/strong&gt;: Real-time monitoring and alerts help prevent budget overruns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Continuous Optimization Process&lt;/strong&gt;: Establish a sustainable process to maintain long-term cost efficiency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Increase Cost Awareness&lt;/strong&gt;: Create a culture of financial accountability across the organization.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;6. Implementing AWS CFM: A Structured Approach&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d32qjsojgmqjjiq70he.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7d32qjsojgmqjjiq70he.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To successfully implement CFM, organizations should follow a structured approach that includes three phases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Engagement Launch:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define cost optimization goals and plan for savings.&lt;/li&gt;
&lt;li&gt;Establish communication with stakeholders and identify application owners responsible for managing costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Prepare &amp;amp; Test Cost Optimization Plan:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop a detailed plan with specific actions and timelines.&lt;/li&gt;
&lt;li&gt;Test the feasibility and effectiveness of the plan before implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Optimization Execution:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Apply optimization strategies such as resource scaling or using RIs/Savings Plans.&lt;/li&gt;
&lt;li&gt;Monitor results and adjust as needed to achieve the desired cost reduction.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;AWS Cloud Financial Management is essential for organizations looking to maximize the value of their cloud investments. It's not just technical tools, it's a combination of people, processes, and technology.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>cloudcomputing</category>
      <category>cfm</category>
    </item>
    <item>
      <title>[AWS] Cost optimize when using Amazon EC2</title>
      <dc:creator>Nam La</dc:creator>
      <pubDate>Tue, 29 Apr 2025 10:52:45 +0000</pubDate>
      <link>https://dev.to/namlahai9/aws-cost-optimize-when-using-amazon-ec2-12cm</link>
      <guid>https://dev.to/namlahai9/aws-cost-optimize-when-using-amazon-ec2-12cm</guid>
      <description>&lt;p&gt;Hello everyone,&lt;/p&gt;

&lt;p&gt;Amazon Elastic Compute Cloud (EC2) is a core AWS service, providing flexible and powerful computing capabilities. However, EC2 costs can escalate if not managed effectively. Based on the AWS cost analysis document from partner, here are practical methods to optimize EC2 costs while maintaining performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. Remove Unused Resources&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Delete Unused Elastic IPs&lt;/strong&gt;&lt;br&gt;
Elastic IPs are static IP addresses allocated to EC2 instances. If not attached to a running instance, they still incur charges. According to the image, removing unused Elastic IPs can save significantly&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi515vlf9qj792yuquqq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi515vlf9qj792yuquqq4.png" alt=" " width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the list of Elastic IPs in the AWS Management Console (VPC &amp;gt; Elastic IPs).&lt;/li&gt;
&lt;li&gt;Identify IPs not attached to any instance or resource.&lt;/li&gt;
&lt;li&gt;Delete unnecessary IPs after ensuring they won’t impact the system.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Delete Unused EBS Volumes&lt;/strong&gt;&lt;br&gt;
Elastic Block Store (EBS) volumes are storage disks attached to EC2 instances. Unused volumes still incur costs.The image highlights that deleting 9 unused EBS volumes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhdrmrwx72e3tx59gx42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqhdrmrwx72e3tx59gx42.png" alt=" " width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the AWS Console (EC2 &amp;gt; Volumes) to list volumes in the "Available" state (not attached to any instance).&lt;/li&gt;
&lt;li&gt;Evaluate whether the volume is still needed before deleting.&lt;/li&gt;
&lt;li&gt;Remove unused volumes to avoid unnecessary costs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. Optimize Savings Plans Usage&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Savings Plans are an AWS pricing model that reduces costs by committing to a certain level of resource usage. However, underutilizing these commitments can lead to waste. The image that some Savings Plans have low utilization rates (as low as 13% for certain plans), resulting in inefficient spending.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp35e32l75pa66yy63t1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdp35e32l75pa66yy63t1.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F980fu5nx2nawk6l72caq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F980fu5nx2nawk6l72caq.png" alt=" " width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check Savings Plans utilization&lt;/strong&gt;: Use AWS Cost Explorer to review the utilization rate of Savings Plans. Plans with utilization below 100% (e.g., 32% or 38%) indicate underused EC2 resources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adjust Instance Types&lt;/strong&gt;: Switch to instance types that better match actual needs. For instance, if a Savings Plan for "r6g" instances is only 31% utilized, consider switching to "t3" or other types with lower demand.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Assess usage needs&lt;/strong&gt;: Conduct a survey of EC2 usage purposes to ensure instance types and Savings Plans align with workload requirements. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Review and Optimize EC2 Resource Usage&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;- Reduce Data Transfer Costs&lt;/strong&gt;&lt;br&gt;
Data Transfer costs related to EC2 can spike due to data movement between Availability Zones (AZs) or through Elastic IPs/Elastic Load Balancers (ELB).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Consolidate resources to a single AZ&lt;/strong&gt;: Move EC2 instances to the same AZ to reduce inter-AZ data transfer costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use CloudFront&lt;/strong&gt;: Integrate AWS CloudFront to cache and distribute static content, reducing direct data transfers from EC2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Review ELB configuration&lt;/strong&gt;: Ensure ELB only serves necessary requests to avoid excessive data transfers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;- Optimize CloudWatch for EC2&lt;/strong&gt;&lt;br&gt;
CloudWatch is used to monitor EC2, but frequent API calls like GetMetricData can inflate costs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reduce metric volume&lt;/strong&gt;: Review and limit the number of metrics collected from CloudWatch to only those essential for monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Adjust collection frequency&lt;/strong&gt;: Decrease the frequency of GetMetricData API calls, e.g., from every minute to every 5 minutes if real-time data isn’t required.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use CloudWatch Logs Insights&lt;/strong&gt;: Instead of continuous API calls, leverage tools like CloudWatch Logs Insights for more efficient log analysis.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. Choose the Right Instance Type&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Selecting the appropriate instance type is critical for cost optimization. The document suggests adjusting instance types to align with purchased Savings Plans, particularly when types like "t3" have lower costs than committed plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Specific Actions:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use AWS Compute Optimizer to get recommendations for instance types based on workload patterns.&lt;/li&gt;
&lt;li&gt;Switch to newer-generation instances (e.g., t3, m5) if using older types (e.g., t2, m4) for better performance at lower costs.&lt;/li&gt;
&lt;li&gt;Consider Spot Instances for non-critical workloads, which can save up to 90% compared to On-Demand pricing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Optimizing EC2 costs on AWS not only reduces expenses but also improves resource efficiency. Based on partner’s document, key actions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deleting unused Elastic IPs and EBS volumes to save $280.86/month immediately (Excerpt from actual project document).&lt;/li&gt;
&lt;li&gt;Optimizing Savings Plans by adjusting instance types and reviewing utilization rates.&lt;/li&gt;
&lt;li&gt;Reducing Data Transfer and CloudWatch costs through resource reconfiguration and adjusted data collection frequencies.&lt;/li&gt;
&lt;li&gt;Selecting instance types that align with actual needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Note&lt;/em&gt;&lt;/strong&gt;: &lt;em&gt;Before making changes, thoroughly evaluate potential impacts to ensure system operations remain unaffected. Leverage tools like AWS Cost Explorer and Compute Optimizer to support the optimization process.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Thank you very much!&lt;/code&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>amazonec2</category>
      <category>ec2</category>
    </item>
  </channel>
</rss>
