带有 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);

立面

class_alias('Aws\Laravel\AwsFacade','AWS');

请注意,您必须取消注释 $app->withFacades();为了工作的门面。

【讨论】:

在那之后,文档说要运行: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 开发工具包的主要内容,如果未能解决你的问题,请参考以下文章

AWS 开发工具包的会话到期间隔和返回码

使用适用于 Ruby 的 AWS 开发工具包发布到 SNS 主题时指定区域

如何承诺 AWS JavaScript 开发工具包?

如何在节点 AWS 开发工具包代码中使用 AWS ECS 任务角色

使用 AWS PHP 开发工具包将“有效负载”传递给 AWS Lambda 函数

桥接 AWS 开发工具包上的 XCode 错误