Getting Started
Customer Preview
The AWS VPC IPAM integration is currently in customer preview and is not yet generally available. Contact support@netboxlabs.com to join the preview.
This guide covers how to set up and run the AWS VPC IPAM Integration for NetBox.
- Prerequisites
- Host Requirements
- AWS Requirements
- NetBox Setup
- Agent Setup and Configuration
- Expected Output
- View and Apply Discovered Data in NetBox Assurance
- View the AWS VPC IPAM Data in NetBox
- Additional Resources
Prerequisites
Before you begin, ensure you have the following:
- NetBox Cloud or NetBox Enterprise with NetBox Assurance
- Orb Agent Pro credentials (required to download the integration agent image)
- AWS VPC IPAM enabled in your AWS account (the Advanced Tier is required for private IP management)
- AWS credentials with the IAM permissions listed below
- Host System with Docker support
- Network connectivity between your host and both your NetBox instance and the AWS APIs
Host Requirements
System
- Operating System: Linux, macOS, or Windows with Docker support
- Memory: Minimum 2GB RAM (4GB recommended)
- Storage: 1GB free disk space
- Network: Stable internet connection for pulling Docker images
- Docker: Version 20.10 or later
Network
- Outbound gRPC/gRPCS access to Diode on your NetBox instance (typically port 443 for gRPCS)
- Outbound HTTPS access to the AWS EC2 and STS API endpoints (port 443)
- DNS resolution for both your NetBox instance and the AWS API endpoints
- Firewall rules configured to allow the above connections from your agent host
AWS Requirements
IAM Permissions
The identity used by the integration needs read access to the AWS VPC IPAM APIs. Attach a policy with the following permissions:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeIpams",
"ec2:DescribeIpamScopes",
"ec2:DescribeIpamPools",
"ec2:GetIpamPoolCidrs",
"ec2:GetIpamPoolAllocations",
"ec2:GetIpamResourceCidrs"
],
"Resource": "*"
}
]
}If you use cross-account access (see Multi-Region and Cross-Account), the source identity also needs permission to assume the target role, and the target role carries the IPAM read permissions above:
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::222222222222:role/netbox-ipam-reader"
}Choose an authentication method
The integration builds a boto3 EC2 client and uses the standard AWS credential chain. Choose the method that fits your environment. In every case you must set the AWS region (or regions) through the AWS_VPC_IPAM_REGION config key.
- Environment variables - set
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEY(andAWS_SESSION_TOKENfor temporary or SSO credentials). These are read from the agent container environment. - AWS CLI profile - set the
AWS_PROFILEconfig key to use a named profile from a mounted~/.aws/credentialsfile. - IAM role - when running on AWS infrastructure (EC2, ECS), attach an instance or task role. No credential config is needed beyond the region.
- Cross-account role assumption - set the
AWS_ROLE_ARNconfig key to assume a role in another account viasts:AssumeRolebefore reading IPAM. The source credentials come from any of the methods above.
The AWS region is supplied through AWS_VPC_IPAM_REGION in the policy config, not through the AWS_DEFAULT_REGION credential chain variable.
NetBox Setup
Generate Diode Client Credentials
- Log into your NetBox instance
- Navigate to Diode → Client Credentials
- Click + Add a Credential
- Enter a descriptive name (e.g., "AWS VPC IPAM Integration")
- Click Create

- Important: Copy and securely store the Client ID and Client Secret - you will need these in the agent configuration

- Navigate to Diode → Settings
- Copy the value of the Diode target - you will need this in the agent configuration

Agent Setup and Configuration
You can deploy multiple agents, each configured to sync data from a different AWS account or set of regions.
Step 1: Authenticate to the NetBox Labs Image Registry
From your host machine, authenticate to the NetBox Labs registry using the CUSTOMER-IDENTIFIER and Token provided by the NetBox Labs team:
docker login quay.io -u netboxlabs+<CUSTOMER-ID> -p <TOKEN>Example session
% docker login quay.io -u netboxlabs+org-abc123def456 -p <token>
Login SucceededThen pull the agent image:
docker pull quay.io/netboxlabs/orb-agent-pro:developStep 2: Configure the Agent
- Create the configuration file (you can name the file anything you like):
touch agent.yaml- Edit the configuration file with your preferred editor and add the following configuration. Important: Replace
grpcs://your-instance.netboxcloud.com/diodewith the value from Diode > Settings > Diode target in the NetBox UI:
orb:
config_manager:
active: local
backends:
worker:
common:
diode:
target: grpcs://your-instance.netboxcloud.com/diode # Get this value from Diode > Settings > Diode target
client_id: ${DIODE_CLIENT_ID}
client_secret: ${DIODE_CLIENT_SECRET}
agent_name: aws_vpc_ipam_01 # Use a meaningful name to identify this agent
policies:
worker:
aws_vpc_ipam_worker:
config:
package: nbl_aws_vpc_ipam
schedule: "0 2 * * *" # Daily at 2:00 AM. Set your desired schedule (see examples below)
timeout: 5
AWS_VPC_IPAM_REGION: us-east-1 # Required: single region, comma-separated list, or YAML list
# AWS_PROFILE: my-profile # Optional: named AWS CLI profile to use
# AWS_VPC_IPAM_SCOPE_TYPE: private # Optional: private (default), public, or all
# AWS_VPC_IPAM_SCOPE_IDS: # Optional: only ingest these scope IDs
# - ipam-scope-0abc123
# AWS_VPC_IPAM_RESOURCE_TYPES: # Optional: only ingest these resource-CIDR types
# - vpc
# - subnet
# AWS_ROLE_ARN: arn:aws:iam::222222222222:role/netbox-ipam-reader # Optional: cross-account role
# AWS_ROLE_SESSION_NAME: netbox-prod-ipam # Optional: assumed-role session name
scope: # Required - leave empty (AWS VPC IPAM filtering is done via the config keys above)Schedule Examples
The schedule field uses cron syntax. Here are some common examples:
"0 */6 * * *"- Every 6 hours (e.g., 00:00, 06:00, 12:00, 18:00)"0 2 * * *"- Daily at 2:00 AM"0 9 * * 1"- Weekly on Monday at 9:00 AM
No bootstrap step required
Unlike some integrations, the AWS VPC IPAM integration does not create custom fields or other static content, so there is no bootstrap mode. You can run it directly with your normal configuration.
Ingestion Filters
Three optional config keys narrow what gets synced into NetBox. All are unset by default, which means everything is ingested (subject to the scope type default of private).
AWS_VPC_IPAM_SCOPE_TYPE- one ofprivate(default),public, orall. Filters IPAM scopes by type. Most customers only want private scopes in NetBox.AWS_VPC_IPAM_SCOPE_IDS- a comma-separated string or YAML list of IPAM scope IDs. When set, only those scopes are ingested. Applied on top ofAWS_VPC_IPAM_SCOPE_TYPE. Useful for keeping legacy or test scopes out of NetBox.AWS_VPC_IPAM_RESOURCE_TYPES- a comma-separated string or YAML list matched case-insensitively against each resource CIDR'sResourceType(vpc,subnet,eip,eni,public-ipv4-pool,ipv6-pool,anycast-ip-list). Large fleets can drop per-address noise (eip,eni) while keepingvpcandsubnetprefixes.
Example: only private scopes, only VPC and subnet CIDRs
config:
AWS_VPC_IPAM_SCOPE_TYPE: private
AWS_VPC_IPAM_RESOURCE_TYPES:
- vpc
- subnetMulti-Region and Cross-Account
To sync more than one region in a single policy, pass a comma-separated list or a YAML list to AWS_VPC_IPAM_REGION. Each region is processed independently. A per-region AWS failure (throttling, IAM denial, or IPAM not enabled) is logged and skipped, and the run continues with the remaining regions. Missing or incomplete credentials abort the whole run, since they apply globally.
config:
AWS_VPC_IPAM_REGION:
- us-east-1
- eu-west-1
- ap-south-1To read IPAM data from a different AWS account (for example a hub-and-spoke setup where IPAM is centralized), set AWS_ROLE_ARN. Before querying IPAM the integration assumes that role via sts:AssumeRole using your source credentials. Optionally set AWS_ROLE_SESSION_NAME; it defaults to netbox-orb-agent-aws-vpc-ipam and surfaces in the target account's CloudTrail.
config:
AWS_VPC_IPAM_REGION: us-east-1
AWS_ROLE_ARN: arn:aws:iam::222222222222:role/netbox-ipam-reader
AWS_ROLE_SESSION_NAME: netbox-prod-ipamOptional - Dry Run Mode
The agent can be run in Dry Run mode, which writes discovered data to a JSON file instead of sending it to NetBox. This is useful for troubleshooting or reviewing what the integration will ingest before committing to your NetBox instance.
Enable dry run in the diode section of your agent configuration file:
diode:
dry_run: true
dry_run_output_dir: /opt/orb/ # saves the output file to this directoryStep 3: Run the Agent
Run the agent to synchronize data from AWS VPC IPAM into NetBox.
Method 1: Set Environment Variables Manually
- Export Diode credentials as environment variables:
export DIODE_CLIENT_ID="your-client-id"
export DIODE_CLIENT_SECRET="your-client-secret"- Export AWS credentials as environment variables (skip this step if you use an AWS profile or an IAM role):
export AWS_ACCESS_KEY_ID="your-access-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret-access-key"
# export AWS_SESSION_TOKEN="your-session-token" # Only for temporary/SSO credentials- Run the agent with the following command:
docker run \
-v $PWD:/opt/orb/ \
-e DIODE_CLIENT_SECRET \
-e DIODE_CLIENT_ID \
-e AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY \
quay.io/netboxlabs/orb-agent-pro:develop \
run -c /opt/orb/agent.yamlMethod 2: Use a .env File (Recommended)
- Create a
.envfile in your current directory:
touch .env- Edit the
.envfile with your preferred editor and add the following content:
## NetBox Diode credentials (from NetBox Setup)
DIODE_CLIENT_ID=your-client-id
DIODE_CLIENT_SECRET=your-client-secret
## AWS credentials
AWS_ACCESS_KEY_ID=your-access-key-id
AWS_SECRET_ACCESS_KEY=your-secret-access-key
# AWS_SESSION_TOKEN=your-session-token # Only for temporary/SSO credentialsImportant
Replace the placeholder values with your actual credentials:
your-client-idandyour-client-secretfrom the NetBox Diode setupyour-access-key-idandyour-secret-access-keywith the AWS credentials that have the IAM permissions listed above
- Run the agent with the following command:
docker run \
-v $PWD:/opt/orb/ \
--env-file .env \
quay.io/netboxlabs/orb-agent-pro:develop \
run -c /opt/orb/agent.yamlSecurity Best Practice
Add .env to your .gitignore file to prevent accidentally committing credentials to version control:
echo ".env" >> .gitignoreExpected Output
After starting the agent, depending on the schedule you defined, you should see output similar to the following:
{"time":"2026-07-20T02:00:01.123456789Z","level":"INFO","msg":"worker stderr","log":"INFO:nbl_aws_vpc_ipam.aws_vpc_ipam_diode:Found 1 IPAM(s) in region us-east-1"}
{"time":"2026-07-20T02:00:02.234567890Z","level":"INFO","msg":"worker stderr","log":"INFO:nbl_aws_vpc_ipam.aws_vpc_ipam_diode:Region us-east-1 summary: 4 VRFs, 27 Prefixes, 2 IPs to ingest."}
{"time":"2026-07-20T02:00:02.345678901Z","level":"INFO","msg":"worker stderr","log":"INFO:nbl_aws_vpc_ipam.aws_vpc_ipam_diode:AWS VPC IPAM sync complete: 1/1 regions succeeded, 33 entities emitted."}
{"time":"2026-07-20T02:00:03.456789012Z","level":"INFO","msg":"worker stderr","log":"INFO:worker.policy.runner:Policy aws_vpc_ipam_worker: Successful ingestion"}
{"time":"2026-07-20T02:00:03.567890123Z","level":"INFO","msg":"worker stderr","log":"INFO:apscheduler.executors.default:Job \"PolicyRunner.run (trigger: cron[month='*', day='*', day_of_week='*', hour='2', minute='0'], next run at: 2026-07-21 02:00:00 UTC)\" executed successfully"}Monitoring and Testing
Success Indicators: Look for Successful ingestion in the output, which confirms data was sent to your NetBox instance via Diode.
Testing Mode: For testing purposes, run the agent once and then stop it by pressing Ctrl+C. This is useful for verifying configuration before setting up continuous operation.
Continuous Operation: The agent will continue running according to your schedule until manually stopped or the container is terminated.
View and Apply Discovered Data in NetBox Assurance
Once the agent has run, AWS VPC IPAM data is staged as deviations in the NetBox Assurance UI.
NetBox Assurance gives you control over operational drift by identifying deviations between your operational state and NetBox, and analytics to understand drift, plan for remediation, and ultimately take action.
Understanding Deviations
Deviations are the delta between the data already in NetBox as the Network Source of Truth, versus the actual operational state as discovered by the integration.
From an initial run, all discovered data may appear as deviations since it did not previously exist in NetBox. Once the initial sync is applied, subsequent runs will surface only new or changed data.
Accessing NetBox Assurance
- Navigate to your NetBox instance
- Click on Assurance in the main navigation menu
Explore Deviation Types
- Click on Deviation Types to view the types of deviations discovered

- Click on the Name of a deviation type to view its deviations
- Click on the Name of an individual deviation to view the details
View Active Deviations
- Click on Active Deviations to view all deviations that have not yet been Applied or Ignored

- Click on the Name of a deviation to view the details
Apply Deviations
- Select all the deviations you want to apply. If you are working with a large number of deviations, first set the Per Page view to 500:

- Select the first deviation, hold
SHIFTand select the last one, then click Apply Selected:
- Click Apply X Deviations to write the deviations to the NetBox database:

Apply Deviations to a Branch
Instead of writing to the Main NetBox database branch, you can select another branch from the drop-down and apply deviations there.
Assurance Docs
For more detailed information on working with NetBox Assurance, refer to the documentation.
View the AWS VPC IPAM Data in NetBox
After running the integration and applying the discovered data, you can view it in the NetBox UI.
- Navigate to IPAM → VRFs to view the VRFs created for each IPAM scope and VPC
- Navigate to IPAM → Prefixes to view the synchronized pool and resource CIDRs
- Navigate to IPAM → IP Addresses to view single-host addresses such as Elastic IPs
Filtering by Tag
Filter the IPAM lists by the aws-vpc-ipam tag to view all objects created by the integration, or by the aws:<region> tag (for example aws:us-east-1) to view objects from a specific region.
Additional Resources
Related Documentation
Support
Email support@netboxlabs.com for support.
AWS VPC IPAM Integration
Discover and synchronize IP address data from AWS VPC IP Address Manager (IPAM) into NetBox. This integration is currently in customer preview. Imports IPAM scopes, pools, and allocated CIDRs as VRFs, prefixes, and IP addresses.
Technical Information
AWS VPC IPAM to NetBox object and attribute mappings, configuration keys, authentication, tags, and behavior notes for the AWS VPC IPAM integration.