I ran into the following error while trying to copy files from one bucket to another using the AWS CLI:
An error occurred (AccessDenied) when calling the CopyObject operation: Access Denied
Thankfully this one is pretty self-explanatory. My user was missing the permissions required to view the bucket.
To see your user: aws configure list
To add permissions: view the IAM Management Console
I ran into the following error while attempting to copy files to a bucket via the AWS CLI:
Could not connect to the endpoint URL: “https://wildrydes-us-east-1.s3.wildrydesxxxx.amazonaws.com/?prefix=WebApplication%2F1_StaticWebHosting%2Fwebsite%2F&encoding-type=url”
The solution turned out to be pretty straight-forward. The region on the cli-config was set incorrectly. For example, mine was set to “Sydney” instead of “ap-southeast-2”. Type “aws configure list” to check what yours is set to.
Thanks to the following stackoverflow post for the info: https://stackoverflow.com/a/40411174/522859
Another issue I came across while working with CarrierWave. After rebooting a VM Amazon started too complain “request time too skewed”:
Warning: S3::putObject(): RequestTimeTooSkewed The difference between the request time and the current time is to large. in x on line 14
This one is another simple fix, just make sure your system time is correct. I’d been using a VM and it had run forward by a few hours. Setting it back manually resolved the error.
After working with CarrierWave for a couple of days a few of my images started disappearing. It took a while to work out what was causing it, but thankfully the fix is pretty easy:
#Set fog_public in your initialiser to true
config.fog_public = false
config.fog_public = true
Alternatively, if you’d like them to keep expiring but want to adjust their availability you can use the following config option:
#Number of seconds
config.fog_authenticated_url_expiration = 60000
There’s a bit of info in the following StackOverflow post: http://stackoverflow.com/a/13757841/522859
I was having a bit of trouble with CarrierWave on Amazon S3 today. When attempting to upload files that were larger than ~150kb I received one of the following errors (depending on config):
getaddrinfo: Name or service not known carrierwave
Excon::Errors::SocketError in PhotosController#create
Broken pipe (Errno::EPIPE)
Despite the vague error, the solution was fairly simple. The region configured in my initialiser was different to the one my bucket was created in.
In order to find out which region you need, logon to your AWS console and browse to an uploaded image. Check the endpoint URL (properties > static website hosting) and simply copy the region. For examples:
A couple of final tips if this doesn’t work for you:
You need the region codes, not the name. For instance, “Oregon” won’t work
Don’t forget to restart your app after making changes to the initialiser