larva / laravel-aliyun
This is a Laravel expansion for the Aliyun.
2.3.0
2026-07-23 06:25 UTC
Requires
- php: ^8.2
- ext-dom: *
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
- alibabacloud/sdk: ^1.8
- illuminate/bus: ^12.0|^13.0
- illuminate/queue: ^12.0|^13.0
- illuminate/support: ^12.0|^13.0
Requires (Dev)
- laravel/framework: ^12.0|^13.0
README
This is a Aliyun expansion for the Laravel.
环境需求
- PHP >= 8.2
- Laravel >= 12.0
安装
composer require larva/laravel-aliyun -vv
配置
1. 发布配置文件
php artisan vendor:publish --tag="aliyun-config"
发布后配置文件位于 config/aliyun.php。
2. 环境变量
在 .env 文件中配置阿里云访问凭证:
ALIBABA_CLOUD_ACCESS_KEY_ID=your-access-key-id ALIBABA_CLOUD_ACCESS_KEY_SECRET=your-access-key-secret
3. 多账号配置
config/aliyun.php 支持配置多个阿里云账号,default 为默认账号,其余账号会与默认配置合并:
return [ 'default' => [ 'type' => 'access_key', 'region' => 'cn-beijing', 'access_id' => env('ALIBABA_CLOUD_ACCESS_KEY_ID'), 'access_key' => env('ALIBABA_CLOUD_ACCESS_KEY_SECRET'), 'connect_timeout' => 5, 'timeout' => 10, 'proxy' => null, ], // 额外账号(配置会与 default 合并) 'secondary' => [ 'type' => 'access_key', 'access_id' => env('ALIYUN_SECONDARY_ACCESS_KEY_ID'), 'access_key' => env('ALIYUN_SECONDARY_ACCESS_KEY_SECRET'), 'region' => 'cn-shanghai', ], ];
4. 认证方式
支持四种阿里云认证方式,通过 type 字段切换:
| type | 说明 | 必需参数 |
|---|---|---|
access_key |
AccessKey 认证(默认) | access_id, access_key |
ecs_ram_role |
ECS RAM 角色认证 | role_name |
ram_role_arn |
RAM Role ARN 认证 | access_id, access_key, role_arn, role_session_name |
rsa_key_pair |
RSA 密钥对认证 | public_key_id, private_key_file |
功能
短信服务(SMS)
use Larva\Aliyun\AliyunHelper; // 发送短信 AliyunHelper::sendSms( phoneNumbers: '13800138000', // string|array 手机号 templateCode: 'SMS_123456789', // 模板Code templateParam: ['code' => '1234'], // array|string 模板参数 signName: '阿里云', // 签名 smsUpExtendCode: null, // 选填,上行短信扩展码 outId: null, // 选填,外部流水号 );
CDN 服务
use Larva\Aliyun\Jobs\Cdn\PushObjectCacheJob; use Larva\Aliyun\Jobs\Cdn\RefreshObjectCachesJob; // 预热缓存(将源站内容预热到 L2 缓存节点) PushObjectCacheJob::dispatch(['https://example.com/page1', 'https://example.com/page2'], 'domestic'); // $area: domestic(国内)| overseas(海外) // 刷新缓存 RefreshObjectCachesJob::dispatch('https://example.com/page1', 'File'); // $objectType: File(文件)| Directory(目录)
DNS 服务(Alidns)
use Larva\Aliyun\Jobs\Dns\DeleteDomainRecord; use Larva\Aliyun\Jobs\Dns\DeleteSubDomainRecordsJob; use Larva\Aliyun\Jobs\Dns\UpdateDomainRecordJob; // 删除解析记录 DeleteDomainRecord::dispatch('recordId'); // 删除主机记录的所有解析 DeleteSubDomainRecordsJob::dispatch('example.com', 'www'); // 修改解析记录 UpdateDomainRecordJob::dispatch( recordId: 'recordId', rr: 'www', type: 'A', value: '192.168.1.1', ttl: 600, // 选填,默认 600 line: 'default', // 选填,默认 default );
直播服务(Live)
use Larva\Aliyun\LiveHelper; use Larva\Aliyun\Jobs\Live\StreamsNotifySetJob; use Larva\Aliyun\Jobs\Live\StreamNotifyDeleteJob; // 设置直播推流回调(同步) LiveHelper::setLiveStreamsNotifyUrlConfig('push.example.com', 'https://example.com/callback'); // 删除流回调配置(同步) LiveHelper::deleteLiveStreamsNotifyUrlConfig('push.example.com'); // 禁止推流(同步) LiveHelper::forbidLiveStream('app', 'push.example.com', 'streamName'); // 恢复推流(同步) LiveHelper::resumeLiveStream('app', 'push.example.com', 'streamName'); // 设置直播推流回调(异步队列) StreamsNotifySetJob::dispatch('push.example.com', 'https://example.com/callback'); // 删除流回调配置(异步队列) StreamNotifyDeleteJob::dispatch('push.example.com');
宽带提速服务
use Larva\Aliyun\AliyunHelper; // 宽带提速预检查 AliyunHelper::SnsuBandPreCheck('192.168.1.1', 80);
队列任务
所有 Job 默认实现 ShouldQueue,通过 dispatch() 方法分发到队列异步执行。可通过 Job 类的 $tries 属性控制重试次数:
| Job | 默认重试次数 |
|---|---|
PushObjectCacheJob |
默认 |
RefreshObjectCachesJob |
3 |
DeleteDomainRecord |
默认 |
DeleteSubDomainRecordsJob |
默认 |
UpdateDomainRecordJob |
2 |
SendSmsJob |
2 |
StreamsNotifySetJob |
默认 |
StreamNotifyDeleteJob |
默认 |