-
Notifications
You must be signed in to change notification settings - Fork 4.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Error during serverless syncToS3 #171
Comments
@ghdna Which example are using?
Could you show us your all of serverless.yml? |
My AWS credentials are defined as a profile in ~/.aws/credentials file. And I'm referencing these credentials under provider.
This works when creating S3 bucket and CloudFront nodes. But when I execute serverless syncToS3, it behaves as if there are no credentials provided. It's ignoring the profile under provider. |
Seems that credentials setting is no problem. |
Yes, I'm using that sample. Try to reproduce it. Make sure you don't have any default credentials defined in your ~/.aws/credentials file and are instead using [profiles]. ~/.aws/credentials
|
@ghdna |
I believe the problem is that syncToS3 is documented as follows: Hint: The plugin is simply running the AWS CLI command: aws S3 sync app/ s3://yourBucketName123/ When in fact it should be: Hint: The plugin is simply running the AWS CLI command: aws s3 sync app/ s3://yourBucketName123/ Notice the difference is S3 to s3. When I ran the command as aws s3 sync app/ s3://yourBucketName123/ The problem was resolved. |
This was driving me crazy so posting my solution here. If you are using profiles you may notice that even after running
serverless deploy works fine but serverless syncToS3 will throw unable to locate credentials error. Basically syncToS3 is running the AWS command which is looking for your default profile and because the syncDirectory() function in the plugin index.js does not pass the profile through to the command, so to fix it you can just modify this function with the following:
You'll need to do the same in the invalidateCache() function. Also obviously make sure you provider.profile set in your serverless.yml |
This serverless plugin also solved my issue; was less implementation effort. https://www.npmjs.com/package/serverless-s3-sync |
I got the cloud formation template & s3 bucket deployed using serverless deploy. but when I invoke serverless syncToS3, I'm getting Serverless: fatal error: Unable to locate credentials.
The credentials within the serverless.yaml file worked when creating the stack. But somehow they are not letting me upload s3 artifacts.
The text was updated successfully, but these errors were encountered: