<?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>Forem: Enes Çetinkaya</title>
    <description>The latest articles on Forem by Enes Çetinkaya (@enescetinkaya).</description>
    <link>https://forem.com/enescetinkaya</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%2F858662%2F1e438120-375a-4e8f-985f-f54c69d70f82.jpg</url>
      <title>Forem: Enes Çetinkaya</title>
      <link>https://forem.com/enescetinkaya</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/enescetinkaya"/>
    <language>en</language>
    <item>
      <title>Send Email for the SES without credentials</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Fri, 23 Jun 2023 07:12:46 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/send-email-for-the-ses-without-credentials-g58</link>
      <guid>https://forem.com/enescetinkaya/send-email-for-the-ses-without-credentials-g58</guid>
      <description>&lt;p&gt;Hello,&lt;br&gt;
Today I will show you how to use a fantastic service from AWS, the SES (Simple Email Service). The best part? You don’t need passwords to perform this task. Let's get started!&lt;/p&gt;

&lt;p&gt;For the first step, you need to install python3, pip and boto3 on the EC2. You then create a permission on EC2. This permission is a key that AWS provides to grant us a special level of access.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail"
            ],
            "Resource": "*"
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you obtain this superpower, you throw it onto EC2 and voila! Now your AWS services will work more securely and correctly.&lt;/p&gt;

&lt;p&gt;For the second step, you create  "Configuration Sets". These sets are like rulebooks that dictate how your emails will be processed and tracked. After you create this rulebook, you'll use it in our code to send emails.&lt;/p&gt;

&lt;p&gt;And finally, you customize parts of your SES code to our liking. By changing the "SENDER" section, you declare who is sending your emails. You add the rulebook you created in the previous step to the "CONFIGURATION_SET" section. And in the "AWS_REGION" section, you specify which geographic region our AWS services will be provided from.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
from botocore.exceptions import ClientError

# Replace sender@example.com with your "From" address.
# This address must be verified with Amazon SES.
SENDER = "Sender Name &amp;lt;info@enescetinkaya.net&amp;gt;"

# Replace recipient@example.com with a "To" address. If your account 
# is still in the sandbox, this address must be verified.
RECIPIENT = "enes@enescetinkaya.net"

# Specify a configuration set. If you do not want to use a configuration
# set, comment the following variable, and the 
# ConfigurationSetName=CONFIGURATION_SET argument below.
CONFIGURATION_SET = "MyFirstConfugrationSet"

# If necessary, replace us-west-2 with the AWS Region you're using for Amazon SES.
AWS_REGION = "us-east-1"

# The subject line for the email.
SUBJECT = "Amazon SES Test (SDK for Python)"

# The email body for recipients with non-HTML email clients.
BODY_TEXT = ("Amazon SES Test (Python)\r\n"
             "This email was sent with Amazon SES using the "
             "AWS SDK for Python (Boto)."
            )

# The HTML body of the email.
BODY_HTML = """&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
  &amp;lt;h1&amp;gt;Amazon SES Test (SDK for Python)&amp;lt;/h1&amp;gt;
  &amp;lt;p&amp;gt;This email was sent with
    &amp;lt;a href='https://aws.amazon.com/ses/'&amp;gt;Amazon SES&amp;lt;/a&amp;gt; using the
    &amp;lt;a href='https://aws.amazon.com/sdk-for-python/'&amp;gt;
      AWS SDK for Python (Boto)&amp;lt;/a&amp;gt;.&amp;lt;/p&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
            """            

# The character encoding for the email.
CHARSET = "UTF-8"

# Create a new SES resource and specify a region.
client = boto3.client('ses',region_name=AWS_REGION)

# Try to send the email.
try:
    #Provide the contents of the email.
    response = client.send_email(
        Destination={
            'ToAddresses': [
                RECIPIENT,
            ],
        },
        Message={
            'Body': {
                'Html': {
                    'Charset': CHARSET,
                    'Data': BODY_HTML,
                },
                'Text': {
                    'Charset': CHARSET,
                    'Data': BODY_TEXT,
                },
            },
            'Subject': {
                'Charset': CHARSET,
                'Data': SUBJECT,
            },
        },
        Source=SENDER,
        # If you are not using a configuration set, comment or delete the
        # following line
        ConfigurationSetName=CONFIGURATION_SET,
    )
# Display an error if something goes wrong.
except ClientError as e:
    print(e.response['Error']['Message'])
else:
    print("Email sent! Message ID:"),
    print(response['MessageId'])

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

&lt;/div&gt;



&lt;p&gt;And that's it! Now you can send emails smoothly using the AWS SES service. AWS SES is an easy and flexible service to use. I hope this guide helps you and assists in your coding adventures!&lt;/p&gt;

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

</description>
      <category>aws</category>
    </item>
    <item>
      <title>My CKA Journey</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Sat, 13 May 2023 15:48:26 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/my-cka-journey-1mpi</link>
      <guid>https://forem.com/enescetinkaya/my-cka-journey-1mpi</guid>
      <description>&lt;p&gt;Greetings, everyone! &lt;/p&gt;

&lt;p&gt;Today, I want to share with you my experiences in obtaining the Certified Kubernetes Administrator (CKA) certificate. In this journey, I first watched Mumshad Mannambeth's course on Udemy, then continued with trainings on KodeKloud. Here's how I achieved success during this process:&lt;/p&gt;

&lt;p&gt;Starting with Mumshad Mannambeth's Course on Udemy&lt;/p&gt;

&lt;p&gt;When I decided to obtain the CKA certificate, I first purchased Mumshad Mannambeth's course on Udemy. This course explains Kubernetes topics in an understandable and straightforward language. The videos are full of examples and practical information. The summary section and exam tips at the end of the course were very useful for quickly reviewing before the exam.&lt;/p&gt;

&lt;p&gt;Continuing with KodeKloud&lt;/p&gt;

&lt;p&gt;After completing the course on Udemy, I started the trainings on KodeKloud. KodeKloud offers numerous training videos covering Kubernetes from basic to advanced levels. Additionally, the interactive lab environments allowed me to reinforce the theoretical knowledge I learned by applying it in practice. These labs helped me gain experience by working on real scenarios related to Kubernetes.&lt;/p&gt;

&lt;p&gt;Exam Preparation with Sample Questions&lt;/p&gt;

&lt;p&gt;While continuing my trainings on KodeKloud, I focused on solving sample questions. These questions cover situations and topics that I could encounter during the exam. By solving these sample questions, I got used to the exam format and time management. Moreover, I identified my shortcomings and determined the areas I needed to work on.&lt;/p&gt;

&lt;p&gt;Exam Day and Success&lt;/p&gt;

&lt;p&gt;After all these preparations, I felt ready when the exam day arrived. During the exam, I succeeded thanks to the knowledge and experience I gained from Udemy and KodeKloud. Finally, I obtained the CKA certificate, proving my competence in the Kubernetes field.&lt;/p&gt;

&lt;p&gt;In conclusion, I recommend Mumshad Mannambeth's course on Udemy and KodeKloud trainings for those who want to obtain the CKA certificate. With these resources and sample questions, you can establish a solid foundation in the Kubernetes field and successfully pass the exam.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t_yR9adC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6iq8375cj2q1gap66qsx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t_yR9adC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6iq8375cj2q1gap66qsx.jpg" alt="Image description" width="800" height="619"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Newsletter #3 - 16st January 2023</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Tue, 24 Jan 2023 09:59:40 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/enes-cetinkaya-newsletter-37je</link>
      <guid>https://forem.com/enescetinkaya/enes-cetinkaya-newsletter-37je</guid>
      <description>&lt;p&gt;Enes Cetinkaya Newsletter&lt;br&gt;
Newsletter #3 - 16st January 2023&lt;/p&gt;

&lt;p&gt;✔️Course&lt;/p&gt;

&lt;p&gt;📌AWS Free Cloud Project Bootcamp registration has officially opened:&lt;br&gt;
&lt;a href="https://form.jotform.com/230154251007037" rel="noopener noreferrer"&gt;https://form.jotform.com/230154251007037&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Get GitOps Certified with Argo&lt;br&gt;
Codefresh has recently launched a new certification program that offers organizations and the open-source community a fast track to learning GitOps and how you can apply it to new and existing applications and infrastructure.&lt;br&gt;
&lt;a href="https://codefresh.io/blog/get-gitops-certified-argo/" rel="noopener noreferrer"&gt;https://codefresh.io/blog/get-gitops-certified-argo/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Blog&lt;/p&gt;

&lt;p&gt;📌Get Started with Kubernetes Ultimate Hands-on Labs and Tutorials&lt;/p&gt;

&lt;p&gt;&lt;a href="https://collabnix.github.io/kubelabs/" rel="noopener noreferrer"&gt;https://collabnix.github.io/kubelabs/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Event Driven applications on Kubernetes with KEDA&lt;br&gt;
KEDA is an open source project and enables event-driven autoscaling for Kubernetes workloads.KEDA scalers can detect if a deployment should be activated or deactivated, and feed custom metrics for a specific event source.&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=RMGcaUjBk90&amp;amp;ab_channel=dotnet" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=RMGcaUjBk90&amp;amp;ab_channel=dotnet&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Deployment of Multiple Applications on Argo CD— CNCF Roadmap&lt;br&gt;
Argo CD allows you to define an Application resource, which is responsible for enabling the deployment and synchronization of application resources to a Kubernetes cluster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@buraktahtacioglu/deployment-of-multiple-applications-on-argo-cd-cncf-roadmap-552ac9704182" rel="noopener noreferrer"&gt;https://medium.com/@buraktahtacioglu/deployment-of-multiple-applications-on-argo-cd-cncf-roadmap-552ac9704182&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Tools&lt;/p&gt;

&lt;p&gt;📌DeepL&lt;br&gt;
fast, accurate, and secure translations solutions&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.deepl.com/translator" rel="noopener noreferrer"&gt;https://www.deepl.com/translator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
You opted in for Devops Weekly at &lt;a href="https://enescetinkaya.net.com" rel="noopener noreferrer"&gt;https://enescetinkaya.net.com&lt;/a&gt;&lt;br&gt;
If you have other queries you can contact the list maintainer at &lt;a href="mailto:enes@enescetinkaya.net"&gt;enes@enescetinkaya.net&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gratitude</category>
      <category>community</category>
    </item>
    <item>
      <title>Newsletter #2 - 16st January 2023</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Tue, 17 Jan 2023 09:20:44 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/newsletter-2-16st-january-2023-41b8</link>
      <guid>https://forem.com/enescetinkaya/newsletter-2-16st-january-2023-41b8</guid>
      <description>&lt;p&gt;✔️Event&lt;/p&gt;

&lt;p&gt;📌Knative ile Serverless Cloud Native Uygulama Mimarisi&lt;br&gt;
2023'ün ilk fiziksel etkinliğinde sizinle bir araya geleceğimiz için çok heyecanlıyız! &lt;br&gt;
🥳 26 Ocak Perşembe günü saat 19:00'da DenizKule'de sizi görmekten çok mutluluk duyacağız! &lt;br&gt;
🍕 Pizza ve tanışma aktivitesinin ardından konuşmacılarımızla birlikte serverless dünyasına giriş yapacağız! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://kommunity.com/cloud-native-turkiye-kubernetes/events/knative-ile-serverless-cloud-native-uygulama-mimarisi-841e73e4"&gt;https://kommunity.com/cloud-native-turkiye-kubernetes/events/knative-ile-serverless-cloud-native-uygulama-mimarisi-841e73e4&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Course&lt;/p&gt;

&lt;p&gt;📌Getting Started with Docker&lt;br&gt;
A $0 Learning Platform for All Levels - from the ground Up&lt;br&gt;
Over 500+ Highly Interactive Docker Tutorials and Guides&lt;br&gt;
Well tested on Docker Desktop and can be run on Browser (no Infrastructure required)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dockerlabs.collabnix.com/"&gt;https://dockerlabs.collabnix.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Software System Design for Beginners&lt;br&gt;
Building large-scale distributed systems like Google, Facebook, Amazon, and Twitter requires an in-depth understanding of computer science principles. This allows systems to handle millions of users concurrently despite hardware failures.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/software-system-design-for-beginners/"&gt;https://www.freecodecamp.org/news/software-system-design-for-beginners/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Distributed Tracing With Jaeger And OpenTelemetry In Kubernetes&lt;br&gt;
Introduction To Tracing With Jaeger&lt;br&gt;
Push OpenTelemetry Traces To Jaeger&lt;br&gt;
Robuta (sponsor)&lt;br&gt;
Push OpenTelemetry Traces To Jaeger (cont.)&lt;br&gt;
Explore OpenTelemetry Traces In Jaeger&lt;br&gt;
Distributed Tracing With OpenTelemetry And Jaeger&lt;br&gt;
Should You Use OpenTelemetry And Jaeger?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FK0uh-7nDSg&amp;amp;ab_channel=DevOpsToolkit"&gt;https://www.youtube.com/watch?v=FK0uh-7nDSg&amp;amp;ab_channel=DevOpsToolkit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Blog&lt;/p&gt;

&lt;p&gt;📌Top 10 AWS Architecture Blog posts of 2022&lt;br&gt;
As we wrap up 2022, we want to take a moment to shine a bright light on our readers, who spend their time exploring our posts, providing generous feedback, and asking poignant questions! Much appreciation goes to our Solutions Architects, who work tirelessly to identify and produce what our customers need.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/blogs/architecture/top-10-aws-architecture-blog-posts-of-2022/"&gt;https://aws.amazon.com/blogs/architecture/top-10-aws-architecture-blog-posts-of-2022/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Cloud native trends for 2022&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.civo.com/blog/cloud-trends-2022"&gt;https://www.civo.com/blog/cloud-trends-2022&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Kubernetes pod debugging&lt;br&gt;
This article introduces a technique that helps you with debugging running Pods in production.&lt;br&gt;
By changing labels, you can detach Pods from the Service (no traffic), and you troubleshoot them live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@danielepolencic/isolating-kubernetes-pods-for-debugging-5fe41e630e9"&gt;https://medium.com/@danielepolencic/isolating-kubernetes-pods-for-debugging-5fe41e630e9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Distributed Tracing with OpenTelemetry Collector on Kubernetes — Part 1&lt;br&gt;
In this guide, you will learn how to set up a working OpenTelemetry Collector on Kubernetes that is configured to receive data in OTLP format via HTTP or gRPC and send traces for visualization in both Jaeger and Aspecto.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/aspecto/distributed-tracing-with-opentelemetry-collector-on-kubernetes-part-1-981972703d2e"&gt;https://medium.com/aspecto/distributed-tracing-with-opentelemetry-collector-on-kubernetes-part-1-981972703d2e&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Best Practices for AWS Lambda Deployments&lt;br&gt;
A practical overview of the software elements in a lambda code base and best deployment methods ( with code samples )&lt;br&gt;
&lt;a href="https://towardsaws.com/best-practices-for-aws-lambda-deployments-2d78052402c1"&gt;https://towardsaws.com/best-practices-for-aws-lambda-deployments-2d78052402c1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Tools&lt;/p&gt;

&lt;p&gt;📌Take Beautiful Screenshots Instantly&lt;br&gt;
&lt;a href="https://xnapper.com/"&gt;https://xnapper.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌kubernetes-chatgpt-bot from robusta&lt;br&gt;
A ChatGPT bot for Kubernetes issues. Ask ChatGPT how to solve your Prometheus alerts, get pithy responses.&lt;br&gt;
No more solving alerts alone in the darkness - the internet has your back.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/robusta-dev/kubernetes-chatgpt-bot"&gt;https://github.com/robusta-dev/kubernetes-chatgpt-bot&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
You opted in for Devops Weekly at &lt;a href="https://enescetinkaya.net.com"&gt;https://enescetinkaya.net.com&lt;/a&gt;&lt;br&gt;
If you have other queries you can contact the list maintainer at &lt;a href="mailto:enes@enescetinkaya.net"&gt;enes@enescetinkaya.net&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Newsletter #1 - 9st January 2023</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Tue, 17 Jan 2023 09:05:46 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/newsletter-1-9st-january-2023-3pe0</link>
      <guid>https://forem.com/enescetinkaya/newsletter-1-9st-january-2023-3pe0</guid>
      <description>&lt;p&gt;✔️Blog&lt;/p&gt;

&lt;p&gt;📌Kubernetes Master Document&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@ranjeetjangra/kubernetes-master-document-2765d5757500"&gt;https://medium.com/@ranjeetjangra/kubernetes-master-document-2765d5757500&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✔️Tools&lt;/p&gt;

&lt;p&gt;📌One of the oft-quoted use cases for WebAssembly is plugins. Extism is a framework for implementing a plugin system in your apps, making this much easier to do. Very interesting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/extism/extism"&gt;https://github.com/extism/extism&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌A couple of new open source tools, cnquery and cnspec. The first provide a query tool atop cloud infrastructure, handy for asset inventory. The second provides testing and policy based tools on top of that inventory.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.mondoo.com/cnquery-cnspec"&gt;https://blog.mondoo.com/cnquery-cnspec&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/mondoohq/cnquery"&gt;https://github.com/mondoohq/cnquery&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/mondoohq/cnspec"&gt;https://github.com/mondoohq/cnspec&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;📌Wolfi is a new lightweight GNU software distribution, a Linux (un)distribution intended to solve supply chain security problems in container environments.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/chainguard-dev/wolfi-os"&gt;https://github.com/chainguard-dev/wolfi-os&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.chainguard.dev/unchained/introducing-wolfi-the-first-linux-un-distro"&gt;https://www.chainguard.dev/unchained/introducing-wolfi-the-first-linux-un-distro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&lt;br&gt;
You opted in for Devops Weekly at &lt;a href="https://enescetinkaya.net.com"&gt;https://enescetinkaya.net.com&lt;/a&gt;&lt;br&gt;
If you have other queries you can contact the list maintainer at &lt;a href="mailto:enes@enescetinkaya.net"&gt;enes@enescetinkaya.net&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is the lambda@edge service?</title>
      <dc:creator>Enes Çetinkaya</dc:creator>
      <pubDate>Sun, 29 May 2022 16:54:10 +0000</pubDate>
      <link>https://forem.com/enescetinkaya/what-is-the-lambdaedge-service-563i</link>
      <guid>https://forem.com/enescetinkaya/what-is-the-lambdaedge-service-563i</guid>
      <description>&lt;p&gt;What is the lambda? &lt;br&gt;
Lambda is a service where you can run your application without a server. You only pay for the processing time you use.&lt;/p&gt;

&lt;p&gt;What is the lambda@edge service?&lt;/p&gt;

&lt;p&gt;Lambda@Edge is a feature of Amazon CloudFront that allows you to run your application closer to end-users, improve performance and reduce latency.&lt;br&gt;
With Lambda@Edge you don't have to manage regions in multiple locations around the world and incur high costs.&lt;/p&gt;

&lt;p&gt;What is the difference between lambda vs lambda@edge?&lt;/p&gt;

&lt;p&gt;The major difference is in the API Gateway and the Lambda are regional service. Lambda@Edge is a global service. Lambda@Edge allows you to execute the logic across multiple location. This is the main difference between Lambda and Lambda@Edge, remaining all the things are mostly similar.. The main difference between Lambda and Lambda@Edge is everything else is similar.&lt;/p&gt;

&lt;p&gt;The example projects &lt;br&gt;
In this project, we will perform image resizing with &lt;a href="mailto:lambda@edge"&gt;lambda@edge&lt;/a&gt;. if you want to use the lambda@edge service you have to use the north Virginia service. Other regions unfortunately do not support it.&lt;/p&gt;

&lt;p&gt;Create an S3 bucket and set it to this policy.&lt;br&gt;
&lt;code&gt;{&lt;br&gt;
    "Version": "2012-10-17",&lt;br&gt;
    "Statement": [&lt;br&gt;
        {&lt;br&gt;
            "Sid": "PublicRead",&lt;br&gt;
            "Effect": "Allow",&lt;br&gt;
            "Principal": "*",&lt;br&gt;
            "Action": [&lt;br&gt;
                "s3:GetObject",&lt;br&gt;
                "s3:GetObjectVersion"&lt;br&gt;
            ],&lt;br&gt;
            "Resource": "arn:aws:s3:::example-lambda-edge/*"&lt;br&gt;
        }&lt;br&gt;
    ]&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We import the relevant template to the cloudformation service. I prefer to import with s3 link. You can find the relevant link in the github link in the resources section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SAN5ybL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btutgvlsegin1uwpevxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SAN5ybL9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/btutgvlsegin1uwpevxj.png" alt="Image description" width="800" height="555"&gt;&lt;/a&gt;&lt;br&gt;
We're going to the next step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IqamHvhI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0vv7jyouu0spo2yge6gh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IqamHvhI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0vv7jyouu0spo2yge6gh.png" alt="Image description" width="800" height="712"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we change only 3 options. Pay attention to the S3 bucket name.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YZPNlCTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2ghax4zz63lv4lyblup.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YZPNlCTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p2ghax4zz63lv4lyblup.png" alt="Image description" width="800" height="1080"&gt;&lt;/a&gt;&lt;br&gt;
We're going to the next step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HeplipIM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgmy655rr227mfl5p4k7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HeplipIM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wgmy655rr227mfl5p4k7.png" alt="Image description" width="800" height="194"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the Next button on the next pages. We don't need to take any action.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--11WhTOD8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqimooy1xi7rimcp17zy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--11WhTOD8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mqimooy1xi7rimcp17zy.png" alt="Image description" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RdglpX1z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/deffvepe8teehgm9rhdx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RdglpX1z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/deffvepe8teehgm9rhdx.png" alt="Image description" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We import successful &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XEbZX8-X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v6v3jk3y19jrsf0z1ywt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XEbZX8-X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v6v3jk3y19jrsf0z1ywt.png" alt="Image description" width="800" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uY-tu2eu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g57dpmaxjyftug1t5m1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uY-tu2eu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g57dpmaxjyftug1t5m1k.png" alt="Image description" width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gua8eVOe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3eos4m5xqmgf5yn1yen.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gua8eVOe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3eos4m5xqmgf5yn1yen.png" alt="Image description" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we deploy to the lambda@edge service&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hZqoNk3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbruqnpoxgf5o2tt2c30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hZqoNk3t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wbruqnpoxgf5o2tt2c30.png" alt="Image description" width="800" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We deploy on the first lambda@edge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LJ5-EkAy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jex25kj3l6gpjqhi5bes.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LJ5-EkAy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jex25kj3l6gpjqhi5bes.png" alt="Image description" width="800" height="577"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We deploy 2 services on lambda@edge.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xMlwcNrT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgq0q9t4gifjwm3o6ar1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xMlwcNrT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rgq0q9t4gifjwm3o6ar1.png" alt="Image description" width="800" height="320"&gt;&lt;/a&gt;&lt;br&gt;
Our deployment is successful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uh5wVAKQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfdeh8ruahoc9m6rihe6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uh5wVAKQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bfdeh8ruahoc9m6rihe6.png" alt="Image description" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then we test it. You can reach it from the link to try more different modules.&lt;/p&gt;

&lt;p&gt;References&lt;br&gt;
&lt;a href="https://aws.amazon.com/lambda/edge/"&gt;https://aws.amazon.com/lambda/edge/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/"&gt;https://aws.amazon.com/blogs/networking-and-content-delivery/resizing-images-with-amazon-cloudfront-lambdaedge-aws-cdn-blog/&lt;/a&gt;&lt;br&gt;
&lt;a href="http://www.thumbor.org/"&gt;http://www.thumbor.org/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=uVk-ffHeV7c&amp;amp;ab_channel=KoffeeWithKode"&gt;https://www.youtube.com/watch?v=uVk-ffHeV7c&amp;amp;ab_channel=KoffeeWithKode&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/template.html"&gt;https://docs.aws.amazon.com/solutions/latest/serverless-image-handler/template.html&lt;/a&gt;&lt;/p&gt;

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