【问题标题】:AWSClientFactory and other Amazon types missing in SDKSDK 中缺少 AWSClientFactory 和其他 Amazon 类型
【发布时间】:2019-05-19 05:47:23
【问题描述】:

我从 2012 年继承了以下 AWS .NET 开发工具包代码,但我在开发工具包中找不到许多类型。我添加了 nuget 包 Amazon、AWSSDK.Core、Amazon.EC2、Amazon.SimpleDB 和 Amazon.S3。

using Amazon.EC2;
using Amazon.EC2.Model;
using Amazon.SimpleDB;
using Amazon.SimpleDB.Model;
using Amazon.S3;
using Amazon.S3.Model;

 public static string GetServiceOutput()
        {
            StringBuilder sb = new StringBuilder(1024);
            using (StringWriter sr = new StringWriter(sb))
            {
                sr.WriteLine("===========================================");
                sr.WriteLine("Welcome to the AWS .NET SDK!");
                sr.WriteLine("===========================================");

                // Print the number of Amazon EC2 instances.
                AmazonEC2 ec2 = AWSClientFactory.CreateAmazonEC2Client();
                DescribeInstancesRequest ec2Request = new DescribeInstancesRequest();

                try
                {
                    DescribeInstancesResponse ec2Response = ec2.DescribeInstances(ec2Request);
                    int numInstances = 0;
                    numInstances = ec2Response.DescribeInstancesResult.Reservation.Count;
                    sr.WriteLine("You have " + numInstances + " Amazon EC2 instance(s) running in the US-East (Northern Virginia) region.");

                }
                catch (AmazonEC2Exception ex)
                {
                    if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure"))
                    {
                        sr.WriteLine("The account you are using is not signed up for Amazon EC2.");
                        sr.WriteLine("You can sign up for Amazon EC2 at http://aws.amazon.com/ec2");
                    }
                    else
                    {
                        sr.WriteLine("Caught Exception: " + ex.Message);
                        sr.WriteLine("Response Status Code: " + ex.StatusCode);
                        sr.WriteLine("Error Code: " + ex.ErrorCode);
                        sr.WriteLine("Error Type: " + ex.ErrorType);
                        sr.WriteLine("Request ID: " + ex.RequestId);
                        sr.WriteLine("XML: " + ex.XML);
                    }
                }
                sr.WriteLine();

                // Print the number of Amazon SimpleDB domains.
                AmazonSimpleDB sdb = AWSClientFactory.CreateAmazonSimpleDBClient();
                ListDomainsRequest sdbRequest = new ListDomainsRequest();

                try
                {
                    ListDomainsResponse sdbResponse = sdb.ListDomains(sdbRequest);

                    if (sdbResponse.IsSetListDomainsResult())
                    {
                        int numDomains = 0;
                        numDomains = sdbResponse.ListDomainsResult.DomainName.Count;
                        sr.WriteLine("You have " + numDomains + " Amazon SimpleDB domain(s) in the US-East (Northern Virginia) region.");
                    }
                }
                catch (AmazonSimpleDBException ex)
                {
                    if (ex.ErrorCode != null && ex.ErrorCode.Equals("AuthFailure"))
                    {
                        sr.WriteLine("The account you are using is not signed up for Amazon SimpleDB.");
                        sr.WriteLine("You can sign up for Amazon SimpleDB at http://aws.amazon.com/simpledb");
                    }
                    else
                    {
                        sr.WriteLine("Caught Exception: " + ex.Message);
                        sr.WriteLine("Response Status Code: " + ex.StatusCode);
                        sr.WriteLine("Error Code: " + ex.ErrorCode);
                        sr.WriteLine("Error Type: " + ex.ErrorType);
                        sr.WriteLine("Request ID: " + ex.RequestId);
                        sr.WriteLine("XML: " + ex.XML);
                    }
                }
                sr.WriteLine();

                // Print the number of Amazon S3 Buckets.
                AmazonS3 s3Client = AWSClientFactory.CreateAmazonS3Client();

                try
                {
                    ListBucketsResponse response = s3Client.ListBuckets();
                    int numBuckets = 0;
                    if (response.Buckets != null &&
                        response.Buckets.Count > 0)
                    {
                        numBuckets = response.Buckets.Count;
                    }
                    sr.WriteLine("You have " + numBuckets + " Amazon S3 bucket(s) in the US Standard region.");
                }
                catch (AmazonS3Exception ex)
                {
                    if (ex.ErrorCode != null && (ex.ErrorCode.Equals("InvalidAccessKeyId") ||
                        ex.ErrorCode.Equals("InvalidSecurity")))
                    {
                        sr.WriteLine("Please check the provided AWS Credentials.");
                        sr.WriteLine("If you haven't signed up for Amazon S3, please visit http://aws.amazon.com/s3");
                    }
                    else
                    {
                        sr.WriteLine("Caught Exception: " + ex.Message);
                        sr.WriteLine("Response Status Code: " + ex.StatusCode);
                        sr.WriteLine("Error Code: " + ex.ErrorCode);
                        sr.WriteLine("Request ID: " + ex.RequestId);
                        sr.WriteLine("XML: " + ex.XML);
                    }
                }
                sr.WriteLine("Press any key to continue...");
            }
            return sb.ToString();
        }
    }

它说这些类型不存在:AmazonEC2、AWSClientFactory、DescribeInstancesResult、ex.StatusCode、AmazonSimpleDB。 ListDomainsResult、IsSetListDomainsResult、AmazonS3。我做了很多谷歌搜索,但文档很糟糕。我不知道这些类型是否不再存在或者我可以使用哪些其他 AWS nuget 包?请帮忙

【问题讨论】:

    标签: c# amazon-web-services amazon-s3 amazon-ec2 aws-sdk


    【解决方案1】:

    2012 年的代码将使用旧的单片 SDK,其中所有服务都在一个程序集/nuget 包上,而我们只有几十个服务。现在有 100 多种服务,SDK 是每个服务的单独包加上核心包AWSSDK.Core

    您需要添加 NuGet 包 AWSSDK.EC2、AWSSDK.S3 和 AWSSDK.SimpleDB。

    AWSClientFactory 类也不再存在,因为它在 SDK 的模块版本中不起作用。只需将所有对 AWSClientFactory 的调用替换为服务客户端构造函数即可,即new AmazonEC2()

    【讨论】:

    • 谢谢,但我已经安装了 AWSSDK.EC2、AWSSDK.S3 和 AWSSDK.SimpleDB 包,但仍然出现这些错误。
    • 抱歉,只安装了 S3,因为代码无法编译。我会解决的,
    • 它现在抛出一个异常,创建 AmazonEC2Client 声明“没有指定区域端点或服务 URL。有什么想法吗?
    • 我相信在 SDK 的 V1 版本中它默认为 us-east-1 区域。现在,当您创建 SDK 时,需要 AWS 成为更大的区域。您可以在 app.config/web.config 中指定区域,也可以在构造函数中传递区域。新的 AmazonEC2Client(Amazon.RegionEndpoint.USEast1)
    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2018-11-25
    • 2017-12-08
    相关资源
    最近更新 更多