<?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: farzana-juthi</title>
    <description>The latest articles on DEV Community by farzana-juthi (@farzanajuthi).</description>
    <link>https://dev.to/farzanajuthi</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%2F935389%2Ff676dca8-e10d-446f-8045-e9d620a714b0.png</url>
      <title>DEV Community: farzana-juthi</title>
      <link>https://dev.to/farzanajuthi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/farzanajuthi"/>
    <language>en</language>
    <item>
      <title>How to use a single base URL for multiple services in big serverless applications — SAM, API gateway</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Sat, 23 Sep 2023 06:18:37 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-to-use-a-single-base-url-for-multiple-services-in-big-serverless-applications-sam-api-gateway-2hep</link>
      <guid>https://dev.to/aws-builders/how-to-use-a-single-base-url-for-multiple-services-in-big-serverless-applications-sam-api-gateway-2hep</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V6cZkN-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2048/1%2AAPRBhwhnSCpRYY-MhGc2Pw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V6cZkN-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2048/1%2AAPRBhwhnSCpRYY-MhGc2Pw.png" alt="A bridge to connect multiple path" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are working on a big application, you may have to use multiple backend services like authentication, payment, access management, and so on. If your architectural design is based on microservices, then all these services will have their own URL link to connect. But think, what happens when you use those separate links in your frontend code? Then if you want to add one more service to your application, you have to change your frontend routing again. It will complicate your system and add extra hassle.&lt;/p&gt;

&lt;p&gt;To solve this problem, you can add an Amazon API gateway proxy which helps you to connect all separate URLs using a single base URL.&lt;/p&gt;

&lt;p&gt;Lets think you decide to make an e-commerce application where you will have product service, authentication service, cart management, payment service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Backend Services&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Product service&lt;/strong&gt;: &lt;a href="https://product-service-url"&gt;https://product-service-url&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Authentication service&lt;/strong&gt;: &lt;a href="https://product-service-url"&gt;https://auth-service-url&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cart management&lt;/strong&gt;: &lt;a href="https://product-service-url"&gt;https://cart-service-url&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Payment service&lt;/strong&gt;: &lt;a href="https://product-service-url"&gt;https://payment-service-url&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now, you do not need to know or manage multiple URLs. API gateway will create a single base URL like &lt;strong&gt;&lt;a href="https://single-base-url/prod"&gt;https://single-base-url/prod&lt;/a&gt;&lt;/strong&gt; and it will route other services with proxy. Create methods and resources for each services and create path like /product, /auth, /cart, /payment. When you use /product after base URL, it will route you to product service, same as for other services.&lt;/p&gt;

&lt;p&gt;I created a &lt;a href="https://github.com/farzana-juthi/sam-nested-stack.git"&gt;github repo&lt;/a&gt; for this. Follow the steps in README section to see how functionality in product services can be used through a single base URL. You can create other services like product service.&lt;/p&gt;

&lt;p&gt;Here I describe what does mean each section of &lt;a href="https://github.com/farzana-juthi/sam-nested-stack/blob/d814c3474d4abe479f54f7f3842f0e7833b91f2e/template.yaml"&gt;template.yaml&lt;/a&gt;. To create a proxy for each service you need four section:&lt;/p&gt;

&lt;p&gt;i) &lt;strong&gt;Serverless application&lt;/strong&gt;: To check all syntax and properties of AWS::Serverless::Application, please check this &lt;a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-application.html"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ProductStack:
    Type: AWS::Serverless::Application
    Properties:
      Location: product-stack/template.yaml
      Parameters:
        StageName: !Ref StageName 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here in this section,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. ProductStack is logical id of this resource. If you want to create other 
   service you have to give a name of that service. Lets say, you will create 
   an application for auth service, you can name it Authstack. 
2. Location: It will indicate the nested application code path. 
   You will give the location of your code.
3. Parameters: If you want to pass any parameters to your cloudformation 
   parameter, then you can pass it here. Here, StageName used for making 
   different state of your project like developement, tesing, production etc. 
   You can pass more parameteres through this section to your nested stack.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ii) &lt;strong&gt;API gateway resource for path&lt;/strong&gt;: To check all syntax and properties of AWS::ApiGateway::Resource, check this &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-resource.html"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ProductStackApiResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      ParentId: !GetAtt RootDefaultApi.RootResourceId
      RestApiId: !Ref RootDefaultApi
      PathPart: 'product'  
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here in this section,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Type:AWS::ApiGateway::Resource mean it will create a resource in an API.
2. ParentId: It will be the parent resource. As you want to use a single URL, 
   this will be that URL's resource ID. You have to use in all your 
   nexted stack to get signle URL.
3. RestApiId: It will be identifier of associated RestApi
4. PathPart: It is the last path segment of this resource. Here use "product" 
   for productStack. You can use your own name for your stack like "auth" for 
   AuthStack
5. So, for your own nested stack, you have to change the value of ParentId,
   RestApiId and PathPart in this section
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;iii) &lt;strong&gt;API gateway resource for proxy&lt;/strong&gt;: It is same as previous section. Just use proxy as PathPart.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ProductStackProxyApiResource:
    Type: AWS::ApiGateway::Resource
    Properties:
      ParentId: !Ref ProductStackApiResource
      RestApiId: !Ref RootDefaultApi
      PathPart: '{proxy+}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here in this section,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Here {proxy+} is used for routing dynamically. Lets say you want to use 
   base_url/product/{id}, base_url/product/users/{id} under same product rest 
   API. This proxy part allows you to make flexible API endpoint.
2. To make your own nested stack, you have to change only these two
   ParentId, RestApiId in this section. Here your nested stack API gateway 
   resource will be ParentId and your base URL resource will be RestApiId.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;iv) &lt;strong&gt;API gateway method&lt;/strong&gt;: To check all syntax and property details, check this &lt;a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-apigateway-method.html"&gt;link&lt;/a&gt;.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  ProductStackProxyMethod:
    Type: AWS::ApiGateway::Method
    Properties:
      HttpMethod: ANY
      ResourceId: !Ref ProductStackProxyApiResource
      RestApiId: !Ref RootDefaultApi
      AuthorizationType: NONE
      RequestParameters:
        method.request.path.proxy: true
      Integration:
        CacheKeyParameters:
          - 'method.request.path.proxy'
        RequestParameters:
          integration.request.path.proxy: 'method.request.path.proxy'
        IntegrationHttpMethod: ANY
        Type: HTTP_PROXY
        Uri: !Sub "https://${ProductStack.Outputs.ProductStackApiId}.execute-api.${AWS::Region}.amazonaws.com/${StageName}/{proxy}"
        PassthroughBehavior: WHEN_NO_MATCH
        IntegrationResponses:
          - StatusCode: 200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Here in this section,&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. You have to change the value of ResourceId, RestApiId and Uri. Keep all the 
   value as it is.
