<?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: sunilkumarmedium</title>
    <description>The latest articles on DEV Community by sunilkumarmedium (@sunilkumarmedium).</description>
    <link>https://dev.to/sunilkumarmedium</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%2F500618%2Fca17ff50-efaf-41f9-a806-b54b8a39f04d.jpg</url>
      <title>DEV Community: sunilkumarmedium</title>
      <link>https://dev.to/sunilkumarmedium</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sunilkumarmedium"/>
    <language>en</language>
    <item>
      <title>AWS Systems Manager Hands-On</title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Thu, 10 Dec 2020 12:11:24 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/aws-systems-manager-hands-on-32ba</link>
      <guid>https://dev.to/sunilkumarmedium/aws-systems-manager-hands-on-32ba</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Systems Manager management service helps you automatically collect &lt;br&gt;
software inventory, apply OS patches and automate administration tasks and complex workflows. &lt;/p&gt;

&lt;p&gt;You will also see how to eliminate the need for bastion hosts to manage your resources. You will review the below Systems Manager capabilities &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run Command&lt;/li&gt;
&lt;li&gt;State Manager&lt;/li&gt;
&lt;li&gt;Inventory&lt;/li&gt;
&lt;li&gt;Patch Manager&lt;/li&gt;
&lt;li&gt;Maintenance Window&lt;/li&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Parameter Store&lt;/li&gt;
&lt;li&gt;Session Manager&lt;/li&gt;
&lt;li&gt;OpsCenter&lt;/li&gt;
&lt;li&gt;Explorer&lt;/li&gt;
&lt;li&gt;Change Calendar&lt;/li&gt;
&lt;li&gt;Distributor&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;br&gt;
you will need:&lt;br&gt;
✓ An AWS Account&lt;/p&gt;

&lt;p&gt;If you don't have an account visit &lt;a href="https://aws.amazon.com" rel="noopener noreferrer"&gt;https://aws.amazon.com&lt;/a&gt; and click Sign Up.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Benefits&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hybrid&lt;/li&gt;
&lt;li&gt;Cross-Platform Support&lt;/li&gt;
&lt;li&gt;Scalable&lt;/li&gt;
&lt;li&gt;AWS Optimized&lt;/li&gt;
&lt;li&gt;No Complex Licensing Model&lt;/li&gt;
&lt;li&gt;Partner Benefits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Systems Manager Building Blocks&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;SSM Agent&lt;/code&gt; installed in EC2 instances&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Documents&lt;/code&gt; – series of steps executed in sequence. Versioned and shared across and used in run command, session manager, state manager&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Registering instances in systems manager&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Systems Manager Quick Setup&lt;/em&gt;&lt;br&gt;
In AWS Management Console Search for &lt;code&gt;Systems Manager&lt;/code&gt; this will take you to the home screen. In the left menu click on the &lt;code&gt;Quick Setup&lt;/code&gt; for configuration.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmsewooyp3ksyebp66yl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fmsewooyp3ksyebp66yl6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the default roles to create or use the existing roles&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Configuration Options&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu88hpa45psoxytu62yxm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fu88hpa45psoxytu62yxm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Targets&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5s55ir4jfxkp4c47lkde.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F5s55ir4jfxkp4c47lkde.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Manual Configuration&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Create a role with Managed Policies attached and configure the IAM role to the EC2 instance&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftud7il4ldj4elmekjchm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ftud7il4ldj4elmekjchm.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run Command&lt;/strong&gt;&lt;br&gt;
Remotely and securely run configurations actions at scale&lt;br&gt;
Accessible via console, CLI, and SDK&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitoring&lt;/li&gt;
&lt;li&gt;On-demand Patching&lt;/li&gt;
&lt;li&gt;run bootstrap scripts on applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;State Manager&lt;/strong&gt;&lt;br&gt;
Used to Enable or Disable Services&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collecting Inventory&lt;/li&gt;
&lt;li&gt;Running Anti-virus Scans&lt;/li&gt;
&lt;li&gt;Running Scripts in Managed Windows or Linux Instances&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;Parameter Store&lt;/strong&gt;&lt;br&gt;
Provides secure and hierarchical storage for configuration data and secrets data&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stores passwords, database strings, license codes&lt;/li&gt;
&lt;li&gt;Can be stored encrypted or plain text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Inventory&lt;/strong&gt;&lt;br&gt;
Collects instance details and OS details&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Applications Installed&lt;/li&gt;
&lt;li&gt;Network Configuration&lt;/li&gt;
&lt;li&gt;Updates installed&lt;/li&gt;
&lt;li&gt;Monitor Windows Services and roles&lt;/li&gt;
&lt;li&gt;Monitor Windows Registry Keys&lt;/li&gt;
&lt;li&gt;Billing Information&lt;/li&gt;
&lt;li&gt;Custom Inventory&lt;/li&gt;
&lt;li&gt;Integrated with AWS Config&lt;/li&gt;
&lt;/ul&gt;

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

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

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

&lt;p&gt;&lt;strong&gt;Patch Manager&lt;/strong&gt;&lt;br&gt;
Simplifies Operating System and application patching process and controls instance reboots&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define approval rules&lt;/li&gt;
&lt;li&gt;Select patches to deploy ( blacklist or whitelist patches)&lt;/li&gt;
&lt;li&gt;Specify timings to roll out patches&lt;/li&gt;
&lt;li&gt;Report Patching Compliance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Maintenance Window&lt;/strong&gt;&lt;br&gt;
Scheduling the tasks based on the user-defined specified timings&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Patching and OS&lt;/li&gt;
&lt;li&gt;Updating Drivers&lt;/li&gt;
&lt;li&gt;Installing Softwares&lt;/li&gt;
&lt;li&gt;Creating AMI's&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Automation&lt;/strong&gt;&lt;br&gt;
Automation is a platform to orchestrate Operational Playbooks and integrates with AWS Config and AWS Service Catalog&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;orchestrate  dynamic playbooks&lt;/li&gt;
&lt;li&gt;Manage AWS resources across accounts/regions&lt;/li&gt;
&lt;li&gt;Standardize and share playbooks across the organization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Session Manager&lt;/strong&gt;&lt;br&gt;
Interactive, one-click browser-based shell eliminates to maintain the bastion hosts or SSH keys to connect to managed instances&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Centralised access control&lt;/li&gt;
&lt;li&gt;No bastion host&lt;/li&gt;
&lt;li&gt;Port forwarding&lt;/li&gt;
&lt;li&gt;Hybrid&lt;/li&gt;
&lt;li&gt;Cross-Platform&lt;/li&gt;
&lt;li&gt;Logging and auditing Session Activities&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Distributor&lt;/strong&gt;&lt;br&gt;
Securely store and distribute software packages&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install-on-demand or on schedule&lt;/li&gt;
&lt;li&gt;central repository with version control&lt;/li&gt;
&lt;li&gt;Share with other AWS accounts&lt;/li&gt;
&lt;li&gt;Control access package via IAM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Explorer&lt;/strong&gt;&lt;br&gt;
Provides a summary of EC2 instances and patch summary compliance state&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrates with AWS Organization&lt;/li&gt;
&lt;li&gt;View Operations data across accounts/regions&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;AWS Config&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Settings&lt;/em&gt;&lt;br&gt;
Specify the types of AWS resources you want AWS Config to record, the Amazon S3 bucket to which it sends files, and the Amazon SNS topic to which it sends notifications.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AWS Config rules&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;AWS Config can check the configuration of your resources against the rules that you define. Choose one or more of the following rules to get started. After setting up AWS Config, you can customize these rules, set up other rules provided by AWS Config, or create your own rules.&lt;/p&gt;

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

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

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

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
AWS Systems Manager provides more insight into your managed instances and using the SNS Notifications you can get notified if any failure happens during the patching process or running commands or installing software. These compliance data can be stored in S3 buckets for further analysis.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>Build a Serverless Dotnet Core Web API with AWS Lambda and API Gateway</title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Tue, 01 Dec 2020 12:04:30 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/build-a-serverless-dotnet-core-web-api-with-aws-lambda-and-api-gateway-22dd</link>
      <guid>https://dev.to/sunilkumarmedium/build-a-serverless-dotnet-core-web-api-with-aws-lambda-and-api-gateway-22dd</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
In this article, we are going to deploy the ASP.NET Core Web API in AWS Lambda and AWS API Gateway.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Lambda&lt;/strong&gt;&lt;br&gt;
AWS Lambda lets you run code without managing servers. you pay only for the compute time you consume.&lt;/p&gt;

&lt;p&gt;With Lambda, you can run code for virtually any type of application or backend service - all with zero administration. Just upload your code and Lambda takes care of everything required to run and scale your code with high availability. &lt;br&gt;
You can set up your code to automatically trigger from other AWS services or call it directly from any web or mobile app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Gateway&lt;/strong&gt;&lt;br&gt;
Amazon API Gateway is a fully managed service that makes it easy for developers to create, publish, maintain, monitor, and secure APIs at any scale. APIs act as the "front door" for applications to access data, business logic, or functionality from your backend services. &lt;/p&gt;

&lt;p&gt;Using API Gateway, you can create RESTful APIs and WebSocket APIs that enable real-time two-way communication applications. API Gateway supports containerized and serverless workloads, as well as web applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AWS Architecture:&lt;/strong&gt;&lt;br&gt;
Below is the AWS services we are going to use for the deployment of Web API.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fztorwwev6qm76koiy4b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fztorwwev6qm76koiy4b9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;br&gt;
To complete this learning path, you will need:&lt;br&gt;
✓ An AWS Account&lt;br&gt;
✓ An IAM user with access key credentials&lt;br&gt;
✓ Visual Studio Code or Visual Studio 2019+ for Windows&lt;/p&gt;

&lt;p&gt;If you don't have an account visit &lt;a href="https://aws.amazon.com" rel="noopener noreferrer"&gt;https://aws.amazon.com&lt;/a&gt; and click Sign Up.&lt;br&gt;
You must have a set of valid AWS credentials, consisting of an access key and a secret key, which are used to sign programmatic requests to AWS. You can obtain a set of account credentials when you create your account, although we recommend you do not use these credentials and instead create an IAM user and use those credentials.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing the AWS CLI:&lt;/strong&gt;&lt;br&gt;
Install the &lt;code&gt;AWS CLI&lt;/code&gt; for Windows, Mac, or Linux: &lt;a href="https://aws.amazon.com/cli/" rel="noopener noreferrer"&gt;https://aws.amazon.com/cli/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installed, you can configure the CLI by running the &lt;code&gt;aws configure&lt;/code&gt; command in a terminal or command-line window.&lt;/p&gt;

&lt;p&gt;When prompted, enter your &lt;code&gt;AWS Access Key ID&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Enter your &lt;code&gt;AWS Secret Access Key&lt;/code&gt; when prompted and then press Enter.&lt;/p&gt;

&lt;p&gt;For the &lt;code&gt;default region name&lt;/code&gt; you should enter your chosen region code (e.g. eu-west-1)&lt;/p&gt;

