<?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: JJ Dev</title>
    <description>The latest articles on DEV Community by JJ Dev (@jj_dev).</description>
    <link>https://dev.to/jj_dev</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%2F1815169%2F943d98e7-37c7-48b1-ac98-2127953268e8.jpg</url>
      <title>DEV Community: JJ Dev</title>
      <link>https://dev.to/jj_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jj_dev"/>
    <language>en</language>
    <item>
      <title>Run DeepSeek R1 with Ollama on Windows - 100% Local Solution</title>
      <dc:creator>JJ Dev</dc:creator>
      <pubDate>Fri, 31 Jan 2025 08:24:56 +0000</pubDate>
      <link>https://dev.to/jj_dev/run-deepseek-r1-with-ollama-on-windows-100-local-solution-51cf</link>
      <guid>https://dev.to/jj_dev/run-deepseek-r1-with-ollama-on-windows-100-local-solution-51cf</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;On January 20, 2025, DeepSeek released its first reasoning model, DeepSeek-R1, which demonstrates performance comparable to OpenAI’s o1 model in mathematics, coding, and reasoning tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Its open-source nature allows developers to freely use, modify, and commercialize it, which has garnered significant attention within the AI community. Additionally, the model achieves high efficiency at a lower cost and also provides &lt;strong&gt;distillation technology&lt;/strong&gt;, enabling the transfer of knowledge from larger models to smaller ones, thereby reducing computational resource requirements.&lt;/p&gt;

&lt;h2&gt;
  
  
  DeepSeek-R1 Local Deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Ollama
&lt;/h3&gt;

&lt;p&gt;Download the Ollama software: Download Ollama, double-click to install.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ksab0w9bou55omyh6gm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ksab0w9bou55omyh6gm.png" alt="Image description" width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can use the following command to check if Ollama is installed successfully:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Run the model
&lt;/h3&gt;

&lt;p&gt;You can check the &lt;a href="https://ollama.com/library/deepseek-r1:1.5b" rel="noopener noreferrer"&gt;official website&lt;/a&gt; for the model and find the commands&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faa5cco6qqkmdvaunpxhp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faa5cco6qqkmdvaunpxhp.png" alt="Image description" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A model with &lt;strong&gt;1.5B&lt;/strong&gt; (1.5 billion) parameters is considered a relatively smaller-scale LLM compared to larger models like 7B, 13B, or 65B parameters, which require significantly more computational resources.&lt;/p&gt;

&lt;p&gt;Using a 1.5B parameter model is often a trade-off between efficiency and performance, making it more suitable for environments with limited hardware while still maintaining reasonable accuracy and capabilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ollama run deepseek-r1:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Now, we can try sending a message to the DeepSeek-local model.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; give me code about Python Program to Add Two Numbers&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3. Result
&lt;/h3&gt;

&lt;p&gt;When using DeepSeek-R1, the model generates not only answers but also intermediate steps that outline its logical reasoning.&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;think&amp;gt;
Okay, the user asked for a Python program to add two numbers. I need to provide a clear and simple solution.

First, I'll start by defining two variables, a and b. Then, I'll prompt the user to input their values using the
input() function.

I should consider using float() to handle decimal inputs because some people might enter numbers with decimals.
That way, the addition is precise.

Next, I'll write the sum by adding a and b together and store it in a variable called total.

After calculating the sum, I'll display both original numbers and their sum. Using print() will make this easy for
the user to see.

I should also add an example so the user can test their own numbers. That way, they can see how the program works
when they run it.
&amp;lt;/think&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's a simple Python program that adds two numbers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Define the two numbers
&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter first number: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;float&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter second number: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Calculate the sum
&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;

&lt;span class="c1"&gt;# Display the result
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The sum of &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; and &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Define the numbers&lt;/strong&gt;: The program first reads two numbers from the user using &lt;code&gt;input()&lt;/code&gt; and converts them to
floating-point numbers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Calculate the sum&lt;/strong&gt;: It adds the two numbers together and stores the result in a variable called &lt;code&gt;total&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Display the result&lt;/strong&gt;: Finally, it prints out the sum with a formatted string that includes both original
numbers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can run this program by copying the code into a Python file and executing it using a text editor or the Python&lt;br&gt;
command line.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Evaluation
&lt;/h3&gt;

