Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/battis/lazy-secrets
A (thin) wrapper for google/cloud-secret-manager to reduce boilerplate
https://github.com/battis/lazy-secrets
google-cloud secret-manager
Last synced: about 2 months ago
JSON representation
A (thin) wrapper for google/cloud-secret-manager to reduce boilerplate
- Host: GitHub
- URL: https://github.com/battis/lazy-secrets
- Owner: battis
- License: apache-2.0
- Created: 2022-11-23T19:59:10.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-03-13T18:17:53.000Z (10 months ago)
- Last Synced: 2024-04-14T09:03:55.949Z (9 months ago)
- Topics: google-cloud, secret-manager
- Language: PHP
- Homepage: https://battis.github.io/lazy-secrets/
- Size: 145 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Lazy Secrets
[![Latest Version](https://img.shields.io/packagist/v/battis/lazy-secrets.svg)](https://packagist.org/packages/battis/lazy-secrets)
A (thin) wrapper for google/cloud-secret-manager to reduce boilerplate
## Install
```bash
composer require battis/lazy-secrets
```## Use
```php
use Battis\LazySecrets\Secrets;$data = Secrets::get("MY_APP_SECRET");
```## Background
While the [Google Cloud Secret Manager](https://cloud.google.com/secret-manager/docs)
is a fine way to store (and access) app secrets, it also entails a bunch of
boilerplate code that I don't want to fat finger. So, instead of writing...```php
use Google\Cloud\SecretManager\V1\SecretManagerServiceClient;$client = new SecretManagerServiceClient();
$project = $_ENV["GOOGLE_CLOUD_PROJECT"];
$key = "MY_APP_SECRET";
$version = "latest";
$secret = $client->accessSecretVersion(
"projects/$project/secrets/$key/versions/$version"
);
$data = $secret->getPayload()->getData();// and even (if you're packing a lot into one secret)
$obj = json_decode($data);// ...and then using the $data or $obj
```...I'd rather just write:
```php
use Battis\LazySecrets\Secrets;$data = Secrets::get("MY_APP_SECRET");
// or
Secrets::init($project, true);
$obj = Secrets::get("MY_APP_SECRET");
```Alternatively, a PSR-16 Simple Cache implementation is also available (for
easy use with dependency injection):```php
use Battis\LazySecrets\Cache;// assume that the `GOOGLE_CLOUD_PROJECT` environment variable is set
$secrets = new Cache();$obj = $secrets->get("MY_APP_SECRET");
```or
```php
/** src/Example/DependencyConsumer */namespace Example;
use Psr\SimpleCache\CacheInterface;
class DependencyConsumer
{
public function __constructor(CacheInterface $cache)
{
// ...
}
}
``````php
/** src/app.php */$container = new DI\Container([
Psr\SimpleCache\CacheInterface::class => DI\create(
\Battis\LazySecrets\Cache::class
),
]);
$consumer = $container->get(DependencyConsumer::class);
```