<?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: Srinivasulu Paranduru</title>
    <description>The latest articles on DEV Community by Srinivasulu Paranduru (@srinivasuluparanduru).</description>
    <link>https://dev.to/srinivasuluparanduru</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%2F845299%2F39c6f5fc-7d4e-4c0a-9028-e1cd08e6ca34.jpeg</url>
      <title>DEV Community: Srinivasulu Paranduru</title>
      <link>https://dev.to/srinivasuluparanduru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/srinivasuluparanduru"/>
    <language>en</language>
    <item>
      <title>Google Cloud Storage - Labs - Step by step</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Thu, 14 May 2026 14:16:43 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/google-cloud-storage-3p2l</link>
      <guid>https://dev.to/srinivasuluparanduru/google-cloud-storage-3p2l</guid>
      <description>&lt;p&gt;&lt;strong&gt;Cloud Storage&lt;/strong&gt; - Your Inifinitely Scalable Object Store&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Creating an Cloud Storage Bucket&lt;/li&gt;
&lt;li&gt;Access control lists&lt;/li&gt;
&lt;li&gt;Enable lifecycle management&lt;/li&gt;
&lt;li&gt;Enable versioning&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Creating an Cloud Storage Bucket
&lt;/h2&gt;

&lt;p&gt;1.In the Google Cloud console, in the Navigation menu (Navigation menu icon), click Cloud Storage &amp;gt; Buckets.&lt;/p&gt;

&lt;p&gt;Note :A bucket must have a globally unique name. &lt;/p&gt;

&lt;p&gt;2.Create &lt;br&gt;
3.Specify the following, and leave the remaining settings as their defaults:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name :  Enter a globally unique name&lt;/li&gt;
&lt;li&gt;Location type : Region&lt;/li&gt;
&lt;li&gt;Region        : Select Region&lt;/li&gt;
&lt;li&gt;Enforce public access prevention on this bucket : unchecked&lt;/li&gt;
&lt;li&gt;Access control : Fine-grained 
4.Make a note of the bucket name. It will be used later in this lab and referred to as [BUCKET_NAME].
5.Click Create.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Download a sample file using CURL and make two copies
&lt;/h2&gt;

&lt;p&gt;1.In the Cloud console, click Activate Cloud Shell&lt;br&gt;
2.If prompted, click Continue.&lt;br&gt;
3.Store [BUCKET_NAME] in an environment variable:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export BUCKET_NAME=&amp;lt;enter bucket name  here&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;4.Verify it with echo:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo $BUCKET_NAME&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;5.Run the following command to download a sample file (this sample file is a publicly available Hadoop documentation HTML file):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
curl &lt;span class="se"&gt;\&lt;/span&gt;
https://hadoop.apache.org/docs/current/&lt;span class="se"&gt;\&lt;/span&gt;
hadoop-project-dist/hadoop-common/&lt;span class="se"&gt;\&lt;/span&gt;
ClusterSetup.html &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; setup.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6.To make copies of the file, run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="nb"&gt;cp &lt;/span&gt;setup.html setup2.html
&lt;span class="nb"&gt;cp &lt;/span&gt;setup.html setup3.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Access control lists
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Task 2: Access control lists (ACLs)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You set access control lists to restrict access to the file that you copy to the Cloud Storage bucket.&lt;/p&gt;

&lt;p&gt;Copy the file to the bucket and configure the access control list&lt;/p&gt;

&lt;p&gt;1.Run the following command to copy the first file to the bucket:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gcloud storage &lt;span class="nb"&gt;cp &lt;/span&gt;setup.html gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.To get the default access list that's been assigned to setup.html, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gsutil acl get gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/setup.html  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; acl.txt
&lt;span class="nb"&gt;cat &lt;/span&gt;acl.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3.To set the access list to private and verify the results, run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
gsutil acl &lt;span class="nb"&gt;set &lt;/span&gt;private gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/setup.html
gsutil acl get gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/setup.html  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; acl2.txt
&lt;span class="nb"&gt;cat &lt;/span&gt;acl2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4.To update the access list to make the file publicly readable, run the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
gsutil acl ch &lt;span class="nt"&gt;-u&lt;/span&gt; AllUsers:R gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/setup.html
gsutil acl get gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;/setup.html  &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; acl3.txt
&lt;span class="nb"&gt;cat &lt;/span&gt;acl3.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Enable lifecycle management
&lt;/h2&gt;

&lt;p&gt;Task 3: Enable lifecycle management&lt;/p&gt;

&lt;p&gt;In this task, you enable lifecycle management for a Cloud Storage bucket to automate the deletion of objects after a specified period.&lt;/p&gt;

&lt;p&gt;View the current lifecycle policy for the bucket&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run the following command to view the current lifecycle policy:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
gsutil lifecycle get gs://&lt;span class="nv"&gt;$BUCKET_NAME&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: There is no lifecycle configuration. You create one in the next steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create a JSON lifecycle policy file
&lt;/h3&gt;

&lt;p&gt;1.To create a file named life.json, run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano life.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.Paste the following value into the life.json file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"rule"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Delete"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"age"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;31&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: These instructions tell Cloud Storage to delete the object after 31 days.&lt;/p&gt;

&lt;p&gt;3.Press Ctrl+O, ENTER to save the file, and then press Ctrl+X to exit nano.&lt;/p&gt;

&lt;h3&gt;
  
  
  Set the policy and verify
&lt;/h3&gt;

&lt;p&gt;1.To set the policy, run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gsutil lifecycle set life.json gs://$BUCKET_NAME&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.To verify the policy, run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gsutil lifecycle get gs://$BUCKET_NAME&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Enable versioning
&lt;/h2&gt;

&lt;p&gt;Task 4 : Enable Versioning&lt;/p&gt;

&lt;p&gt;In this task, you enable versioning for a Cloud Storage bucket to protect data from accidental deletion or modification.&lt;/p&gt;

&lt;p&gt;View the versioning status for the bucket and enable versioning&lt;/p&gt;