2. Value of Uri will be made of the output of your nested stack. So make sure 
   that you export those values as output in nested stack. Otherwise you will 
   not get that value in root stack.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;I have added my &lt;a href="https://github.com/farzana-juthi/sam-nested-stack"&gt;git link&lt;/a&gt; in this post and &lt;a href="https://github.com/farzana-juthi/sam-nested-stack/blob/master/README.md"&gt;README&lt;/a&gt; describes how you can run this project. Hope you enjoy it. If you have any question, ask me.&lt;/p&gt;

&lt;p&gt;If you find this post helpful, please follow me to get more tutorials like this.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to create virtual environment from terminal (command line)</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Sat, 19 Aug 2023 12:22:10 +0000</pubDate>
      <link>https://dev.to/farzanajuthi/how-to-create-virtual-environment-from-terminal-command-line-1p2m</link>
      <guid>https://dev.to/farzanajuthi/how-to-create-virtual-environment-from-terminal-command-line-1p2m</guid>
      <description>&lt;p&gt;There are many reasons for creating virtual environment. I have mentioned two of them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;In our system, there are different type of projects and they need different versions of packages or libraries. If we install all dependencies in our system directly, then there will be conflict in different versions. To avoid this we need a virtual environment where we can install specific versioned library for specific projects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Other benefit of creating virtual environment is to protect your system from polluting with different libraries. If you use virtual environment, you can get a clean and organized environment.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PfQ7KgMG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ATiihUYIMkxfWJWLmYlAlYg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PfQ7KgMG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ATiihUYIMkxfWJWLmYlAlYg.jpeg" alt="Photo by arzhost.com" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;To create a successful environment, follow the steps&lt;/strong&gt; —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To open command line based on your operating system choose one command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    For windows:
    Short cut key:       Win + R    
                         Then write "cmd" and press "Enter" button

    For Linux:
    Short cut key:       Ctrl + Alt + T


    For Mac:
    Short cut key:       Command + Space
                         Then write "Terminal" and press "Enter" button

    Here "+" sign meaning - press all these keys at a time.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you want to go to specific folder, then run following command
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Command:     cd &amp;lt;path of your destiantion&amp;gt;
    Example:     cd Documents/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then make a folder.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Command:     mkdir &amp;lt;folder_name&amp;gt;
    Example:     mkdir video_processor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rXv6RK8A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AWLTL3CjR8ERK9QsiFggGsA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rXv6RK8A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AWLTL3CjR8ERK9QsiFggGsA.png" alt="Create folder" width="774" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then go into this folder by running following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Command:     cd &amp;lt;folder_name&amp;gt;
    Example:     cd video_processor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you are using any environment previously deactivate it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using Conda previously deactivate it using following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    conda deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you are using python &lt;strong&gt;version 3.3 or later&lt;/strong&gt; use following command to create a virtual environment. Here I named it as myenv.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    python -m venv &amp;lt;your_env_name&amp;gt;
    Example: python -m venv myenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you are using python &lt;strong&gt;version&lt;/strong&gt; &lt;strong&gt;before 3.3&lt;/strong&gt; then use following command one after another.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    1. pip install virtualenv
    2. virtualenv myenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CPysJUVS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALfKr1CXhZH5lzzv7OQ-2xg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CPysJUVS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2ALfKr1CXhZH5lzzv7OQ-2xg.png" alt="After creating virtual environment myenv" width="774" height="634"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After creating your virtual environment, you have to activate this. To activate it, you have to run following commands one after another.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Based on your operating system, run the command. 
    Here myenv is the name of my virtual envirnment.

    For Windows 
            command:       
                         &amp;lt;your_env_name&amp;gt;\Scripts\activate
            Example:     myenv\Scripts\activate

    For Mac/Linux 
            command:     
                         source &amp;lt;your_env_name&amp;gt;/bin/activate
            Example:     source myenv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you successfully create your virtual environment. What do you want next? Do you want to make a file to store your library name and run all these dependencies from there? Follow the steps outlined in rest of this post.&lt;/p&gt;

