<?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: Md. Mizanur Rahman</title>
    <description>The latest articles on DEV Community by Md. Mizanur Rahman (@mizaniftee).</description>
    <link>https://dev.to/mizaniftee</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%2F1155430%2F064bc30a-645d-4512-b284-bc985cf735d8.jpg</url>
      <title>DEV Community: Md. Mizanur Rahman</title>
      <link>https://dev.to/mizaniftee</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mizaniftee"/>
    <language>en</language>
    <item>
      <title>Build Node.js app in Replit &amp; use s3 as static web hosting serving with CDN</title>
      <dc:creator>Md. Mizanur Rahman</dc:creator>
      <pubDate>Mon, 14 Jul 2025 12:19:36 +0000</pubDate>
      <link>https://dev.to/mizaniftee/build-nodejs-app-in-replit-use-s3-as-static-web-hosting-serving-with-cdn-4n83</link>
      <guid>https://dev.to/mizaniftee/build-nodejs-app-in-replit-use-s3-as-static-web-hosting-serving-with-cdn-4n83</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%2Fvya8qnklatuxvm1rgzr5.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%2Fvya8qnklatuxvm1rgzr5.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;In this AI Era, there's lot of prompt module are available to ease our daily life. Among them i have found one good one which is 'replit'. link: &lt;a href="https://replit.com/" rel="noopener noreferrer"&gt;https://replit.com/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I have developed my portfolio in replit. it's node.js app. i have given a prompt to develop like this and gave all kinds of information in replit.&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%2F9rl5zg78y5hxi1arype7.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%2F9rl5zg78y5hxi1arype7.png" alt=" " width="800" height="305"&gt;&lt;/a&gt;&lt;br&gt;
After building the project, i have downloaded the code and then build the application code locally.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm init -y&lt;br&gt;
npm run build&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Then i have created a S3 bucket and upload assets folder and index.html of that build project. [&lt;strong&gt;S3 has all public access blocked&lt;/strong&gt;]&lt;/p&gt;

&lt;p&gt;For static web hosting, i had to enable the "Static website hosting" from S3--&amp;gt; Properties.&lt;br&gt;
So, if that option is enabled then a weblink you will get and try to open it and found that your app is available on that link.[If public access enabled]&lt;/p&gt;

&lt;p&gt;Now the main part, CDN configuration. I have created an CDN with Default config.[CDN takes time to be created fully]&lt;br&gt;
I have configured altenate domain name with my domain 'mizaniftee.xyz'&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%2Fjgr7ynbkbx8g7bjvin54.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%2Fjgr7ynbkbx8g7bjvin54.png" alt=" " width="800" height="74"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then i have configured the SSL from AWS ACM. Records were automatically added in my hosted zone.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N.B: If you want to use CDN with your wildcard domain then it couldn't be added manually. like i wanted to forward mizaniftee.xyz to CDN URL but couldn't. here &lt;a href="http://www.mizaniftee.xyz" rel="noopener noreferrer"&gt;www.mizaniftee.xyz&lt;/a&gt; was doable&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As i have set S3 as private, so i had to add some permission in s3 bucket by which CDN could access the files.&lt;br&gt;
going to s3--&amp;gt; Permissions then add below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::s3_Bucket_name/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::YOUR_ACCOUNT_ID:distribution/DISTRIBUTION_ID"
                }
            }
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now i could easily access my portfolio website with my domain which is serving through CDN to s3 bucket Files.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>aws</category>
      <category>replit</category>
      <category>sre</category>
    </item>
    <item>
      <title>How to Create &amp; Setting Up IAM Identity Center</title>
      <dc:creator>Md. Mizanur Rahman</dc:creator>
      <pubDate>Wed, 27 Nov 2024 15:52:37 +0000</pubDate>
      <link>https://dev.to/mizaniftee/how-to-create-setting-up-iam-identity-center-4m1g</link>
      <guid>https://dev.to/mizaniftee/how-to-create-setting-up-iam-identity-center-4m1g</guid>
      <description>&lt;p&gt;IAM Identity Center is the AWS solution for connecting your workforce users to AWS managed application.&lt;br&gt;
