为什么我们遇到连接到AWS DynamoDB的间歇性错误?

时间:2017-04-03 14:41:33

标签: c# amazon-web-services amazon-ec2 amazon-dynamodb

我们拥有访问AWS DynamoDB中AppSettings的C#代码(使用AWS .NET SDK),它在我们的开发PC上运行良好。但是,当我们将代码放在EC2实例上时,我们会间歇性地得到错误;有时我们可以访问我们的DynamoDB表,有时我们无法访问。我们编写了一个小程序来删除所有其他代码,并使用AmazonDynamoDBClient调用ListTables方法。我们将精简代码放在我们的EC2实例上并从命令行运行它,就像我们的常规应用程序一样,它有时会起作用,有时它也不会。我们的精简代码是:

if((days < 0)||(minutes < 0)||(seconds < 0 )||(hours < 0)){
     days = 0;
     minutes = 0;
     hours = 0;
     days = 0;
}

正如您所看到的,它非常简单。这些是我们(有时)得到的错误:

class Program
{
    static void Main(string[] args)
    {
        try
        {
            AmazonDynamoDBClient client = new AmazonDynamoDBClient(RegionEndpoint.USEast1);

            ListTablesRequest request = new ListTablesRequest();

            ListTablesResponse response = client.ListTables(request);

            foreach (var tableName in response.TableNames)
            {
                Console.WriteLine("{0}", tableName);
            }

            Console.ReadKey();
        }
        catch (Exception e)
        {
            Exception e1 = e;
            while (e1 != null)
            {
                Console.WriteLine(e1.GetType().ToString());
                Console.WriteLine(e1.Message);
                Console.WriteLine(e1.StackTrace);

                e1 = e1.InnerException;
            }
        }            
    }

我们不确定为什么会这样。我们验证了我们在实例上的角色具有权限,尽管由于代码有时会起作用,我们真的不应该这样做。任何见解都是最受欢迎的。

1 个答案:

答案 0 :(得分:0)

远程主机异常关闭是should be retried by the client的5XX瞬态服务失败的示例。如果你得到其中一个,只需重试。如果这些连接关闭持续很长时间,请联系AWS支持或在AWS论坛上寻求帮助。