getsolaris/laravel-aws-secretsmanager

此包已 废弃 并不再维护。未建议替代包。

Laravel 包,用于从 AWS Secrets Manager 获取密钥管理

v1.0.0 2022-09-25 13:36 UTC

This package is auto-updated.

Last update: 2023-06-20 23:28:24 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

通过 AWS Secrets Manager 进行通信可能会产生不必要的费用。

因此,我们开发了一个简单的缓存包。

安装

您可以通过 composer 安装此包

composer require getsolaris/laravel-aws-secretsmanager

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Getsolaris\LaravelAwsSecretsManager\AwsSecretsManagerServiceProvider" --tag="config"

使用方法

您可以选择缓存驱动和缓存 TTL

默认缓存驱动为 filesystem (storage/framework/cache/data)

# .env
CACHE_DRIVER=redis
CACHE_TTL=86400

# aws configuration
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=

所需权限: secretsmanager:GetSecretValue

如果密钥使用客户管理的密钥(而不是 AWS 管理的密钥 aws/secretsmanager)加密

示例

createSecret

<?php

namespace App\Services;

use Getsolaris\LaravelAwsSecretsManager\AwsSecretsManager;

class FacebookApiService extends Service
{
    protected AwsSecretsManager $client;
    public function __construct()
    {
        $this->client = new AwsSecretsManager();
    }

    /**
     * @param string $secretId
     * @return array
     * @throws \Exception
     */
    public function createFacebookSecret(): \Aws\Result
    {
        $appId = env('FACEBOOK_APP_ID', 'test_app_id_123');
        $appSecret = env('FACEBOOK_APP_SECRET', 'test_app_secret_123');
        
        $createSecret = new CreateSecretDto(
            Name: 'prod/facebook/secret',
            SecretString: [
                'app_id' => $appId,
                'app_secret' => $appSecret,
            ],
        );
        
        $createSecret = new CreateSecretDto([       
            'Name' => 'prod/facebook/secret',
            'SecretString' => [
                'app_id' => $appId,
                'app_secret' => $appSecret,
            ],
        ]);
    
        return $this->client->createSecret($createSecret);
    }
}

getSecret

<?php

namespace App\Services;

use Getsolaris\LaravelAwsSecretsManager\AwsSecretsManager;

class FacebookApiService extends Service
{
    protected AwsSecretsManager $client;
    public function __construct()
    {
        $this->client = new AwsSecretsManager();
    }

    /**
     * @param string $secretId
     * @return array
     * @throws \Exception
     */
    public function getFacebookSecret(): \Aws\Result
    {
        return $this->client->getSecret('prod/facebook/secret');
    }
}

getSecretValue

<?php

namespace App\Services;

use Getsolaris\LaravelAwsSecretsManager\AwsSecretsManager;

class FacebookApiService extends Service
{
    protected AwsSecretsManager $client;
    public function __construct()
    {
        $this->client = new AwsSecretsManager();
    }

    /**
     * @param string $secretId
     * @return array
     * @throws \Exception
     */
    public function getFacebookSecretValue(): array
    {
        return $this->client->getSecretValue('prod/facebook/secret');
    }
}

资源

变更日志

请参阅 CHANGELOG 了解最近的变化。

许可

MIT 许可证 (MIT)。请参阅 许可文件 了解更多信息。