AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.
Namespace: Amazon.S3.Model
Assembly: AWSSDK.dll
Version: (assembly version)
public class GetPreSignedUrlRequest : AmazonWebServiceRequest IRequestEvents
The GetPreSignedUrlRequest type exposes the following members
Name | Description | |
---|---|---|
GetPreSignedUrlRequest() |
Name | Type | Description | |
---|---|---|---|
BucketName | System.String | The name of the bucket to create a pre-signed url to, or containing the object. | |
ContentType | System.String | A standard MIME type describing the format of the object data. | |
Expires | System.DateTime | The expiry date and time for the pre-signed url. | |
Headers | Amazon.S3.Model.HeadersCollection | The collection of headers for the request. | |
Key | System.String | The key to the object for which a pre-signed url should be created. | |
Metadata | Amazon.S3.Model.MetadataCollection | The collection of meta data for the request. | |
Protocol | Amazon.S3.Protocol | The requested protocol (http/https) for the pre-signed url. | |
ResponseHeaderOverrides | Amazon.S3.Model.ResponseHeaderOverrides | A set of response headers that should be returned with the pre-signed url creation response. | |
ServerSideEncryptionCustomerMethod | Amazon.S3.ServerSideEncryptionCustomerMethod | The Server-side encryption algorithm to be used with the customer provided key. | |
ServerSideEncryptionKeyManagementServiceKeyId | System.String | The id of the AWS Key Management Service key that Amazon S3 should use to encrypt and decrypt the object. If a key id is not specified, the default key will be used for encryption and decryption. | |
ServerSideEncryptionMethod | Amazon.S3.ServerSideEncryptionMethod | Specifies the encryption used on the server to store the content. | |
Verb | Amazon.S3.HttpVerb | The verb for the pre-signed url. | |
VersionId | System.String | Version id for the object that the pre-signed url will reference. If not set, the url will reference the latest version of the object. |
Name | Description | |
---|---|---|
IsSetExpires() | Checks if Expires property is set. |
The following examples show how to create various different pre-signed URLs.
The code sample shows a GetContents function. This will be referred to in subsequent samples to test out the generated URL.
public static string GetContents(string path) { HttpWebRequest request = HttpWebRequest.Create(path) as HttpWebRequest; HttpWebResponse response = request.GetResponse() as HttpWebResponse; using (Stream stream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(stream)) { return reader.ReadToEnd(); } }
The first example creates a URL that will allow a third party to retrieve an object from S3 for a period of 5 minutes.
// Create a client AmazonS3Client client = new AmazonS3Client(); // Create a CopyObject request GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { BucketName = "SampleBucket", Key = "Item1", Expires = DateTime.Now.AddMinutes(5) }; // Get path for request string path = client.GetPreSignedURL(request); // Test by getting contents string contents = GetContents(path);
The following example creates a URL that will allow a third party to retrieve an object from S3 for a period of 5 minutes, and it also sets the headers to specific content, caching and encoding values.
// Create a client AmazonS3Client client = new AmazonS3Client(); // Create a CopyObject request GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { BucketName = "SampleBucket", Key = "Item1", Expires = DateTime.Now.AddMinutes(5) }; request.ResponseHeaderOverrides.ContentType = "text/xml+zip"; request.ResponseHeaderOverrides.ContentDisposition = "attachment; filename=dispName.pdf"; request.ResponseHeaderOverrides.CacheControl = "No-cache"; request.ResponseHeaderOverrides.ContentLanguage = "mi, en"; request.ResponseHeaderOverrides.Expires = "Thu, 01 Dec 1994 16:00:00 GMT"; request.ResponseHeaderOverrides.ContentEncoding = "x-gzip"; // Get path for request string path = client.GetPreSignedURL(request); // Test by getting contents string contents = GetContents(path);
This example creates a URL that will allow a third party to list
all objects in a specific bucket. This URL will also expire in 5 minutes.
The URL response will be the XML response for a ListBucket request.
// Create a client AmazonS3Client client = new AmazonS3Client(); // Create a CopyObject request GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { BucketName = "SampleBucket", Expires = DateTime.Now.AddMinutes(5) }; // Get path for request string path = client.GetPreSignedURL(request); // Retrieve objects string allObjects = GetContents(path);
This example creates a URL that will allow a third party to list
all of the owner's buckets. This URL will also expire in 5 minutes.
The URL response will be the XML response for a ListBuckets request.
// Create a client AmazonS3Client client = new AmazonS3Client(); // Create a CopyObject request GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { Expires = DateTime.Now.AddMinutes(5) }; // Get path for request string path = client.GetPreSignedURL(request); // Retrieve buckets string allBuckets = GetContents(path);
This final example creates a URL that allows a third party to put an object, then uses it to upload sample content. The URL is set to expire in 10 days.
// Create a client AmazonS3Client client = new AmazonS3Client(); // Create a CopyObject request GetPreSignedUrlRequest request = new GetPreSignedUrlRequest { BucketName = "SampleBucket", Key = "Item1", Verb = HttpVerb.PUT, Expires = DateTime.Now.AddDays(10) }; // Get path for request string path = client.GetPreSignedURL(request); // Prepare data byte[] data = UTF8Encoding.UTF8.GetBytes("Sample text."); // Configure request HttpWebRequest httpRequest = WebRequest.Create(path) as HttpWebRequest; httpRequest.Method = "PUT"; httpRequest.ContentLength = data.Length; // Write data to stream Stream requestStream = httpRequest.GetRequestStream(); requestStream.Write(data, 0, data.Length); requestStream.Close(); // Issue request HttpWebResponse response = httpRequest.GetResponse() as HttpWebResponse;
.NET Framework:
Supported in: 4.5, 4.0, 3.5
.NET for Windows Store apps:
Supported in: Windows 8.1, Windows 8
.NET for Windows Phone:
Supported in: Windows Phone 8.1, Windows Phone 8