Skip to content

Provider Reference

Providers own authentication, location discovery, target resolution, and the session passed to tasks. Use anvil list --providers to inspect installed providers and anvil validate --providers to validate their contracts.

Install only the SDK extras required by your workflows:

pip install anvil
pip install "anvil[azure]"
pip install "anvil[cloudflare]"
pip install "anvil[datadog]"
pip install "anvil[gcp]"
pip install "anvil[github]"
pip install "anvil[gitlab]"
pip install "anvil[pagerduty]"

AWS support is included in the base installation.

At a Glance

Provider Modes Default location Target filtering
AWS organization, accounts us-east-1 Discovery include/exclude or explicit account IDs
Azure tenant, subscriptions eastus Discovery include/exclude or explicit subscription IDs
Cloudflare accounts, zones global Discovery include/exclude or explicit IDs
Datadog organization global None; one organization per target
GCP projects; organization reserved us-central1 Project discovery or explicit project IDs
GitHub organizations, repositories global Explicit include required
GitLab groups, projects global Discovery include/exclude or explicit IDs/paths
PagerDuty account global None; one account per target

See selectors and regions for complete filtering, special keyword, all, and glob rules.

The built-in components page lists the stock tasks for every provider, their target assumptions, and their important metadata inputs.

Authentication Check Depth

anvil validate --auth --config-file targets.yaml always validates the target shape and configured credential source, but not every provider performs a live request at this phase:

Provider Authentication validation
AWS Live STS identity check
Azure Live Azure Resource Manager token acquisition
Cloudflare Credential resolution and client construction; permissions deferred
Datadog Live API/application-key validation
GCP Deferred until runtime session construction
GitHub Token or App setting resolution; no API request
GitLab Live authenticated API request
PagerDuty Token resolution and client construction; no API request

Discovery and task execution can still reveal resource-level permission gaps after an authentication check succeeds.

AWS

Use organization to discover active organization accounts. Use accounts for explicit account IDs. profile selects a boto3 profile, and role_name enables role assumption into selected accounts.

provider:
  name: aws
  mode: organization
  options:
    profile: security-audit
    role_name: OrganizationAccountAccessRole
exclude:
  - payer
regions:
  - us-*
# ...

In accounts mode, include is required. Without role_name, exactly one account must be selected and the current credentials must resolve directly to that account. AWS tasks receive a boto3-compatible session scoped to the current account and Region.

Azure

Use tenant to discover subscriptions or subscriptions with an explicit include list. Omit auth options to use DefaultAzureCredential.

provider:
  name: azure
  mode: tenant
  options:
    tenant_id: 11111111-2222-3333-4444-555555555555
include:
  - aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee
regions:
  - eastus
# ...

For client-secret auth, provide tenant_id, client_id, and client_secret together. Without client_secret, client_id can select a managed identity. Azure tasks receive the credential, subscription ID, and location context.

Cloudflare

Use accounts for account-member or zone inventory and zones for DNS work. Targets use only global.

provider:
  name: cloudflare
  mode: zones
  options:
    api_token_env: CLOUDFLARE_API_TOKEN
    account_id: '11111111111111111111111111111111'
include:
  - aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
regions:
  - global
# ...

account_id is valid only in zones mode. Authenticate with api_token_env or the paired api_key_env and api_email_env. base_url supports alternate API endpoints. Shared provider profiles are supported.

Datadog

Each target represents one key-bound Datadog organization. include and exclude are not supported, and the location is always global.

provider:
  name: datadog
  mode: organization
  options:
    site: datadoghq.eu
    api_key_env: DD_API_KEY
    app_key_env: DD_APP_KEY
regions:
  - global
# ...

Use site as a hostname, not a URL. Configure multiple top-level targets and profiles for multiple organizations or sites.

GCP

Use projects with explicit project IDs or omit include to discover accessible projects. organization and organization_id are reserved, but organization discovery is not implemented.

provider:
  name: gcp
  mode: projects
  options:
    quota_project_id: anvil-billing-project
include:
  - anvil-production
regions:
  - us-*
# ...

Omit credentials_path to use application-default credentials. When supplied, it selects a credentials file. GCP resolves Compute regions whose status is UP and passes project, quota-project, credential, and region context to tasks.

GitHub

Both modes require include. Organization values are owner logins; repository values use owner/repository. exclude is not supported, and the location is always global.

provider:
  name: github
  mode: repositories
  options:
    token_env: GITHUB_TOKEN
include:
  - octo-org/platform-api
regions:
  - global
# ...

Authenticate with a token or a GitHub App using app_id plus exactly one of private_key_env or private_key_path. api_url and api_version support GitHub Enterprise and explicit API versions. Shared profiles are supported.

GitLab

Use groups or projects. Omit selection to discover visible resources, use include for exact numeric IDs or paths, or use exclude with discovery.

provider:
  name: gitlab
  mode: projects
  options:
    token_env: GITLAB_TOKEN
    url: https://gitlab.example.com
include:
  - platform/application-api
regions:
  - global
# ...

token_env is required directly or through a profile. auth_type accepts private or oauth, and ca_cert_path supports private certificate authorities. GitLab targets use only global.

PagerDuty

Each target represents one PagerDuty account. Target-level include and exclude are not supported, and the location is always global.

provider:
  name: pagerduty
  mode: account
  options:
    token_env: PAGERDUTY_API_TOKEN
    subdomain: acme
regions:
  - global
# ...

auth_type accepts token or bearer. Use api_url for regional endpoints and from_email when an API operation requires a requester identity. Configure one top-level target per account.

Validate Before Running

anvil validate --providers
anvil validate --config-file targets.yaml
anvil validate --auth --config-file targets.yaml

Provider contract and configuration validation are offline. Authentication validation calls the selected provider's access check but does not run tasks.