Skip to content

Commit 10d70df

Browse files
authored
Merge pull request #54011 from Rob-Barefoot/fundlp4m1
Initial commit: guided-project-deploy-static-website-blob-storage
2 parents 1add2b9 + 1c71d9d commit 10d70df

18 files changed

Lines changed: 507 additions & 0 deletions
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.introduction
3+
title: Introduction
4+
metadata:
5+
title: Introduction
6+
description: "Introduction"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/1-introduction.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.exercise-create-storage-enable-hosting
3+
title: Exercise - Create storage account and enable hosting
4+
metadata:
5+
title: Exercise - Create storage account and enable hosting
6+
description: "Exercise - Create storage account and enable hosting"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/2-exercise-create-storage-enable-hosting.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.exercise-upload-verify-content
3+
title: Exercise - Upload and verify site content
4+
metadata:
5+
title: Exercise - Upload and verify site content
6+
description: "Exercise - Upload and verify site content"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 7
14+
content: |
15+
[!include[](includes/3-exercise-upload-verify-content.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.exercise-update-site-content
3+
title: Exercise - Update the site content
4+
metadata:
5+
title: Exercise - Update the site content
6+
description: "Exercise - Update the site content"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 6
14+
content: |
15+
[!include[](includes/4-exercise-update-site-content.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.validate-success
3+
title: Validate success
4+
metadata:
5+
title: Validate success
6+
description: "Validate success"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/5-validate-success.md)]
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.clean-up-resources
3+
title: Clean up resources
4+
metadata:
5+
title: Clean up resources
6+
description: "Clean up resources"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/6-clean-up-resources.md)]
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.knowledge-check
3+
title: Knowledge check
4+
metadata:
5+
title: Knowledge check
6+
description: "Knowledge check"
7+
ms.date: 03/29/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 5
14+
content: |
15+
[!include[](includes/7-knowledge-check.md)]
16+
quiz:
17+
title: "Check your knowledge"
18+
questions:
19+
- content: "What must you enable on a storage account before it can serve static website content?"
20+
choices:
21+
- content: "Blob versioning"
22+
isCorrect: false
23+
explanation: "Blob versioning tracks changes to blobs but does not enable web hosting."
24+
- content: "Static website hosting"
25+
isCorrect: true
26+
explanation: "Static website hosting must be enabled in the storage account settings before Azure serves web content from the $web container."
27+
- content: "Azure CDN integration"
28+
isCorrect: false
29+
explanation: "Azure CDN can improve performance for static sites, but it is not required to enable static website hosting."
30+
- content: "Where does Azure store the files for a static website hosted in Blob Storage?"
31+
choices:
32+
- content: "A container named blob-website"
33+
isCorrect: false
34+
explanation: "Azure does not use a container named blob-website for static website hosting."
35+
- content: "The root of the storage account"
36+
isCorrect: false
37+
explanation: "Static website files are stored in a specific container, not at the root of the storage account."
38+
- content: "A container named $web"
39+
isCorrect: true
40+
explanation: "Azure automatically creates a $web container when you enable static website hosting. All website files are served from this container."
41+
- content: "What happens when you upload an updated file to the $web container?"
42+
choices:
43+
- content: "You must redeploy the storage account for the change to take effect."
44+
isCorrect: false
45+
explanation: "No redeployment is needed. File changes are served immediately."
46+
- content: "The updated content is available at the public endpoint without redeployment."
47+
isCorrect: true
48+
explanation: "Uploading an updated file to the $web container replaces the existing file, and the change is reflected at the public endpoint."
49+
- content: "The previous version is archived and the new version enters a staging state."
50+
isCorrect: false
51+
explanation: "Static website hosting does not use staging or archiving. Updated files replace existing ones immediately."
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.guided-project-deploy-static-website-blob-storage.summary
3+
title: Summary
4+
metadata:
5+
title: Summary
6+
description: "Summary"
7+
ms.date: 03/25/2026
8+
author: wwlpublish
9+
ms.author: robbarefoot
10+
ms.topic: unit
11+
ms.custom:
12+
- N/A
13+
durationInMinutes: 2
14+
content: |
15+
[!include[](includes/8-summary.md)]
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
This guided project focuses on deploying a static website using Azure Blob Storage.
2+
3+
Azure Blob Storage can serve HTML, CSS, and image files directly to browsers without a web server. When you enable the static website hosting feature on a storage account, Azure creates a public endpoint and a special container where you upload your site files.
4+
5+
## Scenario
6+
7+
Your marketing team needs to publish a product landing page quickly without provisioning virtual machines or web servers. The team wants to upload content, verify it's live, push an update, and confirm the change—all through the Azure portal.
8+
9+
- Exercise 1 - Create a storage account and enable static website hosting.
10+
- Exercise 2 - Upload HTML content and verify the live site.
11+
- Exercise 3 - Update the site content and confirm the change.
12+
13+
:::image type="content" source="../media/overview-architecture.png" alt-text="Diagram showing a static website on Azure Blob Storage with storage account, $web container, and public endpoint." border="false":::
14+
15+
By the end of this project, you have a working public website hosted entirely from blob storage, and you understand how to publish and update content with minimal cost.
16+
17+
> [!NOTE]
18+
> This is a guided project module where you complete a project by following step-by-step instructions.
19+
20+
## Skilling areas
21+
22+
In this project, you practice skills in the following areas:
23+
24+
**Create and configure a storage account**
25+
+ Create a resource group and storage account.
26+
+ Enable static website hosting and configure index and error documents.
27+
+ Locate the primary endpoint URL.
28+
29+
**Upload and manage blob content**
30+
+ Upload HTML files to the $web container.
31+
+ Overwrite existing blobs to publish content updates.
32+
+ Review blob properties including access tier and content type.
33+
34+
**Verify a public endpoint**
35+
+ Browse to the static website endpoint and confirm content.
36+
+ Test a custom 404 error page.
37+
+ Verify that content updates appear immediately.
38+
39+
> [!IMPORTANT]
40+
> This project uses the Azure portal for every step. No prior Azure experience is required.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
This guided project consists of the following exercises:
2+
3+
- **Create storage account and enable hosting**
4+
- Upload and verify site content
5+
- Update the site content
6+
7+
In this exercise, you create a resource group, set up a storage account, and turn on the static website hosting feature. By the end, you have a public URL ready to serve web content—even though you haven't uploaded any files yet.
8+
9+
This exercise includes the following tasks:
10+
11+
- Prepare the environment
12+
- Create the storage account
13+
- Enable static website hosting
14+
15+
**Outcome:** A storage account with static website hosting enabled and a public endpoint ready to serve content.
16+
17+
> [!TIP]
18+
> Pause after each major action and confirm the page status before moving on. This habit prevents compounding mistakes.
19+
20+
## Task 1: Prepare the environment
21+
22+
Set up your Azure environment before you begin. You create a resource group to organize all the resources for this project together, which makes cleanup easier when you finish.
23+
24+
> [!WARNING]
25+
> This project creates Azure resources that may incur charges. Complete the clean-up unit when you're done to avoid unintended expenses.
26+
27+
1. Sign in to the [Azure portal](https://portal.azure.com) with an account that has permissions to create storage resources.
28+
2. In the portal search bar, search for **Resource groups** and select **Resource groups**.
29+
3. Select **+ Create**. Name the resource group **rg-gp-static-website**, choose your preferred region, and select **Review + create** then **Create**.
30+
31+
## Task 2: Create the storage account
32+
33+
Create a general-purpose storage account that will host your website files. Azure Blob Storage can serve static HTML, CSS, and image files directly to browsers without requiring a web server.
34+
35+
1. In the portal search bar, search for **Storage accounts** and select **Storage accounts**.
36+
2. Select **+ Create**.
37+
3. On the Basics tab, select **rg-gp-static-website** as the resource group.
38+
4. For **Storage account name**, enter a globally unique name (for example, **stgpstaticsite** followed by your initials and a number). Storage account names must be 3-24 characters, lowercase letters and numbers only.
39+
5. For **Region**, choose the same region as the resource group.
40+
6. For **Preferred Storage Type**, select **Azure Blob Storage or Azure Data Lake Storage Gen 2**.
41+
7. For **Performance**, select **Standard**.
42+
8. For **Redundancy**, select **Locally-redundant storage (LRS)**.
43+
9. Select **Review + create** and then select **Create**.
44+
10. When deployment finishes, select **Go to resource**.
45+
46+
## Task 3: Enable static website hosting
47+
48+
Turn on the built-in static website feature. This creates a special container named **$web** where you upload your site files, and provides a public URL that serves those files to visitors.
49+
50+
1. In the storage account left menu, under **Data management**, select **Static website**.
51+
2. Set Static website to **Enabled**.
52+
3. For **Index document name**, enter **index.html**.
53+
4. For **Error document path**, enter **404.html**.
54+
5. Select **Save**.
55+
6. Note the **Primary endpoint** URL that appears after saving. This is the public URL for your website.
56+
57+
> [!NOTE]
58+
> **Validation step:** Confirm that static website hosting shows **Enabled**, and that a Primary endpoint URL is displayed.
59+
60+
> [!NOTE]
61+
> Each exercise includes validation steps like this one. Track your results as you go—you'll review them all in the validation unit at the end of this module.

0 commit comments

Comments
 (0)