<?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: Baimam Boukar Jean Jacques</title>
    <description>The latest articles on DEV Community by Baimam Boukar Jean Jacques (@baimamboukar).</description>
    <link>https://dev.to/baimamboukar</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%2F651906%2F3804e7db-48d6-4e34-a62b-14050a063340.jpg</url>
      <title>DEV Community: Baimam Boukar Jean Jacques</title>
      <link>https://dev.to/baimamboukar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/baimamboukar"/>
    <language>en</language>
    <item>
      <title>Getting Started with AWS SAM by deploying a simple Serverless Application</title>
      <dc:creator>Baimam Boukar Jean Jacques</dc:creator>
      <pubDate>Mon, 10 Jul 2023 17:32:10 +0000</pubDate>
      <link>https://dev.to/baimamboukar/getting-started-with-aws-sam-by-deploying-a-simple-serverless-application-4ikc</link>
      <guid>https://dev.to/baimamboukar/getting-started-with-aws-sam-by-deploying-a-simple-serverless-application-4ikc</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X22pKgxS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/960/1%2AzR1Im5EdKu9XVF0l5KP8Tg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X22pKgxS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/960/1%2AzR1Im5EdKu9XVF0l5KP8Tg.jpeg" alt="" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do you feel slowed down by the time and effort required to manage servers and infrastructure for your application? Are you searching for a simpler way to develop and deploy your applications faster? AWS Serverless Application Model is here for you. In this article, we’ll introduce SAM and show you how to deploy a simple serverless app.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Serverless computing&lt;/strong&gt; is quickly becoming a popular choice for building and deploying applications in the cloud. With serverless computing, developers can focus on writing code and building applications without having to worry about &lt;strong&gt;managing servers, infrastructure, or scaling&lt;/strong&gt;. AWS Lambda, the leading serverless computing service, has made it easy for developers to build and deploy serverless applications on AWS. However, managing the infrastructure for these applications, and ensuring everything align with best practices can still be complex and time-consuming. And this is where the &lt;strong&gt;AWS SAM (Serverless Application Model)&lt;/strong&gt; fits in.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is AWS SAM ?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;AWS SAM (Serverless Application Model)&lt;/strong&gt; is a framework that simplifies the process of building serverless applications on Amazon Web Services (AWS).&lt;/p&gt;

&lt;p&gt;It makes it easier for developers to develop, test, and deploy serverless applications on AWS. By providing a &lt;strong&gt;standardized way to define and manage the resources required by an application&lt;/strong&gt; , AWS SAM streamlines the development process and helps ensure that the application is scalable, reliable, secure and follow best practices.&lt;/p&gt;

&lt;p&gt;This framework allows developers to define the various resources their application needs, such as APIs, functions, and tables, using a YAML or JSON file. &lt;em&gt;For example it can provide a simplified way to define the&lt;/em&gt; &lt;strong&gt;&lt;em&gt;AWS API Gateway&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;APIs,&lt;/em&gt; &lt;strong&gt;&lt;em&gt;AWS Lambda&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;functions, and&lt;/em&gt; &lt;strong&gt;&lt;em&gt;Amazon&lt;/em&gt;&lt;/strong&gt;  &lt;strong&gt;&lt;em&gt;DynamoDB&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;tables needed by your serverless application.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Some cool things about AWS SAM
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tZ7pWiUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/571/0%2Ac-17cBkxcrHzQtbm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tZ7pWiUJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/571/0%2Ac-17cBkxcrHzQtbm.png" alt="AWS SAM mascotte" width="571" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;With AWS SAM, you can define the resources your application needs using a &lt;strong&gt;YAML or JSON&lt;/strong&gt; file, making it easy to share and version control with other developers&lt;/li&gt;
&lt;li&gt;It supports popular programming languages such as &lt;strong&gt;Python, Node.js, Go and Java&lt;/strong&gt; , and has many templates that will hep you to quickly get started.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integration with AWS Services&lt;/strong&gt; : AWS SAM integrates with other AWS services, such as Amazon S3, Amazon Kinesis, and Amazon SNS. This allows developers to build complex serverless applications that leverage multiple AWS services, without having to manually configure each service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local Development and Testing&lt;/strong&gt; : AWS SAM supports local development and testing, allowing developers to test their serverless applications locally before deploying them to the cloud. This helps ensure that the application is running as expected, and helps catch any issues before they are deployed to production.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single, reliable and automated deployment:&lt;/strong&gt; AWS SAM organizes and deploy related resources together as a single, versioned entity. It is an extension of &lt;strong&gt;AWS CloudFormation&lt;/strong&gt; , which means that developers can leverage CloudFormation’s reliable deployment capabilities. With the &lt;strong&gt;SAM CLI&lt;/strong&gt; , developers can easily deploy their applications to AWS, or create &lt;strong&gt;secure CI/CD pipelines&lt;/strong&gt; that follow best practices and integrate with AWS’ native and third-party CI/CD systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Now Let’s practice a bit: Deploying a simple severless app on AWS
&lt;/h3&gt;