&lt;p&gt;1.Run the following command to view the current versioning status for the bucket:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gsutil versioning get gs://$BUCKET_NAME&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.To enable versioning, run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gsutil versioning set on gs://$BUCKET_NAME&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3.To verify that versioning was enabled, run the following command:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gsutil versioning get gs://$BUCKET_NAME&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt; , &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>cloud</category>
      <category>storage</category>
    </item>
    <item>
      <title>Introduction to Docker</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Sun, 03 May 2026 00:06:50 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/introduction-to-docker-5905</link>
      <guid>https://dev.to/srinivasuluparanduru/introduction-to-docker-5905</guid>
      <description>&lt;h2&gt;
  
  
  What is Docker?
&lt;/h2&gt;

&lt;p&gt;Docker is an open-source platform designed to automate the deployment, scaling, and management of applications using containerization. Containers allow developers to package an application with all its dependencies—such as libraries, frameworks, and configuration files—into a single, portable unit that can run consistently across different environments.&lt;/p&gt;

&lt;p&gt;In simpler terms, Docker ensures that an application runs the same way on a developer’s laptop as it does on a production server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Docker?
&lt;/h2&gt;

&lt;p&gt;Before Docker, developers often faced the “it works on my machine” problem. Applications behaved differently across environments due to variations in operating systems, dependencies, or configurations. Docker solves this by isolating applications in containers that include everything needed to run them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Benefits of Docker
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Portability&lt;/strong&gt;: Containers can run on any system that supports Docker, regardless of the underlying hardware or operating system.&lt;br&gt;
&lt;strong&gt;Efficiency&lt;/strong&gt;: Containers share the host system’s kernel, making them lightweight and faster to start than virtual machines.&lt;br&gt;
&lt;strong&gt;Scalability&lt;/strong&gt;: Docker integrates seamlessly with orchestration tools like Kubernetes, enabling easy scaling of applications.&lt;br&gt;
&lt;strong&gt;Consistency&lt;/strong&gt;: Ensures uniform behavior across development, testing, and production environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Docker Works
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Docker uses a client-server architecture:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Docker Client&lt;/strong&gt;: The command-line tool that communicates with the Docker daemon.&lt;br&gt;
&lt;strong&gt;Docker Daemon&lt;/strong&gt;: The background service that builds, runs, and manages containers.&lt;br&gt;
&lt;strong&gt;Docker Images&lt;/strong&gt;: Read-only templates used to create containers. Each image contains the application code and dependencies.&lt;br&gt;
&lt;strong&gt;Docker Containers&lt;/strong&gt;: Running instances of Docker images that can be started, stopped, or deleted as needed.&lt;/p&gt;

&lt;p&gt;When a developer runs a Docker command, the client sends instructions to the daemon, which performs the requested actions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Docker Commands&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;docker build&lt;/td&gt;
&lt;td&gt;Builds an image from a Dockerfile&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker run&lt;/td&gt;
&lt;td&gt;Runs a container from an image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker ps&lt;/td&gt;
&lt;td&gt;Lists running containers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker stop&lt;/td&gt;
&lt;td&gt;Stops a running container&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker pull&lt;/td&gt;
&lt;td&gt;Downloads an image from Docker Hub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;docker push&lt;/td&gt;
&lt;td&gt;Uploads an image to Docker Hub&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Real-World Use Cases&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices Architecture&lt;/strong&gt;: Docker simplifies the deployment of microservices by isolating each service in its own container.&lt;br&gt;
&lt;strong&gt;Continuous Integration/Continuous Deployment (CI/CD)&lt;/strong&gt;: Docker integrates with CI/CD pipelines to automate testing and deployment.&lt;br&gt;
&lt;strong&gt;Cloud Migration&lt;/strong&gt;: Containers make it easier to move applications between cloud providers.&lt;br&gt;
&lt;strong&gt;Development Environments&lt;/strong&gt;: Developers can quickly spin up consistent environments for testing and debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Docker has revolutionized the way applications are built, shipped, and run. By leveraging containerization, it provides developers with a consistent, efficient, and scalable environment that bridges the gap between development and operations. Whether for small projects or enterprise-scale systems, Docker remains a cornerstone of modern DevOps practices.&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://www.linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt; and &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Wait for more blogs on docker, docker with python+GO+CSharp
&lt;/h3&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>Introduction to OpenTofu</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 08 Apr 2026 08:30:24 +0000</pubDate>
      <link>https://dev.to/aws-builders/introduction-to-opentofu-2mj3</link>
      <guid>https://dev.to/aws-builders/introduction-to-opentofu-2mj3</guid>
      <description>&lt;p&gt;Explore the benefits of Infrastructure as Code (IaC) and dive into OpenTofu, an open source IaC tool forked from Terraform. Learn how OpenTofu works&lt;/p&gt;

&lt;h1&gt;
  
  
  Table of Contents
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Introduction to OpenTofu&lt;/li&gt;
&lt;li&gt;Key Features&lt;/li&gt;
&lt;li&gt;Use Cases&lt;/li&gt;
&lt;li&gt;Installation&lt;/li&gt;
&lt;li&gt;Tofu Commands&lt;/li&gt;
&lt;li&gt;Demo&lt;/li&gt;
&lt;li&gt;Free Course&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Introduction to OpenTofu
&lt;/h2&gt;

&lt;p&gt;OpenTofu is an open-source infrastructure-as-code (IaC) tool that allows developers and system administrators to define, provision, and manage cloud and on-premises infrastructure using declarative configuration files. It originated as a community-driven fork of Terraform after licensing changes to Terraform’s core, ensuring that the IaC ecosystem remains open and collaborative.&lt;/p&gt;

