Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS Cli in Windows wont upload file to s3 bucket

Windows server 12r2 with python 2.7.10 and the aws cli tool installed. The following works:

aws s3 cp c:\a\a.txt s3://path/

I can upload that file without problem. What I want to do is upload a file from a mapped drive to an s3 bucket, so I tried this:

aws s3 cp s:\path\file s3://path/

and it works.

Now what I want to do and cannot figure out is how to not specify, but let it grab all file(s) so I can schedule this to upload the contents of a directory to my s3 bucket. I tried this:

aws s3 cp "s:\path\..\..\" s3://path/ --recursive --include "201512"

and I get this error "TOO FEW ARGUMENTS"

Nearest I can guess it's mad I'm not putting a specific file to send up, but I don't want to do that, I want to automate all things.

If someone could please shed some light on what I'm missing I would really appreciate it.

Thank you

like image 411
pmpjr Avatar asked Sep 19 '25 23:09

pmpjr


2 Answers

In case this is useful for anyone else coming after me: Add some extra spaces between the source and target. I've been beating my head against running this command with every combination of single quotes, double quotes, slashes, etc:

aws s3 cp /home/<username>/folder/ s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv"

And it would give me: "aws: error: too few arguments" Every. Single. Way. I. Tried.

So finally saw the --debug option in aws s3 cp help so ran it again this way:

aws s3 cp /home/<username>/folder/ s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv" --debug

And this was the relevant debug line:

MainThread - awscli.clidriver - DEBUG - Arguments entered to CLI: ['s3', 'cp', 'home/<username>/folder\xc2\xa0s3://<bucketID>/<username>/archive/', '--recursive', '--exclude', '*', '--include', '*.csv', '--debug']

I have no idea where \xc2\xa0 came from in between source and target, but there it is! Updated the line to add a couple extra spaces and now it runs without errors:

aws s3 cp /home/<username>/folder/   s3://<bucketID>/<username>/archive/ --recursive --exclude "*" --include "*.csv" 
like image 78
Casey Cotita Avatar answered Sep 21 '25 15:09

Casey Cotita


aws s3 cp "s:\path\..\..\" s3://path/ --recursive --include "201512" TOO FEW ARGUMENTS

This is because, in you command, double-quote(") is escaped with backslash(\), so local path(s:\path\..\..\) is not parsed correctly.

What you need to do is to escape backslash with double backslashes, i.e. :

aws s3 cp "s:\\path\\..\\..\\" s3://path/ --recursive --include "201512"

like image 40
quiver Avatar answered Sep 21 '25 13:09

quiver