&lt;p&gt;Now that you know what SAM is, let’s put it into practice by deploying a simple serverless application. We’ll walk through the steps of deploying a serverless app that displays a &lt;strong&gt;poem about AWS SAM 😂&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;To get started, we’ll use &lt;strong&gt;AWS Lambda&lt;/strong&gt; to execute our code and &lt;strong&gt;Amazon API Gateway&lt;/strong&gt; to handle incoming requests. By following the steps outlined in this tutorial, you’ll see just how easy it can be to build and deploy serverless applications with SAM. So, let’s dive in!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Installing SAM CLI&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To get started, we need to install the &lt;strong&gt;AWS SAM CLI.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows:&lt;/strong&gt; Download and install AWS SAM CLI for windows &lt;a href="https://github.com/aws/aws-sam-cli/releases/latest/download/AWS_SAM_CLI_64_PY3.msi"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MacOS:&lt;/strong&gt; If you’re running on MacOS, you can get the package installer for &lt;a href="https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-x86_64.pkg"&gt;Intel(x86_64)&lt;/a&gt; or for&lt;a href="https://github.com/aws/aws-sam-cli/releases/latest/download/aws-sam-cli-macos-arm64.pkg"&gt;Apple (arm64)&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After installing, run this command to make sure it works well&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;It should display SAM CLI, version &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configuring the serverless application&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s create our serverless app and get it ready for deployment&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a new directory for the project
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir serverless-app
cd serverless-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create the Lambda handler&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Create a new file called poem.py and add the following code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import json
def handler(event, context):
    poem = '''
   Roses are red,
   Violets are blue,
   AWS Serverless,
   Is the way to go, too.

   No more servers to manage,
   No more scaling to do,
   AWS takes care of it all,
   So you can focus on code.

   Lambda functions and API Gateway,
   DynamoDB and more,
   AWS Serverless has it all,
   For your app to truly soar.

   So if you want to build,
   An app that's fast and lean,
   Choose AWS Serverless,
   And you'll be a development machine.
   '''
    json_poem = json.dumps({"statusCode": 200, "poem": poem})
    return {
        "isBase64Encoded": False,
        "statusCode": 200,
        "headers": {"Content-Type": "application/json"},
        "body": json_poem
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create the SAM template file
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Resources:
  PoemFunction:
    Type: "AWS::Serverless::Function"
    Properties:
      Handler: poem.handler
      Runtime: python3.8
      CodeUri: .
      Description: A Lambda function that returns a poem
      MemorySize: 128
      Timeout: 10
      Events:
        PoemApi:
          Type: Api
          Properties:
            Path: /poem
            Method: GET
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This configuration defines an&lt;/em&gt; &lt;strong&gt;&lt;em&gt;AWS Lambda&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;function called&lt;/em&gt; &lt;em&gt;PoemFunction and an API Gateway endpoint called&lt;/em&gt; &lt;em&gt;PoemApi that triggers the function when accessed with a GET request to _&lt;/em&gt;/poem._&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Deploying the Serverless app to AWS&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The moment has arrived to deploy our serverless application! Let’s get it up and running 🤹‍♂️&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Package the app 📦&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sam package --template-file template.yaml --output-template-file packaged.yaml --s3-bucket serverless-app-bucket --region us-east-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This command packages your AWS SAM application and&lt;/em&gt; &lt;strong&gt;&lt;em&gt;uploads it to an auto-created S3 bucket.&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;It creates a new&lt;/em&gt; &lt;strong&gt;&lt;em&gt;CloudFormation templat&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;e that includes the S3 location of the packaged application.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy 🚀&lt;/strong&gt;&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 --template-file packaged.yaml --stack-name serverless-app --capabilities CAPABILITY_IAM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;This command deploys your AWS SAM application to AWS CloudFormation. It creates a new&lt;/em&gt; &lt;strong&gt;&lt;em&gt;CloudFormation stack&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;and deploys the packaged application to the stack.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test 🧪&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After the deployment is complete, open the AWS Console.&lt;/li&gt;
&lt;li&gt;Navigate to the &lt;strong&gt;AWS API Gateway&lt;/strong&gt; service and select the API that was created by AWS SAM.&lt;/li&gt;
&lt;li&gt;Click on the “Stages” tab and find the URL for the deployed API.&lt;/li&gt;
&lt;li&gt;Open a web browser and navigate to the URL. You should see the poem displayed in the browser.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Congratulations 🎉&lt;/strong&gt;! You’ve successfully deployed a simple serverless app with AWS SAM.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I hope this tutorial has been helpful in discovering and guiding you through the process of deploying a serverless application with AWS SAM. If you encounter any errors or issues that you cannot troubleshoot on your own, don’t hesitate to leave a comment.&lt;/em&gt;&lt;/p&gt;




</description>
      <category>serverless</category>
      <category>awsapigateway</category>
      <category>awslambda</category>
      <category>aws</category>
    </item>
    <item>
      <title>Deploy static websites to AWS S3 via CI/CD with GitHub Actions</title>
      <dc:creator>Baimam Boukar Jean Jacques</dc:creator>
      <pubDate>Sun, 09 Jul 2023 20:13:47 +0000</pubDate>
      <link>https://dev.to/baimamboukar/deploy-static-websites-to-aws-s3-via-cicd-with-github-actions-3d1a</link>
      <guid>https://dev.to/baimamboukar/deploy-static-websites-to-aws-s3-via-cicd-with-github-actions-3d1a</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3UKMLzMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/609/1%2AwRkss7NJubW4zkGqn6-ChA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3UKMLzMC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/609/1%2AwRkss7NJubW4zkGqn6-ChA.png" alt="" width="609" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;S3 is a powerful and reliable storage service offered by AWS Cloud. It can be used to host static websites with ease. In this article, we will show you how to deploy your static content to AWS S3 using GitHub Actions. This will allow you to automate the deployment process and ensure that your website is always up-to-date.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is AWS S3?
&lt;/h3&gt;

&lt;p&gt;AWS &lt;strong&gt;S3&lt;/strong&gt; stands for Amazon &lt;strong&gt;Simple Storage Service&lt;/strong&gt;. It is a cloud storage service that offers industry-leading scalability, data availability, security, and performance.&lt;/p&gt;

&lt;p&gt;S3 has tons of use cases amongst which we have Media Storage, Data Lake, Backup and archiving, and Static website hosting.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create S3 Bucket
&lt;/h3&gt;

&lt;p&gt;To host our static website, we will need to create a S3 bucket. There are many ways to do this. Via AWS console,AWS CLI, AWS SDKs or REST APIs. But for the purpose of this tutorial,we will use AWS console.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sign in to the AWS&lt;/strong&gt; Management Console and open the Amazon S3 console at &lt;a href="https://console.aws.amazon.com/s3/."&gt;https://console.aws.amazon.com/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Then type &lt;strong&gt;S3&lt;/strong&gt; in the search bar and chose the first result, standard S3.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Create a bucket&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After opening S3 view, click on “Create Bucket” and configure your bucket as follow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bucket name: Give a unique name to your bucket&lt;/li&gt;
&lt;li&gt;Region: Select the AWS region in which you want to create your bucket&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Unblock public access&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By default, AWS blocs all unauthorized access. But we have to allow public access in order for the hosted static website to be publicly available.&lt;/p&gt;

&lt;p&gt;To do so, just uncheck the “Block All Public Access” checkbox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BUszD2DQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/793/1%2A-YVPrp-hT9SttpizrYSEgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BUszD2DQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/793/1%2A-YVPrp-hT9SttpizrYSEgw.png" alt="" width="793" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After unchecking, scroll down and click on “Create Bucket”. Wait for few seconds and after successful operation, you should see your created bucket&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Enable Static Website Hosting
&lt;/h3&gt;

&lt;p&gt;Now that we have our bucket created, we have to enable AWS S3 static website hosting on the bucket.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to the permissions tab&lt;/li&gt;
&lt;li&gt;Scroll way down (bottom-most section of the page)&lt;/li&gt;
&lt;li&gt;Then you should see “Static Website Hosting” section&lt;/li&gt;
&lt;li&gt;Click on “Edit” and Enable static webste hosting&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;In Index document, enter the file name of the index document, typically index.html.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The index document name is case sensitive and must exactly match the file name of the HTML index document that you plan to upload to your S3 bucket. When you configure a bucket for website hosting, you must specify an index document. Amazon S3 returns this index document when requests are made to the root domain or any of the subfolders&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;To provide your own custom error document for 4XX class errors, in Error document, enter the custom error document file name. The error document name is case sensitive and must exactly match the file name of the HTML error document that you plan to upload to your S3 bucket.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Update Bucket Policy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Locate your bucket and open it&lt;/li&gt;
&lt;li&gt;Navigate to “Permissions” tab and scroll down to “Bucket Policy”&lt;/li&gt;
&lt;li&gt;Click on edit and paste this json data
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "PublicReadGetObject",
                "Effect": "Allow",
                "Principal": "*",
                "Action": [
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::&amp;lt;Bucket-Name&amp;gt;/*"
                ]
            }
        ]
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don’t forget to change  with your real bucket name at the level of “Resource” key, &lt;code&gt;arn:aws:s3:::&amp;lt;Bucket-Name&amp;gt;/*&lt;/code&gt;. For exmaple if your bucket name is “static-websites-with-github-actions”, It should be “ &lt;strong&gt;&lt;em&gt;arn:aws:s3:::static-websites-with-github-actions/*&lt;/em&gt;&lt;/strong&gt; ”&lt;/p&gt;

&lt;h3&gt;
  
  
  Generate Access Keys
&lt;/h3&gt;

&lt;p&gt;Now that we have our S3 bucket pretty fine and well configured, we need to generate access keys to be able to perform CI/CD from Github Actions.&lt;/p&gt;

&lt;p&gt;Note that to generate access keys, you need IAM account with administrative roles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On your AWS Console dashboard, click your username&lt;/li&gt;
&lt;li&gt;Then click on the option &lt;strong&gt;Security Credentials&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On the Your &lt;strong&gt;Security Credentials&lt;/strong&gt; page, expand the **Access keys (access key ID and secret access key) **tab.&lt;/li&gt;
&lt;li&gt;Click on the &lt;strong&gt;Create New Access Key&lt;/strong&gt;  button.&lt;/li&gt;
&lt;li&gt;An access key with its secret should be generated for you&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Note that we will need this access key to configure our CI/CD with Github Actions later.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Create Simple Website
&lt;/h3&gt;

&lt;p&gt;Now we’re ready to cook the website that will host on AWS S3. To KISS (Keep It Simple and Stupid), let’s create a simple webpage that displays current Date and Time in the user’s time zone.&lt;/p&gt;

&lt;p&gt;Here is the content of the index.html page&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;title&amp;gt;Hosting on AWS S3&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;center&amp;gt;
      &amp;lt;h1&amp;gt;UP AND RUNNING ON AWS S3&amp;lt;/h1&amp;gt;
    &amp;lt;/center&amp;gt;
    &amp;lt;p id="date"&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;footer&amp;gt;
      &amp;lt;center&amp;gt;
      &amp;lt;a href='https://github.com/baimamboukar/'&amp;gt;
        by @baimamboukar
      &amp;lt;/a&amp;gt;
        &amp;lt;/center&amp;gt;
    &amp;lt;/footer&amp;gt;
  &amp;lt;/body&amp;gt;
  &amp;lt;style&amp;gt;
    body {
      text-align: center;
      background-color: #f2f2f2;
    }

    h1 {
      color: #333333;
    }

    p {
      font-size: 20px;
      color: #dd0808;
      font-weight: 600;
    }
    a{
      text-decoration: none;
      color: 'green';
    }
    footer{
      background-color: 'black';
      height: 75px;
      width: 100%;
      position: fixed;
      bottom: 0px;
    }
  &amp;lt;/style&amp;gt;
  &amp;lt;script&amp;gt;
    function getCurrentDateTime() {
      var currentDateTime = new Date();
      var formattedDateTime =
        "Your local datetime is: " + 
        currentDateTime.toDateString() +
        ", " +
        currentDateTime.toLocaleTimeString();
      return formattedDateTime;
    }
    document.getElementById("date").innerHTML = getCurrentDateTime();

    setInterval(function () {
      document.getElementById("date").innerHTML = getCurrentDateTime();
    }, 1000);
  &amp;lt;/script&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can go to this repository and fork complete repo to have all files.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/baimamboukar/hosting-static-website-on-aws-S3-with-github-actions/"&gt;GitHub - baimamboukar/hosting-static-website-on-aws-S3-with-github-actions: Practicing static website hosting on AWS S3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When everything is OKAY, push the files to a Github repository which I assume you already created.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring CI/CD with Github Actions
&lt;/h3&gt;

&lt;p&gt;Our Github Action workflow will be responsible of deploying the content of our repository (basically our website) to AWS S3 whenever the repository receives a commit-push. This will ensure that our live website is always up-to-date.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On your repository that contains the website, navigate to “Actions” tab&lt;/li&gt;
&lt;li&gt;On the left sidebar, click on “New Workflow”&lt;/li&gt;
&lt;li&gt;And click on “Set up a workflow yourself”&lt;/li&gt;
&lt;li&gt;Give a name to your workflow file. The default name is “main.yml”. You can change it or allow the default one.&lt;/li&gt;
&lt;li&gt;The paste this content inside the workflow
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: deploy static website to AWS-S3

on:
  push:
jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Set up AWS CLI
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1

      - name: Deploy to AWS S3
        run: |
          aws s3 sync . s3://&amp;lt;your-bucket-name&amp;gt; --delete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, make sure you replace &lt;strong&gt;&lt;em&gt;&lt;/em&gt;&lt;/strong&gt; with the bucket name you created earlier. Also, the &lt;strong&gt;“aws-region”&lt;/strong&gt; value should be the region in which you created your bucket&lt;/p&gt;

&lt;p&gt;Well, you have surely noticed something. We have secrets in the workflow: &lt;strong&gt;AWS_ACCESS_KEY_ID&lt;/strong&gt; and &lt;strong&gt;AWS_SECRET_ACCESS_KEY.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These secrets are not “Ex-Nihilo”, meaning they are out coming out of anywhere.&lt;/p&gt;

&lt;p&gt;So let’s configure these secrets.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuring Github Environment Secrets
&lt;/h3&gt;

&lt;p&gt;Remember the Access key we created earlier? &lt;strong&gt;Its time is NOW!&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In your github repository that contains the website, go to Settings tab&lt;/li&gt;
&lt;li&gt;Scroll down to “Secrets and Variables” in the left sidebar and click on it&lt;/li&gt;
&lt;li&gt;Choose “Action” option&lt;/li&gt;
&lt;li&gt;Click on “New repository secret”&lt;/li&gt;
&lt;li&gt;Then give the name “ &lt;strong&gt;AWS_ACCESS_KEY_ID”&lt;/strong&gt; to your variable&lt;/li&gt;
&lt;li&gt;Repeat the first three steps of “Generate Access Keys” section to view the access key you created&lt;/li&gt;
&lt;li&gt;Copy its content and paste it, as value for &lt;strong&gt;AWS_ACCESS_KEY_ID&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Click on “Add secret” to save the secret variable&lt;/li&gt;
&lt;li&gt;Do the same to create the “ &lt;strong&gt;AWS_SECRET_ACCESS_KEY”.&lt;/strong&gt; Make sure you copied the real value of the key’s secret, not key ID&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Trigger CI/CD and View the Deployment URL
&lt;/h3&gt;

&lt;p&gt;At this point, we are all set to trigger the CI/CD in order for our workflow to run and deploy to AWS S3.&lt;/p&gt;

&lt;p&gt;To do so, we need to push a commit to our repository. So let’s update something the title tag of our index.html to&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;title&amp;gt; CI/CD to AWS S3 &amp;lt;/title&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then we commit and push to the repository.&lt;/p&gt;

&lt;p&gt;This push will trigger our CI/CD workflow and deploy the last commits to AWS S3.&lt;/p&gt;

&lt;p&gt;To view the deployment URL pattern is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;bucket-name&amp;gt;.s3-website-&amp;lt;bucket-region&amp;gt;.amazonaws.com/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Make sure to replace “” and “” respectively with the name of your bucket and region in which you created it.&lt;/p&gt;

&lt;p&gt;This is for instance, my deployment URL&lt;/p&gt;

&lt;p&gt;&lt;a href="http://aws-github-actions-web-hosting.s3-website-us-east-1.amazonaws.com/"&gt;Hosting on AWS S3&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click on the link, you should see something like this:&lt;/p&gt;

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

&lt;p&gt;Congratulations, You have just deployed a static website to AWS S3 using CI/CD with Github actions 🎉🎉🎉&lt;/p&gt;

&lt;p&gt;You may want to link a custom domain name to your S3-hosted website. If that is the case, you can check out my article on how to configure a custom domain name for a S3-Hosted static website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://baimamboukar.medium.com/configure-a-custom-domain-name-for-an-s3-hosted-static-website-using-aws-route-53-45caf6d90ef1"&gt;Configure a custom domain name for an S3-hosted static website using AWS Route 53&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading, and I hope this content was helpful to you. Let’s stay connected for more.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/baimamboukar"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/baimamjj"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://linkedin.com/in/baimamboukar"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>s3bucket</category>
      <category>aws</category>
      <category>hosting</category>
      <category>staticwebsites</category>
    </item>
    <item>
      <title>Cloud Computing 101: Why, What and How</title>
      <dc:creator>Baimam Boukar Jean Jacques</dc:creator>
      <pubDate>Sun, 09 Jul 2023 12:59:55 +0000</pubDate>
      <link>https://dev.to/baimamboukar/cloud-computing-101-why-what-and-how-4g4c</link>
      <guid>https://dev.to/baimamboukar/cloud-computing-101-why-what-and-how-4g4c</guid>
      <description>&lt;h3&gt;
  
  
  Cloud and Cloud Computing 101: Why, What and How
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--op7Pu20h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1024/1%2ASb691mdBqzPVJ1D8Xq579g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--op7Pu20h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/1024/1%2ASb691mdBqzPVJ1D8Xq579g.png" alt="cloud computing" width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“There is no cloud, it is just someone else’s computer.” oversimplifies the concept of the cloud, but it is important to understand that the cloud is much more than just someone else’s computer. We discuss why cloud computing exists, what it is offering and how it works, to better understand “What is Cloud computing?”&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  There is no cloud; it is just someone else’s computer
&lt;/h3&gt;

&lt;p&gt;In today’s digital age, you often hear the phrase_,_ &lt;strong&gt;&lt;em&gt;”There is no cloud, it is just someone else’s computer.”&lt;/em&gt;&lt;/strong&gt; While this statement carries an element of truth and oversimplifies the concept of cloud computing, there is also a problem. This completely misses the point. It focuses your attention on the wrong thing. Let’s be clear with this: the statement &lt;em&gt;“&lt;/em&gt; &lt;strong&gt;&lt;em&gt;There is no cloud; it is just someone else’s computer”&lt;/em&gt;&lt;/strong&gt; is somehow neglectful, dismissive, and minimizing. Like&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;The cloud — what’s it about?&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Nooo… no big deal, just someone else’s computer&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This just makes us underestimate how important the cloud already is, and how promising it is, for the future of technology.&lt;/p&gt;

&lt;p&gt;There is a &lt;strong&gt;STATISTIA&lt;/strong&gt; report that talks about the &lt;a href="https://www.statista.com/statistics/477702/public-cloud-vendor-revenue-forecast/"&gt;yearly revenue of commercial Public clouds&lt;/a&gt;. Commercial Cloud services are now on track to hit $ &lt;strong&gt;500B+&lt;/strong&gt; yearly revenue by 2025. This just confirms that there is something huge there.&lt;/p&gt;

&lt;p&gt;So, Is cloud or cloud computing vague and very ambiguous? Yes! Yes It is. But to better understand &lt;strong&gt;’What is Cloud Computing?”&lt;/strong&gt; and its importance, we need to get clear on some terminologies and some terms of cloud computing jargon like IaaS, PaaS, SaaS, On-demand delivery over the internet, etc., and understand what cloud service providers are offering and how we are benefiting from these services.&lt;/p&gt;

&lt;h3&gt;
  
  
  First things first
&lt;/h3&gt;

&lt;p&gt;We need to begin at the beginning. What do we exactly mean when we say cloud or cloud Computing ? Can we even be exact about those terms ?&lt;/p&gt;

&lt;p&gt;This really goes beyond Just understanding a few pieces of technical terminology Because if you want to go beyond that and actually feel fluent and comfortable when you’re talking about Cloud, you should understand it in these four main perspectives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal&lt;/strong&gt; : How could you, just you, get more out of this ?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team&lt;/strong&gt; : Now, widen your thinking and see how this can apply to your team.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Business&lt;/strong&gt; : In the same perspective, think about how it can help your organization&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customers&lt;/strong&gt; : Then push into that perspective and think about how this can solve the problems of your clients or customers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it is from combining these little technical understandings and a good awareness of the various audiences, that we can get a &lt;strong&gt;real sense of What Cloud Computing is&lt;/strong&gt; , how you can use it in different situations and contexts, and why it is becoming crucial for almost all businesses. Because there is a Cloud, and it is much more than Just someone else’s computer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Different use cases, same benefits
&lt;/h3&gt;

&lt;p&gt;Usually, when we want to understand a technology, we tend to try to understand one or two examples, and that’s fine. But we don’t have that here. &lt;strong&gt;And the reason is that this is the best way to get confused about What Cloud computing is&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let’s imagine we have four people from different walks of life, who are well informed about what cloud computing is and who are using it every single day. And we ask them, &lt;strong&gt;“Why are you using the cloud?”&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;This will just not make any sense to someone who is not informed about cloud computing. Because these are four descriptions of four unrelated things.&lt;/p&gt;

&lt;p&gt;But indeed, they are all right! Now imagine if we see cloud computing from just the perspective of a student or a Software developer. We would have had a very narrow and limited understanding of what cloud computing is.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;This is the key to getting started. The use cases of cloud computing can be extremely different between individuals and across teams or organizations. This is why cloud computing is a bit tricky to understand and very difficult to define. It evades this kind of simple and straightforward description like “Cloud computing is for doing this or Cloud computing is for doing that”.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But we can get a better understanding by asking additional questions on the use cases of various profiles of people, like, &lt;strong&gt;Can’t you do that already?, without the cloud ?&lt;/strong&gt; Yes! We can do all of these, but with much more cool benefits. And this is where the four main benefits of the cloud come in:&lt;/p&gt;

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

&lt;p&gt;By adding cloud computing, all these use cases become Cheaper, easier, and Faster. We will also be able to do other things that we couldn’t just do before — something that was technically impossible, time-consuming, or so costly to implement that we could never do it.&lt;/p&gt;

&lt;p&gt;But here is the thing, moving to the cloud is not an instant guarantee that everything will become easier, faster, and cheaper. No! No, because these four benefits can be prioritized differently. For some organizations, for example, the top priority will be &lt;strong&gt;Speed&lt;/strong&gt; , reducing time to market and doing things faster than ever before. In other organizations, the priority may be  &lt;strong&gt;Cost&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Now that we have a better understanding of why the cloud is so important, let’s deep dive into cloud services to understand What the cloud is about and what it is offering.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Everything as a Service
&lt;/h3&gt;

&lt;p&gt;There are thousands of cloud service providers out there, like Amazon Web Services, Google Cloud, Microsoft Azure, Oracle Cloud, Alibaba Cloud, etc,.&lt;/p&gt;

&lt;p&gt;The list seems endless, with providers targeting &lt;strong&gt;individuals&lt;/strong&gt; , &lt;strong&gt;enterprises&lt;/strong&gt; , and &lt;strong&gt;small businesses&lt;/strong&gt;. Some even focus on specific industries like &lt;strong&gt;healthcare&lt;/strong&gt; , &lt;strong&gt;transportation&lt;/strong&gt; , &lt;strong&gt;music&lt;/strong&gt; , or &lt;strong&gt;education&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;But regardless of the provider, there is a &lt;strong&gt;framework&lt;/strong&gt; to categorize the services offered by these providers. By identifying the &lt;strong&gt;“Something as a Service” (XaaS)&lt;/strong&gt; nomenclature, one can discern the primary category of the service being offered.&lt;/p&gt;

&lt;p&gt;These are &lt;strong&gt;Infrastructure as a Service&lt;/strong&gt; (IaaS), &lt;strong&gt;Platform as a Service&lt;/strong&gt; (PaaS), and &lt;strong&gt;Software as a Service&lt;/strong&gt; (SaaS). You might also come across terms like &lt;strong&gt;Backend as a Service&lt;/strong&gt; (BaaS), but these are just sub-categories that fall under one of the three main types we mentioned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure as a Service (IaaS)&lt;/strong&gt; is like renting a fully equipped office space instead of buying all the furniture, computers, and equipment yourself. You can access virtual machines, storage, and networks provided by a cloud service provider over the internet. The provider takes care of all the underlying infrastructure, such as servers and data centers, while you have the flexibility to scale your computing power as needed without worrying about maintenance or upfront costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform as a Service (PaaS)&lt;/strong&gt; is like renting a ready-to-use kitchen in a restaurant instead of building one from scratch. With PaaS, developers can focus on creating and deploying applications without the hassle of setting up and managing the underlying infrastructure. The cloud provider takes care of the servers, storage, and operating system, while providing tools and services that make coding and deployment easier. It’s like having a fully equipped kitchen where you can start cooking right away, without worrying about buying or maintaining the appliances.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software as a Service (SaaS)&lt;/strong&gt; is like subscribing to a streaming service to watch movies instead of buying DVDs or downloading them. With SaaS, you can access software applications directly through a web browser or dedicated app, without needing to install or update anything on your computer. The provider hosts the software on their servers and takes care of maintenance and updates, while you can simply use the application and access your files from anywhere with an internet connection. It’s like having access to a library of software that you can use whenever you need it, without the hassle of installation or management.&lt;/p&gt;

&lt;p&gt;In simple terms, IaaS provides the basic infrastructure components, PaaS offers a complete development environment, and SaaS gives you ready-to-use software applications, all accessible through the cloud without the need for upfront investments or technical expertise.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Now that we have explored what services are offered by cloud service providers and how we are benefiting from these services, let’s have a look at “how.”&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Delivered over the Internet
&lt;/h3&gt;

&lt;p&gt;Cloud services are delivered over the internet. Cloud service providers have large data centers that host numerous powerful servers. These servers are connected to the internet through high-speed networks, ensuring a reliable and fast connection. The data centers are strategically located in various regions to ensure optimal performance and high availability.&lt;/p&gt;

&lt;p&gt;When you interact with cloud services, such as storing files, running applications, or using online software, your data is securely transmitted over the internet to the provider’s servers. The servers process your requests and deliver the requested services or data back to your device via the internet.&lt;/p&gt;

&lt;p&gt;Cloud service providers take measures to ensure the security and privacy of your data during transmission. They may use encryption, which is like putting your data in a secure digital envelope, to protect it from unauthorized access.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The internet acts as the medium that enables the delivery of cloud services, allowing users to seamlessly access and utilize resources and applications hosted remotely. It provides the connectivity that makes it possible for individuals and businesses to leverage the benefits of cloud computing from anywhere, at any time, with just an internet connection.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  What is Cloud Computing ?
&lt;/h3&gt;

&lt;p&gt;Cloud computing does not have a single, universally accepted definition. The interpretation of cloud computing can vary depending on the target audience, whether it’s individuals, teams, or businesses, as we have seen earlier.&lt;/p&gt;

&lt;p&gt;The concept of cloud computing is dynamic and evolving, with new services and use cases emerging constantly. But with the context that we develop above, It will now make much more sense to say that &lt;strong&gt;cloud computing is the delivery of on-demand computing, storage, or software resources over the internet, providing scalability, flexibility, and cost-effectiveness to businesses, teams, and individuals while relieving them from the complexities of infrastructure management and software maintenance.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading! And I hope you’re now convinced that the &lt;strong&gt;cloud is much more than Just someone else’s computer.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cloudnative</category>
      <category>cloudcomputing</category>
      <category>cloudservices</category>
    </item>
    <item>
      <title>Add dynamic theming support to your flutter apps with no stress</title>
      <dc:creator>Baimam Boukar Jean Jacques</dc:creator>
      <pubDate>Fri, 16 Dec 2022 02:01:52 +0000</pubDate>
      <link>https://dev.to/baimamboukar/add-dynamic-theming-support-to-your-flutter-apps-with-no-stress-4npm</link>
      <guid>https://dev.to/baimamboukar/add-dynamic-theming-support-to-your-flutter-apps-with-no-stress-4npm</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;In this post, I show you a really simple three-step process for implementing dynamic theming or a light/dark mode switch in your flutter apps with little worry.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Table of contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Adding hive to your project
&lt;/li&gt;
&lt;li&gt;Initialize hive_flutter and open a hive box
&lt;/li&gt;
&lt;li&gt;Listen to theme mode changes
&lt;/li&gt;
&lt;li&gt;Add switch widget to change theme mode&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;_Integrating a light-dark mode option in a Flutter app can be a nightmare. Having to handle providers and shared preferences, as well as loading configurations when the app launches, is quite difficult. But there is good news: in this post, we will learn and explore a straightforward technique to easily create a dynamic theming system for your Flutter app. Let’s get started _🔥&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AFc3wrr6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/504/1%2AqWBA7qk6J2HWanIXrjCiTw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFc3wrr6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/504/1%2AqWBA7qk6J2HWanIXrjCiTw.gif" alt="" width="504" height="1088"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;showase&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Adding hive to your project
&lt;/h3&gt;

&lt;p&gt;To begin, add the &lt;strong&gt;hive_flutter&lt;/strong&gt; package to the flutter project that you want to make theme dynamic.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pub.dev/packages/hive_listener"&gt;hive_listener | Flutter Package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://pub.dev/packages/hive_flutter"&gt;hive_flutter | Flutter Package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Hive is a lightweight and blazing fast key-value database written in pure Dart. Inspired by ** &lt;a href="https://en.wikipedia.org/wiki/Bitcask"&gt;&lt;strong&gt;Bitcask&lt;/strong&gt;&lt;/a&gt; **.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Add the packages to your flutter project by the following commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter pub add hive_flutter
flutter pub add hive_listener
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Initialize hive_flutter and open a hive box
&lt;/h3&gt;

&lt;p&gt;To keep the theme mode on the mobile device, we'll use &lt;strong&gt;Hive&lt;/strong&gt;. It is a &lt;strong&gt;fast key-value database that makes data persistence in flutter apps simple&lt;/strong&gt;. It must be initialized before it can be used properly in the app. We will also need a box to house all of our app settings options. Insert this code snippet into your main function in the main.dart file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Future main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Hive.initFlutter();
  await Hive.openBox('app_settings');

  Hive.box('app_settings').isEmpty
      ? {
          Hive.box('theme').put('theme', false),
        }
      : null;
  runApp(
    DynamicThemingApp()
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the code below, we’ve opened a new box called “app settings” and initialized the &lt;strong&gt;hive_flutter&lt;/strong&gt; package.&lt;br&gt;&lt;br&gt;
It is recommended to verify if the box is empty to avoid null exception problems. In the same way, you can initialize certain keys by assigning default values to them. This is why we added the ternary operator to the code snippet.&lt;br&gt;&lt;br&gt;
In our example, we initialized the “theme” key with the default value false.&lt;br&gt;&lt;br&gt;
&lt;strong&gt;This implies that when the app is launched for the first time, the user will not have selected a preferred theme, hence the default theme mode will be light.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Listen to theme mode changes
&lt;/h3&gt;

&lt;p&gt;At this point&lt;br&gt;&lt;br&gt;
🥇 hive_flutter package is initialized&lt;br&gt;&lt;br&gt;
🥈 the app settings box is opened&lt;br&gt;&lt;br&gt;
🥉key theme is initialized with the default value of false.&lt;/p&gt;

&lt;p&gt;Now we must listen to the box app settings. Here is listening in real time to see if a box’s key has been modified with a new value; &lt;strong&gt;this is where the Hive listener package comes in&lt;/strong&gt;. It monitors box changes and updates the app accordingly. Simply wrap your &lt;strong&gt;MaterialApp&lt;/strong&gt; widget in the &lt;strong&gt;HiveListener&lt;/strong&gt; widget, as seen in this code sample.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
class DynamicThemeApp extends StatelessWidget {
  const DynamicThemeApp({super.key});

  @override
  Widget build(BuildContext context) {
    return HiveListener(
      box: Hive.box('app_settings'),
      builder: (box) =&amp;gt; MaterialApp(
        color: Palette.primary,
        themeMode: box.get('theme') ? ThemeMode.dark : ThemeMode.light,
        darkTheme: ThemeData.dark().copyWith(
          scaffoldBackgroundColor: Palette.backgroundDark,
        ),
        theme: ThemeData(
          useMaterial3: true,
          primaryColor: Palette.primary,
          scaffoldBackgroundColor: Palette.lightGrey,
        ),
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Add switch widget to change theme mode
&lt;/h3&gt;

&lt;p&gt;Everything is already in place for your app to be theme-dynamic.&lt;br&gt;&lt;br&gt;
Oops! One more thing…..&lt;br&gt;&lt;br&gt;
We need a widget that triggers the theme mode change. In this scenario, using a &lt;strong&gt;Switch&lt;/strong&gt; widget, wrapped with a &lt;strong&gt;ValueListenableBuilder&lt;/strong&gt; that listens to &lt;strong&gt;app_settings&lt;/strong&gt; box might be the best solution. This widget just &lt;strong&gt;causes the app settings box to update the value of the theme key based on whether the switch is active or inactive&lt;/strong&gt;. Because the &lt;strong&gt;HiveListener&lt;/strong&gt; widget that wraps the &lt;strong&gt;MaterialApp&lt;/strong&gt; widget monitors the “app_settings” box modifications, updating the state of the switch widget will cause the theme value to be updated, affecting the app’s theme mode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ListTile(
  leading: const Icon(
    Icons.light_mode,
  ),
  trailing: ValueListenableBuilder(
    valueListenable:
        Hive.box('app_settings').listenable(),
    builder: (context, box, widget) =&amp;gt;
        CupertinoSwitch(
      value: box.get('theme'),
      onChanged: (value) {
        box.put('theme', value);
      },
    ),
  ),
  subtitle: const Text("Change theme"),
  title: const Text("Dark Mode"),
),
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  You should have a dynamic themed app if you followed all of the instructions for each phase. It’s just like this.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AFc3wrr6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/504/1%2AqWBA7qk6J2HWanIXrjCiTw.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AFc3wrr6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://cdn-images-1.medium.com/max/504/1%2AqWBA7qk6J2HWanIXrjCiTw.gif" alt="" width="504" height="1088"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;showcase&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Congratulations 🎉🎉🎉 You have successfully added dynamic mode support to your app in a few simple steps with little worry.&lt;br&gt;&lt;br&gt;
Let’s connect and grow together 🤓&lt;/p&gt;

&lt;h3&gt;
  
  
  Baimam Boukar JJ
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Flutter mobile developer | Open source Evangelist | Cloud &amp;amp; ML enthusiast&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/baimamboukar"&gt;Github&lt;/a&gt; — &lt;a href="https://linkedin.com/in/baimamboukar"&gt;LinkedIn&lt;/a&gt; — &lt;a href="https://twitter.com/in/baimamjj"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hive</category>
      <category>flutter</category>
      <category>darkmode</category>
      <category>mobileappdevelopment</category>
    </item>
    <item>
      <title>GITHUB COPILOT: YOUR ULTIMATE CODE GENERATOR</title>
      <dc:creator>Baimam Boukar Jean Jacques</dc:creator>
      <pubDate>Tue, 29 Jun 2021 20:21:46 +0000</pubDate>
      <link>https://dev.to/baimamboukar/github-copilot-your-ultimate-code-generator-3gh4</link>
      <guid>https://dev.to/baimamboukar/github-copilot-your-ultimate-code-generator-3gh4</guid>
      <description>&lt;blockquote&gt;
Finding the ultimate code autocompletion and suggestions tool has always been a headache…
But not anymore, the massiah is there: Github copilot.&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  LET'S GET STARTED
&lt;/h2&gt;

&lt;p&gt;Github has just introduced an amazing tool for code &lt;strong&gt;autocompletion and suggestions&lt;/strong&gt;. GitHub Copilot tries to understand your intent and to generate the best code it can&lt;/p&gt;

&lt;h2&gt;
  
  
  What is GitHub Copilot ?
&lt;/h2&gt;

&lt;p&gt;GitHub Copilot is an AI pair programmer that helps you write code faster and with less work. GitHub Copilot draws context from comments and code, and suggests individual lines and whole functions instantly. The GitHub Copilot technical preview is available as a Visual Studio Code extension.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to install github copilot in vscode?
&lt;/h2&gt;

&lt;p&gt;As said above, github copilot has  a Visual Studio Code extension that you can install in no time.&lt;/p&gt;

&lt;p&gt;Here is the link : &lt;a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"&gt;https://marketplace.visualstudio.com/items?itemName=GitHub.copilot&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;em&gt;Happy Coding&lt;/em&gt; 📝
&lt;/h2&gt;

</description>
      <category>git</category>
      <category>githubcopilot</category>
      <category>code</category>
      <category>autocompletion</category>
    </item>
  </channel>
</rss>
