Support Questions
Find answers, ask questions, and share your expertise
Announcements
Check out our newest addition to the community, the Cloudera Innovation Accelerator group hub.

DynamoDB table scan

New Contributor

Greetings,

 

I have a dynamodb table and I need to scan this table and I need to use a filter expression. When I run the command from the prompt I receive the result that I want, but when I run the command with ExecuteProcess, I'm having trouble with the expression-attribute-values parameter.

 

When I run the command I receive the following error:

 

 

 

usage: 
Note: AWS CLI version 2, the latest major version of the AWS CLI, is now stable and recommended for general use. For more information, see the AWS CLI version 2 installation instructions at: https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html

usage: aws [options] <command> <subcommand> [<subcommand> ...] [parameters]
To see help text, you can run:

  aws help
  aws <command> help
  aws <command> <subcommand> help

Unknown options: :value', =

 

 

 

 

 

aws dynamodb scan --table-name myTable --filter-expression "url = :value" --expression-attribute-values '{":value":{"S":"https://www.google.com"}}'

 

 

 

 

My processor configuration :

 

joaoclaudio_0-1636132870549.png

Anyone could help me?

1 REPLY 1

New Contributor

I did a workaround and run this command using a bash script. When I try to send this json as a parameter I had the same error. I imagine that is not a problem from Nifi, but something related to passing a json to a bash script. In my processor I run the script and as parameter the name of my function and the url to search. To solve the problem of the json I create a temporary file with the data. 

 

#!/bin/bash
TABLE="myTable"
URL=$2
FILTER_EXPRESSION="url = :value"
EXPRESSION_ATTR="{\":value\":{\"S\":\"$URL\"}}"

endpoint () {
    echo $EXPRESSION_ATTR > /tmp/expression.json
    aws dynamodb scan --table-name $TABLE \
    --filter-expression "$FILTER_EXPRESSION" \
    --expression-attribute-values file:///tmp/expression.json \
    rm -f /tmp/expression.json
}

$1