https://github.com/sue445/gcp-secretmanagerenv
Detect variable from environment variable or GCP Secret Manager
https://github.com/sue445/gcp-secretmanagerenv
gcp google-cloud secret-manager
Last synced: 6 months ago
JSON representation
Detect variable from environment variable or GCP Secret Manager
- Host: GitHub
- URL: https://github.com/sue445/gcp-secretmanagerenv
- Owner: sue445
- License: mit
- Created: 2020-09-19T13:09:55.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2025-03-25T01:55:31.000Z (7 months ago)
- Last Synced: 2025-03-25T02:37:46.760Z (7 months ago)
- Topics: gcp, google-cloud, secret-manager
- Language: Go
- Homepage: https://pkg.go.dev/github.com/sue445/gcp-secretmanagerenv
- Size: 520 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# gcp-secretmanagerenv
Detect variable from environment variable or [GCP Secret Manager](https://cloud.google.com/secret-manager)You can access Secret Manager with a syntax similar to `os.Getenv`
[](https://github.com/sue445/gcp-secretmanagerenv/tags)
[](https://github.com/sue445/gcp-secretmanagerenv/actions/workflows/test.yml)
[](https://coveralls.io/github/sue445/gcp-secretmanagerenv)
[](https://codeclimate.com/github/sue445/gcp-secretmanagerenv/maintainability)
[](https://godoc.org/github.com/sue445/gcp-secretmanagerenv)
[](https://goreportcard.com/report/github.com/sue445/gcp-secretmanagerenv)## Requirements
Add IAM role `roles/secretmanager.secretAccessor` to service account if necessary.## Usage
```go
package mainimport (
"context"
"github.com/sue445/gcp-secretmanagerenv"
)func main() {
projectID := "gcp-project-id"
c, err := secretmanagerenv.NewClient(context.Background(), projectID)
if err != nil {
panic(err)
}// get from environment variable
value, err := c.GetValueFromEnvOrSecretManager("SOME_KEY", true)
// => return value from environment variable or Secret Manager// When key is not found in both environment variable and Secret Manager, returned empty string (not error)
value, err := c.GetValueFromEnvOrSecretManager("INVALID_KEY", false)
// => ""// When key is not found in both environment variable and Secret Manager, returned error
value, err := c.GetValueFromEnvOrSecretManager("INVALID_KEY", true)
// => error
}
```### Specification
When `c.GetValueFromEnvOrSecretManager(key, required)` is called, processing is performed in the following order1. Returns environment variable if `key` is found
2. Returns latest version value of Secret Manager if `projectID` isn't empty and `key` is found
3. Returns `""` if `required == false`
4. Returns `error` if `required == true`## Development
### Setup
requires https://github.com/direnv/direnv```bash
cp .envrc.example
vi .envrc
direnv allow
```