&lt;p&gt;To create a file named “requirement.txt”, you have to run one of the commands based on your operating system and it will create an empty file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    For Windows:
            Command:     type nul &amp;gt; filename.ext
            Example:     type nul &amp;gt; requirement.txt
    For Mac/linux:
            Command:     touch filename.ext
            Example:     touch requirement.txt

    Here,    
            filename = you will give your file name 
            ext = extension of your file like py, txt, pdf etc

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XvctjyGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AT-soOj1Ftn9ZxE9jZzW5NQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XvctjyGs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AT-soOj1Ftn9ZxE9jZzW5NQ.png" alt="Create a file from terminal" width="766" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you have to give library name into this newly created file. You can do this in following way. Here I give 2 library name numpy and matplotlib.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Command:     echo "&amp;lt;library_name&amp;gt;" &amp;gt;&amp;gt; &amp;lt;file_name&amp;gt;

    Example:     echo "numpy" &amp;gt;&amp;gt; requirements.txt
                 echo "matplotlib" &amp;gt;&amp;gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0nkdvIhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2592/1%2A9Oifb8oCOzn6UI371pG08g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0nkdvIhp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2592/1%2A9Oifb8oCOzn6UI371pG08g.png" alt="Libraries in requirement.txt files" width="800" height="583"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then run following command to install these libraries into your virtual environment:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Command:     pip install -r &amp;lt;your_file_name&amp;gt;

    Example:     pip install -r requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1TE-fBUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AKVG34vVc-v1rUusdtXzefA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1TE-fBUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AKVG34vVc-v1rUusdtXzefA.png" alt="After installation, library will be shown in lib folder in virtual environment" width="734" height="872"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>virtualenvironment</category>
      <category>terminal</category>
      <category>commandline</category>
    </item>
    <item>
      <title>How to setup HTTPS users to upload code into codecommit using git credential</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Sat, 19 Aug 2023 12:09:33 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-to-setup-https-users-to-upload-code-into-codecommit-using-git-credentail-23k4</link>
      <guid>https://dev.to/aws-builders/how-to-setup-https-users-to-upload-code-into-codecommit-using-git-credentail-23k4</guid>
      <description>&lt;p&gt;CodeCommit is a fully managed source control service that makes it easy to host secure and highly scalable private Git repositories. CodeCommit eliminates the need to operate your own source control system or worry about scaling its infrastructure. You can use CodeCommit to securely store anything from source code to binaries, and it works seamlessly with your existing Git tools.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ltZAruA7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AXojsNE1Pfmz8V9eBfqgB1Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ltZAruA7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AXojsNE1Pfmz8V9eBfqgB1Q.png" alt="code commit" width="771" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install git&lt;/strong&gt;: To install Git, we recommend websites such as &lt;a href="http://git-scm.com/downloads"&gt;Git Downloads&lt;/a&gt; .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create IAM user and give permission:&lt;/strong&gt; If you don’t know how to create IAM user and give permission for aws services, then please check this &lt;strong&gt;&lt;a href="https://medium.com/p/42644f61fea5/"&gt;reference&lt;/a&gt;&lt;/strong&gt; post. You need to follow the steps from &lt;strong&gt;1–9&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Create Git credentials for HTTPS connection to CodeCommit&lt;/strong&gt;:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;If you have an IAM user, please go that “&lt;strong&gt;user&lt;/strong&gt;” page from left menu and select the checkbox of the user where you want to configure &lt;strong&gt;“HTTPS Git credentials for AWS CodeCommit”&lt;/strong&gt;. Then select &lt;strong&gt;&lt;em&gt;“Security credentials”&lt;/em&gt;&lt;/strong&gt; tab of this page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sJYnwmAw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Ar8O-w1NumHWGCGbH" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sJYnwmAw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Ar8O-w1NumHWGCGbH" alt="security credential" width="800" height="75"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click on &lt;strong&gt;&lt;em&gt;“Generate credentials”&lt;/em&gt;&lt;/strong&gt; button.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dKA1gvJR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AlBFIs5kxlj4Utc54" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dKA1gvJR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AlBFIs5kxlj4Utc54" alt="Generate credential" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will generate username and password like the following image. Download the credentials for further use. This credential will be used in the &lt;strong&gt;gitlab mirroring repository&lt;/strong&gt; section.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fU_Ydvnh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A4e5SVPX-ALF7RiyX" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fU_Ydvnh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A4e5SVPX-ALF7RiyX" alt="Download credential" width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Create CodeCommit repository and link it to gitlab code:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Search CodeCommit in aws console and click on it. You will find an option to create repository like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t7kVtbIv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AJfoMasfWxvm2yg_i" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t7kVtbIv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AJfoMasfWxvm2yg_i" alt="Search CodeCommit" width="800" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click on “&lt;strong&gt;Create repository&lt;/strong&gt;” button and fill up the following fields:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mdvKvuID--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2732/0%2AY-_GOz5T8xs-Vvhe" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mdvKvuID--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2732/0%2AY-_GOz5T8xs-Vvhe" alt="Create repository" width="800" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Here I am giving &lt;strong&gt;tutorial-app&lt;/strong&gt; as repository name. You have to give your repository name here and click on &lt;strong&gt;“Create”&lt;/strong&gt; button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then you will see newly created repository into your repositories list like following:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t7O6aklh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2ArW4RIRflHDZmme0j" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t7O6aklh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2ArW4RIRflHDZmme0j" alt="Repository" width="800" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click on the radio button of &lt;strong&gt;&lt;em&gt;“tutorial-app”&lt;/em&gt;&lt;/strong&gt; repository (your repository name) and then from that page you will get following &lt;strong&gt;&lt;em&gt;“clone url”&lt;/em&gt;&lt;/strong&gt; option and select that button and choose &lt;strong&gt;&lt;em&gt;“clone HTTPS”&lt;/em&gt;&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VTvESU1---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/5608/1%2A2zsI3OqjyU6_29HMsq2aZw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VTvESU1---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/5608/1%2A2zsI3OqjyU6_29HMsq2aZw.png" alt="Clone URL" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When you click on “&lt;strong&gt;clone HTTPS&lt;/strong&gt;” button, you will see a link is copied like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rGcjEU57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/5756/1%2Aft8LhCo9PJ-iqJYO89D5lg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rGcjEU57--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/5756/1%2Aft8LhCo9PJ-iqJYO89D5lg.png" alt="Clone HTTPS" width="800" height="37"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You have to use this link into gitlab.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Setup mirroring gitlab code to CodeCommit:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;First browse the link &lt;a href="https://about.gitlab.com/"&gt;https://about.gitlab.com/&lt;/a&gt; and click on the &lt;strong&gt;Login&lt;/strong&gt; button and then login into the system by giving our gitlab credentials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then search your gitlab project and click on that project. Here I will use my previously created “&lt;strong&gt;tutorial-backend&lt;/strong&gt;” project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then select &lt;strong&gt;&lt;em&gt;Settings&lt;/em&gt;&lt;/strong&gt; -&amp;gt; &lt;strong&gt;&lt;em&gt;Repository&lt;/em&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;em&gt;tutorial-backend:&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dilrDxNn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AJpmkkhVQLXY_Q9kfrGxwVA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dilrDxNn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2AJpmkkhVQLXY_Q9kfrGxwVA.jpeg" alt="Settings" width="250" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click on &lt;strong&gt;&lt;em&gt;“Expand”&lt;/em&gt;&lt;/strong&gt; from &lt;strong&gt;&lt;em&gt;“Mirroring repositories”&lt;/em&gt;&lt;/strong&gt; like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yToCiTxX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A9_G7_3wQ_Re3Diah" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yToCiTxX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A9_G7_3wQ_Re3Diah" alt="Expand" width="800" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then take the previously copied url (&lt;strong&gt;step no 6&lt;/strong&gt; from &lt;strong&gt;Setup mirroring gitlab code to CodeCommit&lt;/strong&gt; section) and paste it like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0V3xmN_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A6P-KjK1x7wulbX_C" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0V3xmN_B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2A6P-KjK1x7wulbX_C" alt="Copied URL" width="800" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then you have to use the IAM &lt;strong&gt;&lt;em&gt;codeCommit username&lt;/em&gt;&lt;/strong&gt; after &lt;strong&gt;&lt;em&gt;“https:// ”&lt;/em&gt;&lt;/strong&gt; and then &lt;strong&gt;&lt;em&gt;“@”&lt;/em&gt;&lt;/strong&gt; sign after codeCommit username like following image and also copy the &lt;strong&gt;&lt;em&gt;IAM codecommit password&lt;/em&gt;&lt;/strong&gt; into the password field. Then click on the &lt;strong&gt;“Mirror repository”&lt;/strong&gt; button. 
(Get your codecommit username and password from &lt;strong&gt;step no 3&lt;/strong&gt; from &lt;strong&gt;Create Git credentials for HTTPS connection to CodeCommit&lt;/strong&gt; section)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YF3h7JMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AeeB1A-fDFC5BelIH" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YF3h7JMe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AeeB1A-fDFC5BelIH" alt="Gitcommit username password" width="800" height="597"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After that click on “&lt;strong&gt;&lt;em&gt;sync&lt;/em&gt;&lt;/strong&gt;” icon in gitlab mirroring section like following:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TjXMCSFn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/1%2AJrESLwhoz2wM-JOALQMZXw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TjXMCSFn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/1%2AJrESLwhoz2wM-JOALQMZXw.png" alt="Sync" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After that please go to &lt;strong&gt;CodeCommit&lt;/strong&gt; page from &lt;strong&gt;aws console&lt;/strong&gt; and see that your code is synced to codeCommit like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Q9ppMGz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Ai473z4ujMz_MzNkW" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Q9ppMGz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Ai473z4ujMz_MzNkW" alt="CodeCommit page" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>awscodecommit</category>
      <category>https</category>
      <category>gitcredential</category>
    </item>
    <item>
      <title>How to make an application using serverless application model (SAM) and python</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Fri, 18 Aug 2023 13:00:13 +0000</pubDate>
      <link>https://dev.to/farzanajuthi/how-to-make-an-application-using-serverless-application-model-sam-and-python-3l72</link>
      <guid>https://dev.to/farzanajuthi/how-to-make-an-application-using-serverless-application-model-sam-and-python-3l72</guid>
      <description>&lt;p&gt;When you want to organize your aws resources and components from a single stack, you can use SAM. It makes easy to share configuration between resources and deploy all things together.&lt;/p&gt;

&lt;p&gt;Here in this article, I will show you that how to create API gateway, and lambda function in a single template.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DQ6bO9II--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2104/1%2Au338MnVarLhkbX3EJBRIYg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DQ6bO9II--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2104/1%2Au338MnVarLhkbX3EJBRIYg.png" alt="API gateway to lambnda" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Prerequisites&lt;/strong&gt;:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating an AWS account&lt;/strong&gt;: Open the &lt;a href="https://aws.amazon.com/"&gt;Amazon Web Services (AWS) home page&lt;/a&gt;. Choose &lt;strong&gt;Create an AWS Account&lt;/strong&gt;. If you signed in to AWS recently, choose &lt;strong&gt;Sign in to the Console&lt;/strong&gt;. If &lt;strong&gt;Create a new AWS account&lt;/strong&gt; isn’t visible, first choose &lt;strong&gt;Sign in to a different account&lt;/strong&gt;, and then choose &lt;strong&gt;Create a new AWS account&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Configuring IAM&lt;/strong&gt;: Configuring AWS Identity and Access Management (IAM) permissions is another prerequisite. You can not access aws from your local pc if you don’t have permission. If you don’t know how to create an IAM user and give permission on that user, please check this post &lt;br&gt;
&lt;a href="https://medium.com/@farzanajuthi08/how-to-create-user-and-give-permission-of-aws-services-using-iam-credential-42644f61fea5"&gt;https://medium.com/@farzanajuthi08/how-to-create-user-and-give-permission-of-aws-services-using-iam-credential-42644f61fea5&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Docker (Optional)&lt;/strong&gt;: If you want to test your application locally, then you have to install docker. Otherwise there is &lt;strong&gt;no need&lt;/strong&gt; to install docker.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Homebrew:&lt;/strong&gt; If you are a Linux or MacOS user, then you have to install &lt;strong&gt;Homebrew.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install the AWS command line interface (CLI)&lt;/strong&gt;: If you don’t have aws CLI installed on your local machine, please follow the installation process from this link &lt;a href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html"&gt;https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html&lt;/a&gt;. &lt;br&gt;
Install latest version. Check the version by running the command&lt;br&gt;
                   sam --version&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Configure aws CLI into your local machine&lt;/strong&gt;: You need access key and secret access key to configure AWS CLI into your machine. You have to download your keys when go through “&lt;strong&gt;Configuring IAM&lt;/strong&gt;” step. &lt;br&gt;
Open your terminal and run following code one after another to configure credentials into your pc:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   aws configure 
   AWS Access Key ID [None]: &amp;lt;your_access_key_id&amp;gt; 
   AWS Secret Access Key [None]:&amp;lt;your_secret_access_key&amp;gt;
   Default region name [None]:  &amp;lt;Give your region name here&amp;gt;
   Default output format [None]:
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install SAM CLI&lt;/strong&gt;: If you don’t have SAM CLI installed into your local machine, please follow &lt;strong&gt;step 4&lt;/strong&gt; of this link &lt;a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-windows.html"&gt;https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install-windows.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install Python&lt;/strong&gt;: If you want to use python as your application language, you have to install python in your local pc.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Steps to download a SAM project and deploy:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open terminal on your pc and type the following command&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  sam -- init
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;and get following information like as this image&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VcRAa-ME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2ALT9tT-YfuLnKsj8h" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VcRAa-ME--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2ALT9tT-YfuLnKsj8h" alt="Template Option" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;. Here you have to use option &lt;strong&gt;1&lt;/strong&gt; from the above image and you will get following options to choose:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nVUWADp1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2292/0%2AkG0Q2RJOabosDJRi" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nVUWADp1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2292/0%2AkG0Q2RJOabosDJRi" alt="Package Option" width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3&lt;/strong&gt;. You can use either 1 or 2. If you want to keep your artifact as a zip uploaded to s3, you have to choose option &lt;strong&gt;1&lt;/strong&gt;. Otherwise you have to choose option &lt;strong&gt;2&lt;/strong&gt; if you want to keep it as image uploaded into ECR image repository.&lt;br&gt;
Here I will choose option 1 and get an option to choose coding language like following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JGEg3EfJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2284/0%2An8eiIECOU60IUVpE" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JGEg3EfJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2284/0%2An8eiIECOU60IUVpE" alt="Choose run time language" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4&lt;/strong&gt;. Then you have to give your required python version. Here I want to use &lt;strong&gt;python3.8&lt;/strong&gt; that’s why I have used number &lt;strong&gt;9&lt;/strong&gt;. And give my project name as &lt;strong&gt;tutorial-backend&lt;/strong&gt; and give an &lt;strong&gt;Enter&lt;/strong&gt;. &lt;br&gt;
You can rename your application name after downloading it from the cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cEpw9zGC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2248/1%2AcmnWK5Rg04Rd_GZewX2KMQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cEpw9zGC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2248/1%2AcmnWK5Rg04Rd_GZewX2KMQ.png" alt="Rename your project name" width="800" height="77"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5&lt;/strong&gt;. After giving an &lt;strong&gt;Enter, *&lt;em&gt;you will get some *&lt;/em&gt;&lt;/strong&gt;options to choose the template you want to download from cloud:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OfdLkhmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2252/0%2Ao43B4yx5LHCivJRD" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OfdLkhmY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2252/0%2Ao43B4yx5LHCivJRD" alt="Template selection" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6&lt;/strong&gt;. Here I will choose option **1 **and download the **Hello World Example **template like following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iz3C8jTc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2AKkmFCakvB66RTXOA" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iz3C8jTc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2AKkmFCakvB66RTXOA" alt="After selecting template" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7&lt;/strong&gt;. Then change our current directory by typing command in the terminal:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    cd &amp;lt;project_name&amp;gt;
          Example:  cd tutorial-backend
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;8&lt;/strong&gt;. Then type following command into terminal to build your project:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                     sam build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;9&lt;/strong&gt;. Then you have to run following command for the first time to deploy this project into cloud:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  sam deploy — guided
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;10&lt;/strong&gt;. You will get following options to configure:&lt;br&gt;
&lt;strong&gt;Stack name&lt;/strong&gt;: Give your project name here. You will see this name in cloudformation.&lt;br&gt;
&lt;strong&gt;AWS region&lt;/strong&gt;: Choose your required region.&lt;br&gt;
&lt;strong&gt;Other options will remain same&lt;/strong&gt; as like the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NjcShhrg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2AlHHhomVgEH_Pl33u" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NjcShhrg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2264/0%2AlHHhomVgEH_Pl33u" alt="Overall options after selection" width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;11&lt;/strong&gt;. Then you will be asked to choose one option for deploying your code:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---U0jzY9C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AxJv-gKC_8DMssYXa" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---U0jzY9C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2AxJv-gKC_8DMssYXa" alt="Change set deploy" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;12&lt;/strong&gt;. Then give &lt;strong&gt;y&lt;/strong&gt; as value like &lt;strong&gt;Deploy this changeset? [y/N]: y&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;13&lt;/strong&gt;. After successful deployment you can check your deployed project in cloudformation. &lt;br&gt;
Go to aws console and search cloudformation and see your project:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xlesfzbT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Awtr0mzV16PF3Xuci" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xlesfzbT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2800/0%2Awtr0mzV16PF3Xuci" alt="Cloudformation stack" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;14&lt;/strong&gt;. After one successful deployment, if you change anything into your code, you don’t need to run sam deploy --guided again. Just remember you have to build it and deploy it by following commands one after another.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    sam build
                    sam deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;N.B:&lt;/strong&gt; You may face problem if your code deployed region and your aws CLI configuration region is not same. So, please keep your cli configuration region and code deployment region same.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to integrate gmail configured Backend APIs into frontend</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Tue, 14 Mar 2023 08:03:02 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-to-integrate-gmail-configured-backend-apis-into-frontend-47fe</link>
      <guid>https://dev.to/aws-builders/how-to-integrate-gmail-configured-backend-apis-into-frontend-47fe</guid>
      <description>&lt;p&gt;If you are new and don't know how to integrate gmail with cognito, then follow this &lt;a href="https://dev.to/farzanajuthi/how-to-integrate-gmail-with-cognito-as-social-authentication-using-sam-python-1e9a"&gt;tutorial&lt;/a&gt;. &lt;br&gt;
Now you can use cognito and created APIs on your frontend side.&lt;/p&gt;