&lt;p&gt;The code generation is correct, with a total response time of 26 seconds.&lt;/p&gt;

&lt;h4&gt;
  
  
  CPU
&lt;/h4&gt;

&lt;p&gt;Model: AMD Ryzen 7 3700X 8-Core Processor&lt;br&gt;
Cores: 8 cores / 16 threads&lt;br&gt;
Base Clock: 3.59 GHz&lt;/p&gt;

&lt;h4&gt;
  
  
  Memory
&lt;/h4&gt;

&lt;p&gt;Capacity: 16GB&lt;/p&gt;

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

&lt;h3&gt;
  
  
  5. Stop the model
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# List running models
ollama ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Stop a running model
ollama stop deepseek-r1:1.5b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;❤️‍🔥 &lt;strong&gt;Thank you for reading my article.&lt;/strong&gt; 🎉🎉&lt;/p&gt;

</description>
      <category>deepseek</category>
      <category>ai</category>
    </item>
    <item>
      <title>How do I troubleshoot issues about Amazon MSK cluster?</title>
      <dc:creator>JJ Dev</dc:creator>
      <pubDate>Wed, 11 Sep 2024 15:00:35 +0000</pubDate>
      <link>https://dev.to/jj_dev/how-do-i-troubleshoot-issues-about-amazon-msk-cluster-3jk7</link>
      <guid>https://dev.to/jj_dev/how-do-i-troubleshoot-issues-about-amazon-msk-cluster-3jk7</guid>
      <description>&lt;h2&gt;
  
  
  1. Create Topic use SASL/SCRAM
&lt;/h2&gt;

&lt;p&gt;When I ran this command to create a topic. These are some errors below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/kafka-topics.sh &lt;span class="nt"&gt;--create&lt;/span&gt; &lt;span class="nt"&gt;--bootstrap-server&lt;/span&gt; &amp;lt;endpoint&amp;gt; &lt;span class="nt"&gt;--topic&lt;/span&gt; &amp;lt;topic_name&amp;gt; &lt;span class="nt"&gt;--command-config&lt;/span&gt; client.properties
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;[java.lang.OutOfMemoryError Java heap space]&lt;/em&gt;&lt;br&gt;
&lt;em&gt;[ERROR org.apache.kafka.common.errors.TimeoutException: The AdminClient thread has exited. Call: createTopics]&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Soulation&lt;/strong&gt;：&lt;br&gt;
The error &lt;code&gt;OutOfMemoryError&lt;/code&gt; occurred, which is a common issue when connecting to Kafka using SASL_SSL. This is not actually related to memory, but rather because the client was not configured to connect using SSL.&lt;br&gt;
You should configure your admin client with &lt;code&gt;--command-config &amp;lt;ssl.conf&amp;gt;&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Public Access by SASL/SCRAM
&lt;/h2&gt;

&lt;p&gt;If you are using the SASL/SCRAM or mTLS access-control methods, and want to &lt;strong&gt;enable public access&lt;/strong&gt; msk. You will show the error.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6bzr463to660edry9v2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm6bzr463to660edry9v2.png" alt="Image description" width="800" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Soulation&lt;/strong&gt;：&lt;br&gt;
After you set the Apache Kafka ACLs for your cluster, update the cluster's configuration.&lt;br&gt;
Add Cluster configuration &lt;code&gt;allow.everyone.if.no.acl.found=false&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljroikcsawk39mke3n71.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fljroikcsawk39mke3n71.png" alt="Image description" width="800" height="238"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Consumers ACL rules
&lt;/h2&gt;

&lt;p&gt;When you config &lt;code&gt;allow.everyone.if.no.acl.found=false&lt;/code&gt;, must be set for specific consumer groups, and &lt;code&gt;--group '*'&lt;/code&gt; cannot be used.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;[org.apache.kafka.common.errors.GroupAuthorizationException: Not authorized to access group: console-consumer-1736]&lt;/em&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8t5entwt35i0r63eequ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl8t5entwt35i0r63eequ.png" alt="Image description" width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Soulation&lt;/strong&gt;：&lt;br&gt;
Now, explicitly specify that &lt;code&gt;user:user_name&lt;/code&gt; can read the &lt;code&gt;topic:demo-topic&lt;/code&gt; and use &lt;code&gt;group:test&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/kafka-acls.sh &lt;span class="nt"&gt;--command-config&lt;/span&gt; client_sasl.properties &lt;span class="nt"&gt;--bootstrap-server&lt;/span&gt; &amp;lt;endpoint&amp;gt; &lt;span class="nt"&gt;--add&lt;/span&gt; &lt;span class="nt"&gt;--allow-principal&lt;/span&gt; &lt;span class="s2"&gt;"User:user_name"&lt;/span&gt; &lt;span class="nt"&gt;--operation&lt;/span&gt; Read &lt;span class="nt"&gt;--group&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;test&lt;/span&gt; &lt;span class="nt"&gt;--topic&lt;/span&gt; demo-topic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>aws</category>
      <category>msk</category>
      <category>kafka</category>
    </item>
    <item>
      <title>Use EC2 user data script run a flask app🌐</title>
      <dc:creator>JJ Dev</dc:creator>
      <pubDate>Mon, 19 Aug 2024 02:16:59 +0000</pubDate>
      <link>https://dev.to/jj_dev/use-user-data-script-run-a-flask-app-im3</link>
      <guid>https://dev.to/jj_dev/use-user-data-script-run-a-flask-app-im3</guid>
      <description>&lt;h2&gt;
  
  
  Creating Employee Directory Application automatically with AWS
&lt;/h2&gt;

&lt;p&gt;🔥You can create an EC2 Amazon Linux 2023 user data script&lt;br&gt;
It will run script after you start EC2.&lt;/p&gt;
&lt;h3&gt;
  
  
  Launch EC2 instance
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;select the Amazon Machine Image&lt;br&gt;
Amazon Machine Images can come from AWS, like this Amazon Linux 2023 AMI, for example. This is the one that we will be using, but you can also browse more AMIs that would include AMIs coming from the AWS Marketplace.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxctvxrne6iqasdxanar4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxctvxrne6iqasdxanar4.png" alt="Image description" width="800" height="467"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;just a lab, you can choose &lt;strong&gt;free tier eligible&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwxsh3m195r4zp0rnwfp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwxsh3m195r4zp0rnwfp.png" alt="Image description" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, we have to decide if we want to configure a key pair. &lt;br&gt;
We are going to select that we are going to proceed without a key pair for this, and the reason for that is because I don't intend to SSH into this instance to connect to it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Network settings &lt;br&gt;
&lt;code&gt;Edit&lt;/code&gt; Keep the &lt;strong&gt;default&lt;/strong&gt; VPC selection&lt;br&gt;
Subnet: Choose the first subnet in the dropdown list&lt;br&gt;
Auto-assign Public IP: &lt;strong&gt;Enable&lt;/strong&gt;🖱️&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcggu8qhcjv18mytnigee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcggu8qhcjv18mytnigee.png" alt="Image description" width="800" height="456"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl41qkbw0uwceo58tew1l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl41qkbw0uwceo58tew1l.png" alt="Image description" width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then expanding the advanced details section&lt;br&gt;
under &lt;strong&gt;IAM&lt;/strong&gt; instance profile choose &lt;strong&gt;S3DynamoDBFullAccessRole&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01bmtryuxga20xv0j2py.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01bmtryuxga20xv0j2py.png" alt="Image description" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;pasting &lt;strong&gt;user data&lt;/strong&gt; below (change &lt;code&gt;AWS_DEFAULT_REGION&lt;/code&gt;)&lt;br&gt;
click Launch instances&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevtng58awhst98y1zkqu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fevtng58awhst98y1zkqu.png" alt="Image description" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;For Amazon Linux 2023&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash -ex&lt;/span&gt;
wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/DEV-AWS-MO-GCNv2/FlaskApp.zip
unzip FlaskApp.zip
&lt;span class="nb"&gt;cd &lt;/span&gt;FlaskApp/
yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;python3-pip
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;stress
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PHOTOS_BUCKET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SUB_PHOTOS_BUCKET&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_DEFAULT_REGION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ap-northeast-1
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DYNAMO_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;on
&lt;span class="nv"&gt;FLASK_APP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;application.py /usr/local/bin/flask run &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;80 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;For Amazon Linux 2&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash -ex&lt;/span&gt;
wget https://aws-tc-largeobjects.s3-us-west-2.amazonaws.com/DEV-AWS-MO-GCNv2/FlaskApp.zip
unzip FlaskApp.zip
&lt;span class="nb"&gt;cd &lt;/span&gt;FlaskApp/
yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;python3 mysql
pip3 &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
amazon-linux-extras &lt;span class="nb"&gt;install &lt;/span&gt;epel
yum &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;stress
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PHOTOS_BUCKET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;SUB_PHOTOS_BUCKET&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;AWS_DEFAULT_REGION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&amp;lt;INSERT REGION HERE&amp;gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;DYNAMO_MODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;on
&lt;span class="nv"&gt;FLASK_APP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;application.py /usr/local/bin/flask run &lt;span class="nt"&gt;--host&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;0.0.0.0 &lt;span class="nt"&gt;--port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  open address🔚
&lt;/h3&gt;