&lt;p&gt;With OpenTofu, you can describe your infrastructure in simple configuration files written in the HashiCorp Configuration Language (HCL) or JSON. These files specify the desired state of your infrastructure—such as servers, networks, databases, and other resources—and OpenTofu automatically figures out how to create, update, or delete resources to match that state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Open Source Governance: Fully community-led under the Linux Foundation, ensuring transparency and long-term stability.&lt;/li&gt;
&lt;li&gt;Terraform Compatibility: Maintains compatibility with existing Terraform configurations and providers, making migration straightforward.&lt;/li&gt;
&lt;li&gt;Declarative Configuration: Users define what they want, and OpenTofu determines how to achieve it.&lt;/li&gt;
&lt;li&gt;State Management: Keeps track of infrastructure state to ensure consistent deployments and safe updates.&lt;/li&gt;
&lt;li&gt;Extensibility: Supports a wide range of providers for cloud platforms like AWS, Azure, and Google Cloud, as well as on-premises systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Use Cases:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automating cloud infrastructure provisioning&lt;/li&gt;
&lt;li&gt;Managing multi-cloud environments&lt;/li&gt;
&lt;li&gt;Version-controlling infrastructure configurations&lt;/li&gt;
&lt;li&gt;Enabling reproducible and consistent deployments&lt;/li&gt;
&lt;li&gt;OpenTofu empowers teams to manage infrastructure efficiently, collaboratively, and transparently—without vendor lock-in.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more information, visit &lt;a href="//opentofu.org"&gt;opentofu&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation:
&lt;/h2&gt;

&lt;p&gt;Please find the link for software - &lt;a href="https://opentofu.org/docs/intro/install/" rel="noopener noreferrer"&gt;https://opentofu.org/docs/intro/install/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenTofu is available on the winget repository and you can install it by running:&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;winget install --exact --id=OpenTofu.Tofu&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%2Fp0rmrhkjrip69n303z3h.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%2Fp0rmrhkjrip69n303z3h.png" alt=" " width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;run the command tofu&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%2F6ee96yfjich2rpxiaaxk.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%2F6ee96yfjich2rpxiaaxk.png" alt=" " width="800" height="705"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify installation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;tofu -version&lt;br&gt;
&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%2Fwm3o45c7ogwuszjncvxj.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%2Fwm3o45c7ogwuszjncvxj.png" alt=" " width="622" height="105"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Tofu Commands
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.tofu init&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initializes a working directory containing OpenTofu configuration files.&lt;/li&gt;
&lt;li&gt;Downloads necessary provider plugins and modules.&lt;/li&gt;
&lt;li&gt;Prepares the backend for storing state.&lt;/li&gt;
&lt;li&gt;Example: tofu init&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;2.tofu plan&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates an execution plan showing what actions OpenTofu will take to reach the desired state.&lt;/li&gt;
&lt;li&gt;Compares the current infrastructure with the configuration files.&lt;/li&gt;
&lt;li&gt;Does not make any changes — it’s a preview step.&lt;/li&gt;
&lt;li&gt;Example: tofu plan&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;3.tofu apply&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applies the changes required to reach the desired state of the configuration.&lt;/li&gt;
&lt;li&gt;Executes the plan generated by tofu plan.&lt;/li&gt;
&lt;li&gt;Prompts for confirmation before making changes (use -auto-approve to skip).&lt;/li&gt;
&lt;li&gt;Example: tofu apply -auto-approve&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;4.tofu destroy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Destroys all resources defined in the configuration.&lt;/li&gt;
&lt;li&gt;Useful for cleaning up infrastructure.&lt;/li&gt;
&lt;li&gt;Prompts for confirmation unless -auto-approve is used.&lt;/li&gt;
&lt;li&gt;Example: tofu destroy -auto-approve&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;5. tofu validate&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validates the configuration files for syntax and internal consistency.&lt;/li&gt;
&lt;li&gt;Does not check against actual infrastructure.&lt;/li&gt;
&lt;li&gt;Example: tofu validate&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;6.tofu fmt&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formats configuration files to a canonical style.&lt;/li&gt;
&lt;li&gt;Helps maintain consistent formatting across teams.&lt;/li&gt;
&lt;li&gt;Example: tofu fmt&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;7.tofu show&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays the current state or a saved plan file in a human-readable format.&lt;/li&gt;
&lt;li&gt;Example: tofu show&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;8.tofu output&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reads and displays output values from the state file.&lt;/li&gt;
&lt;li&gt;Useful for retrieving values like IP addresses or resource IDs.&lt;/li&gt;
&lt;li&gt;Example: tofu output&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;9.tofu state&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages the state file directly.&lt;/li&gt;
&lt;li&gt;Subcommands include list, show, mv, rm, and pull.&lt;/li&gt;
&lt;li&gt;Used for advanced state management.&lt;/li&gt;
&lt;li&gt;Example: tofu state list&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;10.tofu import&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Imports existing infrastructure into OpenTofu’s state.&lt;/li&gt;
&lt;li&gt;Does not modify the resource, only records it in the state file.&lt;/li&gt;
&lt;li&gt;Example: tofu import aws_instance.example i-1234567890abcdef&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;11.tofu graph&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generates a visual representation of the dependency graph.&lt;/li&gt;
&lt;li&gt;Can be used with tools like Graphviz to visualize relationships.&lt;/li&gt;
&lt;li&gt;Example: tofu graph | dot -Tpng &amp;gt; graph.png&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;12.tofu workspace&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages multiple workspaces (environments) within the same configuration.&lt;/li&gt;
&lt;li&gt;Useful for separating dev, staging, and production environments.&lt;/li&gt;
&lt;li&gt;Example: tofu workspace new staging&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;13.tofu providers&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays information about the providers required by the configuration.&lt;/li&gt;
&lt;li&gt;Example: tofu providers&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;strong&gt;14.tofu version&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Displays the current version of OpenTofu.&lt;/li&gt;
&lt;li&gt;Example: tofu version&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1.Create a file provider.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;terraform&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;required_providers&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;source&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hashicorp/aws"&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"6.39.0"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;provider&lt;/span&gt; &lt;span class="s2"&gt;"aws"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;# Configuration options&lt;/span&gt;
 &lt;span class="nx"&gt;access_key&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Access_Key"&lt;/span&gt;
 &lt;span class="nx"&gt;secret_key&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Secret_Key"&lt;/span&gt;
 &lt;span class="nx"&gt;region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Replace_AWS_Region"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2.Create a file ec2.tf&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight terraform"&gt;&lt;code&gt;&lt;span class="k"&gt;data&lt;/span&gt; &lt;span class="s2"&gt;"aws_ami"&lt;/span&gt; &lt;span class="s2"&gt;"ubuntu"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;most_recent&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;

  &lt;span class="nx"&gt;filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"name"&lt;/span&gt;
    &lt;span class="nx"&gt;values&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nx"&gt;filter&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;name&lt;/span&gt;   &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"virtualization-type"&lt;/span&gt;
    &lt;span class="nx"&gt;values&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"hvm"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nx"&gt;owners&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"099720109477"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# Canonical&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;"aws_instance"&lt;/span&gt; &lt;span class="s2"&gt;"example"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;ami&lt;/span&gt;           &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aws_ami&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ubuntu&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
  &lt;span class="nx"&gt;instance_type&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"t3.micro"&lt;/span&gt;

  &lt;span class="nx"&gt;tags&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"HelloWorld"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*&lt;em&gt;Run the commands *&lt;/em&gt;&lt;br&gt;
1.tofu init : For Initializing the AWS Provider&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%2Fwp06qn38bbpb3g1m17nh.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%2Fwp06qn38bbpb3g1m17nh.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;.terraform folder will be create after running the command  tofu init&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%2Fziu49lgwge143vy421c3.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%2Fziu49lgwge143vy421c3.png" alt=" " width="314" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.tofu plan : Creates an execution plan showing what actions OpenTofu will take to reach the desired state.&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%2F3w0q8sy5f5jsexkaz58z.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%2F3w0q8sy5f5jsexkaz58z.png" alt=" " width="800" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.tofu apply : Applies the changes required to reach the desired state of the configuration.&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%2F6hmvd7e3x04io2g6pmin.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%2F6hmvd7e3x04io2g6pmin.png" alt=" " width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.tofu destroy: Destroy the resources created of any with reference to the configuration files after the user confirmation &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%2F6yfo59jeep4bknkdpe8y.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%2F6yfo59jeep4bknkdpe8y.png" alt=" " width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Free Course
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://training.linuxfoundation.org/express-learning/getting-started-with-opentofu-lfel1009/" rel="noopener noreferrer"&gt;https://training.linuxfoundation.org/express-learning/getting-started-with-opentofu-lfel1009/&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%2Fr83jlzac92sdyetfoj5r.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%2Fr83jlzac92sdyetfoj5r.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to&lt;/a&gt; , &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>iac</category>
      <category>opentofu</category>
    </item>
    <item>
      <title>Datadog Agent Installation on AWS EC2 (Linux Server) and Sending Logs to Datadog Cloud</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:41:28 +0000</pubDate>
      <link>https://dev.to/aws-builders/datadog-agent-installation-on-aws-ec2-linux-server-and-sending-logs-to-datadog-cloud-542f</link>
      <guid>https://dev.to/aws-builders/datadog-agent-installation-on-aws-ec2-linux-server-and-sending-logs-to-datadog-cloud-542f</guid>
      <description>&lt;p&gt;Datadog Agent Installation on AWS EC2 (Linux Server) and Sending Logs to Datadog Cloud&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1.Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An active Datadog account (&lt;a href="https://app.datadoghq.com" rel="noopener noreferrer"&gt;https://app.datadoghq.com&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A running AWS EC2 instance (Amazon Linux, Ubuntu, or other Linux distribution)&lt;/li&gt;
&lt;li&gt;Root or sudo access to the EC2 instance&lt;/li&gt;
&lt;li&gt;Your Datadog API key (found under Integrations → APIs in the Datadog dashboard)&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;2.Connect to Your EC2 Instance&lt;/strong&gt;&lt;br&gt;
Use SSH to connect:&lt;/p&gt;

&lt;p&gt;ssh -i /path/to/your-key.pem ec2-user@&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3.Install the Datadog Agent&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;For Amazon Linux or RHEL-based systems&lt;/strong&gt;&lt;br&gt;
DD_API_KEY= DD_SITE="datadoghq.com" bash -c "$(curl -L &lt;a href="https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Ubuntu or Debian-based systems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DD_API_KEY= DD_SITE="datadoghq.com" bash -c "$(curl -L &lt;a href="https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/dd-agent/scripts/install_script.sh)&lt;/a&gt;"&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;4.Enable and Start the Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;sudo systemctl enable datadog-agent&lt;br&gt;
sudo systemctl start datadog-agent&lt;/p&gt;

&lt;p&gt;Check the agent status:&lt;/p&gt;

&lt;p&gt;sudo datadog-agent status&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;5.Enable Log Collection&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Edit the Datadog Agent configuration file:&lt;/p&gt;

&lt;p&gt;sudo nano /etc/datadog-agent/datadog.yaml&lt;/p&gt;

&lt;p&gt;Uncomment and set:&lt;/p&gt;

&lt;p&gt;logs_enabled: true&lt;/p&gt;

&lt;p&gt;Save and exit, then restart the agent:&lt;/p&gt;

&lt;p&gt;sudo systemctl restart datadog-agent&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;6.Configure Log Sources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To send specific logs (e.g., application logs), create a configuration file under:&lt;/p&gt;

&lt;p&gt;/etc/datadog-agent/conf.d/.d/conf.yaml&lt;/p&gt;

&lt;p&gt;Example for an Nginx log:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;logs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;file&lt;/span&gt;
    &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/var/log/nginx/access.log&lt;/span&gt;
    &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;
    &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;nginx&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Restart the agent again:&lt;/p&gt;

&lt;p&gt;sudo systemctl restart datadog-agent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7.Verify Logs in Datadog&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Logs → Live Tail in the Datadog dashboard.&lt;/li&gt;
&lt;li&gt;You should see logs streaming from your EC2 instance.&lt;/li&gt;
&lt;li&gt;Use filters like service:nginx or host: to refine results.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;8.Optional: Tagging and Metadata&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can add tags to your EC2 instance for better organization:&lt;/p&gt;

&lt;p&gt;sudo sh -c 'echo "tags: environment:production,team:devops" &amp;gt;&amp;gt; /etc/datadog-agent/datadog.yaml'&lt;br&gt;
sudo systemctl restart datadog-agent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;9.Troubleshooting&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check agent logs:&lt;br&gt;
sudo tail -f /var/log/datadog/agent.log&lt;br&gt;
Ensure outbound traffic to Datadog endpoints is allowed (port 443).&lt;br&gt;
Verify your API key and region are correct.&lt;/p&gt;




&lt;p&gt;Final Result:&lt;br&gt;
Your AWS EC2 instance is now sending system metrics and logs to Datadog Cloud for monitoring and analysis.&lt;/p&gt;

</description>
      <category>datadogagent</category>
      <category>ec2</category>
      <category>linux</category>
      <category>logs</category>
    </item>
    <item>
      <title>Datadog Agent Installation on AWS EC2 (Windows Server) and Sending Logs to Datadog Cloud</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 12:34:13 +0000</pubDate>
      <link>https://dev.to/aws-builders/datadog-agent-installation-on-aws-ec2-windows-server-and-sending-logs-to-datadog-cloud-57k1</link>
      <guid>https://dev.to/aws-builders/datadog-agent-installation-on-aws-ec2-windows-server-and-sending-logs-to-datadog-cloud-57k1</guid>
      <description>&lt;p&gt;Datadog Agent Installation on AWS EC2 (Windows Server) and Sending Logs to Datadog Cloud&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A running Windows Server EC2 instance&lt;/li&gt;
&lt;li&gt;Administrator access to the instance&lt;/li&gt;
&lt;li&gt;A Datadog account and your API key (found in Datadog → Integrations → APIs)&lt;/li&gt;
&lt;li&gt;Internet access from the EC2 instance to Datadog endpoints&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Download and Install the Datadog Agent&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Connect to your EC2 instance via RDP.&lt;/li&gt;
&lt;li&gt;Open PowerShell as Administrator.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the following command to download and install the Datadog Agent (replace  with your actual key):&lt;br&gt;
start-bitstransfer -source &lt;a href="https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi" rel="noopener noreferrer"&gt;https://s3.amazonaws.com/ddagent-windows-stable/datadog-agent-7-latest.amd64.msi&lt;/a&gt; -destination C:\datadog-agent.msi&lt;br&gt;
msiexec /i C:\datadog-agent.msi APIKEY= SITE="datadoghq.com" /qn&lt;/p&gt;
&lt;h2&gt;
  
  
  - If your Datadog site is datadoghq.eu, use SITE="datadoghq.eu" instead.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;3.Enable Log Collection&lt;/strong&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.Open the Datadog Agent configuration file:&lt;br&gt;
     C:\ProgramData\Datadog\datadog.yaml&lt;br&gt;
2.Find and set:&lt;br&gt;
     logs_enabled: true&lt;br&gt;
3.Save and close the file.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;4.Configure Log Sources&lt;/strong&gt;&lt;br&gt;
To send specific logs (e.g., application or Windows Event logs):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Windows Event Logs:
Create or edit the file:
C:\ProgramData\Datadog\conf.d\win32_event_log.d\conf.yaml
Add:
init_config:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;instances:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;name: application
event_log: Application&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;name: system&lt;br&gt;
event_log: System&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Custom Log Files:
Create or edit:
C:\ProgramData\Datadog\conf.d\logs.yaml
Add:
logs:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;type: file&lt;br&gt;&lt;br&gt;
path: C:\path\to\your\logfile.log&lt;br&gt;&lt;br&gt;
service: my-service&lt;br&gt;&lt;br&gt;
source: custom&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;5.Restart the Datadog Agent&lt;/strong&gt;&lt;br&gt;
Run in PowerShell:&lt;/p&gt;

&lt;p&gt;Restart-Service datadogagent&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;6.Verify Installation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In Datadog, go to Infrastructure → Host Map to confirm your EC2 instance appears.&lt;/li&gt;
&lt;li&gt;Go to Logs → Live Tail to check if logs are being received.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;(Optional) Tag Your Host
You can add tags during installation or later in the config file:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;tags:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;env:production&lt;/li&gt;
&lt;li&gt;role:webserver&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then restart the agent again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Datadog Documentation Reference:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/agent/basic_agent_usage/windows/" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/agent/basic_agent_usage/windows/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/logs/log_collection/windows/" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/logs/log_collection/windows/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>datadog</category>
      <category>agents</category>
      <category>windows</category>
    </item>
    <item>
      <title>AWS Lambda in C# with Datadog Integration</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 11:20:53 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-lambda-in-c-with-datadog-integration-5egb</link>
      <guid>https://dev.to/aws-builders/aws-lambda-in-c-with-datadog-integration-5egb</guid>
      <description>&lt;p&gt;AWS Lambda in C# with Datadog Integration&lt;/p&gt;

&lt;p&gt;To integrate Datadog with an AWS Lambda function written in C# (.NET), you can use the Datadog Lambda Extension and Datadog .NET Tracer. This setup allows you to collect metrics, traces, and logs from your Lambda function.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;1.Set Up Datadog in AWS&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your Datadog account and navigate to Integrations → AWS.&lt;/li&gt;
&lt;li&gt;Connect your AWS account using the Datadog AWS integration.&lt;/li&gt;
&lt;li&gt;Enable Lambda and CloudWatch Logs permissions for Datadog.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;strong&gt;2.Add Datadog Lambda Extension&lt;/strong&gt;&lt;br&gt;
You can add the Datadog Lambda Extension as a Lambda Layer.&lt;/p&gt;

&lt;p&gt;For .NET 6 or .NET 8 runtimes, use the following ARN (replace  with your AWS region):&lt;/p&gt;

&lt;p&gt;arn:aws:lambda::AWS_Account_ID:layer:Datadog-Extension:latest&lt;/p&gt;

&lt;p&gt;Attach this layer to your Lambda function in the AWS Console or via the AWS CLI.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;3.Install Datadog .NET Tracer&lt;/strong&gt;&lt;br&gt;
In your C# project, install the Datadog .NET tracer NuGet package:&lt;/p&gt;

&lt;p&gt;dotnet add package Datadog.Trace&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;4.Instrument Your Code&lt;/strong&gt;&lt;br&gt;
You can manually instrument your Lambda handler or use automatic instrumentation.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;System.Threading.Tasks&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Amazon.Lambda.Core&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;Datadog.Trace&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;assembly&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;LambdaSerializer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Amazon&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Lambda&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Serialization&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SystemTextJson&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DefaultLambdaJsonSerializer&lt;/span&gt;&lt;span class="p"&gt;))]&lt;/span&gt;