&lt;p&gt;To start implementing it into code, check the flow from the diagram:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g4rig3nJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191645091-4c860761-b4dd-4a5a-9fb6-b989bcb2a222.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g4rig3nJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191645091-4c860761-b4dd-4a5a-9fb6-b989bcb2a222.jpg" alt="auth_implementation_flow" width="800" height="857"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First make the url which will be used in &lt;strong&gt;Sign In with gmail&lt;/strong&gt; button.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;domain_url&amp;gt;/oauth2/authorize?identity_provider=Google&amp;amp;redirect_uri=&amp;lt;frontend_redirect_url&amp;gt;&amp;amp;response_type=CODE&amp;amp;client_id=&amp;lt;cognito_client_id&amp;gt;&amp;amp;scope=email openid profile aws.cognito.signin.user.admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Change curly bracket variables value like following

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;domain_url&lt;/strong&gt;: &lt;a href="https://learning-auth-auth-stack-dev.auth.us-west-2.amazoncognito.com"&gt;https://learning-auth-auth-stack-dev.auth.us-west-2.amazoncognito.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;frontend_redirect_url&lt;/strong&gt;: Remember this url is very important. It is used in cognito side as UserPoolClientCallBackUrlDevAndProd. If this url not match then you will get redirect mismatch error.
                           Here my redirect url is &lt;a href="http://localhost:4200/dashboard/"&gt;http://localhost:4200/dashboard/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;cognito_client_id&lt;/strong&gt;: Just check nested stack output from aws console and variable name is NestedCognitoUserPoolClientId. Here my client id is 7vfokrcbq7tc7s3u35qhj2054h
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Example: https://learning-auth-auth-stack-dev.auth.us-west-2.amazoncognito.com/oauth2/authorize?identity_provider=Google&amp;amp;redirect_uri=http://localhost:4200/dashboard/&amp;amp;response_type=CODE&amp;amp;client_id=7vfokrcbq7tc7s3u35qhj2054h&amp;amp;scope=email openid profile aws.cognito.signin.user.admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then this url will take you to google sign in page. Here you have to give your sign in email and password. If google verifies that credentials are right then it will redirect your to your application with a code.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Example: http://localhost:4200/dashboard?code=09266419-d8b9-4005-8830-3bc57255c802
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;After that you have to call internally another url with following information to get tokens information.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This will be a post method. Parameters need to pass along with the url are:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Method&lt;/strong&gt;: POST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL&lt;/strong&gt;: /oauth2/token&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;a href="https://learning-auth-auth-stack-dev.auth.us-west-2.amazoncognito.com/oauth2/token"&gt;https://learning-auth-auth-stack-dev.auth.us-west-2.amazoncognito.com/oauth2/token&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parameters&lt;/strong&gt;:
{

&lt;ul&gt;
&lt;li&gt;   &lt;strong&gt;grant_type&lt;/strong&gt;: "authorization_code",&lt;/li&gt;
&lt;li&gt;   &lt;strong&gt;client_id&lt;/strong&gt;: "Here you have to pass  cognito_client_id what you have given into first step",&lt;/li&gt;
&lt;li&gt;   &lt;strong&gt;code&lt;/strong&gt;: "Code you have got into the last step",&lt;/li&gt;
&lt;li&gt;   &lt;strong&gt;redirect_uri&lt;/strong&gt;: "Here you have to give redirected url what you have given into first step"
}&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;:
{

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;grant_type&lt;/strong&gt;: "authorization_code",&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;client_id&lt;/strong&gt;: "7vfokrcbq7tc7s3u35qhj2054h",&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;code&lt;/strong&gt;: "09266419-d8b9-4005-8830-3bc57255c802",&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;redirect_uri&lt;/strong&gt;: "&lt;a href="http://localhost:4200/dashboard/"&gt;http://localhost:4200/dashboard/&lt;/a&gt;"
} &lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Then you can get social sign in related data by calling following API&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Method&lt;/strong&gt;: POST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL&lt;/strong&gt;: https://&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;a href="https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev/auth/authentication/social-signin"&gt;https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev/auth/authentication/social-signin&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;API base url&lt;/strong&gt;: &lt;a href="https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev"&gt;https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path&lt;/strong&gt;: /auth/authentication/social-signin&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parameter&lt;/strong&gt;: 
{
"id_token": "",
"access_token": "",
"refresh_token": "",
"expires_in": "",
"token_type": ""
}
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  {
    "id_token": "",
    "access_token": "",
    "refresh_token": "",
    "expires_in": "",
    "token_type": ""
  }

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;If you want to log-out, then you have to call logout API&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Method&lt;/strong&gt;: POST&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;URL&lt;/strong&gt;: &lt;code&gt;&amp;lt;base_url&amp;gt;&amp;lt;path&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Example&lt;/strong&gt;: &lt;a href="https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev/auth/authentication/social-signin"&gt;https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev/auth/authentication/social-signin&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API base url&lt;/strong&gt;: &lt;a href="https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev"&gt;https://joc4u21r8e.execute-api.us-west-2.amazonaws.com/dev&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Path&lt;/strong&gt;: /auth/authentication/global-logout&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Parameter&lt;/strong&gt;: {"access_token": ""}
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  {
   "access_token":"Here you have to pass access token "
  }

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

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>How to integrate gmail with cognito as social authentication (using SAM, python)</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Tue, 14 Mar 2023 06:48:14 +0000</pubDate>
      <link>https://dev.to/aws-builders/how-to-integrate-gmail-with-cognito-as-social-authentication-using-sam-python-1e9a</link>
      <guid>https://dev.to/aws-builders/how-to-integrate-gmail-with-cognito-as-social-authentication-using-sam-python-1e9a</guid>
      <description>&lt;p&gt;In this application, we will learn how to configure google app into AWS cognito. &lt;/p&gt;

&lt;h3&gt;
  
  
  Installation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First, you have to install aws sam cli into your machine. &lt;/li&gt;
&lt;li&gt;Then configure aws cli.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you don't have CLI installed and configured into your local machine please follow prerequisite steps from this&lt;/strong&gt; &lt;a href="https://medium.com/@farzanajuthi08/how-to-make-an-application-using-serverless-application-model-sam-and-python-937415d38a44"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After installation is done, you have to pull the code from git repository &lt;a href="https://github.com/farzana-juthi/authentication.git"&gt;(HTTPS link)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Then go to the project directory by using the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    cd &amp;lt;your folder name&amp;gt;
    example: cd authentication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then open &lt;strong&gt;template.yaml&lt;/strong&gt; file and change following &lt;strong&gt;(15-20) lines&lt;/strong&gt; with appropriate data:

&lt;ul&gt;
&lt;li&gt;In line 15 (variable &lt;strong&gt;CallBackUrlUserPoolClient&lt;/strong&gt;), you have to provide the url where google will be redirected after verifying user credential into google side. You can add multiple urls by comma separation. &lt;/li&gt;
&lt;li&gt;In line 16 (variable &lt;strong&gt;LogOutUrlUserPoolClient&lt;/strong&gt;), you have to provide the url where cognito will be redirected after logout. You can add multiple url by comma separation.&lt;/li&gt;
&lt;li&gt;In line 17 (variable &lt;strong&gt;FIDGoogleClientId&lt;/strong&gt;), you have to give client id of google app. See &lt;a href="https://medium.com/@farzanajuthi08/how-to-set-up-google-app-and-configure-amazon-cognito-for-social-sign-in-6844bc9bf605"&gt;How to configure google app&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;In line 18 (variable &lt;strong&gt;FIDGoogleClientSecret&lt;/strong&gt;), you have to give secret client id of google app.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Example:
    "CallBackUrlUserPoolClient": "http://localhost:4200/dashboard/" 
    "LogOutUrlUserPoolClient": "http://localhost:4200/login/" 
    "FIDGoogleClientId": "816187719480-26d52o4pnfe789ivkjqdm0jqakk19m38.apps.googleusercontent.com" 
    "FIDGoogleClientSecret": "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" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Then give a project name into line 27. Here you have to set the value of the &lt;strong&gt;ProjectName&lt;/strong&gt; parameter. Remember this data will be used to make domain name and domain name need to be unique.&lt;br&gt;
&lt;strong&gt;You must change this value&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then open terminal in root folder of this project and run following command:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sam build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you deploy first time, then you have to run following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sam deploy --guided --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to run this command with your predefined profile then command will be&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sam deploy --guided --profile &amp;lt;your_profile_name_without_this_bracket&amp;gt; --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After running the previous command, you will see that you have to set a stack name. Please give a unique stack name.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pB6T2mmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191643954-a022339c-cf22-4559-ac5b-3b24e87a671e.png" class="article-body-image-wrapper"&gt;&lt;img alt="step-1" src="https://res.cloudinary.com/practicaldev/image/fetch/s--pB6T2mmZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191643954-a022339c-cf22-4559-ac5b-3b24e87a671e.png" width="800" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example: I am giving stack name as &lt;strong&gt;auth-app&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kp0INuvM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191644054-6166326d-dc32-42e6-88e8-6d9c2c40607d.png" class="article-body-image-wrapper"&gt;&lt;img alt="step-2" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kp0INuvM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191644054-6166326d-dc32-42e6-88e8-6d9c2c40607d.png" width="800" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then click enter one after another until &lt;strong&gt;SAM configuration environment&lt;/strong&gt; variable set to default value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--z6qjg-Vs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191644374-499f5dd4-b120-46bd-8e3f-5183c37bb43b.png" class="article-body-image-wrapper"&gt;&lt;img alt="enter-untill-this" src="https://res.cloudinary.com/practicaldev/image/fetch/s--z6qjg-Vs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191644374-499f5dd4-b120-46bd-8e3f-5183c37bb43b.png" width="800" height="181"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Then wait for the successful creation of cloudformation stack. &lt;/li&gt;
&lt;li&gt;If you want to deploy after changes, then you need to build it first and run only deploy command like following:
&lt;img alt="output" src="https://res.cloudinary.com/practicaldev/image/fetch/s--9_Ang1By--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191654084-49cf256a-cb47-45ab-ace3-79b68ba31853.png" width="800" height="356"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sam build
    sam deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After successful deployment you will get some output. Save those for further implementation:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Bp6A11YU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191655785-6eb81fd5-0d4d-4fbb-9dc0-46669c4ba12d.png" class="article-body-image-wrapper"&gt;&lt;img alt="output" src="https://res.cloudinary.com/practicaldev/image/fetch/s--Bp6A11YU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/191655785-6eb81fd5-0d4d-4fbb-9dc0-46669c4ba12d.png" width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;DomainURL&lt;/strong&gt;: It's value will be used as &lt;strong&gt;domain_url&lt;/strong&gt; in frontend side&lt;br&gt;
 &lt;strong&gt;CognitoAppClientID&lt;/strong&gt;: It's value will be used as &lt;strong&gt;cognito_client_id&lt;/strong&gt; in frontend side&lt;br&gt;
 &lt;strong&gt;RootAPI&lt;/strong&gt;: It's value will be used as &lt;strong&gt;base_url&lt;/strong&gt; in frontend side&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Update Google APP&lt;/strong&gt; - Authorized JavaScript origins and Authorized redirect URIs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You must have to follow step 11 of this &lt;a href="https://medium.com/@farzanajuthi08/how-to-set-up-google-app-and-configure-amazon-cognito-for-social-sign-in-6844bc9bf605"&gt;link&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>How to SAM accelerate work with lambda layers</title>
      <dc:creator>farzana-juthi</dc:creator>
      <pubDate>Thu, 09 Mar 2023 07:33:32 +0000</pubDate>
      <link>https://dev.to/farzanajuthi/how-to-sam-accelerate-work-with-lambda-layers-105j</link>
      <guid>https://dev.to/farzanajuthi/how-to-sam-accelerate-work-with-lambda-layers-105j</guid>
      <description>&lt;p&gt;If you are a developer, you know testing is very important for application development. But integration testing in cloud is really a concern. As deployment time plays a vital role in development, many of us try to do mock test before deploy it into cloud. There are some frameworks for doing that. But in that case integration testing is not possible. If you are a SAM user, you can speed up your development with SAM accelerate. In this blog post, you will see an example of lambda layers and its implementation in sam accelerate.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gAbN8BnT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223938791-5ae4d30e-4379-4edb-9658-985635ec186e.png" class="article-body-image-wrapper"&gt;&lt;img alt="image_1" src="https://res.cloudinary.com/practicaldev/image/fetch/s--gAbN8BnT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223938791-5ae4d30e-4379-4edb-9658-985635ec186e.png" width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisite
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;First, you have to install aws sam cli into your machine. &lt;/li&gt;
&lt;li&gt;Then configure aws cli.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If you don't have CLI installed and configured into your local machine please follow the prerequisite steps from this&lt;/strong&gt; &lt;a href="https://medium.com/@farzanajuthi08/how-to-make-an-application-using-serverless-application-model-sam-and-python-937415d38a44"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Local Development
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After installation done, you have to pull the code from git repository &lt;a href="https://github.com/farzana-juthi/sam-accelerate-example.git"&gt;(HTTPS link)&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Then go to project directory by using following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    cd &amp;lt;your folder name&amp;gt;
    example: cd sam-accelerate-example
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Then you will see following structure:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U4Pp4uj9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223938999-547fe158-d62e-4247-b513-2b6db2787ccd.png" class="article-body-image-wrapper"&gt;&lt;img alt="structure" src="https://res.cloudinary.com/practicaldev/image/fetch/s--U4Pp4uj9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223938999-547fe158-d62e-4247-b513-2b6db2787ccd.png" width="712" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lambda Layers code details
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;template.yaml&lt;/strong&gt; file, you will get following code for creating lambda layers:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EOJUeko5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939092-8e3f3b0a-a5d1-4fcb-bf3d-540e5127f721.png" class="article-body-image-wrapper"&gt;&lt;img alt="lambda_layers_temp" src="https://res.cloudinary.com/practicaldev/image/fetch/s--EOJUeko5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939092-8e3f3b0a-a5d1-4fcb-bf3d-540e5127f721.png" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In this image,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type:&lt;/strong&gt; This is used to make resource you want to create. &lt;em&gt;AWS::Serverless::LayerVersion&lt;/em&gt; means it will create lambda layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Properties:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LayerName:&lt;/strong&gt; This is for layer name you want to give. Here you can give any name. In this demo it is &lt;em&gt;global-utils&lt;/em&gt; .

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ContentUri:&lt;/strong&gt; This will be your code location. In this demo it is &lt;strong&gt;lambda_layers/global_utils/&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CompatibleRuntimes:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;python3.9&lt;/strong&gt;  Here you have to give your choosen language. In this demo, I used python. There are specific folder structure for lambda layers according to language. See this &lt;a href="https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html"&gt;link&lt;/a&gt; for other languages.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Metadata:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BuildMethod: makefile&lt;/strong&gt; If you want to create custom layer you can do it easily through SAM. In this make file you have to give commands to run your configuration or settings. See this &lt;a href="https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/building-layers.html"&gt;link&lt;/a&gt; for documentation.

