Lenses Resource Names (LRNs)

LRNs uniquely identify all resources that Lenses understands. Examples are a Lenses User, a Kafka topic or a Kafka-Connect connector.

Use an LRN to specify a resource across all of Lenses, unambiguously:

  • To add topic permissions for a team in IAM permissions.

  • To share a consumer-group reference with a colleague.

LRN format

A canonical LRN has 3 parts called segments. A colon : separates them:

service:resource-type:resource-id

When you use LRNs as resource patterns in IAM, Lenses also accepts shorter patterns like * and service:*. See IAM overview.

service

service is the namespace of the Lenses service that manages a set of resource types.

e.g. kafka for things like topics and consumer groups.

resource-type

resource-type is the type of resources that are served by a service.

e.g. topic for a Kafka topic, consumer-group for a Kafka consumer group. They both belong to the kafka service.

resource-id

resource-id is the unique name or path that identifies a resource. The resource ID is specific to a service and resource type. The resource ID can be:

  • a single resource name, e.g.:

  • a nested resource path that contains slashes /, e.g.:

    • dev-environment/kafka/my-topic for a Kafka topic.

    • The full LRN would be kafka:topic:dev-environment/kafka/my-topic.

Examples

IAM user

Kafka topic

Kafka consumer group

Schema Registry schema

Kafka Connect connector

Allowed characters

LRNs separate top-level segments with a colon : and resource path segments with a slash /.

Character rules depend on the segment:

  • service and resource-type use a-z, A-Z, 0-9, and -.

  • resource-id is resource-specific.

    • It must not contain : (reserved for top-level segments).

    • It may contain / to form a resource path.

    • It may contain * when used as a wildcard pattern (see below).

Using wildcards

Use the wildcard asterisk * to express catch-all LRNs.

Rules

  • No wildcards are allowed in service (except the global * pattern).

  • No partial wildcards are allowed in resource-type.

    • Use service:* to match all resource types for a service.

  • Wildcards in resource-id can be:

    • a full path segment: *

    • a suffix inside a segment: prefix*

  • If a resource-id segment is *, remaining segments are assumed * too.

    • Example: kafka:topic:my-env/* expands to kafka:topic:my-env/*/*.

Good examples

circle-check
Wildcard pattern
LRN Example
Definition
Example means…

*

*

Global wildcard. Captures all resources that Lenses manages.

"Everything"

service:*

kafka:*

Service wildcard. Captures all resources for a service.

"All Kafka resources in all environments"

service:resource-type:*

kafka:topic:*

Resource-type wildcard. Captures all resources for a resource type.

"All Kafka topics in all environments"

service:resource-type:parent/*/grandchild

kafka-connect:connector:dev-environment/*/my-s3-sink

Path segment wildcard. Captures a part of the resource path.

"All connectors named 'my-s3-sink' in all Connect clusters under 'dev-environment'"

service:resource-type:resourcePa*

kafka:topic:dev-environment/kafka/red-*

Prefix match. Captures resources whose resource-id starts with the given path prefix.

"All Kafka topics in 'dev-environment' whose name starts with 'red-'"

service:resource-type:paren*/chil*/grandchil*

kafka-connect:connector:dev*/sinks*/s3*

Segment prefix match. Captures resources where different path segments start with certain prefixes.

"All connectors in envs starting 'dev', clusters starting 'sinks', name starting 's3'"

Bad examples

triangle-exclamation
Wildcard pattern
LRN Example
Restriction
Better alternative

servic*:resource-type:resource-id

kafk*:topic:dev-environment/kafka/my-topic

No wildcards allowed in service. A service must be its full string.

Global wildcard *

service:resource-typ*:resource-id

kafka:topi*:dev-environment/*

No wildcards allowed in resource-type. A resource type must be its full string.

Service wildcard service:*

service:*:resource-id

kafka:*:dev-environment/kafka/my-topic

If resource-type is *, you must not set resource-id.

kafka:* or kafka:topic:dev-environment/kafka/my-topic

Last updated

Was this helpful?