Configure the DynamoDB data source
This document explains how to configure the DynamoDB data source in Grafana. DynamoDB uses the AWS SDK for Go to connect to your DynamoDB instance using AWS IAM credentials.
Note
The DynamoDB data source is an Enterprise plugin. It’s available with a Grafana Cloud Pro or Advanced plan and Grafana Enterprise. For installation instructions, refer to Install Grafana Enterprise plugins.
Before you begin
Before configuring the data source, ensure you have:
- Grafana permissions: Organization administrator role.
- A Grafana Cloud Pro or Advanced plan or an activated on-prem Grafana Enterprise license.
- AWS credentials: An IAM user with an access key and secret key, a shared credentials file configured on the Grafana server, an EC2 instance role, or an IAM role to assume.
- DynamoDB permissions: The IAM identity must have
dynamodb:PartiQLSelectpermission on the tables you want to query. For write operations, additional PartiQL permissions may be needed.
Key concepts
If you’re new to AWS, these terms are used throughout the configuration:
Add the data source
To add the data source:
- Click Connections in the left-side menu.
- Click Add new connection.
- Type
DynamoDBin the search bar. - Select DynamoDB.
- Click Add new data source.
Configure settings
The following table describes the available connection settings:
Authentication
The DynamoDB data source supports the standard AWS authentication methods provided by the shared AWS connection component. Choose the method that fits your deployment.
Note
Some authentication methods, and the ability to assume a role, may be restricted by your Grafana administrator through the
allowed_auth_providersandassume_role_enabledsettings ingrafana.ini. If a method you expect to see is missing or returns an error, ask your Grafana administrator to check these settings. Refer to Troubleshooting authentication method not allowed.
For more information about authentication options and configuration, refer to AWS authentication.
Access keys
Use static IAM access keys to authenticate directly with AWS. This is the default authentication method.
To configure access key authentication:
- Select Access & secret key from the Authentication Provider drop-down.
- Enter your Access Key ID.
- Enter your Secret Access Key.
- Optionally, enter a Session Token if using temporary credentials.
- Select your Default Region.
AWS credentials file
Use a shared credentials file stored on the Grafana server to authenticate. This method reads credentials from ~/.aws/credentials.
To configure credentials file authentication:
- Select Credentials file from the Authentication Provider drop-down.
- Enter the Credentials Profile Name if you use a non-default profile.
- Select your Default Region.
EC2 IAM role
Use the IAM role attached to the EC2 instance (or the IAM Role for Service Accounts, IRSA, in Kubernetes) that Grafana is running on. No credentials are entered in the data source configuration.
To configure EC2 IAM role authentication:
- Select EC2 IAM Role from the Authentication Provider drop-down.
- Select your Default Region.
AWS SDK Default
Use the default AWS SDK credential chain, which checks environment variables, shared configuration files, and container/instance metadata, in that order.
To configure AWS SDK Default authentication:
- Select AWS SDK Default from the Authentication Provider drop-down.
- Select your Default Region.
Grafana Assume Role
Available only in Grafana Cloud. Use temporary credentials managed by Grafana to assume an IAM role on your behalf.
To configure Grafana Assume Role authentication:
- Select Grafana Assume Role from the Authentication Provider drop-down.
- Select your Default Region.
Assume role
You can layer an assumed IAM role on top of any of the authentication methods described above (except Grafana Assume Role, which manages its own role). This is commonly used for cross-account access to DynamoDB tables.
To configure an assumed role:
- Configure one of the base authentication methods above.
- Enter the Assume Role ARN.
- Optionally, enter an External ID if required by the role’s trust policy.
Note
To assume a role, your Grafana administrator must set
assume_role_enabledto true in the [aws] section ofgrafana.ini. If assume role is disabled, Save & test fails. Refer to Authentication method not allowed.
Verify the connection
Click Save & test to verify the connection. A Data source is working message confirms that Grafana can connect to your DynamoDB instance.
If the test fails, refer to Troubleshoot DynamoDB data source issues for common errors and solutions.
Provision the data source
You can define the data source in YAML files as part of the Grafana provisioning system. For more information, refer to Provisioning Grafana data sources.
Advanced settings
The following optional settings are available through provisioning only and don’t appear in the UI:
Include these in jsonData to override the defaults.
Access key provisioning
apiVersion: 1
datasources:
- name: DynamoDB
type: grafana-dynamodb-datasource
jsonData:
authType: keys
defaultRegion: us-west-2
isV2: true
secureJsonData:
accessKey: <ACCESS_KEY_ID>
secretKey: <SECRET_ACCESS_KEY>To include a session token for temporary credentials, add sessionToken to secureJsonData:
apiVersion: 1
datasources:
- name: DynamoDB
type: grafana-dynamodb-datasource
jsonData:
authType: keys
defaultRegion: us-west-2
isV2: true
secureJsonData:
accessKey: <ACCESS_KEY_ID>
secretKey: <SECRET_ACCESS_KEY>
sessionToken: <SESSION_TOKEN>Credentials file provisioning
apiVersion: 1
datasources:
- name: DynamoDB
type: grafana-dynamodb-datasource
jsonData:
authType: credentials
defaultRegion: us-west-2
profile: <PROFILE_NAME>
isV2: trueAssume role provisioning
Add assumeRoleARN (and optionally externalId) to jsonData on top of any base authentication method. For example, with access keys:
apiVersion: 1
datasources:
- name: DynamoDB
type: grafana-dynamodb-datasource
jsonData:
authType: keys
defaultRegion: us-west-2
assumeRoleARN: <ROLE_ARN>
externalId: <EXTERNAL_ID>
isV2: true
secureJsonData:
accessKey: <ACCESS_KEY_ID>
secretKey: <SECRET_ACCESS_KEY>Provision with Terraform
You can provision the DynamoDB data source using the Grafana Terraform provider.
resource "grafana_data_source" "dynamodb" {
type = "grafana-dynamodb-datasource"
name = "DynamoDB"
json_data_encoded = jsonencode({
authType = "keys"
defaultRegion = "us-west-2"
isV2 = true
})
secure_json_data_encoded = jsonencode({
accessKey = var.aws_access_key_id
secretKey = var.aws_secret_access_key
})
}For credentials file authentication:
resource "grafana_data_source" "dynamodb" {
type = "grafana-dynamodb-datasource"
name = "DynamoDB"
json_data_encoded = jsonencode({
authType = "credentials"
defaultRegion = "us-west-2"
profile = "my-profile"
isV2 = true
})
}