&lt;span class="k"&gt;namespace&lt;/span&gt; &lt;span class="nn"&gt;MyLambda&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Function&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;FunctionHandler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ILambdaContext&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;scope&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Tracer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;StartActive&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"lambda.handler"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="n"&gt;scope&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetTag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"lambda.input"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
                &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Delay&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Simulate work&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s"&gt;$"Processed: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;input&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;5.Set Environment Variables&lt;/strong&gt;&lt;br&gt;
In your Lambda configuration, add these environment variables:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variable&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DD_API_KEY&lt;/td&gt;
&lt;td&gt;Your Datadog API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SITE&lt;/td&gt;
&lt;td&gt;datadoghq.com (or your region, e.g., datadoghq.eu)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_LOGS_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_TRACE_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_ENV&lt;/td&gt;
&lt;td&gt;production (or your environment name)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SERVICE&lt;/td&gt;
&lt;td&gt;my-lambda-service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_VERSION&lt;/td&gt;
&lt;td&gt;1.0.0&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;6.Enable Logging&lt;/strong&gt;&lt;br&gt;
Ensure your Lambda function sends logs to CloudWatch Logs. Datadog will automatically collect them if the AWS integration is configured.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;7.Deploy and Verify&lt;/strong&gt;&lt;br&gt;
Deploy your Lambda function.&lt;br&gt;
Then, in Datadog:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to APM → Services to see traces.&lt;/li&gt;
&lt;li&gt;Go to Logs → Explorer to view logs.&lt;/li&gt;
&lt;li&gt;Go to Serverless → Functions to monitor Lambda metrics.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;Optional: Use Datadog Forwarder
If you prefer not to use the extension, you can use the Datadog Forwarder Lambda to forward logs and metrics from CloudWatch to Datadog.
You can find setup instructions in Datadog’s documentation: docs.datadoghq.com/serverless/forwarder/&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;This setup provides full observability—metrics, traces, and logs—for your C# AWS Lambda functions in Datadog.&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>csharp</category>
      <category>datadog</category>
    </item>
    <item>
      <title>AWS Lambda in Python with Datadog Integration</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Tue, 24 Mar 2026 11:07:00 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675</link>
      <guid>https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
AWS Lambda is a serverless compute service that allows running code without provisioning or managing servers. It automatically scales applications by running code in response to events. Monitoring and observability are crucial for maintaining performance and reliability, and Datadog provides powerful tools to monitor Lambda functions, collect metrics, and visualize logs.&lt;/p&gt;

&lt;p&gt;This guide explains how to integrate AWS Lambda written in Python with Datadog, including setup steps and sample Python code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS account with permissions to create and manage Lambda functions&lt;/li&gt;
&lt;li&gt;Datadog account with API key&lt;/li&gt;
&lt;li&gt;AWS CLI and Datadog CLI installed&lt;/li&gt;
&lt;li&gt;Python 3.8 or later&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Step 1: Create a Python AWS Lambda Function&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Navigate to Lambda &amp;gt; Create function.&lt;/li&gt;
&lt;li&gt;Choose Author from scratch.&lt;/li&gt;
&lt;li&gt;Enter a function name (e.g., lambda-datadog-demo).&lt;/li&gt;
&lt;li&gt;Select Python 3.9 as the runtime.&lt;/li&gt;
&lt;li&gt;Choose or create an execution role with permissions for CloudWatch Logs.&lt;/li&gt;
&lt;li&gt;Click Create function.&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;Step 2: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install Datadog Lambda Library&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Datadog Lambda Library enables tracing, metrics, and log forwarding.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install the library locally:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;pip install datadog-lambda pip install ddtrace&lt;/p&gt;

&lt;p&gt;Package dependencies into a deployment zip:&lt;/p&gt;

&lt;p&gt;mkdir package cd package pip install datadog-lambda -t . pip install ddtrace -t . zip -r ../lambda_function.zip . cd .. zip -g lambda_function.zip lambda_function.py&lt;/p&gt;



&lt;p&gt;Step 3: Configure Datadog Integration&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the Datadog dashboard, navigate to Integrations &amp;gt; AWS.&lt;/li&gt;
&lt;li&gt;Connect the AWS account by following the setup wizard.&lt;/li&gt;
&lt;li&gt;Enable Lambda integration.&lt;/li&gt;
&lt;li&gt;Copy the Datadog API key from Integrations &amp;gt; APIs.&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;Step 4: Add Environment Variables&lt;br&gt;
In the Lambda configuration, add the following environment variables:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Key&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DD_API_KEY&lt;/td&gt;
&lt;td&gt;your_datadog_api_key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_SITE&lt;/td&gt;
&lt;td&gt;datadoghq.com (or datadoghq.eu for EU region)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_LOGS_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_TRACE_ENABLED&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DD_FLUSH_TO_LOG&lt;/td&gt;
&lt;td&gt;true&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;p&gt;Step 5: Instrument the Lambda Function&lt;br&gt;
Create a file named lambda_function.py:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda.wrapper&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda_wrapper&lt;/span&gt; &lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;datadog_lambda.metric&lt;/span&gt; 
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;lambda_metric&lt;/span&gt; 
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;ddtrace&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;tracer&lt;/span&gt; 

&lt;span class="nd"&gt;@datadog_lambda_wrapper&lt;/span&gt; 
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;lambda_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c1"&gt;# Custom metric   lambda_metric("custom.lambda.invocations", 1, tags=["env:dev", "function:lambda-datadog-demo"]) 
&lt;/span&gt;
&lt;span class="c1"&gt;# Example trace with 
&lt;/span&gt;&lt;span class="n"&gt;tracer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;lambda.process_event&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="n"&gt;span&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_tag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;event.source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;source&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unknown&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;process_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;statusCode&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;body&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;process_event&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="c1"&gt;# Simulated processing logic 
&lt;/span&gt;  &lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello from AWS Lambda!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Processed message: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wraps the handler with datadog_lambda_wrapper for automatic instrumentation.&lt;/li&gt;
&lt;li&gt;Sends a custom metric to Datadog.&lt;/li&gt;
&lt;li&gt;Creates a trace span for event processing.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step 6: Deploy the Lambda Function&lt;br&gt;
Upload the deployment package:&lt;/p&gt;

&lt;p&gt;aws lambda update-function-code \ --function-name lambda-datadog-demo \ --zip-file fileb://lambda_function.zip&lt;/p&gt;




&lt;p&gt;Step 7: Enable Log Forwarding&lt;/p&gt;

&lt;p&gt;Datadog can collect logs from CloudWatch using the Datadog Forwarder Lambda.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Deploy the Datadog Forwarder from the AWS Serverless Application Repository.&lt;/li&gt;
&lt;li&gt;Set the environment variable DD_API_KEY in the forwarder.&lt;/li&gt;
&lt;li&gt;Subscribe the forwarder to the CloudWatch log group of the Lambda function.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Step 8: Verify in Datadog&lt;br&gt;
After invoking the Lambda function, open the Datadog dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to APM &amp;gt; Traces to view traces.&lt;/li&gt;
&lt;li&gt;Go to Metrics Explorer to see custom metrics.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  - Check Logs &amp;gt; Live Tail for Lambda logs.
&lt;/h2&gt;

&lt;p&gt;Conclusion&lt;br&gt;
Integrating AWS Lambda with Datadog provides deep visibility into serverless applications. With metrics, traces, and logs unified in one platform, teams can monitor performance, troubleshoot issues, and optimize costs effectively. Using the Datadog Lambda Library in Python simplifies instrumentation and ensures observability from the start.&lt;/p&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>monitoring</category>
      <category>python</category>
      <category>serverless</category>
    </item>
    <item>
      <title>AWS Lambda Integration with DataDog</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Mar 2026 17:42:14 +0000</pubDate>
      <link>https://dev.to/aws-builders/aws-lambda-integration-with-datadog-35go</link>
      <guid>https://dev.to/aws-builders/aws-lambda-integration-with-datadog-35go</guid>
      <description>&lt;h1&gt;
  
  
  Step by step approach for integrating Datadog with AWS Lambda
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda metrics :&lt;/strong&gt;&lt;br&gt;
 There are 3 ways to get metrics from AWS Lambda:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can get Cloudwatch Lambda metrics from the Datadog AWS integration&lt;/li&gt;
&lt;li&gt;You can get enhanced metrics by installing Serverless Monitoring for AWS Lambda through the Datadog Lambda Extension.&lt;/li&gt;
&lt;li&gt;You can submit custom metrics to Datadog from your Lambda functions.&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%2Fp66f5io35h3d8654rmpa.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%2Fp66f5io35h3d8654rmpa.png" alt=" " width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Datadog Lambda Extension&lt;/strong&gt;&lt;br&gt;
The Lambda Extension is installed as an AWS Lambda layer for your functions. Lambda layers are an AWS feature that allow you to separate your function code from its dependencies. A layer is a .zip file archive that contains supplementary code or data, such as library dependencies, custom runtimes, or configuration files.&lt;/p&gt;

&lt;p&gt;Once installed, the Lambda Extension collects and sends data from your Lambda function to Datadog, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs&lt;/li&gt;
&lt;li&gt;Traces&lt;/li&gt;
&lt;li&gt;Functional-level metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Datadog Lambda Library&lt;/strong&gt;&lt;br&gt;
The Datadog Lambda Library can help us to to capture distributed traces and enrich your Lambda data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementation of the Lambda Library varies by runtime. For example, for .NET and Java, the Lambda Library is built into the tracer, while Node.js, Python, and Go use separate libraries. You can find detailed instructions for your runtime in the &lt;a href="https://docs.datadoghq.com/serverless/libraries_integrations/#datadog-lambda-libraries" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Step by Step Approach for AWS Lambda Python integration with data dog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675"&gt;https://dev.to/aws-builders/aws-lambda-in-python-with-datadog-integration-4675&lt;/a&gt; &lt;/p&gt;




&lt;p&gt;Step by Step Approach for AWS Lambda C#.Net  integration with data dog&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/srinivasuluparanduru/aws-lambda-in-c-with-datadog-integration-5egb"&gt;https://dev.to/srinivasuluparanduru/aws-lambda-in-c-with-datadog-integration-5egb&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;References :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/instrumentation" rel="noopener noreferrer"&gt;https://docs.datadoghq.com/serverless/aws_lambda/instrumentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/metrics/?tab=python#submit-custom-metrics" rel="noopener noreferrer"&gt;AWS Lambda Metrics&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/libraries_integrations/#datadog-lambda-libraries" rel="noopener noreferrer"&gt;Datadog Lambda Libraries&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.datadoghq.com/serverless/aws_lambda/instrumentation/python/?tab=datadogui" rel="noopener noreferrer"&gt;Instrumenting Python Serverless Applications&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;💬 If you enjoyed reading this blog post and found it informative, please take a moment to share your thoughts by leaving a review and liking it 😀 and follow me in &lt;a href="https://dev.to/srinivasuluparanduru"&gt;dev.to &lt;/a&gt;, &lt;a href="https://linkedin.com/in/srinivasuluparanduru" rel="noopener noreferrer"&gt;linkedin&lt;/a&gt;, &lt;a href="https://github.com/srinivasuluparanduru" rel="noopener noreferrer"&gt;github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>datadog</category>
      <category>aws</category>
      <category>lambda</category>
    </item>
    <item>
      <title>Manage Azure Pipeline agents and pools</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Feb 2026 23:59:39 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/manage-azure-pipeline-agents-and-pools-4mek</link>
      <guid>https://dev.to/srinivasuluparanduru/manage-azure-pipeline-agents-and-pools-4mek</guid>
      <description>&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%2Fm8qud75xi5dn190bmfhu.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%2Fm8qud75xi5dn190bmfhu.png" alt=" " width="800" height="587"&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%2Fb14mghyzlolcgdx788ga.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%2Fb14mghyzlolcgdx788ga.png" alt=" " width="800" height="581"&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%2F6f76mj76o97gnbx16z6g.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%2F6f76mj76o97gnbx16z6g.png" alt=" " width="800" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lab- &lt;a href="https://learn.microsoft.com/en-us/training/modules/manage-azure-pipeline-agents-pools/11-configure-agent-pools-understand-pipeline-styles" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/training/modules/manage-azure-pipeline-agents-pools/11-configure-agent-pools-understand-pipeline-styles&lt;/a&gt;&lt;/p&gt;

