<?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: Shivappa</title>
    <description>The latest articles on DEV Community by Shivappa (@shivappa).</description>
    <link>https://dev.to/shivappa</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%2F604618%2F30d1680e-76aa-463f-a015-ce7abcd6bb42.jpeg</url>
      <title>DEV Community: Shivappa</title>
      <link>https://dev.to/shivappa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shivappa"/>
    <language>en</language>
    <item>
      <title>(EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning</title>
      <dc:creator>Shivappa</dc:creator>
      <pubDate>Thu, 16 Apr 2026 06:27:32 +0000</pubDate>
      <link>https://dev.to/shivappa/eda-part-1-eda-exploratory-data-analysis-explained-with-real-life-why-looking-at-your-data-is-dmk</link>
      <guid>https://dev.to/shivappa/eda-part-1-eda-exploratory-data-analysis-explained-with-real-life-why-looking-at-your-data-is-dmk</guid>
      <description>&lt;p&gt;&lt;em&gt;Part 1 of 5 — Beginner friendly&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let me tell you a story about a Detective.&lt;/p&gt;

&lt;p&gt;Sherlock Holmes never walks into a crime scene and starts guessing. He doesn't say "it was probably the butler" and call it done. He looks. He observes. He notices the mud on the shoes, the cigarette stub, the clock stopped at 11:47. Only after he's observed everything does he form a theory.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;EDA is what Sherlock does before naming a suspect&lt;/strong&gt;. Your dataset is the crime scene. Your ML model is the theory. You don't build the theory until you've studied the scene thoroughly.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Most beginners skip this step&lt;/strong&gt;. They load data, run a model, get 90% accuracy, feel great, and ship it. Three weeks later the model breaks in production and nobody knows why.&lt;/p&gt;

&lt;p&gt;That failure almost always traces back to one thing: &lt;strong&gt;they never looked at their data properly.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  What is EDA?
&lt;/h2&gt;

&lt;p&gt;EDA stands for &lt;strong&gt;Exploratory Data Analysis&lt;/strong&gt;. &lt;code&gt;It's the process of examining, understanding, and summarising a dataset before you train any model&lt;/code&gt;. Think of it as your first conversation with the data — you're not asking it to predict anything yet. You're just getting to know it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The real-world example:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Imagine a doctor who skips the examination and jumps straight to prescribing medicine. They don't check your blood pressure, don't run tests, don't ask about symptoms. Dangerous, right? EDA is the medical examination. Your model is the prescription. Don't prescribe before you examine.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;The term was coined by statistician John Tukey in 1977. His insight was simple but radical: stop assuming things about data. Let the data tell you its own story first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The flow looks like this:&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%2Fioedlhsmrkt8qnw7fhw4.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%2Fioedlhsmrkt8qnw7fhw4.png" alt="EDA Diagram" width="800" height="211"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The EDA mindset
&lt;/h2&gt;

&lt;p&gt;Before writing a single line of code, ask these 4 questions about any new dataset:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;What is this Data ?&lt;/strong&gt;
What does each column mean in real life ? &lt;code&gt;Don't assume - read the data dictionary.&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What is the quality ?&lt;/strong&gt;  Are there missing values? Duplicates? Wrong data types? Values that look like errors?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What are the distributions&lt;/strong&gt;  What does each feature look like? Skewed? Balanced? Are there obvious outliers?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What are the relationships&lt;/strong&gt;  Which features are correlated with each other? Which features predict the target?&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Three pillars of EDA
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Summary Statistics:&lt;/strong&gt; Getting the &lt;code&gt;vitals&lt;/code&gt; (Mean, Median, Mode, Standard Deviation). If the terms are new for you don't worry, you will learn more on this in next parts of this series.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Visualization:&lt;/strong&gt; Turning rows of numbers into charts (Histograms, Scatter plots, Box plots) to see what the human eye misses in a spreadsheet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Cleaning:&lt;/strong&gt; Identifying missing values, duplicate entries, or &lt;code&gt;garbage&lt;/code&gt; data that could skew your results.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Why is EDA Crucial for Machine Learning?
&lt;/h2&gt;

&lt;p&gt;You’ve probably heard the phrase &lt;code&gt;Garbage In, Garbage Out.&lt;/code&gt; This is the primary reason we do EDA. Even the most sophisticated algorithm will fail if the data it learns from is flawed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A. Ensuring Data Quality&lt;/strong&gt;&lt;br&gt;
EDA helps you find the &lt;code&gt;weirdness.&lt;/code&gt; Is there a person in your dataset who is 250 years old? Is there a house with 0 bedrooms? EDA catches these anomalies before they confuse your model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B. Feature Selection &amp;amp; Engineering&lt;/strong&gt;&lt;br&gt;
By looking at correlations, you can see which variables actually matter. If you’re predicting house prices and find that the color of the front door has zero correlation with the price, you can drop that &lt;code&gt;noise&lt;/code&gt; and make your model leaner and faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C. Testing Assumptions&lt;/strong&gt;&lt;br&gt;
Many ML models (like Linear Regression) rely on specific assumptions—for example, that your data follows a Normal Distribution. EDA allows you to check these assumptions. If your data is heavily skewed, you’ll know you need to transform it first.&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%2Fopn498y4xvvmll1djvcn.jpeg" 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%2Fopn498y4xvvmll1djvcn.jpeg" alt="Skew Image" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;D. Building &lt;code&gt;Intuition&lt;/code&gt;&lt;/strong&gt;&lt;br&gt;
As a data scientist, you need to be the bridge between the raw data and the business stakeholders. EDA gives you the &lt;code&gt;story&lt;/code&gt; behind the numbers, allowing you to explain why a model might be making certain predictions.&lt;/p&gt;




&lt;h2&gt;
  
  
  The &lt;code&gt;Cost&lt;/code&gt; of Skipping EDA
&lt;/h2&gt;

&lt;p&gt;Skipping this step is a recipe for disaster. Without EDA:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Biased Models:&lt;/strong&gt; You might train a model on data that isn't representative of the real world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Overfitting:&lt;/strong&gt; You might "learn" from outliers that are actually just data entry errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Wasted Time:&lt;/strong&gt; You’ll spend weeks tuning a model only to realize the data was missing the most important variable all along.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Pro Tip&lt;/em&gt;: EDA isn’t a one-time chore; it’s an iterative process. You’ll find yourself coming back to it even after you’ve started building your models.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  The dataset we'll use throughout this series
&lt;/h3&gt;

&lt;p&gt;We'll use the &lt;strong&gt;Titanic dataset from Kaggle&lt;/strong&gt; — one of the most famous datasets in data science. It's real historical data about passengers and crew who were aboard the RMS Titanic, which sank on April 15, 1912 resulting in the death of 1502 out of 2,224 passengers and crew — a widely used sample provided by Kaggle for the competition.&lt;/p&gt;

&lt;p&gt;Here's what makes it perfect for EDA: it has missing values, mixed data types, categorical and numeric features, and a clear survival target to predict.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;Part 2&lt;/strong&gt;, we download the Titanic dataset from Kaggle and run our first 5-line EDA check. No complicated setup — you can run it directly in a free Kaggle notebook or google collab.&lt;/p&gt;

&lt;p&gt;See you in Part 2! 👋&lt;/p&gt;

</description>
      <category>machinelearning</category>
      <category>ai</category>
      <category>titanic</category>
      <category>pandas</category>
    </item>
    <item>
      <title>Access Key Vault secret from Web Application</title>
      <dc:creator>Shivappa</dc:creator>
      <pubDate>Sun, 09 May 2021 08:58:02 +0000</pubDate>
      <link>https://dev.to/shivappa/access-key-vault-secret-from-web-application-4nem</link>
      <guid>https://dev.to/shivappa/access-key-vault-secret-from-web-application-4nem</guid>
      <description>&lt;p&gt;In the previous parts we have learnt how to &lt;a href="https://dev.to/shivappa/understand-and-use-azure-key-vault-easily-most-secured-secrets-storage-19n0"&gt;create Azure Key Vault&lt;/a&gt; and how to add the &lt;a href="(https://dev.to/shivappa/azure-key-vault-authentication-49m3)"&gt;principal in Azure Key Vault&lt;/a&gt; by whom it must be accessed.&lt;br&gt;
In this part, we will learn how we can use secrets stored in Azure Key Vault in our Web Application.&lt;/p&gt;

&lt;p&gt;Let's write a simple flask app to fetch the secrets from Key Vault.&lt;br&gt;
Create a folder called &lt;em&gt;KeyVaultDemo&lt;/em&gt; on your computer and open it in VS Code.&lt;br&gt;
Create a new file &lt;em&gt;requirements.txt&lt;/em&gt; which contains the packages required.&lt;br&gt;
Add below contents to it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flask
azure-keyvault-secrets
azure-identity

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

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;azure-keyvault-secrets&lt;/em&gt;: It is a client library in python to access the secrets stored in Azure Key Vault. More information on this package can be found &lt;a href="https://pypi.org/project/azure-keyvault-secrets/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;em&gt;azure-identity&lt;/em&gt;: It is an authentication library that provides different credential classes with which one can authenticate with the Active Directory.&lt;br&gt;
To learn more on this package please check &lt;a href="https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/identity/azure-identity" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We have added the packages required for our purpose.&lt;br&gt;
Let's write actual code in which we can access the Key Vault secrets.&lt;br&gt;
Create &lt;strong&gt;app.py&lt;/strong&gt; file and dump the below contents to it.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.identity&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;DefaultAzureCredential&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;azure.keyvault.secrets&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;SecretClient&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Save KEY VAULT URL in the web app application settings
&lt;/span&gt;&lt;span class="n"&gt;AZUE_KEY_VAULT_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;AZUE_KEY_VAULT_URL&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# AZUE_KEY_VAULT_URL = "https://keyvaultdemoapp.vault.azure.net/"
&lt;/span&gt;
&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/secret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Fetch secret from Azure Key Vault

    Returns:
        str: Response message to be displayed.
    &lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="c1"&gt;# Use Default credential. This has fallback authentication mechanism
&lt;/span&gt;    &lt;span class="n"&gt;credential&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;DefaultAzureCredential&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="c1"&gt;# Authenticate to Azure Key Vault.
&lt;/span&gt;    &lt;span class="n"&gt;secret_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;SecretClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;vault_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;AZUE_KEY_VAULT_URL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Fetch secrets created in Azure Key Vault
&lt;/span&gt;    &lt;span class="n"&gt;secrets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;secret_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_secret&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;firstsecret&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;
    &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;secrets&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;
    &lt;span class="c1"&gt;# Show secret name and it's value in the response
&lt;/span&gt;    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&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;secret &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; value is &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Let's understand few lines from the above code snippet.&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;from azure.identity import DefaultAzureCredential&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;Azure identity helps to authenticate from the credentials we choose. Here we selected credential type as &lt;strong&gt;DefaultAzureCredential&lt;/strong&gt;.&lt;br&gt;
This is the most used credential type in most cloud applications because of the fallback mechanism supported.&lt;br&gt;
First, it will try to check for &lt;strong&gt;Environment&lt;/strong&gt; variables saved for the web application. If not then it will try to check in this order of authentication --&amp;gt; &lt;strong&gt;Managed Identity&lt;/strong&gt; --&amp;gt; &lt;strong&gt;Visual Studio Code&lt;/strong&gt; --&amp;gt; &lt;strong&gt;Azure Cli&lt;/strong&gt; --&amp;gt; &lt;strong&gt;Interactive&lt;/strong&gt;&lt;br&gt;
Below Environment variables are required for Identity and must be added in Application settings in the web app deployed.&lt;/p&gt;

&lt;p&gt;AZURE_CLIENT_ID --&amp;gt; This is the ID of an Azure Active Directory application&lt;br&gt;
AZURE_CLIENT_SECRET --&amp;gt; This is the ID of application secrets created in Azure Active Directory.&lt;br&gt;
AZURE_TENANT_ID --&amp;gt; This is the ID of the Active Directory Tenant.&lt;/p&gt;

&lt;p&gt;To learn more on each method please look at the client library &lt;a href="https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/identity/azure-identity" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our code is ready and we will deploy it to Azure and access the application.&lt;br&gt;
&lt;em&gt;Right&lt;/em&gt; click on Explorer area in VS Code and click on &lt;strong&gt;Deploy to Web App...&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%2Fcsd8x62ajj339150fms6.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%2Fcsd8x62ajj339150fms6.png" alt="VSCode-Deploy-1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your subscription.&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Create new Web App..&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Give a name to the web app. It should be &lt;em&gt;Globally Unique name&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Runtime stack&lt;/em&gt; as &lt;em&gt;Python 3.8&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;pricing tier&lt;/em&gt; as &lt;em&gt;Free&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It takes some time to deploy and you will see a successfully deployed message on the right bottom corner of VS Code.&lt;br&gt;
Go to the Azure portal and go to the app created now and click on &lt;em&gt;browse&lt;/em&gt; from the &lt;em&gt;overview&lt;/em&gt; page.&lt;br&gt;
It shows an error because we have not added the app environment in the app settings that we are accessing and using inside our flask app.&lt;/p&gt;

&lt;p&gt;Let's add them to the Azure web app.&lt;br&gt;
Go to Web App you just created.&lt;br&gt;
Click on &lt;strong&gt;Configuration&lt;/strong&gt; section under &lt;strong&gt;Settings&lt;/strong&gt;.&lt;br&gt;
Click on &lt;em&gt;New application setting&lt;/em&gt;.&lt;br&gt;
Add below Key value pair when prompted for entries.&lt;/p&gt;

&lt;p&gt;Key : AZURE_CLIENT_ID&lt;br&gt;
Value: Value which you copied when we created the authentication settings in the previous &lt;a href="https://dev.to/shivappa/azure-key-vault-authentication-49m3"&gt;part&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Repeat the above operation for the below Key addition.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AZURE_CLIENT_SECRET : corresponding value&lt;/li&gt;
&lt;li&gt;AZURE_TENANT_ID : corresponding value&lt;/li&gt;
&lt;li&gt;AZURE_KEY_VAULT_URL : This is the URL of the key vault created in this &lt;a href="https://dev.to/shivappa/understand-and-use-azure-key-vault-easily-most-secured-secrets-storage-19n0"&gt;part&lt;/a&gt;. Go to &lt;em&gt;Overview&lt;/em&gt; and on the right side you will see the keyvault URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you add all the entries, &lt;strong&gt;Save&lt;/strong&gt; the settings.&lt;br&gt;
The final application settings look like this web app configuration.&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%2F9b21ubq0w1lewm76p9cu.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%2F9b21ubq0w1lewm76p9cu.png" alt="KeyVault-AppService-AppSettings-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now browse your application and see the secret name and secret value stored in Key Vault are displayed.&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%2Foloobgok7oxwylqueegv.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%2Foloobgok7oxwylqueegv.png" alt="WebAppBrowse"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have learned how to use Azure Key Vault in your web application for storing the secrets securely.&lt;/p&gt;

&lt;p&gt;To learn more on Azure Key Vault please refer to Microsoft documentation &lt;a href="https://docs.microsoft.com/en-us/azure/key-vault/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That's all!&lt;br&gt;
Thank you for reading my blog.&lt;br&gt;
Stay tuned to read more blogs on Azure services.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>keyvault</category>
      <category>security</category>
    </item>
    <item>
      <title>Azure Key vault authentication</title>
      <dc:creator>Shivappa</dc:creator>
      <pubDate>Sun, 09 May 2021 06:39:59 +0000</pubDate>
      <link>https://dev.to/shivappa/azure-key-vault-authentication-49m3</link>
      <guid>https://dev.to/shivappa/azure-key-vault-authentication-49m3</guid>
      <description>&lt;p&gt;In the previous &lt;a href="https://dev.to/shivappa/understand-and-use-azure-key-vault-easily-most-secured-secrets-storage-19n0"&gt;part&lt;/a&gt; we have learnt how to add Azure Key Vault resource. Now we will learn how to add the authentication to the Key vault to access it.&lt;br&gt;
Let's create a access-policy(principal) to access the store.&lt;br&gt;
To add the access-policy we have to make the Authentication with the Active Directory.&lt;br&gt;
Let's see how we can authenticate.&lt;br&gt;
Go to resources and search for ADB2C.&lt;br&gt;
Read more about ADB2C &lt;a href="https://docs.microsoft.com/en-us/azure/active-directory-b2c/overview"&gt;here&lt;/a&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UU-Xykjs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om6l4l3ss1c9e16flbaf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UU-Xykjs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om6l4l3ss1c9e16flbaf.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/om6l4l3ss1c9e16flbaf.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Register new application in ADB2C to get the &lt;strong&gt;CLIENT_ID&lt;/strong&gt;, &lt;strong&gt;CLIENT_SECRET&lt;/strong&gt; and &lt;strong&gt;TENANT_ID&lt;/strong&gt;.&lt;br&gt;
Go to &lt;em&gt;App registrations&lt;/em&gt; and click on "New registration*.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dBt76Tgj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8o76g7cae38show8bffl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dBt76Tgj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8o76g7cae38show8bffl.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8o76g7cae38show8bffl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Name this application and select &lt;em&gt;Single tenant&lt;/em&gt; option.&lt;br&gt;
Click on &lt;strong&gt;Register&lt;/strong&gt; to register this application.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m5tKkx9U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttpxwfuutosi1kt5unxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m5tKkx9U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttpxwfuutosi1kt5unxe.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ttpxwfuutosi1kt5unxe.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Go to the new app created and note down the &lt;em&gt;Client ID&lt;/em&gt; and &lt;em&gt;Tenant ID&lt;/em&gt; which we require in our web application.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LEXOXKTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiat3w9sorfjth99vabw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LEXOXKTQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiat3w9sorfjth99vabw.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hiat3w9sorfjth99vabw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition, we need to add the secrets and use them.&lt;br&gt;
create new secrets and note that also for later use.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H6s3VgHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yquyta1aku15sg7qld79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H6s3VgHJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yquyta1aku15sg7qld79.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yquyta1aku15sg7qld79.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we have successfully created the identity which can be used in Azure Key Vault for access.&lt;/p&gt;

&lt;p&gt;Go to the created Azure Key Vault resource and click on&lt;br&gt;
&lt;strong&gt;Access policies&lt;/strong&gt; and select &lt;strong&gt;Add Access Policy&lt;/strong&gt;.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K6xrkZpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lo8tcao0mxcsy0xzffwl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K6xrkZpb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lo8tcao0mxcsy0xzffwl.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lo8tcao0mxcsy0xzffwl.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the template from the drop-down.
&lt;strong&gt;Key, Secret, and Certificate Management&lt;/strong&gt;. If you want to select only &lt;strong&gt;secret&lt;/strong&gt; you can do so.&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Key Permissions&lt;/em&gt; which can be allowed for this access if Key Management has opted.&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Secret Permissions&lt;/em&gt; which can be allowed for this access if Key Management has opted.&lt;/li&gt;
&lt;li&gt;Select &lt;em&gt;Certificate Permissions&lt;/em&gt; which can be allowed for this access if Key Management has opted.&lt;/li&gt;
&lt;li&gt;select &lt;em&gt;Select Principal&lt;/em&gt; and search for the application which we created in ADB2C in the above steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjRKnIli--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac3kjzkwonf4p9du5r7t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjRKnIli--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac3kjzkwonf4p9du5r7t.png" alt="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ac3kjzkwonf4p9du5r7t.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We have authenticated our key vault by whom it can be used.&lt;br&gt;
Let's write a simple flask app to fetch the secrets from the key vault in the next &lt;a href="https://dev.to/shivappa/access-key-vault-secret-from-web-application-4nem"&gt;part&lt;/a&gt; of this series.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understand and use Azure Key Vault Easily (Most Secured Secrets Storage)</title>
      <dc:creator>Shivappa</dc:creator>
      <pubDate>Sun, 09 May 2021 06:34:11 +0000</pubDate>
      <link>https://dev.to/shivappa/understand-and-use-azure-key-vault-easily-most-secured-secrets-storage-19n0</link>
      <guid>https://dev.to/shivappa/understand-and-use-azure-key-vault-easily-most-secured-secrets-storage-19n0</guid>
      <description>&lt;p&gt;Now a days the term &lt;em&gt;security&lt;/em&gt; becoming the must follow topic for all the organizations to have a good brand name.&lt;br&gt;
To secure your credentials or secrets in your web application is a big challenge when we deploy our application to the public internet.&lt;br&gt;
And also once your code is deployed and secrets are revealed then one need to redeploy the code with updated secrets to secure the application. As the application grows bigger and bigger this will be cumbersome to manage the application.&lt;/p&gt;

&lt;p&gt;To solve this issue we can use &lt;a href="https://azure.microsoft.com/en-in/services/key-vault/"&gt;&lt;strong&gt;Azure Key Vault&lt;/strong&gt;&lt;/a&gt; resource.&lt;br&gt;
Azure Key Vault is a Microsoft cloud service to store and access data and secrets securely. Which controls below tasks,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Securely store the keys, secrets and certificates.&lt;/li&gt;
&lt;li&gt;Only authorized user can access the key vault.&lt;/li&gt;
&lt;li&gt;Frequently rotate the secrets, keys.&lt;/li&gt;
&lt;li&gt;Automatically renew the certificates.&lt;/li&gt;
&lt;li&gt;Centralized storage for all keys, secrets and certificates.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Azure Key Vault can be used in many services, here I will be showing how to use it in Azure app service.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Active Azure Subscription &lt;a href="https://azure.microsoft.com/en-us/"&gt;Account&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Visual Studio &lt;a href="https://code.visualstudio.com/"&gt;Code&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can create Azure Key Vault using Azure CLI or Azure Portal.&lt;br&gt;
In this blog we will look at how to do in Azure Portal.&lt;/p&gt;

&lt;h4&gt;
  
  
  Create Azure Key Vault using Azure Portal
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Create an Azure resource&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Login to Azure Portal.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click on create a resource.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p_7LKMcC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hyr2xbjqtd5x40k7vpos.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p_7LKMcC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hyr2xbjqtd5x40k7vpos.png" alt="createresource"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for Key Vault. Select and create it.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pMjDbckM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9tzz3wworqlwv55dgt30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pMjDbckM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9tzz3wworqlwv55dgt30.png" alt="KeyVault-Search"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---3-tfn3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/st06036s889q1udtsej1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---3-tfn3_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/st06036s889q1udtsej1.png" alt="KeyVault-Create-1"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fill details and create the resource.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Resource Group&lt;/strong&gt;: Select existing resource group or create a new one&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key vault name&lt;/strong&gt;: Enter globally Unique name for your key vault. This is access from the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Region&lt;/strong&gt;: Select location the one near to you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pricing tier&lt;/strong&gt;: Select &lt;em&gt;Standard&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nq-AsWNG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ov8hgilrhabb3b9jbx3r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nq-AsWNG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ov8hgilrhabb3b9jbx3r.png" alt="KeyVault-Create-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Review + create&lt;/strong&gt; and then &lt;strong&gt;create&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to Key vault resource created.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vXHz6ABk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gfnj7zi5j1378ryx6wvm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vXHz6ABk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gfnj7zi5j1378ryx6wvm.png" alt="KeyVault-Secrets"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Let's create some secrets in the key vault which will be accessed from our application.&lt;br&gt;
Click on &lt;strong&gt;Generate/Import&lt;/strong&gt; to add new secret.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RhF7iRmc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bxjtkbl2glqk9xed2v8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RhF7iRmc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bxjtkbl2glqk9xed2v8m.png" alt="KeyVault-Secrets-Generate"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Fill the details and add it.&lt;br&gt;
&lt;strong&gt;Name&lt;/strong&gt;: name of the secret to be created.&lt;br&gt;
&lt;strong&gt;value&lt;/strong&gt;: Value to store in this secret. &lt;br&gt;
We can set when this secret can be activated and deactivated.&lt;br&gt;
As of now we can leave default, meaning immediate activate and never expires.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--szXHMWJm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b4o4mt58ux2ermh632b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--szXHMWJm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b4o4mt58ux2ermh632b9.png" alt="KeyVault-Secrets-Create"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After the secret is added go the secret which looks like this.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wVIsRUkk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3a1a3ikccugkenxj9gzu.png" alt="KeyVault-Secrets-Details-Version"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Our secret is successfully created in Azure Key Vault. Now we have to access it from our code.&lt;br&gt;
To access the secrets, valid permissions (like who can access) must be added to the keyvault.&lt;br&gt;
Let's learn how to add the authentication in next part of this series.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>security</category>
      <category>keyvault</category>
    </item>
    <item>
      <title>Deploy Containerized Web App to Microsoft Azure | Upload/Download files of Azure Storage Account</title>
      <dc:creator>Shivappa</dc:creator>
      <pubDate>Fri, 02 Apr 2021 15:25:31 +0000</pubDate>
      <link>https://dev.to/shivappa/deploy-containerized-web-app-to-microsoft-azure-upload-download-files-of-azure-storage-account-3am</link>
      <guid>https://dev.to/shivappa/deploy-containerized-web-app-to-microsoft-azure-upload-download-files-of-azure-storage-account-3am</guid>
      <description>&lt;p&gt;&lt;em&gt;If you are bored to read my store you can skip quoted text and go to technical content below.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Few months back I got a chance to work in cloud project.&lt;br&gt;
Since this is completely new to me and had lot of responsibility.&lt;br&gt;
Then I started searching over the internet about Microsoft azure and the services it provides. Really there are plenty of services in the Azure which helps to build projects to the great extent.&lt;br&gt;
Then I started googling about the services what they do and how can be used. Every time I google I was going through blogs, some are valid and easy to understand but some are not.&lt;br&gt;
One day I got a nice tutorial in Microsoft website and found it has rich in documentation about the Azure. After I studied that topic, myself started exploring in the Microsoft documentation and found that it has Microsoft Learn page where it supports all the documentation on all the services it supported and it has all the levels of content from beginner to expert level. &lt;/p&gt;

&lt;p&gt;You can learn and achieve your expertise in various topics from &lt;a href="https://docs.microsoft.com/en-us/learn/" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;.&lt;br&gt;
Each module provides exercises and knowledge check questions based on the topic you learnt. &lt;br&gt;
And another great thing MSLearn provides for hands on is Azure sandbox subscription(You can activate during each module learning and exercises ). &lt;br&gt;
This is really great for quick hands on the things we learn. This is strictly for the study purpose on the learning modules and will be deleted after the timer(You should not use for other purposes).&lt;/p&gt;

&lt;p&gt;Later I found some online events are being conducted by Microsoft professionals and explored them. You can find very helpful and priceless content from these events. Please visit here for full list of &lt;a href="https://events.microsoft.com/" rel="noopener noreferrer"&gt;Microsoft Virtual events&lt;/a&gt;.&lt;br&gt;
As I was reading about Azure certification courses, I have got excited and attended AZ-900 Azure fundamentals(basic level) virtual training and it was really nice. This event sparked me to attend many more events and learn Azure. Later I passed AZ-900 certification with only documents from this MSLearn.&lt;/p&gt;

&lt;p&gt;As I was studying for the various services on the Azure in MSLearn, I got to know there is an online event &lt;strong&gt;Cloud Community Days&lt;/strong&gt; in &lt;a href="https://konfhub.com/" rel="noopener noreferrer"&gt;KonfHub&lt;/a&gt; is going to happen. Without a bit delay I registered for the 2 Days conference and I attended the same. You can join your nearest &lt;a href="https://azdev.konfhub.com/" rel="noopener noreferrer"&gt;Azure Developer community&lt;/a&gt;.&lt;br&gt;
It was really thoughtful conference in which many things I have learnt and could clarify many doubts which I had.&lt;br&gt;
The content throughout was good and there were quiz sessions in between. On first day I could not attend in quiz but attended second day's first two quizzes and in the first attempt I ranked 12th and in the next I ranked 3rd. This pushed me more to learn and master the learnings from the Microsoft and attend many more such events.&lt;br&gt;
Later I took "Azure Dev Challenge" and completed effective study and as a next step &lt;a href="https://devstories.konfhub.com/" rel="noopener noreferrer"&gt;Azure Developer Stories&lt;/a&gt; contest I planned to write a blog of my steps towards Microsoft Azure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is my first blog ever. Thank you Microsoft and KonfHub for this motivation.&lt;/p&gt;

&lt;p&gt;I think it is enough to stop my story and share some technical details which I built after learning &lt;strong&gt;Azure Dev Challenge&lt;/strong&gt; modules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Project Statement
&lt;/h3&gt;

&lt;p&gt;Deploy a Containerized Flask Web Application which translates the given text to another language and dump the contents in a file. This file will be uploaded to Azure Storage Account in a secure way. Once it is uploaded we can download the file if we have valid SAS token for the file.&lt;/p&gt;

&lt;p&gt;We will divide above project statement into below steps,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Azure Container Registry(ACR).&lt;/li&gt;
&lt;li&gt;Write Flask Application to

&lt;ul&gt;
&lt;li&gt;translate text using Azure Cognitive Services&lt;/li&gt;
&lt;li&gt;upload/download files to/from Azure Storage Account.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Deploy containerized flask application to Azure Container Registry.&lt;/li&gt;
&lt;li&gt;Check logs of our container application.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Visual Studio Code &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;IDE&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Microsoft Azure &lt;a href="https://azure.microsoft.com/" rel="noopener noreferrer"&gt;Subscription&lt;/a&gt;. Get a free account if you do not have one.&lt;/li&gt;
&lt;li&gt;Latest &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;Python&lt;/a&gt; version.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 1: Create Azure Container Registry(ACR)
&lt;/h2&gt;

&lt;p&gt;Before creating Azure Container Registry, we will understand some terms.&lt;br&gt;
&lt;strong&gt;Container Image:&lt;/strong&gt; It is a bundled software package, which contains system libraries, tools and other platform settings with which a program can run without any changes to software package at run time.&lt;br&gt;
&lt;strong&gt;Container Registry:&lt;/strong&gt; It is a repository to store container images to run container based applications.&lt;/p&gt;

&lt;p&gt;Now let's create Azure Container Registry.&lt;/p&gt;

&lt;p&gt;Login to your &lt;a href="https://portal.azure.com/" rel="noopener noreferrer"&gt;Azure Portal&lt;/a&gt;&lt;br&gt;
Click on add resource to create new Resource Group.&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%2Fl4d1j61tixzdwtdchrtc.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%2Fl4d1j61tixzdwtdchrtc.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Search for "resource group" in the Azure Marketplace and click on it and create.&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%2Fvludzerthfnlhofs6epa.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%2Fvludzerthfnlhofs6epa.png" alt="resourcegroup"&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%2Fynsxxhr5xw50xzl84lf6.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%2Fynsxxhr5xw50xzl84lf6.png" alt="resourcegroup-click"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add new resource group with required details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Select your valid Azure subscription where you want to create resource group.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource group:&lt;/strong&gt; Name of the resource group to be created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region:&lt;/strong&gt; The location where you want to create resource group.(select your nearest region)
&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%2Fsy45rlfa5vxozzrgjnwy.png" alt="RG"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the resource group is created. Go to the Resource Group created in above step.&lt;br&gt;
Now create a container registry resource in this Resource Group.&lt;br&gt;
Click on "Add"&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%2Fa866wv1c5fbl9go74d0i.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%2Fa866wv1c5fbl9go74d0i.png" alt="resourcegroup-add"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Search for "container registry" in the Azure Marketplace and click on it and create.&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%2F651kg42cju7xyf3yx5px.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%2F651kg42cju7xyf3yx5px.png" alt="container"&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%2Fvn5q2p4rumfp4y3a2rpk.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%2Fvn5q2p4rumfp4y3a2rpk.png" alt="container-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill all the required details.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Select your valid Azure subscription where you want to create container registry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource group:&lt;/strong&gt; Select the resource group which you created in previous step.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Registry name:&lt;/strong&gt; Name of your Azure Container registry to be created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; The location where you want to create ACR (Keep same as the resource group Region).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SKU:&lt;/strong&gt; Select the registry tier Basic. (Available are Basic, Standard, Premium)
&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%2F8ps8w4zv3a9q8lbna80q.png" alt="container-3"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then &lt;strong&gt;Review + create&lt;/strong&gt; and &lt;strong&gt;Create&lt;/strong&gt;.&lt;br&gt;
After the Azure Container Registry is created, open and update admin user setting.&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%2Fgzfrmv6un9hqscjpru9w.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%2Fgzfrmv6un9hqscjpru9w.png" alt="container-5"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Enable&lt;/strong&gt; under &lt;strong&gt;Admin user&lt;/strong&gt;, this is required to deploy web application directly from container registry.&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%2F7209i6f0fasi6voz2ke6.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%2F7209i6f0fasi6voz2ke6.png" alt="container-4"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we successfully created Azure Container Registry.&lt;br&gt;
It is time to write some code.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 2: Write Flask Application
&lt;/h2&gt;

&lt;p&gt;We will be using &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;Visual Studio Code&lt;/a&gt; code editor for all our coding. A best code editor with vast features.&lt;br&gt;
Now on I will be referring Visual Studio Code as VS Code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download and install VS Code based on your OS. (Can be used on Windows, MacOS, Linux).&lt;/li&gt;
&lt;li&gt;Install latest python version from &lt;a href="https://www.python.org/" rel="noopener noreferrer"&gt;python.org&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create a folder &lt;strong&gt;Azure-Dev-Stories&lt;/strong&gt; in your computer and open the folder in VSCode.&lt;br&gt;
Open &lt;strong&gt;cmd&lt;/strong&gt; and run below commands. (I am using windows. If you are using other OS please replace corresponding commands)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;md Azure-Dev-Stories&lt;br&gt;
cd Azure-Dev-Stories&lt;br&gt;
code . &lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(code . opens VSCode)&lt;br&gt;
Now VSCode is opened and you can see empty folder like this.&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%2Ftxmvz4l05vu9gvbkr7t4.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%2Ftxmvz4l05vu9gvbkr7t4.png" alt="vscode"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our environment for coding is ready.&lt;/p&gt;

&lt;p&gt;To isolate our project we will create virtual environment.&lt;br&gt;
Open VSCode terminal (Ctrl + `) and execute below command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;python -m venv .venv&lt;/code&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%2Fezlcnic3r01ndj0gaxfp.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%2Fezlcnic3r01ndj0gaxfp.png" alt="vscode-venv"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To make containerized image of our code we need to install below extensions from VSCode marketplace.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure App service, Azure Account extension (For Azure services)&lt;/li&gt;
&lt;li&gt;Docker extension (For dockerizing the application).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Search for &lt;strong&gt;Azure account&lt;/strong&gt; and &lt;strong&gt;docker&lt;/strong&gt; in marketplace and install them as shown in below screens.&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%2F2grk5aj1ghtcv2m5s9ky.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%2F2grk5aj1ghtcv2m5s9ky.png" alt="vscode-azure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install Docker extension.&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%2Fhn4eswhap8oqs5lf1jse.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%2Fhn4eswhap8oqs5lf1jse.png" alt="vscode-docker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After both the extensions are installed your VS Code looks similar to this.&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%2F1d0gvk645k0m7yprmnmx.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%2F1d0gvk645k0m7yprmnmx.png" alt="vscode-extension"&gt;&lt;/a&gt;&lt;br&gt;
Go to Azure extension and login to your Microsoft Azure account.&lt;/p&gt;

&lt;p&gt;Now create a file &lt;em&gt;app.py&lt;/em&gt; and add below contents in it and save the file.&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="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we need to create our first &lt;strong&gt;Dockerfile&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Dockerfile&lt;/strong&gt;: It is a text file which contains all the steps to be performed to create our application as a image.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Go to command palette (Ctrl + Shift + P) in VSCode and type &lt;strong&gt;build image&lt;/strong&gt;, select &lt;strong&gt;Azure Container Registry: Build Image in Azure...&lt;/strong&gt; from the search list.&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%2Ftuwiezuu1z3fbhco1vqf.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%2Ftuwiezuu1z3fbhco1vqf.png" alt="vscode-buildimage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You will be asked to add a Dockerfile to the workspace on bottom screen, select &lt;strong&gt;Yes&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%2F5xx2jsn0lbbwca4ejzbw.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%2F5xx2jsn0lbbwca4ejzbw.png" alt="vscode-add-Docker"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;strong&gt;Python:Flask&lt;/strong&gt; (select other relevant application platform if you are building for other frameworks)&lt;br&gt;
Then select &lt;strong&gt;app.py&lt;/strong&gt; as entry point and select port &lt;strong&gt;5000&lt;/strong&gt; and select &lt;strong&gt;Yes&lt;/strong&gt; to add the docker compose files.&lt;br&gt;
After the above steps your VSCode folder looks like this.&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%2Fxdsjvy3y0qpfa9vbinsq.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%2Fxdsjvy3y0qpfa9vbinsq.png" alt="vscode-fileslist"&gt;&lt;/a&gt;&lt;br&gt;
Newly created Dockerfile looks like this.&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;# For more information, please refer to https://aka.ms/vscode- docker-python
&lt;/span&gt;&lt;span class="n"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;3.8&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;slim&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;buster&lt;/span&gt;

&lt;span class="n"&gt;EXPOSE&lt;/span&gt; &lt;span class="mi"&gt;5000&lt;/span&gt;

&lt;span class="c1"&gt;# Keeps Python from generating .pyc files in the container
&lt;/span&gt;&lt;span class="n"&gt;ENV&lt;/span&gt; &lt;span class="n"&gt;PYTHONDONTWRITEBYTECODE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="c1"&gt;# Turns off buffering for easier container logging
&lt;/span&gt;&lt;span class="n"&gt;ENV&lt;/span&gt; &lt;span class="n"&gt;PYTHONUNBUFFERED&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="c1"&gt;# Install pip requirements
&lt;/span&gt;&lt;span class="n"&gt;COPY&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;
&lt;span class="n"&gt;RUN&lt;/span&gt; &lt;span class="n"&gt;python&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="n"&gt;pip&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="n"&gt;requirements&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;txt&lt;/span&gt;

&lt;span class="n"&gt;WORKDIR&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;
&lt;span class="n"&gt;COPY&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;

&lt;span class="c1"&gt;# Creates a non-root user and adds permission to access the /app 
&lt;/span&gt; &lt;span class="n"&gt;folder&lt;/span&gt;
&lt;span class="c1"&gt;# For more info, please refer to https://aka.ms/vscode-docker- python-configure-containers
&lt;/span&gt;&lt;span class="n"&gt;RUN&lt;/span&gt; &lt;span class="n"&gt;useradd&lt;/span&gt; &lt;span class="n"&gt;appuser&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;chown&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;R&lt;/span&gt; &lt;span class="n"&gt;appuser&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;app&lt;/span&gt;
&lt;span class="n"&gt;USER&lt;/span&gt; &lt;span class="n"&gt;appuser&lt;/span&gt;

&lt;span class="c1"&gt;# During debugging, this entry point will be overridden. For more 
&lt;/span&gt;&lt;span class="n"&gt;information&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;please&lt;/span&gt; &lt;span class="n"&gt;refer&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;aka&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ms&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vscode&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;docker&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;python&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;debug&lt;/span&gt;
&lt;span class="n"&gt;CMD&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gunicorn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--bind&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0:5000&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;app:app&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="err"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now go to requirements.txt file and add below packages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flask
gunicorn
python-dotenv
python-dateutil
requests
azure-storage-blob
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We set what packages are required for our project and we need to install them in our virtual environment.&lt;br&gt;
Go to VS Code terminal and run below command to install the packages.&lt;br&gt;
&lt;code&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;It takes some time to install all the packages.&lt;/p&gt;

&lt;p&gt;Now our bare flask application framework is ready and we need to deploy it to Azure as web application to make sure our application is running.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 3: Deploy containerized flask application to Azure Container Registry
&lt;/h2&gt;

&lt;p&gt;Open command palette (Ctrl + Shift + P) and search &lt;em&gt;build image&lt;/em&gt; and select &lt;strong&gt;Azure Container Registry: Build Image in Azure...&lt;/strong&gt; from the search list.&lt;br&gt;
Now give a name to image. With this name it will be pushed to Azure Container Registry.&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%2Fzth80alsfvu1eqekg81q.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%2Fzth80alsfvu1eqekg81q.png" alt="vscode-add-docker-deploy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Replace &lt;strong&gt;.Run.ID&lt;/strong&gt; with &lt;strong&gt;master&lt;/strong&gt; to keep our image tag always the master.&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%2Fvhz77z6ce3i2yj8ua82t.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%2Fvhz77z6ce3i2yj8ua82t.png" alt="vscode-add-docker-deploy-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;azure-dev-stories:master&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Select the Azure Container Registry from the list which we have created before.&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%2Fouguzg7m7hokhowxmptr.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%2Fouguzg7m7hokhowxmptr.png" alt="vscode-add-docker-deploy-3"&gt;&lt;/a&gt;&lt;br&gt;
Choose &lt;strong&gt;Linux&lt;/strong&gt;. (You can choose other OS for which you want to make the image)&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%2Fhfbgbwodphez98jet1ip.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%2Fhfbgbwodphez98jet1ip.png" alt="vscode-add-Docker-4"&gt;&lt;/a&gt;&lt;br&gt;
After the image is successfully created you will see output like this.&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%2F1abfbjhaluy5cz6b629p.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%2F1abfbjhaluy5cz6b629p.png" alt="vscode-add-Docker-5"&gt;&lt;/a&gt;&lt;br&gt;
Confirm whether the image is present in Azure Container Registry(ACR).&lt;br&gt;
Go to Docker extension and see the steps in below image.&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%2Ft3pvw43tpsqf85lad4za.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%2Ft3pvw43tpsqf85lad4za.png" alt="vscode-docker-image-ACR"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Our application image is built and is present in ACR. Now we need to deploy as Azure web application.&lt;br&gt;
&lt;strong&gt;Right click&lt;/strong&gt; on master and select &lt;strong&gt;Deploy Image to Azure App Service...&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%2Ft7b9l2w1u68g8da908b5.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%2Ft7b9l2w1u68g8da908b5.png" alt="vscode-docker-image-ACR-2"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enter &lt;strong&gt;Unique global name&lt;/strong&gt; for your application. If similar name is exists, it shows error and choose different name.
This name must be unique across global azure web applications, because our deployed application is accessible over the internet.&lt;/li&gt;
&lt;li&gt;Select the Resource group which we already created during ACR creation(it shows the list of resource groups).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create App Service Plan&lt;/strong&gt; for the application.&lt;/li&gt;
&lt;li&gt;Give a name to &lt;strong&gt;Service Plan&lt;/strong&gt; (the agent on which our application runs).&lt;/li&gt;
&lt;li&gt;Select pricing tier &lt;strong&gt;F1 Free&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Location&lt;/strong&gt; for the Service Plan.
After above steps you will see deploy message at the bottom screen.
&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%2Fb6r8ru08w3urcimqb53b.png" alt="vscode-docker-image-deploy-appservice"&gt;
Once the web application is deployed you will see a message &lt;strong&gt;Successfully create web app ...&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Open the site and check our application is up and running.&lt;br&gt;
We see our bare app like this.&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%2Fjz2fkfzk9i334o9cdmpr.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%2Fjz2fkfzk9i334o9cdmpr.png" alt="webapp-deployed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go to Azure Portal and check image tag is applied properly.&lt;br&gt;
To check it, go to Azure home search bar, search for &lt;strong&gt;app services&lt;/strong&gt; and select the web application deployed.&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%2Fanfjkgejehq352vkdcgg.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%2Fanfjkgejehq352vkdcgg.png" alt="webapp-search"&gt;&lt;/a&gt;&lt;br&gt;
Go to &lt;strong&gt;Deployment Center&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Settings&lt;/strong&gt; and confirm &lt;strong&gt;Registry&lt;/strong&gt;, &lt;strong&gt;Image&lt;/strong&gt;, &lt;strong&gt;Tag&lt;/strong&gt;(master) are fine.&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%2Fzyz5o0l63ngnjsy4zwvi.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%2Fzyz5o0l63ngnjsy4zwvi.png" alt="webapp-settings"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we successfully deployed flask web application as containerized App in Azure. And we need make valuable use from the web application.&lt;br&gt;
So our next step is, &lt;/p&gt;
&lt;h2&gt;
  
  
  translate text using Azure Cognitive Services
&lt;/h2&gt;

&lt;p&gt;To translate the user input to another language we will use &lt;strong&gt;&lt;a href="https://azure.microsoft.com/en-in/services/cognitive-services/" rel="noopener noreferrer"&gt;Azure Cognitive Services&lt;/a&gt;&lt;/strong&gt;.&lt;br&gt;
Now go to Azure Portal.&lt;br&gt;
Create a resource -&amp;gt; search for &lt;strong&gt;translator&lt;/strong&gt; service and install it.&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%2Frjckikqqiwepnsr50ixb.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%2Frjckikqqiwepnsr50ixb.png" alt="createresource"&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%2Fj6cpglcfxv4w9k4yd6qi.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%2Fj6cpglcfxv4w9k4yd6qi.png" alt="translator"&gt;&lt;/a&gt;&lt;br&gt;
Fill required fields.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Valid subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource group:&lt;/strong&gt; select resource group created before.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Region:&lt;/strong&gt; Select nearest region&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Name:&lt;/strong&gt; give a unique name to translator service&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pricing tier:&lt;/strong&gt; Free F0, (You can choose higher plan also based on your requirements)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Then &lt;strong&gt;Review + create&lt;/strong&gt; and &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Go to the translator service created, note down &lt;strong&gt;KEY1&lt;/strong&gt; or &lt;strong&gt;KEY2&lt;/strong&gt;, &lt;strong&gt;Endpoint&lt;/strong&gt; and &lt;strong&gt;Location&lt;/strong&gt;, we need them to input in our flask application later.&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%2Fjqqyh2g4auq9y80ftb3p.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%2Fjqqyh2g4auq9y80ftb3p.png" alt="translator-keys"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We created Azure translator and we need to use it in our application to get the translated text.&lt;br&gt;
Go to VSCode. Create &lt;strong&gt;.env&lt;/strong&gt; file and add below details.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KEY=0b5c31e83e36459f953b097d01931143
ENDPOINT=https://api.cognitive.microsofttranslator.com/
LOCATION=eastus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KEY&lt;/strong&gt; : Translator service key1 or key2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ENDPOINT&lt;/strong&gt;: Translator Endpoint&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LOCATION&lt;/strong&gt;: Translator service Location&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: When we created Dockerfile, but silently &lt;strong&gt;.dockerignore&lt;/strong&gt; file also created. This contains the list of files which we need ignore while building the docker image.&lt;br&gt;
Look careful all contents, it has .env also. But we must need this file to get our translator service details.&lt;br&gt;
So remove the line containing &lt;strong&gt;.env&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%2Fl7xw89fs6cz3bawe7gh1.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%2Fl7xw89fs6cz3bawe7gh1.png" alt="vscode-dockerignorefile"&gt;&lt;/a&gt;&lt;br&gt;
We need to ignore our virtual environment libraries which are present in &lt;strong&gt;.venv&lt;/strong&gt;. Add &lt;strong&gt;**/.venv&lt;/strong&gt; line in &lt;strong&gt;.dockerignore&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For the docker to refer our environment variables properly, we need to add .env file in &lt;strong&gt;docker-compose.yml&lt;/strong&gt;.&lt;br&gt;
Open &lt;strong&gt;docker-compose.yml&lt;/strong&gt; file and add section &lt;em&gt;env_file&lt;/em&gt; after &lt;em&gt;ports&lt;/em&gt; like this(take care of the indentation. ports and env_file should be on same level).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3.4'&lt;/span&gt;

&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;azuredevstories&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;azuredevstories&lt;/span&gt;
    &lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;context&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.&lt;/span&gt;
      &lt;span class="na"&gt;dockerfile&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;./Dockerfile&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;5000:5000&lt;/span&gt;
    &lt;span class="na"&gt;env_file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; 
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;.env&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we are done with all the configuration. Let's write some code.&lt;br&gt;
Copy paste below code in &lt;strong&gt;app.py&lt;/strong&gt;.&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="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;flask&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;dotenv&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;load_dotenv&lt;/span&gt;
&lt;span class="nf"&gt;load_dotenv&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Flask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;__name__&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Setup logging to get the logs from the application
&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DEBUG&lt;/span&gt;
&lt;span class="nb"&gt;format&lt;/span&gt; &lt;span class="o"&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;%(asctime)s %(levelname)s %(name)s : %(message)s&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
&lt;span class="n"&gt;logging&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;basicConfig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;app.log&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;format&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;GET&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;index.html&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nd"&gt;@app.route&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;methods&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;POST&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;index_post&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;translate given string and put in file and upload to Azure storage account&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="c1"&gt;# Read values from the form
&lt;/span&gt;    &lt;span class="n"&gt;original_text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;target_language&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;language&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="c1"&gt;# Load values from .env
&lt;/span&gt;    &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;KEY&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;ENDPOINT&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;location&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;LOCATION&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;''&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="c1"&gt;# Construct the translator method
&lt;/span&gt;    &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/translate?api-version=3.0&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;
    &lt;span class="n"&gt;target_language_parameter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;&amp;amp;to=&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;target_language&lt;/span&gt;
    &lt;span class="n"&gt;constructed_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;endpoint&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;target_language_parameter&lt;/span&gt;

    &lt;span class="c1"&gt;# Set up header for post request
&lt;/span&gt;    &lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Ocp-Apim-Subscription-Key&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Ocp-Apim-Subscription-Region&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;location&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;Content-type&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;X-ClientTraceID&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uuid&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;uuid4&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;# body of request
&lt;/span&gt;    &lt;span class="n"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;original_text&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;

    &lt;span class="c1"&gt;# Make call using post
&lt;/span&gt;    &lt;span class="n"&gt;translator_request&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;constructed_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="c1"&gt;# Retrieve JSON response
&lt;/span&gt;    &lt;span class="n"&gt;translator_response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;translator_request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="c1"&gt;# Retrieve translation response
&lt;/span&gt;    &lt;span class="n"&gt;translated_text&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;translator_response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;translations&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;text&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;render_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;results.html&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;original_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;original_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;translated_text&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;translated_text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Create &lt;strong&gt;templates&lt;/strong&gt; folder in current workspace directory.&lt;br&gt;
Inside &lt;strong&gt;templates&lt;/strong&gt; folder, create &lt;em&gt;index.html&lt;/em&gt; with which we can receive the input and send it to Azure translation service from our flask application.&lt;br&gt;
Copy paste below code in &lt;em&gt;index.html&lt;/em&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"&lt;/span&gt;
        &lt;span class="na"&gt;integrity=&lt;/span&gt;&lt;span class="s"&gt;"sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"&lt;/span&gt; &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Translator&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Translation service&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;Enter the text you wish to translate and upload to Azure&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"POST"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;textarea&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;cols=&lt;/span&gt;&lt;span class="s"&gt;"10"&lt;/span&gt; &lt;span class="na"&gt;rows=&lt;/span&gt;&lt;span class="s"&gt;"2"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"language"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Select Translation Language&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"language"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;English&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"it"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Italian&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"ja"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Japanese&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"ru"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Russian&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"de"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;German&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-success"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Translate and Upload !&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside &lt;strong&gt;templates&lt;/strong&gt; folder, create &lt;em&gt;results.html&lt;/em&gt; and copy paste below code.&lt;br&gt;
This will display the results once the input is translated.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"&lt;/span&gt;
        &lt;span class="na"&gt;integrity=&lt;/span&gt;&lt;span class="s"&gt;"sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"&lt;/span&gt; &lt;span class="na"&gt;crossorigin=&lt;/span&gt;&lt;span class="s"&gt;"anonymous"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Upload&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Translation results&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/br&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Input text :&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt; {{ original_text }}
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Translated text:&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt; {{ translated_text }}
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"{{ url_for('index') }}"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Try another one!&lt;span class="nt"&gt;&amp;lt;/a&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our final folder structure looks like this.&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%2Fpxg663k6ufjzdh96g1j9.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%2Fpxg663k6ufjzdh96g1j9.png" alt="vscode-folderstructure"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now our application is ready to make translations. Run locally and confirm there is no issue.&lt;br&gt;
&lt;code&gt;flask run&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;But we have not yet deployed it Azure, so it is time to re-build and deploy it to Azure.&lt;br&gt;
Go to command palette (Ctrl + Shift + P). &lt;br&gt;
Search &lt;em&gt;build image&lt;/em&gt; and select &lt;strong&gt;Azure Container Registry: Build Image in Azure...&lt;/strong&gt;,&lt;br&gt;
Simply click &lt;strong&gt;enter&lt;/strong&gt; key in all steps and keep all settings without change. (make sure all are valid and recent settings).&lt;br&gt;
Image build starts and once it is completed you will see the results under &lt;strong&gt;Output&lt;/strong&gt; in terminal section.&lt;br&gt;
Go to docker extension, refresh and confirm the image tag time is changed (&lt;em&gt;a few seconds ago&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%2Fo07tkuvo225e8kreymud.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%2Fo07tkuvo225e8kreymud.png" alt="vscode-docker-imagetage-details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait for sometime to docker image apply on the web application. Now open already deployed web application website &lt;a href="https://mydockerdemotest.azurewebsites.net/" rel="noopener noreferrer"&gt;https://mydockerdemotest.azurewebsites.net/&lt;/a&gt; and check changes are reflected.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can also open the web application in &lt;strong&gt;App services&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Select your application&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Overview&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Browse&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Website looks like this. &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%2Fjx2o2vzjkcn358rs1w8j.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%2Fjx2o2vzjkcn358rs1w8j.png" alt="webapp-deployed-input"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter input text to be translated and select the language of translation. Click Translate. We have the translated text like this.&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%2Fjojf5o1h4228im67ryf0.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%2Fjojf5o1h4228im67ryf0.png" alt="webapp-deployed-output"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wow!, now our application is able to translate the text.&lt;/p&gt;

&lt;p&gt;Now we will write this translation text to a file and upload to &lt;strong&gt;Azure Storage Account&lt;/strong&gt; and download whenever we want.&lt;br&gt;
That is a great service provided by Azure to store our files in a more secure way.&lt;br&gt;
Let's learn on how to upload and download the files in Azure service.&lt;/p&gt;
&lt;h2&gt;
  
  
  Use Azure Storage Account to securely upload and download files.
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Azure Storage account&lt;/strong&gt;: It contains all our Azure storage objects like blobs(containers), queues, tables and disks. This account can be accessed over the internet using the unique namespace which we will be doing in this section.&lt;br&gt;
Let's begin...&lt;br&gt;
Again go to Azure Portal and install &lt;strong&gt;Azure Storage Account&lt;/strong&gt; service.&lt;br&gt;
Here are the steps.&lt;br&gt;
Create new resource.&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%2Fm8iq1u6cfihl4x4fmls5.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%2Fm8iq1u6cfihl4x4fmls5.png" alt="createresource"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;search &lt;strong&gt;storage account&lt;/strong&gt; in azure marketplace and create the service.&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%2Fvb5ykvye2r7y8nfg4x15.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%2Fvb5ykvye2r7y8nfg4x15.png" alt="15"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill the required fields.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Subscription:&lt;/strong&gt; Valid subscription.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource group:&lt;/strong&gt; select resource group created before.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage account name:&lt;/strong&gt; give a unique name to storage account&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location:&lt;/strong&gt; Select nearest location&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance:&lt;/strong&gt; select &lt;em&gt;Standard&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Account kind:&lt;/strong&gt; Default &lt;em&gt;StorageV2 (general purpose v2)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Replication:&lt;/strong&gt; Default &lt;em&gt;Read-access-geo-redundant storage (RA-GRS)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Click &lt;strong&gt;Review + create&lt;/strong&gt; then &lt;strong&gt;create&lt;/strong&gt; to create the service.&lt;br&gt;
Go to the created resource and fetch the connection details of the storage account.&lt;br&gt;
Select &lt;strong&gt;Access keys&lt;/strong&gt; and click on &lt;strong&gt;Show keys&lt;/strong&gt;. It displays the key and connection string.&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%2F7hn30e7tr9ldgcyf18jf.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%2F7hn30e7tr9ldgcyf18jf.png" alt="18"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy and note down the &lt;em&gt;key&lt;/em&gt; and &lt;em&gt;Connection string&lt;/em&gt; which is required to put in our code to upload the file to this storage account.&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%2Fgcv29gweex83eimhh59f.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%2Fgcv29gweex83eimhh59f.png" alt="19"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's create a container in which we will be storing our files.&lt;br&gt;
Go to &lt;strong&gt;overview&lt;/strong&gt; and select &lt;strong&gt;containers&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%2Fkhujxcjl69jart0aw1rz.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%2Fkhujxcjl69jart0aw1rz.png" alt="20"&gt;&lt;/a&gt;&lt;br&gt;
Create a new container.&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%2Fp6p0sw97gmkza4eurobv.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%2Fp6p0sw97gmkza4eurobv.png" alt="21"&gt;&lt;/a&gt;&lt;br&gt;
Give a name to container and select &lt;em&gt;private&lt;/em&gt; from the dropdown because nobody else should not access our storage account.&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%2Fpfyvvwycrndpz4h989a1.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%2Fpfyvvwycrndpz4h989a1.png" alt="22"&gt;&lt;/a&gt;&lt;br&gt;
Our storage container is created. Now let's go to code part from which we can upload the files to this container.&lt;/p&gt;

&lt;p&gt;Go to VSCode.&lt;br&gt;
As we already copied the &lt;em&gt;connection string&lt;/em&gt;, copy it to &lt;em&gt;.env&lt;/em&gt; file along with our &lt;em&gt;container name&lt;/em&gt; and &lt;em&gt;storageaccount name&lt;/em&gt; which we already created.&lt;br&gt;
Our complete &lt;em&gt;.env&lt;/em&gt; file looks like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;KEY=0b5c31e83e36459f953b097d01931143
ENDPOINT=https://api.cognitive.microsofttranslator.com/
LOCATION=eastus
STORAGEACCOUNT_CONNECTION_STRING=DefaultEndpointsProtocol=https;AccountName=storageaccounttranslator;AccountKey=oJrELlq6ts0GGrvBVCISsARadZL0ozRPLF+m2afgRjz5mTcnV9TzmpDAFOQqPcZ0u+8OW90Qp35k5842QkB95w==;EndpointSuffix=core.windows.net
CONTAINER_NAME=translations
STORAGE_ACCOUNT_NAME=storageaccounttranslator
SASTOKEN_LIFE=12
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;STORAGEACCOUNT_CONNECTION_STRING&lt;/strong&gt; : Connection string of the the storage account which we copied.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CONTAINER_NAME&lt;/strong&gt; : Name of the container we created.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STORAGE_ACCOUNT_NAME&lt;/strong&gt; : Our storage account name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SASTOKEN_LIFE&lt;/strong&gt; : How long sas token is valid for the file.(in months)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we need to write code to upload the translated file to storage account.&lt;br&gt;
Go to &lt;em&gt;appy.py&lt;/em&gt; file and add below methods.&lt;br&gt;
&lt;code&gt;upload_storageaccount&lt;/code&gt; and &lt;code&gt;generate_sastoken()&lt;/code&gt;&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="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;generate_sastoken&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;saslife&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;container_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;container_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;connection_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;storageaccount_connection&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;blob_service_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BlobServiceClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_connection_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;# generateToken with expiry
&lt;/span&gt;        &lt;span class="n"&gt;sas_token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generate_blob_sas&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;blob_service_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;account_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
                &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blob_name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;account_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;blob_service_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;credential&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;account_key&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="n"&gt;permission&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nc"&gt;AccountSasPermissions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                &lt;span class="n"&gt;expiry&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;relativedelta&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;months&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;saslife&lt;/span&gt;&lt;span class="p"&gt;))&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;sas token generated: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sas_token&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sas_token&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&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;failed to generate token for file &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&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;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;upload_storageaccount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;infile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;inpath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;connection_string&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;storageaccount_connection&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;container_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;container_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;account_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;connections&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;account_name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;blob_service_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;BlobServiceClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;from_connection_string&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connection_string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;blob_client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;blob_service_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get_blob_client&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;container&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;blob&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;infile&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="c1"&gt;# Upload the file data
&lt;/span&gt;        &lt;span class="n"&gt;filepath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;inpath&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;infile&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="nf"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filepath&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;rb&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;blob_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;upload_blob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;overwrite&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&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;https://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;account_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;.blob.core.windows.net/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;container_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;infile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&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;File &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;infile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; uploaded to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;url&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;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;url&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&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;failed to upload the report &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;infile&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;inpath&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;and call these methods from &lt;em&gt;index_post()&lt;/em&gt; after the text is translated.&lt;br&gt;
Update &lt;em&gt;results.html&lt;/em&gt; to display the storage path and sas token with which we can download the file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;Storage file path:&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt; {{ storagepath }}
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;strong&amp;gt;&lt;/span&gt;SAS Token:&lt;span class="nt"&gt;&amp;lt;/strong&amp;gt;&lt;/span&gt; {{ sas_token }}
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For complete code please refer my &lt;a href="https://github.com/Shivappa/Azure-Dev-Stories" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; repository.&lt;/p&gt;

&lt;p&gt;Now re-build the container image and check the results.&lt;br&gt;
Go to command palette (Ctrl + Shift + P) in VSCode and type &lt;strong&gt;build image&lt;/strong&gt;, select &lt;strong&gt;Azure Container Registry: Build Image in Azure...&lt;/strong&gt; from the search list.&lt;br&gt;
and follow remaining steps from our last re-build step.&lt;br&gt;
Go to application website and check whether latest changes are reflected.&lt;br&gt;
Enter input for translation text and language then click &lt;strong&gt;Translate and Upload!&lt;/strong&gt;&lt;br&gt;
After successful translation and upload the file we will get output like this.&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%2F5ju7irq4e2udsoynojzs.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%2F5ju7irq4e2udsoynojzs.png" alt="storageaccount-finalresults"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go and download the file in new browser tab using below url combination.&lt;br&gt;
&lt;code&gt;&amp;lt;Storage file path&amp;gt;?&amp;lt;SAS Token&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Sample URL&lt;br&gt;
&lt;code&gt;https://storageaccounttranslator.blob.core.windows.net/translations/translated_file_ja.txt?se=2022-04-02T07%3A02%3A42Z&amp;amp;sp=r&amp;amp;sv=2020-06-12&amp;amp;sr=b&amp;amp;sig=%2BK83mBfp2Oun%2Bs0O8U0YTuJaHxOnyItEtdrUsrmpTO4%3D&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Try to download file &lt;strong&gt;without SAS Token&lt;/strong&gt;, you will get &lt;br&gt;
error like this.&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%2Fm3r2eu00yv2s1rmzeqtf.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%2Fm3r2eu00yv2s1rmzeqtf.png" alt="webapp-deployed-container-nonsas"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So it is sure that completely secured in storage account. Without SAS token file cannot be downloaded using bare url.&lt;/p&gt;

&lt;p&gt;Also we can confirm whether the file is present in the storage account container. Go to Azure Portal -&amp;gt; Storage Account -&amp;gt; Container -&amp;gt; Select container. Here our uploaded files will be present.&lt;/p&gt;

&lt;p&gt;If we encounter any issue in our application. How to check for it ? There is a solution in Azure service too. Let's look into it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Check logs of our container application.
&lt;/h2&gt;

&lt;p&gt;In this step we will see how to check the logs of our container application.&lt;br&gt;
Go to Azure Portal -&amp;gt; Search -&amp;gt; App Services -&amp;gt; Web application we created.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If we want to look at the previous logs on application crash, container crash or any other issues we can go to &lt;strong&gt;Diagnose and solve problems&lt;/strong&gt;, here it displays the detailed information.
&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%2F52n50imvsri27g9v53mk.png" alt="webapp-logging-diagnose"&gt;
&lt;/li&gt;
&lt;li&gt;If we want to see the live log to &lt;strong&gt;Log stream&lt;/strong&gt;. Here we can see whether our container application is started or encountered any issues.
&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%2F36770lhawi9f8t9z1epd.png" alt="webapp-logging-livelog"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: You might be wondering, we have stored the secrets in &lt;em&gt;.env&lt;/em&gt; how to protect them. Yes! there is a solution in Azure called &lt;strong&gt;Azure Key Vault&lt;/strong&gt;. I will be writing a blog on it soon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now we reached the final step.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We have created many Azure services so far in this blog, what happens if we leave them ? As Azure says &lt;strong&gt;Pay As You Go&lt;/strong&gt;! means if we leave our resources it will be chargeable. So we must clear the resources which we have used.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;OK! let's delete them.&lt;br&gt;
Go to Azure Portal -&amp;gt; select our created Resource Group -&amp;gt; Delete the resource group. This deletes the entire resource group which contains many services.&lt;br&gt;
If you want to delete only specific service, you do so too.&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%2Fe8p8yrsebzgyic614sgh.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%2Fe8p8yrsebzgyic614sgh.png" alt="delete-RG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's all !!!!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion:
&lt;/h2&gt;

&lt;p&gt;Thank you for your time in reading my first blog.&lt;br&gt;
We learnt how to use Microsofts's Visual Studio Code, Azure Cognitive Services, Azure Storage Account, Azure web application, Containerizing web app, Azure Container Registry, Flask framework,  etc. I hope it helped you to gain some knowledge on Azure services.&lt;br&gt;
Your comments/suggestions are valuable for me to learn more.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>cloudskills</category>
    </item>
  </channel>
</rss>