&lt;p&gt;Finally, for the &lt;code&gt;default output&lt;/code&gt; format you can just press Enter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installing the AWS Lambda Tools:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dotnet tool install -g Amazon.Lambda.Tools&lt;/code&gt;&lt;br&gt;
&lt;code&gt;dotnet tool install --global Amazon.Lambda.TestTool-3.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Read the below articles for creating the postgres RDS instance and managing the connection string using Systems Manager&lt;br&gt;
&lt;a href="https://dev.to/sunilkumarmedium/postgresql-database-instance-creation-and-configuration-in-aws-rds-4p60"&gt;Creating the AWS RDS Instance for PostgreSQL&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/sunilkumarmedium/aws-systems-manager-parameter-store-for-managing-configuration-and-retrieve-at-runtime-using-c-58of"&gt;AWS Systems Manager Parameter Store and retrieving using C#&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sunilkumarmedium" rel="noopener noreferrer"&gt;
        sunilkumarmedium
      &lt;/a&gt; / &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;
        CleanArchitectureApp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Clean Architecture Application Design from Scratch using Dotnet Core 5 WebApi and Angular 11 FrontEnd
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CleanArchitectureApp&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Clean Architecture Application Design from Scratch using Dotnet Core 5 WebApi and Angular 11 FrontEnd&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1c8f92c476bfc7047835c2411ea56567177bf4c399982cefe4f662622cad7c28/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Technologies&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/" rel="nofollow noopener noreferrer"&gt;ASP.NET Core 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nhibernate.info/" rel="nofollow noopener noreferrer"&gt;NHibernate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="nofollow noopener noreferrer"&gt;Angular 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cli.angular.io/" rel="nofollow noopener noreferrer"&gt;Angular CLI 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore" rel="noopener noreferrer"&gt;Swashbuckle.AspNetCore.Swagger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design Pattern: Command Query Responsibility Segregation (CQRS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fluentvalidation.net/" rel="nofollow noopener noreferrer"&gt;Fluent Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebAPI Global Exception Middleware&lt;/li&gt;
&lt;li&gt;Login, Logout and Forgot Password using JWT tokens&lt;/li&gt;
&lt;li&gt;Microsoft Sql Server and Postgresql supported&lt;/li&gt;
&lt;li&gt;AWS Postgres RDS&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;AWS Systems Manager&lt;/li&gt;
&lt;li&gt;AWS Simple Storage Service (S3)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/docker-for-windows/install/" rel="nofollow noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Pre-requisites&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windows" rel="nofollow noopener noreferrer"&gt;.Net core 5 SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visualstudio.com/" rel="nofollow noopener noreferrer"&gt;Visual studio 2019&lt;/a&gt; OR &lt;a href="https://code.visualstudio.com/" rel="nofollow noopener noreferrer"&gt;VSCode&lt;/a&gt; with &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="nofollow noopener noreferrer"&gt;C#&lt;/a&gt; extension&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="nofollow noopener noreferrer"&gt;NodeJs&lt;/a&gt; (Latest LTS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-2017" rel="nofollow noopener noreferrer"&gt;Microsoft SQL Server&lt;/a&gt; (Optional: If MS SQL server required instead of Sqlite during development)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/" rel="nofollow noopener noreferrer"&gt;POSTGRESQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Configuration&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repo: git clone  &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp.git" rel="noopener noreferrer"&gt;https://github.com/sunilkumarmedium/CleanArchitectureApp.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execute the sql scripts available in the folder &lt;code&gt;/sql/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;MSSQL use CleanArchitectureDB.sql&lt;/li&gt;
&lt;li&gt;POSTGRES use CleanArchitectureDB-Postgres&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Change the database connectionstring in appsettings.json
&lt;ul&gt;
&lt;li&gt;Path : CleanArchitectureApp.WebApi/appsettings.Development.json  or appsettings.json&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"DBProvider": "MSSQL" ,&lt;/code&gt; Use &lt;code&gt;MSSQL&lt;/code&gt; to connect to Microsoft SqlServer Or &lt;code&gt;POSTGRES&lt;/code&gt; to connect to PostgreSQL…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;strong&gt;Creating the AWS Lambda Web Api Project using command line&lt;/strong&gt;

&lt;p&gt;&lt;code&gt;dotnet new --help&lt;/code&gt;  will display the installed AWS project templates&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fskp2w30nuqsgjzcegoxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fskp2w30nuqsgjzcegoxc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create a serverless project run the below command&lt;br&gt;
&lt;code&gt;dotnet new serverless.AspNetCoreWebAPI -n CleanArchitectureApp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding Lambda Support to existing ASP.NET Core Web API Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below are the steps to add AWS Lambda support for existing projects&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; In csproj file add the below tag&lt;br&gt;
&lt;code&gt;&amp;lt;AWSProjectType&amp;gt;Lambda&amp;lt;/AWSProjectType&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Include the below AWS package references to the projects&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;PackageReference Include="AWSSDK.Extensions.NETCore.Setup" Version="3.3.101" /&amp;gt;
&amp;lt;PackageReference Include="Amazon.Lambda.AspNetCoreServer" Version="5.2.0" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Create a c# file with name "LambdaEntryPoint.cs" and inherit the appropriate class based on your requirement. Below are some details &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API Gateway REST API                         -&amp;gt; Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction&lt;/li&gt;
&lt;li&gt;API Gateway HTTP API payload version 1.0     -&amp;gt; Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction&lt;/li&gt;
&lt;li&gt;API Gateway HTTP API payload version 2.0     -&amp;gt; Amazon.Lambda.AspNetCoreServer.APIGatewayHttpApiV2ProxyFunction&lt;/li&gt;
&lt;li&gt;Application Load Balancer                    -&amp;gt; Amazon.Lambda.AspNetCoreServer.ApplicationLoadBalancerFunction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Call the Startup.cs in the override method.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; protected override void Init(IWebHostBuilder builder)
        {
            builder
                .UseStartup&amp;lt;Startup&amp;gt;();
        }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; Create a json file "aws-lambda-tools-defaults.json" to read the default lambda configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; create a serverless declarative template  "serverless.template" and this will be used by the AWS Cloud Formation for creating the required resources during the Lambda deployment.&lt;/p&gt;

&lt;p&gt;Specify the dotnet core runtime, lambda handler, memory and policies&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; "Resources": {
    "AspNetCoreFunction": {
      "Type": "AWS::Serverless::Function",
      "Properties": {
        "Handler": "CleanArchitectureApp.WebApi::CleanArchitectureApp.WebApi.LambdaEntryPoint::FunctionHandlerAsync",
        "Runtime": "dotnetcore3.1",
        "CodeUri": "",
        "MemorySize": 256,
        "Timeout": 30,
        "Role": null,
        "Policies": [
          "AWSLambdaFullAccess", "AmazonSSMFullAccess","AWSLambdaVPCAccessExecutionRole"
        ],
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Below is the full implementation&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Deploying the WebApi to AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the command line on Windows and change the repository working directory to:&lt;br&gt;
&lt;code&gt;cd D:\GitHub_Projects\CleanArchitectureApp\CleanArchitectureApp.WebApi&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enter the below command and hit enter&lt;br&gt;
&lt;code&gt;dotnet lambda deploy-serverless --template serverless.template&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Cloud Formation Stack Creation In Progress&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwwp7hovgrcedmdqam591.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fwwp7hovgrcedmdqam591.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lambda Function Deployed&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flt2nrek9yglg7w1nbdox.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Flt2nrek9yglg7w1nbdox.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lambda function permissions for connecting to RDS instance&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgav9kimlhkezgncicnz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fgav9kimlhkezgncicnz9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;API Gateway Resource Creation&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnn17nhax6w9pef3fdq62.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnn17nhax6w9pef3fdq62.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hit the API gateway endpoint &lt;br&gt;
&lt;code&gt;https://xxxx.execute-api.ap-south-1.amazonaws.com/Prod/swagger&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Cloud Watch Logs:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjcagmdsvkm5dienw7h64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjcagmdsvkm5dienw7h64.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
You can implement the Warmer function for faster ColdStart(startup) of Lambda Function.&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>dotnet</category>
    </item>
    <item>
      <title>PostgreSQL Database Instance Creation and Configuration in AWS RDS </title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Sat, 28 Nov 2020 03:45:05 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/postgresql-database-instance-creation-and-configuration-in-aws-rds-4p60</link>
      <guid>https://dev.to/sunilkumarmedium/postgresql-database-instance-creation-and-configuration-in-aws-rds-4p60</guid>
      <description>&lt;p&gt;In this article, we will see the step by step instructions for configuring the Postgres DB instance in AWS RDS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;br&gt;
To complete this learning, you will need:&lt;br&gt;
✓ An AWS Account (Free Tier)&lt;/p&gt;

&lt;p&gt;If you don't have an account visit &lt;a href="https://aws.amazon.com"&gt;https://aws.amazon.com&lt;/a&gt; and click Sign Up.&lt;/p&gt;

&lt;p&gt;Amazon RDS is available on several database instance types - optimized for memory, performance or I/O &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon Aurora&lt;/li&gt;
&lt;li&gt;PostgreSQL&lt;/li&gt;
&lt;li&gt;MySQL&lt;/li&gt;
&lt;li&gt;MariaDB&lt;/li&gt;
&lt;li&gt;Oracle&lt;/li&gt;
&lt;li&gt;SQL Server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jukJChDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hsjtub5bd8surzi52jmd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jukJChDu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hsjtub5bd8surzi52jmd.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PostgreSQL on EC2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can manage your own DB instance by provisioning the EC2 instance and installing the Postgres Database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Managed PostgreSQL on RDS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Managed RDS Service can handle the patching, backup, recovery, provisioning the resources, availability.&lt;/p&gt;

&lt;p&gt;In this article, we focus on using the managed services AWS RDS for creating PostgreSQL Database Instance&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working with Amazon RDS via the AWS Management Console Step by Step Instructions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Log in to AWS Management Console and search with the keyword 'RDS'. You will be redirected to the RDS Home Page&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h7ffTdH5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvqb7xdmd0lyjb4kxduv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7ffTdH5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yvqb7xdmd0lyjb4kxduv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2:&lt;/strong&gt; Click on the &lt;code&gt;Create Database&lt;/code&gt; and Select &lt;code&gt;Postgres&lt;/code&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DTJGy1hO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/to7uwmzj9pqyay410e8k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DTJGy1hO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/to7uwmzj9pqyay410e8k.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9Osk1aOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t1h1l9ie1lbks2bg9z4m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9Osk1aOl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/t1h1l9ie1lbks2bg9z4m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:&lt;/strong&gt; DB Instance Settings&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DBdPofee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c86jcavbkdv90c4qq6qz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DBdPofee--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c86jcavbkdv90c4qq6qz.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4:&lt;/strong&gt; DB Instance Size and Storage. For the Free tier, you will get 'db.t2.micro' instance.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKnJjthi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6v39rea8llv8ahp35xdh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZKnJjthi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6v39rea8llv8ahp35xdh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5:&lt;/strong&gt; Instance Connectivity&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K8moGlyB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wu4kgztzsr4ry1dx552c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K8moGlyB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wu4kgztzsr4ry1dx552c.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6:&lt;/strong&gt; Additional Configuration&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HvVHxnlH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x85j1est4ntjhgdxfub8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HvVHxnlH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x85j1est4ntjhgdxfub8.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7:&lt;/strong&gt; Backups Configuration&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N1mZ4zq3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8ognnjvismcsy27odfbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N1mZ4zq3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8ognnjvismcsy27odfbk.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 8:&lt;/strong&gt; Click On Create Database you will see the resource creation progress. It will take some time for provisioning the resources &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dY94sYMF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3vu5nydm0cstz9any0ux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dY94sYMF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3vu5nydm0cstz9any0ux.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 9:&lt;/strong&gt; To view Connection Details click on the &lt;code&gt;View Credential Details&lt;/code&gt; Button&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUdonGJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kgyw4xykvt79xweow0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZUdonGJA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4kgyw4xykvt79xweow0l.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 10:&lt;/strong&gt; Connect to AWS RDS Instance from your Local and execute the DB Scripts&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4GFqZL3T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yhmzg1kn0n6m3yvfkzb4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4GFqZL3T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yhmzg1kn0n6m3yvfkzb4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Working with the AWS Command Line Interface&lt;/strong&gt;&lt;br&gt;
To control and automate Amazon RDS resources from the command line, use the &lt;a href="http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html"&gt;AWS Command Line Interface (CLI)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
You can see the detailed implementation and connecting the API to the RDS instance in below github project&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sunilkumarmedium"&gt;
        sunilkumarmedium
      &lt;/a&gt; / &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;
        CleanArchitectureApp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
CleanArchitectureApp&lt;/h1&gt;
&lt;p&gt;Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.org/licenses/MIT" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9f6b5dca9fd95975898fb95c2cc5b995351004a6c4443ccb13e1916a97bb122a/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Technologies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/" rel="nofollow"&gt;ASP.NET Core 3.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nhibernate.info/" rel="nofollow"&gt;NHibernate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="nofollow"&gt;Angular 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cli.angular.io/" rel="nofollow"&gt;Angular CLI 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sunilkumarmedium/CleanArchitectureApp/main/"&gt;Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore"&gt;Swashbuckle.AspNetCore.Swagger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design Pattern: Command Query Responsibility Segregation (CQRS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fluentvalidation.net/" rel="nofollow"&gt;Fluent Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebAPI Global Exception Middleware&lt;/li&gt;
&lt;li&gt;Login, Logout and Forgot Password using JWT tokens&lt;/li&gt;
&lt;li&gt;Microsoft Sql Server and Postgresql supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Pre-requisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windows" rel="nofollow"&gt;.Net core 3.1 SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visualstudio.com/" rel="nofollow"&gt;Visual studio 2019&lt;/a&gt; OR &lt;a href="https://code.visualstudio.com/" rel="nofollow"&gt;VSCode&lt;/a&gt; with &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="nofollow"&gt;C#&lt;/a&gt; extension&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="nofollow"&gt;NodeJs&lt;/a&gt; (Latest LTS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-2017" rel="nofollow"&gt;Microsoft SQL Server&lt;/a&gt; (Optional: If MS SQL server required instead of Sqlite during development)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/" rel="nofollow"&gt;POSTGRESQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Configuration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repo: git clone  &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp.git"&gt;https://github.com/sunilkumarmedium/CleanArchitectureApp.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execute the sql scripts available in the folder &lt;code&gt;/sql/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;MSSQL use CleanArchitectureDB.sql&lt;/li&gt;
&lt;li&gt;POSTGRES use CleanArchitectureDB-Postgres&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Change the database connectionstring in appsettings.json
&lt;ul&gt;
&lt;li&gt;Path : CleanArchitectureApp.WebApi/appsettings.Development.json  or appsettings.json&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"DBProvider": "MSSQL" ,&lt;/code&gt; Use &lt;code&gt;MSSQL&lt;/code&gt; to connect to Microsoft SqlServer Or &lt;code&gt;POSTGRES&lt;/code&gt; to connect to PostgreSQL database&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"ConnectionStrings": {  "MSSQLConnection": "Data Source=DESKTOP-SUNILBO;Initial Catalog=CleanArchitectureDB;User ID=sa;Password=xxx;MultipleActiveResultSets=True",  "PostgresConnection": "Server=127.0.0.1;Port=5432;Database=CleanArchitectureDB;User Id=postgres;Password=xxx;Timeout=30;TimeZone=UTC"   }'   &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;cd to…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


</description>
      <category>aws</category>
      <category>postgres</category>
    </item>
    <item>
      <title>AWS Systems Manager Parameter Store for Managing Configuration and Retrieve at Runtime using C#</title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Sat, 28 Nov 2020 01:51:15 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/aws-systems-manager-parameter-store-for-managing-configuration-and-retrieve-at-runtime-using-c-58of</link>
      <guid>https://dev.to/sunilkumarmedium/aws-systems-manager-parameter-store-for-managing-configuration-and-retrieve-at-runtime-using-c-58of</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;One common challenge in application development is ensuring that any configuration data liable to change across deployments is separated from the code, allowing a single release to be configured for multiple environments.&lt;/p&gt;

&lt;p&gt;AWS's solution for storing configuration data is called &lt;strong&gt;AWS Systems Manager Parameter Store&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Parameter Store provides a mechanism to store and manage configuration data, encrypted or plain text, using a hierarchical structure. &lt;/p&gt;

&lt;p&gt;Parameter Store is ideal for storing passwords, database strings, and all other types of general configuration values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;br&gt;
To complete this learning, you will need:&lt;br&gt;
✓ An AWS Account&lt;br&gt;
✓ An IAM user with access key credentials&lt;br&gt;
✓ Visual Studio Code or Visual Studio 2019+ for Windows&lt;/p&gt;

&lt;p&gt;If you don't have an account visit &lt;a href="https://aws.amazon.com" rel="noopener noreferrer"&gt;AWS&lt;/a&gt; and click Sign Up.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You must have a set of valid AWS credentials, consisting of an access key and a secret key, which are used to sign programmatic requests to AWS. You can obtain a set of account credentials when you create your account, although we recommend you do not use these credentials and instead create an IAM user and use those credentials.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Installing the AWS CLI:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install the &lt;code&gt;AWS CLI&lt;/code&gt; for Windows, Mac, or Linux: &lt;a href="https://aws.amazon.com/cli/" rel="noopener noreferrer"&gt;https://aws.amazon.com/cli/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once installed, you can configure the CLI by running the &lt;code&gt;aws configure&lt;/code&gt; command in a terminal or command-line window.&lt;/p&gt;

&lt;p&gt;When prompted, enter your &lt;code&gt;AWS Access Key ID&lt;/code&gt; and press Enter.&lt;/p&gt;

&lt;p&gt;Enter your &lt;code&gt;AWS Secret Access Key&lt;/code&gt; when prompted and then press Enter.&lt;/p&gt;

&lt;p&gt;For the &lt;code&gt;default region name&lt;/code&gt; you should enter your chosen region code (e.g. ap-south-1)&lt;/p&gt;

&lt;p&gt;Finally, for the &lt;code&gt;default output&lt;/code&gt; format you can just press Enter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating Parameter Store data using AWS CLI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create an entry in the Parameter Store, execute the following command in the terminal or command-line window:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ssm put-parameter --name "/CleanArchitectureAppWebApi/postgresconnection" --type String --value "ConnectionString"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adding Secure String&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ssm put-parameter --name "secure-parameter-name" --type "SecureString" --value "secure-parameter-value"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The above command will create the parameter in the region you specified as your default profile configured.&lt;br&gt;
To create a parameter in a different region, add the --region parameter, for example --region ap-south-1.&lt;/p&gt;

&lt;p&gt;We can retrieve the parameter created by running the following command in the terminal or command-line window:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ssm get-parameter --name "/CleanArchitectureAppWebApi/postgresconnection"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To delete data from Parameter Store execute the following command in a terminal or command-line window:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;aws ssm delete-parameter --name "/CleanArchitectureAppWebApi/postgresconnection"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating Parameter Store data using AWS Console&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log-in to the AWS Management Console&lt;/li&gt;
&lt;li&gt;search for 'Systems Manager' and Click on Create Parameter
&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqepg3q02w8svvcphayqg.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Retrieving the parameter using C#&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that you have created a configuration value, it's time to create a basic .NET C# application that can retrieve the data at runtime.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create C# console or Web application&lt;/li&gt;
&lt;li&gt;Reference the AWS SDK SimpleSystemsManager Package using nuget package console
&lt;code&gt;&amp;lt;PackageReference Include="AWSSDK.SimpleSystemsManagement" Version="3.5.5.6" /&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add the below Assembly references 
&lt;code&gt;using Amazon.SimpleSystemsManagement;
using Amazon.SimpleSystemsManagement.Model;&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var request = new GetParameterRequest()
{
     Name = "/CleanArchitectureAppWebApi/postgresconnection"
                    };

                    using (var client = new AmazonSimpleSystemsManagementClient(Amazon.RegionEndpoint.GetBySystemName("ap-south-1")))
                    {
                        var response =  client.GetParameterAsync(request).GetAwaiter().GetResult();
                        connectionString = response.Parameter.Value;
                    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The &lt;code&gt;Name&lt;/code&gt; and the &lt;code&gt;Region&lt;/code&gt; can be read from the appsettings.json configuration.&lt;/p&gt;

&lt;p&gt;You can see the implementation in the below Github project&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sunilkumarmedium" rel="noopener noreferrer"&gt;
        sunilkumarmedium
      &lt;/a&gt; / &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;
        CleanArchitectureApp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Clean Architecture Application Design from Scratch using Dotnet Core 5 WebApi and Angular 11 FrontEnd
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;CleanArchitectureApp&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Clean Architecture Application Design from Scratch using Dotnet Core 5 WebApi and Angular 11 FrontEnd&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1c8f92c476bfc7047835c2411ea56567177bf4c399982cefe4f662622cad7c28/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Technologies&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/" rel="nofollow noopener noreferrer"&gt;ASP.NET Core 5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nhibernate.info/" rel="nofollow noopener noreferrer"&gt;NHibernate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="nofollow noopener noreferrer"&gt;Angular 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cli.angular.io/" rel="nofollow noopener noreferrer"&gt;Angular CLI 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore" rel="noopener noreferrer"&gt;Swashbuckle.AspNetCore.Swagger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design Pattern: Command Query Responsibility Segregation (CQRS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fluentvalidation.net/" rel="nofollow noopener noreferrer"&gt;Fluent Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebAPI Global Exception Middleware&lt;/li&gt;
&lt;li&gt;Login, Logout and Forgot Password using JWT tokens&lt;/li&gt;
&lt;li&gt;Microsoft Sql Server and Postgresql supported&lt;/li&gt;
&lt;li&gt;AWS Postgres RDS&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;AWS Systems Manager&lt;/li&gt;
&lt;li&gt;AWS Simple Storage Service (S3)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/docker-for-windows/install/" rel="nofollow noopener noreferrer"&gt;Docker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Pre-requisites&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windows" rel="nofollow noopener noreferrer"&gt;.Net core 5 SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visualstudio.com/" rel="nofollow noopener noreferrer"&gt;Visual studio 2019&lt;/a&gt; OR &lt;a href="https://code.visualstudio.com/" rel="nofollow noopener noreferrer"&gt;VSCode&lt;/a&gt; with &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="nofollow noopener noreferrer"&gt;C#&lt;/a&gt; extension&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="nofollow noopener noreferrer"&gt;NodeJs&lt;/a&gt; (Latest LTS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-2017" rel="nofollow noopener noreferrer"&gt;Microsoft SQL Server&lt;/a&gt; (Optional: If MS SQL server required instead of Sqlite during development)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/" rel="nofollow noopener noreferrer"&gt;POSTGRESQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Configuration&lt;/h2&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repo: git clone  &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp.git" rel="noopener noreferrer"&gt;https://github.com/sunilkumarmedium/CleanArchitectureApp.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execute the sql scripts available in the folder &lt;code&gt;/sql/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;MSSQL use CleanArchitectureDB.sql&lt;/li&gt;
&lt;li&gt;POSTGRES use CleanArchitectureDB-Postgres&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Change the database connectionstring in appsettings.json
&lt;ul&gt;
&lt;li&gt;Path : CleanArchitectureApp.WebApi/appsettings.Development.json  or appsettings.json&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"DBProvider": "MSSQL" ,&lt;/code&gt; Use &lt;code&gt;MSSQL&lt;/code&gt; to connect to Microsoft SqlServer Or &lt;code&gt;POSTGRES&lt;/code&gt; to connect to PostgreSQL…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sunilkumarmedium/CleanArchitectureApp" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Happy Coding!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>csharp</category>
    </item>
    <item>
      <title>Building Single Page Application Using Angular 11 — FrontEnd</title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Mon, 23 Nov 2020 07:23:57 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/building-single-page-application-using-angular-11-frontend-1o1c</link>
      <guid>https://dev.to/sunilkumarmedium/building-single-page-application-using-angular-11-frontend-1o1c</guid>
      <description>&lt;p&gt;In this post, we will focus on building the Angular frontend integrating with WebApi&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building Angular Single Page Application integrating with backend ASP.NET WebAPI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting up Angular 11 for Local Development&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To install angular the following pre-requisites installations is required&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;NodeJs active LTS&lt;/li&gt;
&lt;li&gt;NPM package Manager
&lt;strong&gt;Installing the Angular CLI&lt;/strong&gt;
&amp;gt; The Angular CLI is a command-line interface tool that you use to initialize, develop, scaffold, and maintain Angular applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;npm install -g @angular/cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Verify the version of angular using the below command&lt;br&gt;
&lt;code&gt;ng — version&lt;/code&gt;&lt;br&gt;
Angular Version installed in my local development environment&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QLOq0F89--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x584r5qzgtdgd5ie82m6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QLOq0F89--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/x584r5qzgtdgd5ie82m6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating an Angular App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run the CLI command ng and provide the name of the app as shown below&lt;br&gt;
&lt;code&gt;ng new myapp&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Run the App&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To run the application navigate to the app folder created and run the below command&lt;br&gt;
&lt;code&gt;cd myapp&lt;br&gt;
npm install&lt;br&gt;
ng serve — open&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;ng serve&lt;/code&gt; command launches the server watches your files and rebuilds the app as you make changes to those files.&lt;/p&gt;

&lt;p&gt;In this application, we are going to use the ng bootstrap CSS. To install run the below command in the terminal&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install — save @ng-bootstrap/ng-bootstrap&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Angular App Structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using visual studio code editor for building the application. Below is the application structure&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mh7ts31L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2ricudwkpz7ptixoqglh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mh7ts31L--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2ricudwkpz7ptixoqglh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Project code is available on Github&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sunilkumarmedium"&gt;
        sunilkumarmedium
      &lt;/a&gt; / &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;
        CleanArchitectureApp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
CleanArchitectureApp&lt;/h1&gt;
&lt;p&gt;Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.org/licenses/MIT" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9f6b5dca9fd95975898fb95c2cc5b995351004a6c4443ccb13e1916a97bb122a/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Technologies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/" rel="nofollow"&gt;ASP.NET Core 3.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nhibernate.info/" rel="nofollow"&gt;NHibernate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="nofollow"&gt;Angular 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cli.angular.io/" rel="nofollow"&gt;Angular CLI 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sunilkumarmedium/CleanArchitectureApp/main/"&gt;Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore"&gt;Swashbuckle.AspNetCore.Swagger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design Pattern: Command Query Responsibility Segregation (CQRS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fluentvalidation.net/" rel="nofollow"&gt;Fluent Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebAPI Global Exception Middleware&lt;/li&gt;
&lt;li&gt;Login, Logout and Forgot Password using JWT tokens&lt;/li&gt;
&lt;li&gt;Microsoft Sql Server and Postgresql supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Pre-requisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windows" rel="nofollow"&gt;.Net core 3.1 SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visualstudio.com/" rel="nofollow"&gt;Visual studio 2019&lt;/a&gt; OR &lt;a href="https://code.visualstudio.com/" rel="nofollow"&gt;VSCode&lt;/a&gt; with &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="nofollow"&gt;C#&lt;/a&gt; extension&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="nofollow"&gt;NodeJs&lt;/a&gt; (Latest LTS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-2017" rel="nofollow"&gt;Microsoft SQL Server&lt;/a&gt; (Optional: If MS SQL server required instead of Sqlite during development)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/" rel="nofollow"&gt;POSTGRESQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Configuration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repo: git clone  &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp.git"&gt;https://github.com/sunilkumarmedium/CleanArchitectureApp.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execute the sql scripts available in the folder &lt;code&gt;/sql/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;MSSQL use CleanArchitectureDB.sql&lt;/li&gt;
&lt;li&gt;POSTGRES use CleanArchitectureDB-Postgres&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Change the database connectionstring in appsettings.json
&lt;ul&gt;
&lt;li&gt;Path : CleanArchitectureApp.WebApi/appsettings.Development.json  or appsettings.json&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"DBProvider": "MSSQL" ,&lt;/code&gt; Use &lt;code&gt;MSSQL&lt;/code&gt; to connect to Microsoft SqlServer Or &lt;code&gt;POSTGRES&lt;/code&gt; to connect to PostgreSQL database&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"ConnectionStrings": {  "MSSQLConnection": "Data Source=DESKTOP-SUNILBO;Initial Catalog=CleanArchitectureDB;User ID=sa;Password=xxx;MultipleActiveResultSets=True",  "PostgresConnection": "Server=127.0.0.1;Port=5432;Database=CleanArchitectureDB;User Id=postgres;Password=xxx;Timeout=30;TimeZone=UTC"   }'   &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;cd to…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Creating project folders&lt;br&gt;
Inside the “app” folder, let’s create the folders “_models”, “_components”, “_shared” “_services”.&lt;br&gt;
In the “_models” folder we will place our entities, like User:&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Creating Components&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Components are the main building block for Angular applications. Each component consists of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An HTML template that declares what renders on the page&lt;/li&gt;
&lt;li&gt;A Typescript class that defines the behavior&lt;/li&gt;
&lt;li&gt;A CSS selector that defines how the component is used in a template Optionally, CSS styles applied to the template&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sample Login Component&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Services&lt;/strong&gt;&lt;br&gt;
Services can be used to have business logic in one place and can be injected into components when required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dependency Injection in Angular&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dependency injection (DI), is an important application design pattern. Angular has its own DI framework, which is typically used in the design of Angular applications to increase their efficiency and modularity.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To create a service, run the below command in the terminal window&lt;br&gt;
&lt;code&gt;ng generate service _services/authentication&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Below is the sample Service&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Interceptors&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Intercepting requests and responses, With interception, you declare interceptors that inspect and transform HTTP requests from your application to a server. The same interceptors can also inspect and transform a server’s responses on their way back to the application. Multiple interceptors form a forward-and-backward chain of request/response handlers.&lt;/p&gt;

&lt;p&gt;In our application, We have created JwtInteceptor to add the JWT token to every request that hits to web API. Below is the code implementation.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Global Error Handler&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Handling exceptions in common service that implements ErrorHandler.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;AuthGuard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;AuthGuard can be used to restrict the user from viewing unauthorized pages or Components. Below is the AuthGuard Implementation.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Running the Application in Visual Studio Code&lt;/strong&gt;&lt;br&gt;
Open the project folder in the visual studio code and click on the run tab and select the projects to run as shown in the below screenshot&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--owyplt-7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r3sivv2r4aqz9pmov9s3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--owyplt-7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r3sivv2r4aqz9pmov9s3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Angular Application and WebAPI are running in URL's below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;WebAPI: &lt;a href="http://localhost:5001"&gt;http://localhost:5001&lt;/a&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pdlyWi2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qazrl8py9i8shhqixa3n.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;li&gt;AngularWeb: &lt;a href="http://localhost:5003"&gt;http://localhost:5003&lt;/a&gt;
Test User to Login&lt;/li&gt;
&lt;li&gt;Username: system&lt;/li&gt;
&lt;li&gt;Password: admin@123
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TOvMMCwi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6qw9chzahezk63g5823s.png" alt="Alt Text"&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y_5Aca8B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/tsucgoo5saaoqv1up2a4.png" alt="Alt Text"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Hope you enjoyed the post and please feel free to play around with code&lt;/p&gt;

&lt;p&gt;Happy Coding!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Series Links&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Building an ASP.NET Core WebAPI using Clean Architecture&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-81b57c315dfa" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9zTKUzVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/56/56/1%2AAQwJQ6jwGE5s4aY6GmP8uQ.jpeg" alt="Sunil Kumar"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-81b57c315dfa" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building Clean Architecture Application using ASP.NET Core Web API and Angular 11 — Backend | by Sunil Kumar | Nov, 2020 | Medium&lt;/h2&gt;
      &lt;h3&gt;Sunil Kumar ・ &lt;time&gt;Nov 22, 2020&lt;/time&gt; ・ 3 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KBvj_QRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-90d5232a5da2369849f285fa499c8005e750a788fdbf34f5844d5f2201aae736.svg" alt="Medium Logo"&gt;
        sunil-kumar-60226.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;strong&gt;Building an Angular 11 Application integrated with WebAPI&lt;/strong&gt;&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-single-page-application-using-angular-11-frontend-7170ae9f8aec" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9zTKUzVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/56/56/1%2AAQwJQ6jwGE5s4aY6GmP8uQ.jpeg" alt="Sunil Kumar"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-single-page-application-using-angular-11-frontend-7170ae9f8aec" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building Single Page Application Using Angular 11 — FrontEnd | by Sunil Kumar | Nov, 2020 | Medium&lt;/h2&gt;
      &lt;h3&gt;Sunil Kumar ・ &lt;time&gt;Nov 22, 2020&lt;/time&gt; ・ 4 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KBvj_QRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-90d5232a5da2369849f285fa499c8005e750a788fdbf34f5844d5f2201aae736.svg" alt="Medium Logo"&gt;
        sunil-kumar-60226.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>angular</category>
    </item>
    <item>
      <title>Building Clean Architecture Application using ASP.NET Core Web API and Angular 11 — Backend</title>
      <dc:creator>sunilkumarmedium</dc:creator>
      <pubDate>Mon, 23 Nov 2020 06:40:37 +0000</pubDate>
      <link>https://dev.to/sunilkumarmedium/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-1go7</link>
      <guid>https://dev.to/sunilkumarmedium/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-1go7</guid>
      <description>&lt;p&gt;In this article, we are going to learn building a Clean Architecture application using ASP.NET Core Web API and Angular 11 Front End.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;br&gt;
Building an ASP.NET Core WebAPI using Clean Architecture&lt;br&gt;
&lt;strong&gt;Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ASP.NET Core 3.1 Web API.&lt;/li&gt;
&lt;li&gt;API Versioning&lt;/li&gt;
&lt;li&gt;Swagger UI.&lt;/li&gt;
&lt;li&gt;JWT Token Authentication&lt;/li&gt;
&lt;li&gt;Global Error Handler Middleware&lt;/li&gt;
&lt;li&gt;CQRS ( Command Query Responsibility Segregation)&lt;/li&gt;
&lt;li&gt;MediatR&lt;/li&gt;
&lt;li&gt;NHibernate ORM&lt;/li&gt;
&lt;li&gt;Generic Repository Pattern&lt;/li&gt;
&lt;li&gt;Fluent Validation&lt;/li&gt;
&lt;li&gt;SQLSERVER&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Github Project&lt;/strong&gt;&lt;br&gt;
You can refer to the below GitHub project for complete implementation.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sunilkumarmedium"&gt;
        sunilkumarmedium
      &lt;/a&gt; / &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;
        CleanArchitectureApp
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
CleanArchitectureApp&lt;/h1&gt;
&lt;p&gt;Clean Architecture Application Design from Scratch using Dotnet Core 3.1 WebApi and Angular 11 FrontEnd&lt;/p&gt;
&lt;p&gt;&lt;a href="http://opensource.org/licenses/MIT" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9f6b5dca9fd95975898fb95c2cc5b995351004a6c4443ccb13e1916a97bb122a/687474703a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e737667" alt="MIT license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Technologies&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dotnet.microsoft.com/" rel="nofollow"&gt;ASP.NET Core 3.1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://nhibernate.info/" rel="nofollow"&gt;NHibernate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://angular.io/" rel="nofollow"&gt;Angular 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cli.angular.io/" rel="nofollow"&gt;Angular CLI 11&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/sunilkumarmedium/CleanArchitectureApp/main/"&gt;Clean Architecture&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/domaindrivendev/Swashbuckle.AspNetCore"&gt;Swashbuckle.AspNetCore.Swagger&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Design Pattern: Command Query Responsibility Segregation (CQRS)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fluentvalidation.net/" rel="nofollow"&gt;Fluent Validation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;WebAPI Global Exception Middleware&lt;/li&gt;
&lt;li&gt;Login, Logout and Forgot Password using JWT tokens&lt;/li&gt;
&lt;li&gt;Microsoft Sql Server and Postgresql supported.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Pre-requisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.microsoft.com/net/core#windows" rel="nofollow"&gt;.Net core 3.1 SDK&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.visualstudio.com/" rel="nofollow"&gt;Visual studio 2019&lt;/a&gt; OR &lt;a href="https://code.visualstudio.com/" rel="nofollow"&gt;VSCode&lt;/a&gt; with &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.csharp" rel="nofollow"&gt;C#&lt;/a&gt; extension&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://nodejs.org/en/" rel="nofollow"&gt;NodeJs&lt;/a&gt; (Latest LTS)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.microsoft.com/en-us/sql-server/sql-server-2017" rel="nofollow"&gt;Microsoft SQL Server&lt;/a&gt; (Optional: If MS SQL server required instead of Sqlite during development)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.postgresql.org/download/" rel="nofollow"&gt;POSTGRESQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
Configuration&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Clone the repo: git clone  &lt;a href="https://github.com/sunilkumarmedium/CleanArchitectureApp.git"&gt;https://github.com/sunilkumarmedium/CleanArchitectureApp.git&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Execute the sql scripts available in the folder &lt;code&gt;/sql/&lt;/code&gt;
&lt;ul&gt;
&lt;li&gt;MSSQL use CleanArchitectureDB.sql&lt;/li&gt;
&lt;li&gt;POSTGRES use CleanArchitectureDB-Postgres&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Change the database connectionstring in appsettings.json
&lt;ul&gt;
&lt;li&gt;Path : CleanArchitectureApp.WebApi/appsettings.Development.json  or appsettings.json&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"DBProvider": "MSSQL" ,&lt;/code&gt; Use &lt;code&gt;MSSQL&lt;/code&gt; to connect to Microsoft SqlServer Or &lt;code&gt;POSTGRES&lt;/code&gt; to connect to PostgreSQL database&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"ConnectionStrings": {  "MSSQLConnection": "Data Source=DESKTOP-SUNILBO;Initial Catalog=CleanArchitectureDB;User ID=sa;Password=xxx;MultipleActiveResultSets=True",  "PostgresConnection": "Server=127.0.0.1;Port=5432;Database=CleanArchitectureDB;User Id=postgres;Password=xxx;Timeout=30;TimeZone=UTC"   }'   &lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;cd to…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sunilkumarmedium/CleanArchitectureApp"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Onion Architecture&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GQLhVfaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b49rd4ylhgifcf6hl2iq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GQLhVfaH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/b49rd4ylhgifcf6hl2iq.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Clean Architecture&lt;/strong&gt;&lt;br&gt;
The architecture defines where the application performs its core functionality and how that functionality interacts with things like the database and the user interface. Clean architecture refers to organizing the project so that it’s easy to understand and easy to change as the project grows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command Query Responsibility Segregation&lt;/strong&gt; is a design pattern to separate the read and write processes of your application. Read operations are called Queries and write operations are called Commands.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Project Structure&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n4PPcRxA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rr3ha7fsuejc9kyf7s62.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n4PPcRxA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rr3ha7fsuejc9kyf7s62.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swagger UI Setup&lt;/strong&gt;&lt;br&gt;
The swagger object model and middleware exposes the JSON objects as Endpoints&lt;/p&gt;

&lt;p&gt;Installing Swagger packages using NuGet package console with the below command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Install-Package Swashbuckle.AspNetCore -Version 5.6.3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Swagger Configuration with Bearer token Authentication&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pdlyWi2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qazrl8py9i8shhqixa3n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pdlyWi2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qazrl8py9i8shhqixa3n.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;JWT Token Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The JWT Bearer Token is used for accessing the WebApi endpoints securely. Below is the JWT configuration&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Token Generation On Successful Login&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Global Error Middleware&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Server Internal Error Exceptions and Business Validation Exceptions are handled and the response is returned for use of displaying these validations in UI.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;NHibernate ORM and Generic Repository Pattern&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;NHibernate is used to interact with the database. Singleton Session factory is implemented. Below is the Persistence Layer Service Extension.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;User Entity&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;UserMap&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Fluent Validation&lt;/strong&gt;&lt;br&gt;
Package Reference:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;PackageReference Include=”FluentValidation.DependencyInjectionExtensions” Version=”9.3.0" /&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To define a set of validation rules for a particular object, you will need to create a class that inherits from AbstractValidator, where T is the type of class that you wish to validate.&lt;/p&gt;

&lt;p&gt;Below is the sample Create User Validations.&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Hope enjoyed my first article please feel free to download the code and play around. Next article we will get in touch with Angular 11.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Series Links&lt;/strong&gt;&lt;br&gt;
Building an ASP.NET Core WebAPI using Clean Architecture&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-81b57c315dfa" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9zTKUzVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/56/56/1%2AAQwJQ6jwGE5s4aY6GmP8uQ.jpeg" alt="Sunil Kumar"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-clean-architecture-application-using-asp-net-core-web-api-and-angular-11-backend-81b57c315dfa" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building Clean Architecture Application using ASP.NET Core Web API and Angular 11 — Backend | by Sunil Kumar | Nov, 2020 | Medium&lt;/h2&gt;
      &lt;h3&gt;Sunil Kumar ・ &lt;time&gt;Nov 22, 2020&lt;/time&gt; ・ 3 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KBvj_QRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-90d5232a5da2369849f285fa499c8005e750a788fdbf34f5844d5f2201aae736.svg" alt="Medium Logo"&gt;
        sunil-kumar-60226.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
Building an Angular 11 Application integrated with WebAPI&lt;br&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-single-page-application-using-angular-11-frontend-7170ae9f8aec" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9zTKUzVP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/fit/c/56/56/1%2AAQwJQ6jwGE5s4aY6GmP8uQ.jpeg" alt="Sunil Kumar"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://sunil-kumar-60226.medium.com/building-single-page-application-using-angular-11-frontend-7170ae9f8aec" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Building Single Page Application Using Angular 11 — FrontEnd | by Sunil Kumar | Nov, 2020 | Medium&lt;/h2&gt;
      &lt;h3&gt;Sunil Kumar ・ &lt;time&gt;Nov 22, 2020&lt;/time&gt; ・ 4 min read
      &lt;div class="ltag__link__servicename"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KBvj_QRD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/medium_icon-90d5232a5da2369849f285fa499c8005e750a788fdbf34f5844d5f2201aae736.svg" alt="Medium Logo"&gt;
        sunil-kumar-60226.Medium
      &lt;/div&gt;
    &lt;/h3&gt;
&lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>angular</category>
      <category>dotnet</category>
      <category>cleanarchitecture</category>
    </item>
  </channel>
</rss>
