laravel をコンテナイメージにして、Lambda を使っております。
以下URLを参考にして bref,serverless,laravel,php,lambda で環境を構築しました。
LaravelをコンテナにしてLambdaでデプロイするのが超簡単になった2021年
そこで php の拡張機能(gd)を追加したいと思い色々試したのですが、
コンテナイメージは、Lambda レイヤーをサポートしていないので
コンテナイメージ自体に Lambda レイヤーをコピーする必要があることが分かりました。
以下参照
コンテナイメージ内でLambda レイヤーと拡張機能を動作させる
コンテナイメージとしてパッケージ化された Lambda 関数は関数設定へのLambda レイヤーの追加をサポートしていません。 ただし、コンテナイメージで Lambda レイヤーの機能を使用するソリューションはあります。 あなた自身がビルドプロセス中に、好みのランタイムと依存関係をコンテナイメージの一部としてパッケージ化する作業を行います。
Lambda レイヤー追加方法とは?
- (上記URLから)『Lambda レイヤーの内容をコンテナイメージにコピーする』必要がある。
この作業がいまいちどうすれば良いか分からないので、大変申し訳ございませんが、どういう手順で進めればよいか
ご教示願えますでしょうか。
試したこと編集前の Dockerfile
FROM bref/php-80-fpm COPY . /var/task CMD [ "public/index.php" ]
Dockerfile で追加したい Lamdba レイヤーを取り込めばいいのかな?と思い、上記あったサイトのように記述してみる。
が、apt-getコマンドが見つからないと言われる。そもそもこの方法であっているのか!?
編集後 Dockerfile
FROM bref/php-80-fpm COPY . /var/task RUN yum -y install aws-cli curl unzip RUN mkdir -p /opt RUN curl $(AWS_DEFAULT_REGION=ap-northeast-1 AWS_ACCESS_KEY_ID=xxxxxx AWS_SECRET_ACCESS_KEY=xxxxxx aws lambda get-layer-version-by-arn --arn arn:aws:lambda:hogehgoe:php-gd:1 --query 'Content.Location' --output text) --output layer.zip RUN unzip layer.zip -d /opt RUN rm layer.zip CMD [ "public/index.php" ]
実行後
# sls deploy --stage dev Serverless: Configuration warning at 'disabledDeprecations[0]': should match pattern "^[A-Z0-9_]+$" Serverless: Serverless: Learn more about configuration validation here: http://slss.io/configuration-validation Serverless: Serverless: Packaging service... Serverless: Excluding development dependencies... Sending build context to Docker daemon 290.4MB Step 1/8 : FROM bref/php-80-fpm ---> 540bd4e4f016 Step 2/8 : COPY . /var/task ---> 163363282de0 Step 3/8 : RUN yum -y install aws-cli curl unzip ~~省略 Step 4/8 : RUN mkdir -p /opt ---> Running in c603553f2e55 Removing intermediate container c603553f2e55 ---> c35462e37fd8 Step 5/8 : RUN curl $(AWS_DEFAULT_REGION=ap-northeast-1 AWS_ACCESS_KEY_ID=AKIA3DMDSKW5JOBBUJUV AWS_SECRET_ACCESS_KEY=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 aws lambda get-layer-version-by-arn --arn arn:aws:lambda:ap-northeast-1:763169494458:layer:php-gd:4 --query 'Content.Location' --output text) --output layer.zip ---> Running in b13050df8a81 % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 686k 100 686k 0 0 1511k 0 --:--:-- --:--:-- --:--:-- 1508k Removing intermediate container b13050df8a81 ---> 2060c52ff462 Step 6/8 : RUN unzip layer.zip -d /opt ---> Running in 826814675f5d Archive: layer.zip inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/gd.so creating: /opt/bref/lib/x86_64-linux-gnu/ inflating: /opt/bref/lib/x86_64-linux-gnu/libgdbm_compat.so.4.0.0 inflating: /opt/bref/lib/x86_64-linux-gnu/libgdbm.so.6.0.0 inflating: /opt/bref/lib/x86_64-linux-gnu/libgd.so.3.0.8 inflating: /opt/bref/lib/x86_64-linux-gnu/libgdbm_compat.so.4 inflating: /opt/bref/lib/x86_64-linux-gnu/libgd.so.3 inflating: /opt/bref/lib/x86_64-linux-gnu/libgdbm.so.6 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgdbm_compat.so.4.0.0 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgdbm.so.6.0.0 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgd.so.3.0.8 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgdbm_compat.so.4 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgd.so.3 inflating: /opt/bref/lib/php/extensions/no-debug-non-zts-20200930/libgdbm.so.6 Removing intermediate container 826814675f5d ---> 43589f96b25d Step 7/8 : RUN rm layer.zip ---> Running in 8cd540fdb6d9 Removing intermediate container 8cd540fdb6d9 ---> 94e4b766402a Step 8/8 : CMD [ "public/index.php" ] ---> Running in fbf556426956 Removing intermediate container fbf556426956 ---> 2f91c8be01c0 Successfully built 2f91c8be01c0
↑のログのStep6にてファイルが展開されていることが分かる。
また実際に該当ディレクトリにファイルがあるか確認したところ存在しました。
が、phpinfo()で確認したところ、gd は設定されていないとのこと。
なので、追加したレイヤー(gd レイヤー)が、正しいものではないようだ・・・
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/19 10:02 編集
2021/10/19 10:26
2021/10/19 18:47 編集
2021/10/20 04:09
2021/10/20 09:57 編集
2021/10/20 14:42 編集
2021/10/20 13:12
2021/10/20 13:18
2021/10/20 15:26