8000 GitHub - madebygps/azure-resume: My Azure Resume Challenge
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

madebygps/azure-resume

Repository files navigation

🚀 GPS's Azure Resume

This is my Cloud Resume Challenge built on Azure. It's a static website hosted on Azure Storage, with a visitor counter built on Azure Functions. The website is built with HTML, CSS, and JavaScript. The visitor counter is built with .NET 8.0 and Azure Functions using the isolated process model.

If you'd like to build your own, here is the YouTube video video.

architecture

📋 Table of Contents

🔍 Demo

View it live here

📝 Pre-requisites

I leverage Dev Containers for my development environment. If you'd like to use it, you'll need to install Docker and the Dev Containers extension for VS Code.

🏗️ Structure

  • frontend/: Contains the website.
    • main.js: Contains visitor counter code.
  • api/: Contains the .NET 8.0 API deployed on Azure Functions.
    • Program.cs: Contains the dependency injection setup and DefaultAzureCredential configuration.
    • CosmosDbService.cs: Service for interacting with Cosmos DB.
    • GetVisitorCounter.cs: Contains the visitor counter code.
  • .github/workflows/: Contains CI/CD workflow configurations.
  • .devcontainer: Contains the container configuration for VS Code.

⚙️ Setup

  1. Make sure Docker is running.
  2. Open the project in VS Code.
  3. Press Ctrl/Cmd + Shift + P to open the command palette.
  4. Type "Reopen in Container" and select:
    • .NET API container for working with the Azure Functions backend.
    • JS Frontend container for working with the frontend.
    • Tests container for running tests.
  5. VS Code will reload and you'll be in the container.

🌐 Frontend Resources

The front-end is a static site with HTML, CSS, and JavaScript. It includes a visitor counter that fetches data via an API call to an Azure Function.

⚡ Backend Resources

The back-end is an HTTP triggered Azure Function with Azure Cosmos DB integration. The function is built using .NET 8.0 with the isolated process model and uses DefaultAzureCredential for secure authentication to Cosmos DB.

🔑 Authentication

The application uses DefaultAzureCredential to authenticate with Azure Cosmos DB. This simplifies credential management by supporting multiple authentication methods and improves security by eliminating the need for connection strings with sensitive keys.

💻 Local Development

  1. Copy api/local.settings.json.template to api/local.settings.json
  2. Set the CosmosDbEndpoint to your Cosmos DB endpoint URL
  3. For local authentication, you can use:
    • Azure CLI: Sign in with az login before running the application
    • Azure Developer CLI: Sign in with azd auth login before running the application
    • Visual Studio: Use Visual Studio authentication
    • Service Principal: Set AZURE_TENANT_ID, AZURE_CLIENT_ID, and AZURE_CLIENT_SECRET environment variables

The DefaultAzureCredential will automatically detect and use credentials from the development environment.

☁️ Azure Deployment

When deployed to Azure Functions, the app will use the Function App's managed identity:

  1. Enable system-assigned managed identity on your Function App
  2. Grant the managed identity appropriate permissions on your Cosmos DB account
  3. Configure the app setting in your Function App:
    • CosmosDbEndpoint: Your Cosmos DB endpoint URL
    • CosmosDbDatabaseName: Your database name (e.g., "AzureResume")
    • CosmosDbContainerName: Your container name (e.g., "Counter")

🧪 Testing Resources

Testing is important. Though my tests are simple, they exist. I am using .NET but some of these resources will apply to any language.

🔄 CI/CD Resources

📌 TO DO

  • 🔄 Implement tests into CI/CD.
  • 🏗️ Create IaC files.
  • 📝 Improve tests and tests documentation.

👥 Contributing

Contributions are welcome! Please read the contributing guidelines first.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

About

My Azure Resume Challenge

Topics

Resources

Stars

Watchers

Forks

Contributors 2

  •  
  •  
0