&lt;ul&gt;
&lt;li&gt;If you need share some libraries through layers, you can add those into &lt;strong&gt;requirements.txt&lt;/strong&gt; file in layer's python folder like following image:&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bKQecGQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939301-266dadd4-b65d-457a-b76b-ad5388b15fb3.png" class="article-body-image-wrapper"&gt;&lt;img alt="layer_requirement" src="https://res.cloudinary.com/practicaldev/image/fetch/s--bKQecGQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939301-266dadd4-b65d-457a-b76b-ad5388b15fb3.png" width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In &lt;strong&gt;make&lt;/strong&gt; file within global_utils folder, you have to give path to &lt;strong&gt;$(ARTIFACTS_DIR)/python&lt;/strong&gt;, otherwise libraries in requirements.txt file will not found into &lt;strong&gt;.aws-sam&lt;/strong&gt; folder and when calling through layers it will not work. So this line is very important.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  build-GlobalUtils:
      echo "Global layers build started"
      pip install --default-timeout=100 -r ./python/requirements.txt -t $(ARTIFACTS_DIR)/python
      echo "Global layers build completed"
      cp -r ./python $(ARTIFACTS_DIR)/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If you want to pass some code through layers, you can also do that. In &lt;em&gt;global_utils.py&lt;/em&gt; file you can see example of it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NnZsYIWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939384-9115f131-9f4c-4ce5-b278-9c6381d2a530.png" class="article-body-image-wrapper"&gt;&lt;img alt="global_utils_file" src="https://res.cloudinary.com/practicaldev/image/fetch/s--NnZsYIWO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939384-9115f131-9f4c-4ce5-b278-9c6381d2a530.png" width="800" height="304"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Here three libraries (json, os, boto3) and also dynamo client, resource and table name are passed through this layer. For table name, you have to pass it through function's &lt;em&gt;Environment&lt;/em&gt; parameter. You will see it in a while.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now this layer has to be attached with lambda function where it will be used. In this post you will see global_utils layer is passed to &lt;em&gt;HelloWorldFunction&lt;/em&gt; . In case of sharing resources with &lt;em&gt;!Ref&lt;/em&gt; key, you have to use logical id of that resource. Here logical id for layer is &lt;em&gt;GlobalUtils&lt;/em&gt; and for dynamodb table it is &lt;em&gt;TestTable&lt;/em&gt; .&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0Hmme_0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939547-f00c0c7c-2ed5-47b8-af78-d95ad852bbb7.png" class="article-body-image-wrapper"&gt;&lt;img alt="hello_world_function" src="https://res.cloudinary.com/practicaldev/image/fetch/s--0Hmme_0N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939547-f00c0c7c-2ed5-47b8-af78-d95ad852bbb7.png" width="594" height="866"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to run sam sync
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You have to run following command into your terminal
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    sam sync --watch --stack-name &amp;lt;give your stack name&amp;gt;
    example: sam sync --watch --stack-name sam-accelerate-example
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After running this command, you will see like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XPtba9OL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939627-0de999bf-b8e3-4346-8995-5f9795ffa8a3.png" class="article-body-image-wrapper"&gt;&lt;img alt="terminal_yes_no_option" src="https://res.cloudinary.com/practicaldev/image/fetch/s--XPtba9OL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939627-0de999bf-b8e3-4346-8995-5f9795ffa8a3.png" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now you have to press &lt;strong&gt;Enter&lt;/strong&gt; .&lt;/li&gt;
&lt;li&gt;Now open your aws console from browser, you will see your stack is created into cloud like following image. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lhNfVjrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939676-75d77a61-76fd-46c5-b850-57bdfd9b7e35.png" class="article-body-image-wrapper"&gt;&lt;img alt="cloudformation_resource" src="https://res.cloudinary.com/practicaldev/image/fetch/s--lhNfVjrz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223939676-75d77a61-76fd-46c5-b850-57bdfd9b7e35.png" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After sync, you will see an API link in your device terminal like following image:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sAPYSZbG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223940899-de43da15-25ee-4884-85c1-e164537668e7.png" class="article-body-image-wrapper"&gt;&lt;img alt="API" src="https://res.cloudinary.com/practicaldev/image/fetch/s--sAPYSZbG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223940899-de43da15-25ee-4884-85c1-e164537668e7.png" width="800" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After clicking on this API, you will see the table name what is passed through layer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ApXv14Dk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223940975-dc276e98-f942-4514-9941-6fea47575fe7.png" class="article-body-image-wrapper"&gt;&lt;img alt="output" src="https://res.cloudinary.com/practicaldev/image/fetch/s--ApXv14Dk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/63281366/223940975-dc276e98-f942-4514-9941-6fea47575fe7.png" width="800" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you change anything in layers or anything into your template file, you will see that change into cloud. So you can test your application with real aws resources. If you have any question please let me know in comment.&lt;/p&gt;

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