Log4NetログをLogTableというSimpleDBテーブル/ドメインに書き込むアペンダーを作成しました。私は今、このテーブルから古いレコードを削除するWindowsサービスを書き込もうとしています。AmazonSimpleDBクライアントは確実に作成されており、手動で実行するとクエリはレコードを返します。ただし、コードが単体テストで実行された場合、結果は返されません。テーブル名と列名の大文字と小文字の区別は正しいです。
using (AmazonSimpleDB simpleDbClient = AWSClientFactory.CreateAmazonSimpleDBClient(accessKey, secretKey))
{
String selectExpression = String.Format("select * from LogTable where Timestamp < '{0:o}'", purgeDate);
SelectRequest selectRequestAction = new SelectRequest().WithSelectExpression(selectExpression);
SelectResponse selectResponse = simpleDbClient.Select(selectRequestAction);
if (selectResponse.IsSetSelectResult())
{
BatchDeleteAttributesRequest deleteRequest = new BatchDeleteAttributesRequest().WithDomainName("LogTable");
deleteRequest.Item = new List<DeleteableItem>();
SelectResult selectResult = selectResponse.SelectResult;
foreach (Item item in selectResult.Item)
{
deleteRequest.Item.Add(new DeleteableItem { ItemName = item.Name });
}
if (deleteRequest.Item.Count > 0)
{
simpleDbClient.BatchDeleteAttributes(deleteRequest);
}
logger.InfoFormat("Success - {0} log records deleted from LogTable", deleteRequest.Item.Count);
}
}
これについての助けを本当にいただければ幸いです。