Skip to content

Refactor Azure Functions integration and enhance project structure#45

Closed
spboyer wants to merge 6 commits into
Azure-Samples:mainfrom
spboyer:azd-validate-template
Closed

Refactor Azure Functions integration and enhance project structure#45
spboyer wants to merge 6 commits into
Azure-Samples:mainfrom
spboyer:azd-validate-template

Conversation

@spboyer
Copy link
Copy Markdown

@spboyer spboyer commented Apr 7, 2025

Refactor the integration of Azure Functions and improve the project structure. Update the Dockerfile for Python 3.10, enhance the development environment, and expand the README with installation and security practices. Implement logging in function handlers, add new API routes, and update Bicep templates for better resource management. Introduce a security scan workflow and add a Code of Conduct and Security Policy. Update dependencies for better management.

spboyer added 2 commits April 7, 2025 18:30
- Updated Dockerfile to use Python 3.10 and install Azure Functions Core Tools.
- Modified devcontainer.json for improved development environment setup.
- Expanded .funcignore to exclude additional files and directories.
- Enhanced README.md with detailed features, installation instructions, and security practices.
- Implemented logging in function handlers and added new API routes.
- Updated Bicep templates for better resource management and diagnostics.
- Added security scan workflow for automated vulnerability checks.
- Introduced Code of Conduct and Security Policy documents.
- Updated requirements.txt with specific package versions for better dependency management.
@github-advanced-security
Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

4 similar comments
@github-advanced-security
Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@github-advanced-security
Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@github-advanced-security
Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

@github-advanced-security
Copy link
Copy Markdown

This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation.

Comment thread .github/workflows/security-scan.yml Fixed
@paulyuk
Copy link
Copy Markdown

paulyuk commented Jul 14, 2025

I like what this PR is aiming to do, but I'd ask we collab on a few implementation details:

@spboyer and @pamelafox could we collab and merge a rev of this with the points above handled?

Comment thread .devcontainer/devcontainer.json Outdated
Comment thread .devcontainer/devcontainer.json
Comment thread README.md Outdated
Comment thread startup.py Outdated
@paulyuk
Copy link
Copy Markdown

paulyuk commented Jul 14, 2025

@copilot please address my comments and Pamelafox's

@paulyuk paulyuk requested a review from Copilot July 14, 2025 20:40
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Refactors Azure Functions integration with FastAPI, enhances infrastructure templates, updates the development container, and expands project documentation and security practices.

  • Reworked function_app entrypoint using FunctionApp and ASGI middleware, removed previous wrapper approach
  • Parameterized and improved Bicep templates (resource group logic, tags, role assignment, outputs)
  • Updated devcontainer Dockerfile to Python 3.10, added security scan workflow, and expanded README/SECURITY docs

Reviewed Changes

Copilot reviewed 22 out of 24 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
startup.py Added simple FastAPI test route
infra/main.bicep Parameterized resource group, tags, module renames, outputs
infra/core/storage/storage-account.bicep Added new storage account parameters and updated resource blocks
infra/core/host/functions.bicep Enabled managed identity, skip role assignment logic, added roleAssignment
infra/core/host/appservice.bicep Unified tags with azd-service-name
host.json Expanded logging config, bumped extensionBundle version, set timeout
function_app.py Defined FastAPI routes, created FunctionApp, applied ASGI middleware
SECURITY.md Added security policy template
README.md Expanded installation instructions, features, and security notice
.devcontainer/Dockerfile Switched base image to Python 3.10, venv creation, updated tools
.github/workflows/security-scan.yml Introduced weekly security scan workflow
Comments suppressed due to low confidence (3)

SECURITY.md:8

  • Replace the placeholder '[SECURITY CONTACT EMAIL]' with an actual security contact email address.
2. Send details of the vulnerability to [SECURITY CONTACT EMAIL].

README.md:91

  • [nitpick] There's a second '## Prerequisites' section here. Consider consolidating duplicate sections to improve the README's clarity.
## Prerequisites

infra/main.bicep:18

  • Using uniqueString(name) reduces the uniqueness domain compared to the original uniqueString(subscription().id, name, location), which may cause name collisions across subscriptions or regions. Consider reverting to the original inputs for collision safety.
var prefix = '${name}-${uniqueString(name)}'

Comment thread infra/main.bicep Outdated
Comment thread infra/core/host/functions.bicep Outdated
Comment thread startup.py Outdated
Copy link
Copy Markdown

@paulyuk paulyuk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please see comments and resolve.

Comment thread .azuredeployrc.json Outdated
Comment thread HttpTrigger/__init__.py Outdated
Comment thread HttpTrigger/function.json Outdated
Comment thread README.md Outdated
Comment thread WrapperFunction/__init__.py Outdated
Comment thread WrapperFunction/function.json Outdated
Comment thread function.json Outdated
Comment thread function_app.py
Comment thread infra/main.bicep
spboyer and others added 2 commits March 12, 2026 14:42
Changes address all 16 review items:

