質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

1952閲覧

laravel lambdaにgdを追加する方法は?

akasatanaha

総合スコア44

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2021/08/17 04:45

編集2021/08/20 08:14

lambda上のlaravelにてIntervention\Imageを使用したところ
以下のエラーが発生しました。
ちなみにローカル環境では動作しております。

gd を追加しないといけないのね、と。

[2021-08-17 10:37:18] DEV.ERROR: GD Library extension not available with this PHP installation. {"exception":"[object] (Intervention\Image\Exception\NotSupportedException(code: 0): GD Library extension not available with this PHP installation. at /var/task/vendor/intervention/image/src/Intervention/Image/Gd/Driver.php:19)

#調べたこと
https://bref.sh/docs/environment/php.html#extensions
https://github.com/brefphp/extra-php-extensions

#デプロイ方法
slsコマンドを使用してlambdaにデプロイをしております。

sls deploy --stage dev

#調べたことから以下実施

以下実行

composer require bref/extra-php-extensions

以下追記
serverless.yml

plugins: - ./vendor/bref/bref - ./vendor/bref/extra-php-extensions #追加 functions: # This function runs the Laravel website/API web: image: name: laravel events: - httpApi: '*' - ${bref:layer.php-80} - ${bref-extra:gd-php-80} #追加 # This function lets us run artisan commands in Lambda artisan: handler: artisan timeout: 120 # in seconds layers: - ${bref:layer.php-80} - ${bref:layer.console} - ${bref-extra:gd-php-80} #追加

上記設定を追記して、デプロイしても更新されない。。なぜ?

Serverless: Service files not changed. Skipping deployment...

Lambda初心者なので、どうかよろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

artisanに関しては、こちら↓と同じくレイヤーは使わずにCLIのイメージを作ると手っ取り早いと思います。
https://teratail.com/questions/362103

Dockerfile

1# Dockerfile.artisan 2FROM bref/php-80-console 3COPY . /var/task 4COPY --from=bref/extra-gd-php-80 /opt /opt 5CMD [ "artisan" ]

YAML

1# serverless.yml 2# 前略 3provider: 4# 中略 5 ecr: 6 images: 7 laravel: 8 path: ./ 9 laravel-artisan: 10 path: ./ 11 file: Dockerfile.artisan 12# 中略 13functions: 14 web: 15 image: 16 name: laravel 17 events: 18 - httpApi: '*' 19 artisan: 20 image: 21 name: laravel-artisan 22

投稿2021/10/21 07:17

surface_0

総合スコア497

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

surface_0

2021/10/21 07:25

あ、すでに解決済みに… 話が跳躍してしまっているので、他の方に向けて進展が得られたことに関して質問本文に補足入れておいてもらえると助かります。
guest

0

自己解決

解決方法としてはhttps://teratail.com/questions/362103を見てください。

・コンテナイメージにレイヤーを追加する
or
・コンテナイメージにDockerイメージを追加する
で、出来るのではないかと思います。

投稿2021/10/21 05:57

akasatanaha

総合スコア44

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

phpでgdを使用する場合はphp-gdの適正バージョンのインストール必須です。

awsのlambdaの場合はこれが適切な手順でしょうか?
PHP GD on AWS Lambda (using Bref)

この海外ブログサイトの中盤にある
Publish the zip file as an AWS lambda layer
の項目にあるコマンドにphp-gdをインストールしている場面があります。

投稿2021/08/26 08:01

FKM

総合スコア3647

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

akasatanaha

2021/08/30 05:05

返信おそくなりまして申し訳ございません。 なるほど。カスタム layer として作って設定してってことですよね。 ただ少しハードルが高い・・・ ご指摘いただきましてよく見返していたら serverless.yml の記述が間違えていることに気づき、そちらの方法で 解決できないかと考えております。以下、修正。 web: image: name: laravel events: - httpApi: '*' layers:#←忘れていた。漏れ。 - ${bref:layer.php-80-fpm} - ${bref-extra:gd-php-80} #←変更 environment: ${self:custom.environment.${self:provider.stage}} ただ上記だと image と layer が共存できないみたいなので思案中です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問