(assets): Publish command always looks for credentials in `.aws/credentials`
- Dominant language
- TypeScript
- Stars
- 12.9k
- Forks
- 4.6k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 83
Description
Running the following command `cdk-assets publish --path cdk.out/Frontend.assets.json` fails on my computer because I don't have credentials hardcoded in my .aws/credentials file.
```
Error: ENOENT: no such file or directory, open '/Users//.aws/credentials'
at Object.openSync (fs.js:476:3)
at Object.readFileSync (fs.js:377:35)
at Object.readFileSync (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/util.js:95:26)
at IniLoader.parseFile (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/shared-ini/ini-loader.js:6:47)
at IniLoader.loadFrom (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/shared-ini/ini-loader.js:56:30)
at Config.region (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/node_loader.js:101:36)
at Config.set (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/config.js:514:39)
at Config. (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/config.js:349:12)
at Config.each (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/util.js:512:32)
at new Config (/usr/local/lib/node_modules/cdk-assets/node_modules/aws-sdk/lib/config.js:348:19) {
errno: -2,
syscall: 'open',
code: 'ENOENT',
path: '/Users//.aws/credentials'
}
```
### Reproduction Steps
Run `cdk-assets publish` without having credentials in `.aws/credentials`.
### What did you expect to happen?
I expect `cdk-assets` to let the `aws-sdk` use the DefaultCredentialsProvider so that my credentials can be picked up from the environment variables. I don't want to have harcoded credentials in my .aws/credentials file.
### What actually happened?
cdk-assets fails to find credentials.
### Environment
- **CDK CLI Version :** cdk-assets 1.86.0
- **Framework Version:**
- **Node.js Version:** v14.14.0
- **OS :** macOS Catalina
- **Language (Version):** Typescript 3.8
---
This is :bug: Bug Report
Contributor guide
Research direction
Start by reproducing `cdk-assets publish --path cdk.out/Frontend.assets.json` without a `.aws/credentials` file and trace how the AWS SDK loads credentials. The fix is complete when credentials from environment variables work without requiring that file, while the publish command still succeeds.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- aws, typescript
- Domain
- cli, cloud
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100