1

私はAmazon EC2プロジェクトに取り組んでおり、次のようにログインすると:

public bool Login(Credentials credentials, string ownerID, string region)
{
    try
    {
        OwnerID = ownerID;
        CurrentCredentials = credentials;
        CurrentConfigs = new AmazonEC2Config() { RegionEndpoint = RegionEndpoint.GetBySystemName(region) };
        EC2 = AWSClientFactory.CreateAmazonEC2Client(CurrentCredentials, CurrentConfigs);
    }
    catch
    {
        return false;
    }
    return true;
}

そして、次のようにアクセスしてみてください。

DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();
ec2Request.InstanceIds = new List<string>() { id };
DescribeInstancesResponse ec2Response = EC2.DescribeInstances(ec2Request);
return ec2Response.Reservations[0].Instances[0];

私はこの例外を受け取ります:

例外:

Encountered a WebException (NameResolutionFailure), the request cannot be retried. Either the maximum number of retries has been exceeded (4/4) or the request is using a non-seekable stream.

スタックトレース:

at Amazon.Runtime.AmazonWebServiceClient.HandleHttpWebErrorResponse(AsyncResult asyncResult, WebException we)
at Amazon.Runtime.AmazonWebServiceClient.getRequestStreamCallback(IAsyncResult result)
at Amazon.Runtime.AmazonWebServiceClient.endOperation[T](IAsyncResult result)
at Amazon.EC2.AmazonEC2Client.DescribeInstances(DescribeInstancesRequest describeInstancesRequest)
at ...

編集:

この例外の内部例外は次のとおりです。

The remote name could not be resolved: 'ec2.sa-east-1a.amazonaws.com'

アクセスがリージョンsa-east-1aである場合にのみ、このエラーが発生することを指摘することが重要です。私がリージョンus-west-2に持っている別のアカウントは完全に機能します。また、web.config から資格情報と地域情報を抽出しました。

4

2 に答える 2

2

簡単なエラー、簡単な解決策: リージョンはsa- east-1aではなくsa-east-1です。ログインするときは、使用するデータセンターを指定するのではなく、リージョンのみを指定する必要があります。

于 2014-07-28T15:45:20.620 に答える
1

これの付録として、データセンターを特定していないここに到着した人へ。私の場合、RegionEndpoint.GetBySystemName("USEast1")vsを使用RegionEndpoint.GetBySystemName("US-East-1")することが違いを生むものでした。

于 2016-08-23T20:18:42.080 に答える