Helper class to import a virtual machine image or disk image to Amazon EC2 using Amazon S3 to hold the in-flight artifacts.
Пример #1
0
        /// <summary>
        /// Constructs an importer instance for a previously uploaded manifest. The manifest is downloaded using 
        /// a new Amazon S3 client constructed for the specified region and deserialized, ready for use in 
        /// constructing the appropriate ImportInstance or ImportVolume request to Amazon EC2.
        /// </summary>
        /// <param name="credentials">
        /// The AWS credentials for the account that owns or has access to the bucket containing the manifest file.
        /// </param>
        /// <param name="region">The region in which the Amazon S3 client used for download will be constructed.</param>
        /// <param name="bucketName">The name of the bucket containing the manifest file.</param>
        /// <param name="manifestFileKey">The S3 object key of the manifest file.</param>
        /// <param name="resumingUpload">
        /// Set this to true if a previous upload failed part-way through processing and RetainArtifactsOnUploadError
        /// was set to true so the partially uploaded content was retained. The existing manifest will
        /// be inspected and uploads can then resume to process the retaining content.
        /// </param>
        /// <returns>Initialized importer instance containing a deserialized manifest</returns>
        public static DiskImageImporter FromManifest(AWSCredentials credentials, 
                                                     RegionEndpoint region, 
                                                     string bucketName, 
                                                     string manifestFileKey,
                                                     bool resumingUpload)
        {
            try
            {
                var importer = new DiskImageImporter(credentials, region, bucketName)
                {
                    ManifestFileKey = manifestFileKey
                };
                importer.DeserializeManifestFromS3();

                if (resumingUpload)
                    importer.DetermineRemainingUploads();

                return importer;
            }
            catch (AmazonS3Exception e)
            {
                var msg = string.Format(CultureInfo.InvariantCulture,
                                        "Failed to download the specified manifest from bucket {0} with key {1}",
                                        bucketName, 
                                        manifestFileKey);
                throw new DiskImageImporterException(DiskImportErrorStage.ManifestInspection, msg, e);
            }
            catch (XmlException e)
            {
                throw new DiskImageImporterException(DiskImportErrorStage.ManifestInspection, 
                                                     "Failed to deserialize the downloaded manifest", 
                                                     e);
            }
        }