MidПрактика2 min

Blob Storage и CDN

Azure Blob static website с CDN и custom domain для CRC

Архитектура фронтенда CRC на Azure

Браузер → Azure CDN → Blob Storage ($web container)
    ↓
Custom Domain (HTTPS) → Azure CDN endpoint

Создание Storage Account

# Resource Group
az group create --name crc-resources --location westeurope

# Storage Account
az storage account create \
  --name ivanpetrovresume \
  --resource-group crc-resources \
  --location westeurope \
  --sku Standard_LRS \
  --kind StorageV2 \
  --min-tls-version TLS1_2

# Включаем Static Website
az storage blob service-properties update \
  --account-name ivanpetrovresume \
  --static-website \
  --index-document index.html \
  --404-document error.html

# Получаем URL
az storage account show \
  --name ivanpetrovresume \
  --query 'primaryEndpoints.web' --output tsv
# https://ivanpetrovresume.z6.web.core.windows.net/

Загрузка файлов

# Загрузка файлов в $web контейнер
az storage blob upload-batch \
  --account-name ivanpetrovresume \
  --source ./frontend/ \
  --destination '$web' \
  --overwrite \
  --content-cache-control "max-age=3600"

# Установка Content-Type для HTML
az storage blob update \
  --account-name ivanpetrovresume \
  --container-name '$web' \
  --name index.html \
  --content-type "text/html; charset=utf-8"

Azure CDN

# CDN Profile
az cdn profile create \
  --resource-group crc-resources \
  --name crc-cdn-profile \
  --sku Standard_Microsoft

# CDN Endpoint
az cdn endpoint create \
  --resource-group crc-resources \
  --profile-name crc-cdn-profile \
  --name ivanpetrov-resume \
  --origin ivanpetrovresume.z6.web.core.windows.net \
  --origin-host-header ivanpetrovresume.z6.web.core.windows.net \
  --enable-compression \
  --content-types-to-compress "text/html" "text/css" "application/javascript"

# Custom Domain
az cdn custom-domain create \
  --resource-group crc-resources \
  --profile-name crc-cdn-profile \
  --endpoint-name ivanpetrov-resume \
  --hostname resume.ivanpetrov.com \
  --name resume

# HTTPS
az cdn custom-domain enable-https \
  --resource-group crc-resources \
  --profile-name crc-cdn-profile \
  --endpoint-name ivanpetrov-resume \
  --name resume

Преимущества Azure подхода

Преимущество Описание
Автоматический HTTPS Static website endpoint работает через HTTPS
Простая очистка az group delete удаляет всё
Встроенная компрессия CDN сжимает HTML/CSS/JS
Бесплатный SSL Azure-managed сертификат

Инвалидация кэша

az cdn endpoint purge \
  --resource-group crc-resources \
  --profile-name crc-cdn-profile \
  --name ivanpetrov-resume \
  --content-paths "/*"

Проверь себя

Зачем указывать origin-host-header при создании CDN endpoint?

Какое преимущество Azure имеет перед AWS для очистки CRC-ресурсов?

Поддерживает ли Azure Blob Static Website HTTPS автоматически?

Какой SKU рекомендуется для Azure CDN в CRC?

Какой контейнер Blob Storage используется для static website файлов?