0

I am trying to connect to dynamoDB and fetching data. This is how my code looks. I tried catching the exception. It says

Unable to determine range key from index name.

CustomerManager.cs

  public async Task<List<CustomerResponse>> GetCustomers()
    {
        var myCustomers = await m_CustomerEngine.GetSitesWithClientDetails();
        if (myCustomers == null) return null;

        var siteMonitors = new List<Monitor>();
        var names = new List<string>
        {
            "SITE"
        };
        var running = await m_MonitorEngine.QueryIndexItems("SITE:RUNNING", QueryOperator.BeginsWith, names, "GSI-Reverse").ConfigureAwait(false);
        var notRunning = await m_MonitorEngine.QueryIndexItems("SITE:NOTRUNNING", QueryOperator.BeginsWith, names, "GSI-Reverse").ConfigureAwait(false);

        if (running != null && running.Count > 0) siteMonitors.AddRange(running);

        if (notRunning != null && notRunning.Count > 0) siteMonitors.AddRange(notRunning);

        // return MapDynamoCustomerStatus(dCustomers, siteMonitors);
        return MapMySqlCustomerStatus(myCustomers, siteMonitors);
    }

Data Model

[DynamoDBTable("xyz")]
public class Monitor
{
    [DynamoDBHashKey("PK")]
    public string Site { get; set; }

    [DynamoDBRangeKey("SK")]
    public string Service { get; set; }

    [DynamoDBProperty("_rawData")]
    public string RawData { get; set; }
}

MonitorRepository.cs

   public AsyncSearch<Monitor> QueryIndexItems(string hashKey, QueryOperator queryOperator, IEnumerable<object> values, string indexName)
    
    {
        try
        {
            var tableName = m_Configuration["DynamoDbTables:Monitor"] ?? "ClientMonitoring-qa";
            DynamoDBOperationConfig config = new DynamoDBOperationConfig
            {
                OverrideTableName = tableName,
                IndexName = indexName
            };
            var data = m_MonitorContext.QueryItems(hashKey, queryOperator, values, config);
            return data;
        }
        catch (Exception ex)
        {
            throw new Exception($"Amazon error in MonitorRepository.QueryItems table operation! Error: {ex}");
        }
    }

DynamoDBRepository.cs

    public AsyncSearch<T> QueryItems(string hashKey, QueryOperator queryOperator, IEnumerable<object> values, DynamoDBOperationConfig config)
    {
        var data = base.QueryAsync<T>(hashKey, queryOperator, values, config);
        return data;
    }
xoxo
  • 1,248
  • 14
  • 19

1 Answers1

1

It seems to me that you have not defined DynamoDBGlobalSecondaryIndexRangeKey. If you have, can you share more of your code.

Leeroy Hannigan
  • 11,409
  • 3
  • 14
  • 31