&lt;p&gt;your Employee Directory Application running~&lt;br&gt;
when you start the instance, the script will execute.&lt;/p&gt;

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

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

</description>
      <category>aws</category>
      <category>ec2</category>
      <category>linux</category>
    </item>
    <item>
      <title>AWS Cloud Quest🎮: EFS mount on EC2</title>
      <dc:creator>JJ Dev</dc:creator>
      <pubDate>Wed, 24 Jul 2024 16:44:04 +0000</pubDate>
      <link>https://dev.to/jj_dev/aws-cloud-quest-efs-mount-on-ec2-2lm6</link>
      <guid>https://dev.to/jj_dev/aws-cloud-quest-efs-mount-on-ec2-2lm6</guid>
      <description>&lt;h2&gt;
  
  
  Topic: File Systems in the Cloud
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🚩issue: Web servers in different Availability Zones need to access the same file data.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5w9prik418wjk0hppwz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5w9prik418wjk0hppwz.png" alt="EFS mount on EC2" width="800" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1. Create security groups for EFS✨
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Create security groups for EFS → Allow web servers to access EFS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security Group：Acts as a virtual firewall, used to control inbound and outbound traffic for EC2 instances. Can be used within an existing VPC.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;In the lab, choose VPC of &lt;code&gt;PetModelsWebServer&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set the &lt;strong&gt;NFS&lt;/strong&gt; type in the Inbound Rule of the Security Group of EFS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose the Security Group of &lt;code&gt;PetModelsWebServer&lt;/code&gt; &lt;strong&gt;as source&lt;/strong&gt;&lt;br&gt;
Only resources belonging to the Web server Security Group are allowed to access EFS&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;By selecting a security group as the incoming source, any EC2 instances linked to the security group you select will have NFS client access to the file system.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2. Create an EFS✨
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create File System on the EFS security group&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set &lt;strong&gt;network access&lt;/strong&gt; to allow &lt;strong&gt;mount Target&lt;/strong&gt;&lt;br&gt;
    - Az-1 to EFS security groups&lt;br&gt;
    - Az-2 to EFS security groups&lt;br&gt;
    - Az-3 to EFS security groups&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click &lt;code&gt;Attach&lt;/code&gt; button to copy mount command&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 3. EC2 mount NFS✨
&lt;/h3&gt;

&lt;p&gt;Ok! Now, all environments are ready.&lt;br&gt;
You will mount a /data folder on EC2.&lt;br&gt;
The following are the command for mounting a NFS in Linux&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# download aws efs utils&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;yum &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; Amazon-efs-utils
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# create folder&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# paste from "Attach" button&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;mount &lt;span class="nt"&gt;-t&lt;/span&gt; efs &lt;span class="nt"&gt;-o&lt;/span&gt; tls fs-id:/ data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# write text in file&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;bash &lt;span class="nt"&gt;-c&lt;/span&gt; “cat &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; efs-1-setup.log”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# cat -&amp;gt; output "efs-1-setup.log"&lt;/span&gt;

efs-1 mounted &lt;span class="k"&gt;in &lt;/span&gt;site A

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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;efs-1-setup.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 4. Repeat Step 3. for each EC2✨
&lt;/h3&gt;

&lt;p&gt;After setting, you can read and write files from other EC2s.&lt;br&gt;
All changes will be synchronized with EFS.&lt;/p&gt;

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