带有 Lumen 的 AWS 开发工具包
Posted
技术标签:
【中文标题】带有 Lumen 的 AWS 开发工具包【英文标题】:AWS SDK with Lumen 【发布时间】:2016-03-24 13:51:59 【问题描述】:我正在尝试使用 lumen 安装 AWS Laravel SDK。 我可以安装它:
"require":
"aws/aws-sdk-php-laravel": "~3.0"
但是,文档说:
在您的 config/app.php 中找到 providers 键并注册 AWS 服务提供商。
'providers' => array(
// ...
Aws\Laravel\AwsServiceProvider::class,
)
在您的 config/app.php 中找到 aliases 键并添加 AWS 外观别名。
'aliases' => array(
// ...
'AWS' => Aws\Laravel\AwsFacade::class,
)
东西在Lumen,没有config/app.php
我该怎么做???
【问题讨论】:
我认为你应该从头开始创建它 (config/app.php
)
【参考方案1】:
在 bootstrap/app.php 中,添加以下内容:
提供者:
$app->register(Aws\Laravel\AwsServiceProvider::class);
立面
请注意,您必须取消注释 $app->withFacades();为了工作的门面。class_alias('Aws\Laravel\AwsFacade','AWS');
【讨论】:
在那之后,文档说要运行:php artisan vendor:publish
,但是这个命令不起作用,还说要配置 Lumen 上不存在的 app/config/aws.php
...有什么提示吗?跨度>
【参考方案2】:
一开始我也有点困惑,所以我最终做了什么。
-
使用 Composer 安装 AWS Laravel SDK (https://github.com/aws/aws-sdk-php-laravel)。
更新 app.php 以包含
$app->register(Aws\Laravel\AwsServiceProvider::class);
将我的 AWS 凭证/区域值添加到我的 .env 文件中
在我的一个辅助类中创建一个方法,定义如下:
public static function getS3Instance()
return new \Aws\S3\S3Client([
'version' => 'latest',
'region' => env('AWS_REGION'),
'credentials' => [
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET')
]
]);
在一个模型中,我只需调用 Util::getS3Instance(),然后我就拥有了开始使用 S3 所需的一切。这个函数可以很容易地适应返回库中包含的任何 AWS 客户端的实例。
这一切都发生在 Lumen 5.6 项目中,但我认为同样的方法也适用于旧版本的 Lumen。我希望这会有所帮助!
【讨论】:
您应该向服务容器添加绑定,而不是使用帮助文件来访问 S3Client。【参考方案3】:您可以复制默认 Lumen 配置文件以覆盖它们。
配置文件
如果您愿意,您可以使用完整的“Laravel 风格”配置文件。这 默认文件存储在 vendor/laravel/lumen-framework/config 目录。 Lumen 将使用您的配置文件副本,如果您 将其中一个文件复制并粘贴到您的配置目录中 项目根目录。
使用完整的配置文件可以让您更好地控制一些 Lumen的配置方面,比如配置多个存储 “磁盘”或读/写数据库连接。
参考:http://lumen.laravel.com/docs/installation#configuration-files
【讨论】:
以上是关于带有 Lumen 的 AWS 开发工具包的主要内容,如果未能解决你的问题,请参考以下文章
使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域
如何在节点 AWS 开发工具包代码中使用 AWS ECS 任务角色