renoki-co / laravel-steampipe
使用 Laravel 内置的 ORM 类,通过 Steampipe 查询云资源。
Requires
- illuminate/console: ^8.83|^9.0.1
- illuminate/database: ^8.83|^9.0.1
- illuminate/support: ^8.83|^9.0.1
- symfony/process: ^5.4|^6.0
Requires (Dev)
- mockery/mockery: ^1.5
- orchestra/testbench: ^6.28|^7.0
- orchestra/testbench-core: ^6.28|^7.0
- phpunit/phpunit: ^9.5.13
This package is auto-updated.
Last update: 2024-09-23 12:27:35 UTC
README
使用 Laravel 内置的 ORM 类通过 Steampipe(一个开源的 CLI 工具,可使用 SQL 立即查询云 API)查询云资源。
🤝 支持
如果您在生产应用、演示、个人项目、学校项目等中使用了一个或多个 Renoki Co. 的开源包,请通过 Github Sponsors 赞助我们的工作。📦
🚀 安装
您可以通过 composer 安装此包
composer require renoki-co/laravel-steampipe
在您的 config/database.php
文件中,添加一个新的驱动
'connections' => [ 'steampipe' => [ 'driver' => 'steampipe', 'binary' => env('STEAMPIPE_BINARY', 'steampipe'), ], ],
您可以使用 STEAMPIPE_BINARY
定义 Steampipe 二进制文件的路径。
🙌 使用
Steampipe 是多厂商、多插件的。这意味着您可以使用与 Postgres 相同的方式与任何云 API 进行交互。
为了本地运行并避免代码污染,您可能需要为要通过云 API 访问的 "表" 创建一个模型。
例如,让我们为 aws_region
表 创建一个 AwsRegion
模型。请确保您已经 安装了 Steampipe 的 AWS 插件。
php artisan steampipe:make:model aws_region
请注意,模型是从表创建的,格式为单数,如 aws_region
。通常,在 Laravel 中您会直接创建模型类名。为了平衡并简化生成命令,您应该传递表名而不是类名。
该命令将为您创建一个 app/Steampipe/Aws/AwsRegion.php
文件,您可以在其中访问模型
use App\Steampipe\Aws\AwsRegion; foreach (AwsRegion::all() as $region) { // }
Laravel ORM 中的所有类似 SQL 的方法都可以使用,具体请参阅 Steampipe 文档 中的说明。
模型还可以与内置的模型功能一起使用,例如隐藏字段或附加。
生成
您可以生成所需数量的模型。约定是在创建表时,它将始终遵循以下模式
App\Steampipe\{Provider}\{TableNameStudlyCase};
这样,模型就会知道如何访问表。例如,对于 DigitalOcean droplet,它将如下所示
php artisan steampipe:make:model digitalocean_droplet
use App\Steampipe\Digitalocean\DigitaloceanDroplet; DigitaloceanDroplet::find(227211874);
🐛 测试
您需要设置一个 AWS 账户,并将 AWS_ACCESS_KEY_ID
和 AWS_SECRET_ACCESS_KEY
添加到环境变量中。
拥有访问令牌的用户应具有以下 IAM 策略
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:DescribeRegions", "Resource": "*" } ] }
要运行测试
vendor/bin/phpunit
🤝 贡献
有关详细信息,请参阅 CONTRIBUTING。
🔒 安全
如果您发现任何与安全相关的问题,请通过电子邮件 alex@renoki.org 而不是使用问题跟踪器。