</description>
      <category>az400</category>
      <category>agentpools</category>
    </item>
    <item>
      <title>AZ-400: Implement CI with Azure Pipelines and GitHub Actions</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Mon, 02 Feb 2026 19:07:07 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/az-400-implement-ci-with-azure-pipelines-and-github-actions-4ogm</link>
      <guid>https://dev.to/srinivasuluparanduru/az-400-implement-ci-with-azure-pipelines-and-github-actions-4ogm</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Explore Azure Pipelines&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%2Fpxtkc2afg0nx20u10j43.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%2Fpxtkc2afg0nx20u10j43.png" alt=" " width="800" height="526"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/training/modules/explore-azure-pipelines/4-understand-key-terms" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/training/modules/explore-azure-pipelines/4-understand-key-terms&lt;/a&gt;&lt;/p&gt;

</description>
      <category>az400</category>
      <category>ci</category>
    </item>
    <item>
      <title>Google GenAI Leader Certification - Study Plan</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 21 Jan 2026 13:56:03 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/google-genai-leader-certification-study-plan-4mel</link>
      <guid>https://dev.to/srinivasuluparanduru/google-genai-leader-certification-study-plan-4mel</guid>
      <description>&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://services.google.com/fh/files/misc/generative_ai_leader_exam_guide_english.pdf" rel="noopener noreferrer"&gt;Exam Study Guide &lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://cloud.google.com/learn/certification/generative-ai-leader" rel="noopener noreferrer"&gt;Review Sample Questions&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exam Pattern : Multiple Choice Q &amp;amp; A&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exam Result : Will be displayed Pass/Fail at the end of the exam&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Credly Badge : It will take a day or two and you will get an email.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Certification Generation : It will take couple days to generate&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Study plan for Google Partners&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;&lt;a href="https://partner.skills.google/paths/1952" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SNo&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Url&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Gen AI: Beyond the Chatbot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1268" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1268&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Gen AI: Unlock Foundational Concepts&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1265" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1265&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Gen AI: Navigate the Landscape&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1261" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1261&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Gen AI Apps: Transform Your Work&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1266" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1266&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gen AI Agents: Transform Your Organization&lt;/td&gt;
&lt;td&gt;&lt;a href="https://partner.skills.google/paths/1952/course_templates/1267" rel="noopener noreferrer"&gt;https://partner.skills.google/paths/1952/course_templates/1267&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Study plan for Non Google Partners&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Non partners - &lt;a href="https://www.skills.google/paths/1951" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SNo&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Url&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Gen AI: Beyond the Chatbot&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1268" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1268&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Gen AI: Unlock Foundational Concepts&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1265" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1265&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Gen AI: Navigate the Landscape&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1261" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1261&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Gen AI Apps: Transform Your Work&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1266" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1266&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Gen AI Agents: Transform Your Organization&lt;/td&gt;
&lt;td&gt;&lt;a href="https://www.skills.google/paths/1951/course_templates/1267" rel="noopener noreferrer"&gt;https://www.skills.google/paths/1951/course_templates/1267&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>google</category>
      <category>googlecloud</category>
      <category>genai</category>
    </item>
    <item>
      <title>Getting started with Amazon Q Developer</title>
      <dc:creator>Srinivasulu Paranduru</dc:creator>
      <pubDate>Wed, 03 Dec 2025 10:32:53 +0000</pubDate>
      <link>https://dev.to/srinivasuluparanduru/getting-started-with-amazon-q-developer-31l8</link>
      <guid>https://dev.to/srinivasuluparanduru/getting-started-with-amazon-q-developer-31l8</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;br&gt;
Amazon Q Developer is available wherever you work—in popular IDEs, on the command line, in the AWS Management Console, GitLab Duo with Amazon Q, and in the Amazon Q Developer transformation web experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Different IDE's where you can start using Amazon Q Developer:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JetBrains&lt;/li&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;Visual Studio&lt;/li&gt;
&lt;li&gt;Command Line&lt;/li&gt;
&lt;li&gt;Eclipse&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Using Amazon Q in VS Code:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Visual studio code --&amp;gt; Extensions -&amp;gt; search for Amazon Q and then install&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%2Fukn6ujnwr407yrj0yzso.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%2Fukn6ujnwr407yrj0yzso.png" alt=" " width="800" height="485"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We need to choose one options for Amazon Q to login&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%2Fz5xh46tv7ynh32l48hcc.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%2Fz5xh46tv7ynh32l48hcc.png" alt=" " width="800" height="613"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I have choosen option1 and popup window like below and you need to Allow Access&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%2F18vtjfagq3n8dbbvlw01.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%2F18vtjfagq3n8dbbvlw01.png" alt=" " width="800" height="393"&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%2Fkkstd76nzhcuxqayghoo.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%2Fkkstd76nzhcuxqayghoo.png" alt=" " width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Close browser and ready to use from VS Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing Overview&lt;/strong&gt;&lt;br&gt;
Amazon Q Developer reimagines the experience across the entire software development lifecycle (SDLC), making it faster and easier to build, secure, manage, and optimize applications on or off of AWS. Amazon Q Developer offers two pricing tiers.&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%2Fjf5t8qabdyz833521d1d.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%2Fjf5t8qabdyz833521d1d.png" alt=" " width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upgrade to Kiro&lt;/strong&gt;&lt;br&gt;
The Amazon Q Developer CLI has been rebranded to Kiro.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What does this rebrand mean for you?
&lt;strong&gt;If you're a user with a personal account:&lt;/strong&gt; Optionally upgrade the Q CLI and Amazon Q extension in your IDE to Kiro to take advantage of all the updates that will only be available in Kiro going forward&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;If you're an administrator of Amazon Q Developer Pro subscriptions&lt;/strong&gt;: Start using the Kiro console to manage your users' subscriptions. The Kiro console is a rebrand of the Amazon Q Developer console, with all the same functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;References:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://aws.amazon.com/q/developer/getting-started/#ide" rel="noopener noreferrer"&gt;https://aws.amazon.com/q/developer/getting-started/#ide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kiro.dev/docs/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>qdeveloper</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