Identity Center Permission Sets are basically templates of IAM roles that will be provisioned in the account. When you assign a permission set to an account, the role is created and a trust policy to handle the federation is configured automatically.&lt;br&gt;
It also supports SSO[Single Sign-On] as well as you could integrate 3rd party like AAD[Azure Active Directory] to this.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started:
&lt;/h3&gt;

&lt;p&gt;First Go to that account Console with &lt;a href="https://Account_Number.signin.aws.amazon.com/console" rel="noopener noreferrer"&gt;https://Account_Number.signin.aws.amazon.com/console&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then Search &lt;strong&gt;IAM Identity Center&lt;/strong&gt; and Press on &lt;strong&gt;Enable&lt;/strong&gt;. You can Enable in any region as you wish.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N.B- Though you have enabled IAM Identity Center, you could also use specific account console as you have used before. Like &lt;a href="https://Account_Number.signin.aws.amazon.com/console" rel="noopener noreferrer"&gt;https://Account_Number.signin.aws.amazon.com/console&lt;/a&gt; but for that you need to have IAM Role for that Or Root Account Holder.&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%2F56wyk8obdxn2wmapefk9.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%2F56wyk8obdxn2wmapefk9.png" alt=" " width="800" height="241"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After Enabling, Got Successful Message&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%2Ft6pzan8c1qsgrw1h3fw0.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%2Ft6pzan8c1qsgrw1h3fw0.png" alt=" " width="800" height="51"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, Edit the Instance name as it will be showed when you want to access through &lt;em&gt;AWS Access Portal&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzuf3pwcgogfidt1mqqnm.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%2Fzuf3pwcgogfidt1mqqnm.png" alt=" " width="313" height="98"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to customize your access portal URL and provide the URL to the USER. Go to Dashboard&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%2Fj95ovj9yxidl8u4abwmb.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%2Fj95ovj9yxidl8u4abwmb.png" alt=" " width="800" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, Link will be like that &lt;code&gt;https://mizanzone.awsapps.com/start&lt;/code&gt;. And After login, we could see the &lt;strong&gt;Mizan tech Account&lt;/strong&gt; For that specific account.&lt;/p&gt;

&lt;h2&gt;
  
  
  Permission &amp;amp; Others:
&lt;/h2&gt;