- Revert devcontainer title to 'FastAPI on Azure Functions' (pamelafox)
- Fix postCreateCommand to create venv before installing deps (pamelafox)
- Change 'Azure CLI' to 'Azure Developer CLI (azd)' in README (pamelafox+paulyuk)
- Remove unused startup.py (pamelafox+copilot)
- Remove .azuredeployrc.json (paulyuk)
- Remove HttpTrigger/ directory - not needed in Python v2 (paulyuk)
- Remove WrapperFunction/ directory - not needed in Python v2 (paulyuk)
- Remove root function.json - not needed in Python v2 (paulyuk)
- Update function_app.py to use func.AsgiFunctionApp (paulyuk)
- Update README costs to 'Flex Consumption plan' (paulyuk)
- Replace entire infra/ with AVM-based Bicep from
  functions-quickstart-python-http-azd reference (paulyuk)
- Fix duplicate 'the the' in Bicep description (copilot)
- Remove unused managedIdentity param from functions.bicep (copilot)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Checkov CKV2_GHA_1 requires top-level permissions to be explicitly
restricted, not just at the job level. Added permissions: {} to
security-scan.yml and permissions: { contents: read } to
azure-bicep-validate.yaml.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@spboyer
Copy link
Copy Markdown
Author

spboyer commented Mar 12, 2026

@paulyuk @pamelafox All review feedback has been addressed:

Python v2 Migration: Removed HttpTrigger/, WrapperFunction/, root function.json, startup.py, .azuredeployrc.json. Rewrote function_app.py to use func.AsgiFunctionApp.

Infra (AVM Bicep): Replaced entire infra/ with AVM-based Bicep from functions-quickstart-python-http-azd. Flex Consumption SKU (FC1), managed identity, VNet support.

README & DevContainer: Azure CLI → Azure Developer CLI (azd). Flex Consumption plan. Reverted devcontainer title. Fixed venv in postCreateCommand.

Security: Added top-level permissions to both workflow files (checkov CKV2_GHA_1).

Ready for re-review!

…lve AVM registry modules)

templateanalyzer fails with exit code 21 on Bicep files that use
br/public:avm/... registry references. Bicep validation is already
handled by the dedicated azure-bicep-validate workflow. Scoping the
security scan to checkov only avoids the false failure.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@spboyer spboyer requested a review from paulyuk April 22, 2026 17:04
@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 23, 2026

All review feedback has been addressed — all threads resolved. @paulyuk — ready for another look when you get a chance. CI is passing (4/4 checks green). Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 23, 2026

All 17 review threads have been resolved and CI is passing (security, bicep validation, checkov, CLA all green). @paulyuk — ready for another look whenever you get a chance. Thanks!

@spboyer spboyer requested a review from pamelafox April 23, 2026 03:22
@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 23, 2026

All 17 review threads have been resolved and CI is passing. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 23, 2026

All review feedback has been addressed and all 17 threads have been resolved. CI is passing. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 23, 2026

All 17 review threads have been addressed and resolved. CI is passing ✅. @paulyuk — could you take another look when you get a chance? Happy to make any additional changes needed.

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 24, 2026

All review feedback has been addressed and all 17 review threads are resolved. @paulyuk — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All review feedback appears to be addressed: all review threads are resolved and current checks are green. @paulyuk — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All review feedback appears addressed: there are currently zero unresolved review threads and CI is green on ccadeff. @paulyuk — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All review feedback has been addressed and all review threads are resolved. @paulyuk @pamelafox — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All unresolved review threads are resolved and CI is passing. @copilot-pull-request-reviewer — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All review feedback has been addressed. There are currently zero unresolved review threads and all checks are passing. @copilot-pull-request-reviewer — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented Apr 28, 2026

All previously requested changes appear to be addressed: there are currently zero unresolved review threads and all required checks are green at ccadeff. @pamelafox @paulyuk @copilot-pull-request-reviewer — ready for another look when you get a chance. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 4, 2026

All review feedback has been addressed. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 4, 2026

All review feedback has been addressed and all review threads are resolved. CI is passing. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 4, 2026

All review feedback has been addressed. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 5, 2026

All review feedback has been addressed and all unresolved review threads are resolved. @paulyuk — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 5, 2026

All current review feedback appears addressed: there are zero unresolved review threads on this PR, and the branch is ready for another pass. @paulyuk @pamelafox could you take another look when you have a chance? Thank you.

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 5, 2026

All review feedback has been addressed. @paulyuk @pamelafox — ready for another look. Thanks!

@spboyer
Copy link
Copy Markdown
Author

spboyer commented May 6, 2026

No action taken — closing as part of portfolio cleanup. Reopen if we need to revisit.

@spboyer spboyer closed this May 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants