CreateAssetFilter - Amazon DataZone

CreateAssetFilter

Creates a data asset filter.

Asset filters provide a sophisticated way to create controlled views of data assets by selecting specific columns or applying row-level filters. This capability is crucial for organizations that need to share data while maintaining security and privacy controls. For example, your database might be filtered to show only non-PII fields to certain users, or sales data might be filtered by region for different regional teams. Asset filters enable fine-grained access control while maintaining a single source of truth.

Prerequisites:

  • A valid domain (--domain-identifier) must exist.

  • A data asset (--asset-identifier) must already be created under that domain.

  • The asset must have the referenced columns available in its schema for column-based filtering.

  • You cannot specify both (columnConfiguration, rowConfiguration)at the same time.

Request Syntax

POST /v2/domains/domainIdentifier/assets/assetIdentifier/filters HTTP/1.1 Content-type: application/json { "clientToken": "string", "configuration": { ... }, "description": "string", "name": "string" }

URI Request Parameters

The request uses the following URI parameters.

assetIdentifier

The ID of the data asset.

Pattern: [a-zA-Z0-9_-]{1,36}

Required: Yes

domainIdentifier

The ID of the domain in which you want to create an asset filter.

Pattern: dzd[-_][a-zA-Z0-9_-]{1,36}

Required: Yes

Request Body

The request accepts the following data in JSON format.

clientToken

A unique, case-sensitive identifier that is provided to ensure the idempotency of the request.

Type: String

Required: No

configuration

The configuration of the asset filter.

Type: AssetFilterConfiguration object

Note: This object is a Union. Only one member of this object can be specified or returned.

Required: Yes

description

The description of the asset filter.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 2048.

Required: No

name

The name of the asset filter.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 64.

Pattern: [\w -]+

Required: Yes

Response Syntax

HTTP/1.1 201 Content-type: application/json { "assetId": "string", "configuration": { ... }, "createdAt": number, "description": "string", "domainId": "string", "effectiveColumnNames": [ "string" ], "effectiveRowFilter": "string", "errorMessage": "string", "id": "string", "name": "string", "status": "string" }

Response Elements

If the action is successful, the service sends back an HTTP 201 response.

The following data is returned in JSON format by the service.

assetId

The ID of the asset.

Type: String

Pattern: [a-zA-Z0-9_-]{1,36}

configuration

The configuration of the asset filter.

Type: AssetFilterConfiguration object

Note: This object is a Union. Only one member of this object can be specified or returned.

createdAt

The timestamp at which the asset filter was created.

Type: Timestamp

description

The description of the asset filter.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 2048.

domainId

The ID of the domain where the asset filter is created.

Type: String

Pattern: dzd[-_][a-zA-Z0-9_-]{1,36}

effectiveColumnNames

The column names in the asset filter.

Type: Array of strings

effectiveRowFilter

The row filter in the asset filter.

Type: String

errorMessage

The error message that is displayed if the asset filter is not created successfully.

Type: String

id

The ID of the asset filter.

Type: String

Pattern: [a-zA-Z0-9_-]{1,36}

name

The name of the asset filter.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 64.

Pattern: [\w -]+

status

The status of the asset filter.

Type: String

Valid Values: VALID | INVALID

Errors

For information about the errors that are common to all actions, see Common Errors.

AccessDeniedException

You do not have sufficient access to perform this action.

HTTP Status Code: 403

ConflictException

There is a conflict while performing this action.

HTTP Status Code: 409

InternalServerException

The request has failed because of an unknown error, exception or failure.

HTTP Status Code: 500

ResourceNotFoundException

The specified resource cannot be found.

HTTP Status Code: 404

ServiceQuotaExceededException

The request has exceeded the specified service quota.

HTTP Status Code: 402

ThrottlingException

The request was denied due to request throttling.

HTTP Status Code: 429

UnauthorizedException

You do not have permission to perform this action.

HTTP Status Code: 401

ValidationException

The input fails to satisfy the constraints specified by the AWS service.

HTTP Status Code: 400

Examples

Example

This example illustrates one usage of CreateAssetFilter.

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "customer-pii-filter" \ --configuration '{ "columnConfiguration": { "includedColumnNames": [ "customer_id", "email", "phone_number", "address" ] } }'

Sample Request

{ "assetId": "ast7k9mpq2xvn4", "configuration": { "columnConfiguration": { "includedColumnNames": [ "customer_id", "email", "phone_number", "address" ] } }, "domainId": "dzd_53ielnpxktdilj", "effectiveColumnNames": [ "customer_id", "email", "phone_number", "address" ], "id": "flt8p2mq3xvn5", "name": "customer-pii-filter", "status": "VALID" }

Example

Failure case - missing required field: --configuration:

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "missing-config"

Sample Response

aws: error: the following arguments are required: —configuration

Example

Failure case - invalid JSON in --configuration

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "invalid-json" \ --configuration '{ "columnConfiguration": { "includedColumnNames": ["customer_id", "email" }'

Sample Response

Error parsing parameter '--configuration': Invalid JSON: Expecting ',' delimiter: line 1 column 65 (char 64) JSON received: { "columnConfiguration": { "includedColumnNames": ["customer_id", "email" }

Example

Failure case - both columnConfiguration and rowConfiguration present

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "dual-config" \ --configuration '{ "columnConfiguration": { "includedColumnNames": ["customer_id"] }, "rowConfiguration": { "rowFilter": { "expression": { "equalTo": { "columnName": "customer_id", "value": "CUST123" } } } } }'

Sample Response

Parameter validation failed: Invalid number of parameters set for tagged union structure configuration. Can only set one of the following keys: columnConfiguration, rowConfiguration.

Example

Failure case - empty includedColumnNames:

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "empty-columns" \ --configuration '{ "columnConfiguration": { "includedColumnNames": [] } }'

Sample Response

An error occurred (ValidationException) when calling the CreateAssetFilter operation: Invalid column configuration. No valid columns found.

Example

Failure case - invalid key in rowFilter expression:

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "invalid-row-key" \ --configuration '{ "rowConfiguration": { "rowFilter": { "expression": { "invalidOperator": { "columnName": "customer_id", "value": "CUST123" } } } } }'

Sample Response

Parameter validation failed: Unknown parameter in configuration.rowConfiguration.rowFilter.expression: "invalidOperator", must be one of: equalTo, greaterThan, greaterThanOrEqualTo, in, isNotNull, isNull, lessThan, lessThanOrEqualTo, like, notEqualTo, notIn, notLike

Example

Failure case - missing columnName in row filter:

Sample Request

aws datazone create-asset-filter \ --domain-identifier "dzd_53ielnpxktdilj" \ --asset-identifier "ast7k9mpq2xvn4" \ --name "missing-column-name" \ --configuration '{ "rowConfiguration": { "rowFilter": { "expression": { "equalTo": { "value": "CUST123" } } } } }'

Sample Response

Parameter validation failed: Missing required parameter in configuration.rowConfiguration.rowFilter.expression.equalTo: "columnName"

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: