Как получить имя ресурса в ResourceNotFoundException из AWSSDK.DynamoDBv2

Я работаю с ServiceStack.Aws и получаю ResourceNotFoundException, но не могу увидеть имя ресурса, которое он ищет. Name Имя ресурса отправлено в исключении? ¿Как я могу получить это?

Моя модель класса (таблица и имя индекса существует)

[DynamoDBTable("SOME-TABLE-NAME")]
    public class Company
    {
        [DynamoDBHashKey]
        public string CompanyId { get; set; }

        [DynamoDBGlobalSecondaryIndexHashKey("SOME-INDEX-NAME")]
        public string ShortName { get; set; }

        public string DocumentNumber { get; set; }
        public string FullName { get; set; }
        public string Address { get; set; }
        public DateTime CreatedAt { get; set; }
    }

Мой код

var awsDb = new AmazonDynamoDBClient();
            var db = new PocoDynamo(awsDb);

            db.RegisterTable<Company>();
            try
            {
                db.PutItem<Company>(new Company
                {
                    Address = "Some address #some number",
                    CompanyId = Guid.NewGuid().ToString(),
                    CreatedAt = DateTime.Now,
                    DocumentNumber = "11.222.333-4",
                    FullName = "Some company name",
                    ShortName = "ShortName"
                });
            }
            catch (ResourceNotFoundException ex)
            {

            }
            catch (Exception ex)
            {

            }

В моем app.config у меня есть (путь и имя профиля существует. Регион тоже хорошо)

<aws region="us-east-1" profileName="profile-name" profilesLocation="some-path\certificados.txt">
  </aws>

Редактировать: проблема в том, что ServiceStack не использует атрибуты AWS. Итак, я меняю DynamoDBTable на Alias ​​и все работает нормально

1 ответ

Решение

PocoDynamo ServiceStack.Aws автоматически повторяет временные исключения за кулисами, поэтому первоначальное исключение AWS могло быть повторено. Я только что добавил ExceptionFilter в этом коммите, который позволит вам проверить каждое исключение, выданное клиентом AWS DynamoDB:

var dynamo = new PocoDynamo(awsDynamoClient) { 
    ExceptionFilter = ex => ex.Message.Print();
};

ExceptionFilter доступен с v4.0.61, который теперь доступен на MyGet.

Также [DynamoDBGlobalSecondaryIndexHashKey] Атрибут не влияет на PocoDynamo, пожалуйста, смотрите документацию по созданию глобальных индексов с PocoDynamo.

Другие вопросы по тегам