&lt;p&gt;You need to create permissions sets. There are some predefined sets like below:&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%2F8z0h60pmxyv6x69c97jf.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%2F8z0h60pmxyv6x69c97jf.png" alt=" " width="800" height="518"&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%2Fybb3zd6eshcn4p9cw42o.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%2Fybb3zd6eshcn4p9cw42o.png" alt=" " width="311" height="202"&gt;&lt;/a&gt;&lt;br&gt;
&lt;code&gt;Here session is = aws access portal session after login.&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Relay State:&lt;/strong&gt; No need right now &lt;em&gt;[it will forward to that URL what is set in the section]&lt;/em&gt;&lt;br&gt;
You could set Custom Permission set there. Like only &lt;strong&gt;Ec2-admin/ S3-Access&lt;/strong&gt; as You want per requirements.&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%2Fn8h5ncfoztnh9v205cuz.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%2Fn8h5ncfoztnh9v205cuz.png" alt=" " width="800" height="190"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will create groups and set users to that group.&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%2Fr55jx35x2ba9loqhjzcf.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%2Fr55jx35x2ba9loqhjzcf.png" alt=" " width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we will create users and assign to the required groups. Please create users with mail-wise for the company. So that anyone could use their mail as Username.&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%2Fscmh9oytuxyxyvzm64hh.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%2Fscmh9oytuxyxyvzm64hh.png" alt=" " width="800" height="100"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After Creating the IAM Identity center, Root user will create another user to work with him in the same account or in the identity center.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;N.B: You could add multiple AWS Accounts under Same organization. Just need to send invite from AWS Organization page.After that, all the Accounts will be listed under IAM Identity Center AWS Account&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, You need to assign permission sets &amp;amp; Groups to the accounts of that AWS Organization. What Permission set and groups are added in the AWS Account, only those could access that account permission wise.&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%2Flpisnjbnfnd9femb0cih.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%2Flpisnjbnfnd9femb0cih.png" alt=" " width="800" height="136"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When we have multiple accounts that time all the accounts will be listed above.&lt;br&gt;
Now, we will use Access portal URL [&lt;code&gt;https://mizanzone.awsapps.com/start/&lt;/code&gt;] and after login, we will get views like that&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%2F9t4e27ey0uckx69ags8d.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%2F9t4e27ey0uckx69ags8d.png" alt=" " width="403" height="589"&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%2Fuckiw0qb1vykl5tqdwhn.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%2Fuckiw0qb1vykl5tqdwhn.png" alt=" " width="480" height="84"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/singlesignon/latest/userguide/get-set-up-for-idc.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/aws-builders/setting-up-aws-iam-identity-center-as-an-identity-provider-for-confluence-2l8"&gt;https://dev.to/aws-builders/setting-up-aws-iam-identity-center-as-an-identity-provider-for-confluence-2l8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=bVjwu1WN42I" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=bVjwu1WN42I&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>How to Update Aurora Global Database Version</title>
      <dc:creator>Md. Mizanur Rahman</dc:creator>
      <pubDate>Sun, 15 Sep 2024 16:09:32 +0000</pubDate>
      <link>https://dev.to/mizaniftee/how-to-update-aurora-global-database-version-flc</link>
      <guid>https://dev.to/mizaniftee/how-to-update-aurora-global-database-version-flc</guid>
      <description>&lt;p&gt;From time to time we need to update our database version to latest to get the new changes. it could be a major change or minor change.&lt;br&gt;
For minor changes, AWS has provided a option "Auto Minor Version Upgrade" feature for Single RDS, Multi AZ &amp;amp; Aurora single Cluster.&lt;br&gt;
But that feature doesn't apply to the following kinds of Aurora Global clusters:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clusters that are part of an Aurora global database&lt;/li&gt;
&lt;li&gt;Clusters that have cross-Region replicas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, we need to follow some process to update that global DB.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First, Remove all secondary Regions from the global cluster.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Just Select the secondary cluster and go to “&lt;strong&gt;Actions&lt;/strong&gt;“&lt;br&gt;
So, that secondary cluster will be a regional cluster and a seperate cluster.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Upgrade the engine version of the primary Region to desired version, as applicable from Portal or CLI or Terraform[any IAC]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, if "&lt;strong&gt;Enable Deletion Protection&lt;/strong&gt;" is enabled then please disable that option for secondary cluster.&lt;br&gt;
Now delete that secondary region cluster/ you could use as another cluster if needed. if you don't delete then either you have to add with another DB identifier or you will get thise error.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fac35o55ix7674oojy5o2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fac35o55ix7674oojy5o2.png" alt="Image description" width="571" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After Deletion, please select the Global Database and go to "&lt;strong&gt;Actions&lt;/strong&gt;" and "select Add AWS Region". [&lt;strong&gt;check references no-3&lt;/strong&gt;]&lt;br&gt;
If you use Terraform code then run "&lt;strong&gt;terraform apply&lt;/strong&gt;" and it will take time to create those instances.&lt;/p&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-managing.html#aurora-global-database-detaching" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-managing.html#aurora-global-database-detaching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.Patching.html#modify-db-cluster-engine-version" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.Patching.html#modify-db-cluster-engine-version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-getting-started.html#aurora-global-database-attaching" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-global-database-getting-started.html#aurora-global-database-attaching&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://newsletter.simpleaws.dev/p/aurora-global-database-disaster-recovery-aws" rel="noopener noreferrer"&gt;https://newsletter.simpleaws.dev/p/aurora-global-database-disaster-recovery-aws&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>AWS RDS Proxy For Aurora Global Database [MYSQL]</title>
      <dc:creator>Md. Mizanur Rahman</dc:creator>
      <pubDate>Wed, 17 Jul 2024 10:12:52 +0000</pubDate>
      <link>https://dev.to/mizaniftee/aws-rds-proxy-for-aurora-global-database-mysql-561l</link>
      <guid>https://dev.to/mizaniftee/aws-rds-proxy-for-aurora-global-database-mysql-561l</guid>
      <description>&lt;p&gt;Using Amazon RDS Proxy, you can allow your applications to pool and share database connections to improve their ability to scale.&lt;br&gt;
It does so in an active way first by understanding the database protocol. It then adjusts its behavior based on the SQL operations from your application and the result sets from the database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Quotas/Limitation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;you can have up to 20 proxies for each AWS account ID&lt;/li&gt;
&lt;li&gt;Each proxy has a default endpoint. You can also add up to 20 proxy endpoints for each proxy.&lt;/li&gt;
&lt;li&gt;Each proxy can have up to 200 associated Secrets Manager secrets&lt;/li&gt;
&lt;li&gt;RDS Proxy must be in the same virtual private cloud (VPC) as the database. The proxy can't be publicly accessible&lt;/li&gt;
&lt;li&gt;Each proxy can be associated with a single target DB cluster [For Primary need 1 and For Secondary Need another 1]&lt;/li&gt;
&lt;li&gt;can't use RDS Proxy with an RDS for MySQL DB instance that has the read_only parameter in its DB parameter group set to 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Transactions By RDS Proxy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connection reuse can happen after each individual statement when the Aurora MySQL autocommit setting is turned on.&lt;/li&gt;
&lt;li&gt;Conversely, when the autocommit setting is turned off, the first statement you issue in a session begins a new transaction. For example, suppose that you enter a sequence of SELECT, INSERT, UPDATE, and other data manipulation language (DML) statements. In this case, connection reuse doesn't happen until you issue a COMMIT, ROLLBACK, or otherwise end the transaction.&lt;/li&gt;
&lt;li&gt;Entering a data definition language (DDL) statement causes the transaction to end after that statement completes.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Without RDS Proxy, a failover involves a brief outage. During DB failovers, RDS Proxy continues to accept connections at the same IP address and automatically directs connections to the new primary DB instance. [When Failover happens, the secondary cluster becomes primary]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When the database writer is unavailable, RDS Proxy queues up incoming requests.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IP Address Capacity For RDS Proxy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aurora Global DB and RDS Proxy should be in same VPC should have a minimum of two subnets that are in different Availability Zones.&lt;br&gt;
Following are the recommended minimum numbers of IP addresses to leave free in subnets for proxy based on DB instance class sizes.&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%2Fuploads%2Farticles%2Fri2s8vt0fmaxv0qq6jwv.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%2Fuploads%2Farticles%2Fri2s8vt0fmaxv0qq6jwv.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this case, assume the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aurora DB cluster has 1 writer instance of size db.r5.8xlarge and 1 reader instance of size db.r5.2xlarge.&lt;/li&gt;
&lt;li&gt;The proxy that's attached to this DB cluster has the default endpoint and 1 custom endpoint with the read-only role.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this case, the proxy needs approximately 63 free IP addresses (45 for the writer instance, 15 for reader instance, and 3 for the additional custom endpoint).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Database Credentials in AWS Secrets:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For each proxy that we will create, we will first use the Secrets Manager service to store sets of user name and password credentials. Need to create a separate Secrets Manager secret for each database user account that the proxy connects to on the Aurora DB cluster.&lt;/p&gt;

&lt;p&gt;To do this, you can use the setting Credentials for other database, Credentials for RDS database, or Other type of secrets.&lt;br&gt;
Fill in the appropriate values for the User name and Password fields, and values for any other required fields.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;{"username":"db_user",&lt;br&gt;
"password":"db_user_password"}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;IAM Policy to access:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After you create the secrets in Secrets Manager, you create an IAM policy that can access those secrets.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You could create IAM Role automatically when you create the rds proxy.&lt;/li&gt;
&lt;li&gt;You could create policy first, then create role and add assign that role when creating the proxy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Role Creation:&lt;/em&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%2Fuploads%2Farticles%2F70nd187qcjcycult414a.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%2Fuploads%2Farticles%2F70nd187qcjcycult414a.png" alt="Image description"&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%2Fuploads%2Farticles%2Futz9dt5kzr24quehx8bc.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%2Fuploads%2Farticles%2Futz9dt5kzr24quehx8bc.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
then go for "&lt;strong&gt;next&lt;/strong&gt;"&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Policy Creation:&lt;/em&gt;&lt;br&gt;
Use inline policy and add below&lt;/p&gt;

&lt;p&gt;&lt;code&gt;{&lt;br&gt;
    "Version": "2012-10-17",&lt;br&gt;
    "Statement": [&lt;br&gt;
        {&lt;br&gt;
            "Sid": "VisualEditor0",&lt;br&gt;
            "Effect": "Allow",&lt;br&gt;
            "Action": "secretsmanager:GetSecretValue",&lt;br&gt;
            "Resource": [&lt;br&gt;
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_1",&lt;br&gt;
                "arn:aws:secretsmanager:us-east-2:account_id:secret:secret_name_2"&lt;br&gt;
            ]&lt;br&gt;
        },&lt;br&gt;
        {&lt;br&gt;
            "Sid": "VisualEditor1",&lt;br&gt;
            "Effect": "Allow",&lt;br&gt;
            "Action": "kms:Decrypt",&lt;br&gt;
            "Resource": "arn:aws:kms:us-east-2:account_id:key/key_id",&lt;br&gt;
            "Condition": {&lt;br&gt;
                "StringEquals": {&lt;br&gt;
                    "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com"&lt;br&gt;
                }&lt;br&gt;
            }&lt;br&gt;
        }&lt;br&gt;
    ]&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration Points: [Main Points]&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Idle client connection timeout&lt;/em&gt;: Default time 1800s(30m) where a connection could be idle.A client connection is considered idle when the application doesn't submit a new request within the specified time after the previous request completed.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Connection pool maximum connections&lt;/em&gt;: Specify a value from 1 through 100. This setting represents the percentage of the max_connections value that RDS Proxy can use for its connections.&lt;/li&gt;
&lt;li&gt;Like our Prod DB max connection is 4000, so what percentage we will set , rds proxy will use that [percentage*4000]/100&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Connection borrow timeout&lt;/em&gt;: If proxy use all available connection then can specify how long the proxy waits for a database connection to become available before returning a timeout error. We can specify a period up to a maximum of five minutes.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;VPC security group&lt;/em&gt;: must configure the Inbound rules to allow your applications to access the proxy. We must also configure the Outbound rules to allow traffic from our DB targets.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Endpoint for RDS Proxy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each proxy handles connections to a single Aurora DB cluster. If Global DB has a Primary &amp;amp; Secondary Cluster, so you need two RDS Proxy in this regard.&lt;/li&gt;
&lt;li&gt;Add Reader Proxy Endpoint in RDS Proxy will create a read endpoint that points to Aurora DB Cluster Reader.&lt;/li&gt;
&lt;li&gt;Default [Read/Write] Proxy endpoint works with Write instance&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%2Fuploads%2Farticles%2Fihfw6wrdwgz32k5j1a6m.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%2Fuploads%2Farticles%2Fihfw6wrdwgz32k5j1a6m.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You could connect directly to DB or through RDS Proxy, but if we connect with RDS Proxy then you need to create secrets for every user.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;RDS Proxy pricing correlates to the number of vCPUs for each database instance in your Aurora cluster.&lt;br&gt;
If Aurora cluster that has a db.r6.large writer instance (2 vCPUs) and a db.r6.large reader instance (2 vCPUs $0.015 per vCPU-hour) &lt;br&gt;
So, Monthly bill → 2,880 vCPU-hours (4 vCPU x 24 hours x 30 days)==$43.20&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy-network-prereqs.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/rds-proxy-network-prereqs.html&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Monitoring user login through Cloudtrail for IAM Identity Center[AWS]</title>
      <dc:creator>Md. Mizanur Rahman</dc:creator>
      <pubDate>Thu, 07 Sep 2023 15:29:56 +0000</pubDate>
      <link>https://dev.to/mizaniftee/monitoring-user-login-through-cloudtrail-for-iam-identity-centeraws-4g5j</link>
      <guid>https://dev.to/mizaniftee/monitoring-user-login-through-cloudtrail-for-iam-identity-centeraws-4g5j</guid>
      <description>&lt;p&gt;&lt;strong&gt;AWS IAM Identity Center&lt;/strong&gt; helps you securely create or connect your identities and manage their access centrally across AWS accounts and applications. IAM Identity Center is the recommended approach for workforce authentication and authorization on AWS for organizations of any size and type.&lt;/p&gt;

&lt;p&gt;As there is no &lt;strong&gt;lockout/notification&lt;/strong&gt; system for wrong login attempt in &lt;strong&gt;IAM Identity Center&lt;/strong&gt;, so we will discuss how to configure a system by which we could be notified/get wrong login info.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Config Procedure:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;Create a Cloudtrail in that AWS account where the IAM Identity center is configured&lt;/li&gt;
&lt;li&gt;Enable Cloudwatch log + Cloudwatch log group + S3 Storage location&lt;/li&gt;
&lt;li&gt;Create Cloudwatch Logs Metric Filter&lt;/li&gt;
&lt;li&gt;Create SNS and send alarm notifications.&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%2F94szpkypzjuc8t0njkax.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%2F94szpkypzjuc8t0njkax.png" alt="Image description" width="599" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating Cloudtrail:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foonl8lvm2msziuakrhg6.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%2Foonl8lvm2msziuakrhg6.png" alt="Image description" width="450" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Event in Cloudtrail&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frkfe0cv9mzpbkvywcduj.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%2Frkfe0cv9mzpbkvywcduj.png" alt="Image description" width="761" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create Cloudwatch Metric Filter:&lt;/strong&gt;&lt;br&gt;
Now we have to go to &lt;strong&gt;Cloudwatch group&lt;/strong&gt; and set the metric by which Cloudwatch alert will be generated.&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%2Fy7ilq29p7376apc198yo.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%2Fy7ilq29p7376apc198yo.png" alt="Image description" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add below pattern&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%2Fbydjak4gpnvd4wm85f1y.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%2Fbydjak4gpnvd4wm85f1y.png" alt="Image description" width="683" height="233"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ $.eventSource = "signin.amazonaws.com" &amp;amp;&amp;amp; $.serviceEventDetails.CredentialVerification = "Failure" }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After setting the pattern, you could test the pattern at the time of metric creation.&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%2Fy14jen5wn9eh1r4qta40.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%2Fy14jen5wn9eh1r4qta40.png" alt="Image description" width="641" height="345"&gt;&lt;/a&gt;&lt;br&gt;
Now we need to put some values for the &lt;strong&gt;metric&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgdscl04rzh8lu5hpc09r.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%2Fgdscl04rzh8lu5hpc09r.png" alt="Image description" width="511" height="522"&gt;&lt;/a&gt;&lt;br&gt;
Save the changes, so metric will be created and it's time to create a cloudwatch alarm.&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%2F3ycc87l4rvqe0cyqamze.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%2F3ycc87l4rvqe0cyqamze.png" alt="Image description" width="800" height="68"&gt;&lt;/a&gt;&lt;br&gt;
Now we set like below to set the threshold values for login attempts.&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%2Fqfr8wrwry8yifr1g2yfo.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%2Fqfr8wrwry8yifr1g2yfo.png" alt="Image description" width="734" height="278"&gt;&lt;/a&gt;&lt;br&gt;
Set &lt;strong&gt;conditions **per requirements and press "&lt;/strong&gt;next**"&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%2F76bgi1sh7xvxeegdq0o9.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%2F76bgi1sh7xvxeegdq0o9.png" alt="Image description" width="729" height="345"&gt;&lt;/a&gt;&lt;br&gt;
it's time to set &lt;strong&gt;notification policies&lt;/strong&gt; with &lt;strong&gt;SNS&lt;/strong&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Before that we need create a **SNS **with email endpoint to get the alert to the mail.&lt;/p&gt;
&lt;h1&gt;
  
  
  How to create SNS:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;Create SNS with email &lt;code&gt;subscription&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;First create a topic with **standard **type. Give a name and description.&lt;/li&gt;
&lt;li&gt;After creating the "topic", go to that topic.&lt;/li&gt;
&lt;li&gt;Create a "&lt;strong&gt;Subscription&lt;/strong&gt;" where protocol "&lt;strong&gt;Email&lt;/strong&gt;" and set the *&lt;em&gt;endpoint *&lt;/em&gt; [email address]to which we want to get the email.&lt;/li&gt;
&lt;/ul&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%2Foylue0ecxlkxam8cnfht.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%2Foylue0ecxlkxam8cnfht.png" alt="Image description" width="741" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, we will get alert mail like below if any wrong attempt for login crosses the threshold value.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ccno1pcyneau72xw3pl.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%2F2ccno1pcyneau72xw3pl.png" alt="Image description" width="703" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
