aws / aws/aws-cdk

(assets): Publish command always looks for credentials in `.aws/credentials`

Open
#12,696 15 comments 3 reactions 0 assignees View on GitHub
@aws-cdk/assets effort/small feature-request feature/enhancement p2
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.