我的 Laravel 应用程序调用AdminGetUser端点。
在本地环境中,成功返回资源。
部署到 Vapor 环境后,失败并出现以下错误消息:
User: arn:aws:sts::xxxx:assumed-role/laravel-vapor-role/xxxx is not authorized to perform: **cognito-idp:AdminGetUser** on resource: arn:aws:cognito-idp:us-east-1:xxxx:userpool/us-east-1_xxxx because no identity-based policy allows the cognito-idp:AdminGetUser action
Run Code Online (Sandbox Code Playgroud)
有什么问题吗?
我正在使用最新的 Laravel 7 开发一个应用程序,并使用 Vapor 部署到 AWS。我在Windows 10环境下。
当运行以下命令部署到暂存时,vendor/bin/vapor deploy出现以下错误。
In Process.php line 252:
The command "COMPOSER_MIRROR_PATH_REPOS=1 composer install" failed.
Exit Code: 1(General error)
Working directory: C:\Users\Matthew Wallace\Development\web\615ioDemos/.vap
or/build/app
Output:
================
Error Output:
================
'COMPOSER_MIRROR_PATH_REPOS' is not recognized as an internal or external c
ommand,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud) 我试图在 Laravel Vapor 中包含 php-gd 扩展,因为假设没有开箱即用。我需要这个包的扩展https://github.com/Maatwebsite/Laravel-Excel,我用它来导出 csv。
这是当composer尝试安装包时vapor在部署时返回的结果。
从这篇文章的暗示来看:
https://blog.laravel.com/vapor-adding-imagick-as-a-separate-lambda-layer
我知道我需要使用或构建我自己的带有 php GD 扩展的 lambda 层,这样我就可以将其作为额外的蒸气层包含在内,但还不太确定如何做到这一点。
我的 B 计划只是将我的 Laravel 应用程序安装在专用 VPS(例如 EC2)上,并提供软件包和 php-gd,我可以将其用作服务。
我最近将 Laravel 应用程序从服务器移到了 Vapor。此应用程序依赖于使用 记录请求 IP 地址Request::ip(),但自从切换到 Vapor 后,所有 IP 都记录为 127.0.0.1。
我查看了https://laravel.com/docs/5.6/requests#configuring-trusted-proxies上的 Trusted Proxy 文档,但我们没有设置负载均衡器,因此该解决方案似乎不相关。我怀疑这个 IP 地址来自 Amazon API Gateway。
我们如何在部署在 Vapor 上的应用程序中获取传入请求的实际客户端 IP?
我们如何使用 IP 地址的最小示例如下:
public function store(Request $request)
{
$workerIP = $request->ip();
$worker = Worker::create(['ip_address' => $workerIP]);
return view('workers.show')->withWorker($worker);
}
Run Code Online (Sandbox Code Playgroud) 我不断得到:
SQLSTATE[08006] [7] 致命:剩余的连接槽是为非复制超级用户连接保留的(SQL:select * from "sheeps" where "name" = foobar limit 1)
于是想到了修改paramaeter组中的值(max_connections默认为270)
但是当我将 max_connections 更改为更高的值时,我得到:
“错误保存:无法修改默认参数组。(服务:AmazonRDS;状态代码:400;错误代码:InvalidParameterValue;请求 ID:b5179a68-xxxx-44a8-b396-xxx;代理:null)”
我有 Laravel Vapor 提供的最大限制:3008 mb。
我已经被困了一段时间来弄清楚以下异常,任何帮助都会被分配。我们正在 Laravel 项目上使用 AWS Lambda 服务。我们正在使用Laravel Excel将大量数据导出到 CSV 文件,并通过 Laravel SQS 队列来完成此操作。
PHP 版本:7.2
Laravel 框架:7.30.1
Laravel Excel:3.1
例外:
Aws\Sqs\Exception\SqsException /tmp/vendor/aws/aws-sdk-php...
stage.ERROR: Error executing "SendMessage" on "https://sqs.eu-central-
1.amazonaws.com"; AWS HTTP error: Client error: `POST https://sqs.eu-
central-1.amazonaws.com/` resulted in a `413 Request Entity Too Large`
response:
HTTP content length exceeded 1662976 bytes.
Unable to parse error information from response - Error parsing XML: String could not be parsed as
XML {"exception":"[object] (Aws\\Sqs\\Exception\\SqsException(code: 0): Error executing
\"SendMessage\" on \"https://sqs.eu-central-1.amazonaws.com/"; AWS …Run Code Online (Sandbox Code Playgroud) 我看到一些帖子让 Imagick 使用 Docker 镜像在 php 8 上工作,并从 Imagick 存储库提交。Imagick 尚未正式支持 php 8,因为它没有通过其他测试,但可以按原样在 php 8 上运行。
需要一个指针来让它在我的本地工作,然后到 Laravel Vapor。这应该在 Dockerfile 中起作用,但docker-php-ext-install在运行时找不到sail build
更新:这适用于 Vapor。staging.dockerfile 应该如下所示:
FROM laravelphp/vapor:php80
ARG IMAGICK_LAST_COMMIT='448c1cd0d58ba2838b9b6dff71c9b7e70a401b90'
RUN mkdir -p /usr/src/php/ext/imagick \
&& curl -fsSL https://github.com/Imagick/imagick/archive/${IMAGICK_LAST_COMMIT}.tar.gz | tar xvz -C /usr/src/php/ext/imagick --strip 1 \
&& sed -i s/'#define PHP_IMAGICK_VERSION "@PACKAGE_VERSION@"'/'#define PHP_IMAGICK_VERSION "3.4.5rc"'/ /usr/src/php/ext/imagick/php_imagick.h \
&& docker-php-ext-configure imagick \
&& docker-php-ext-install imagick
COPY . /var/task
Run Code Online (Sandbox Code Playgroud)
所以我仍然面临的问题是将其纳入我的本地。使用帆构建
当我尝试运行实现块读取和队列的导入时,我从 Vapor 队列收到以下错误;
ErrorException: touch(): Unable to create file /tmp/storage/framework/laravel-excel/laravel-excel-7IEEz0rP7NORtp7N4NeOxuH0hlbM9JPR.csv because No such file or directory in /var/task/vendor/maatwebsite/excel/src/Files/RemoteTemporaryFile.php:97
Run Code Online (Sandbox Code Playgroud)
Laravel Excel 文档说要在 config/excel.php 中设置这些值
https://docs.laravel-excel.com/3.1/imports/queued.html#multi-server-setup
'temporary_files' => [
'local_path' => storage_path('framework/laravel-excel'),
'remote_disk' => 's3',
'force_resync_remote' => true,
Run Code Online (Sandbox Code Playgroud)
我的 steam yml 文件具有以下存储设置,并且使用正确的 env 值一切正常。用于蒸汽和当地发展
storage: **correct bucket name**
Run Code Online (Sandbox Code Playgroud)
有没有人设法使用 Laravel Excel 和 Vapor 进行排队导入,如果是的话,您是如何管理的?该文档并没有真正解释我应该使用什么值
我正在尝试通过 Laravel Vapor 将 BugSnag 与部署在 AWS Lambda 上的 Laravel 应用程序集成。
Bugsnag 在我的本地工作正常,但没有从 AWS Lamda 发送任何错误。
我也试过 Bugsnag::setBatchSending(false) 但它仍然不适合我。
任何想法可能是错误的?
laravel ×6
aws-lambda ×5
php ×2
amazon-rds ×1
amazon-sqs ×1
bugsnag ×1
composer-php ×1
docker ×1
imagick ×1
laravel-8 ×1
php-8 ×1
postgresql ×1