Upload Objects to an Amazon S3 Bucket - AWS Tools for PowerShell

Upload Objects to an Amazon S3 Bucket

Use the Write-S3Object cmdlet to upload files from your local file system to an Amazon S3 bucket as objects. The example below creates and uploads two simple HTML files to an Amazon S3 bucket, and verifies the existence of the uploaded objects. The -File parameter to Write-S3Object specifies the name of the file in the local file system. The -Key parameter specifies the name that the corresponding object will have in Amazon S3.

Amazon infers the content-type of the objects from the file extensions, in this case, ".html".

PS > # Create the two files using here-strings and the Set-Content cmdlet PS > $index_html = @" >> <html> >> <body> >> <p> >> Hello, World! >> </p> >> </body> >> </html> >> "@ >> PS > $index_html | Set-Content index.html PS > $error_html = @" >> <html> >> <body> >> <p> >> This is an error page. >> </p> >> </body> >> </html> >> "@ >> >>$error_html | Set-Content error.html >># Upload the files to Amazon S3 using a foreach loop >>foreach ($f in "index.html", "error.html") { >> Write-S3Object -BucketName website-example -File $f -Key $f -CannedACLName public-read >> } >> PS > # Verify that the files were uploaded PS > Get-S3BucketWebsite -BucketName website-example IndexDocumentSuffix ErrorDocument ------------------- ------------- index.html error.html

Canned ACL Options

The values for specifying canned ACLs with the Tools for Windows PowerShell are the same as those used by the AWS SDK for .NET. Note, however, that these are different from the values used by the Amazon S3Put Object action. The Tools for Windows PowerShell support the following canned ACLs:

  • NoACL

  • private

  • public-read

  • public-read-write

  • aws-exec-read

  • authenticated-read

  • bucket-owner-read

  • bucket-owner-full-control

  • log-delivery-write

For more information about these canned ACL settings, see Access Control List Overview.

Note Regarding Multipart Upload

If you use the Amazon S3 API to upload a file that is larger than 5 GB in size, you need to use multipart upload. However, the Write-S3Object cmdlet provided by the Tools for Windows PowerShell can transparently handle file uploads that are greater than 5 GB.

Test the Website

At this point, you can test the website by navigating to it using a browser. URLs for static websites hosted in Amazon S3 follow a standard format.

http://<bucket-name>.s3-website-<region>.amazonaws.com

For example:

http://website-example.s3-website-us-west-1.amazonaws.com

See Also