Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lambda Layerを作る時に沼った話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ヤマダ(北野)
December 13, 2023
Technology
20
0
Share
Lambda Layerを作る時に沼った話
ヤマダ(北野)
December 13, 2023
More Decks by ヤマダ(北野)
See All by ヤマダ(北野)
「Kiroってどうなの?」 リアルな使い勝手と最新の料金ガイド
yamada_r
0
98
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
3
310
カップラーメンタイマーで感じる生成AIの進化
yamada_r
0
18
Amazon Lexに感じる無限の可能性
yamada_r
0
55
JAWS DAYS 2025 re:Chrees 広報担当の振り返り
yamada_r
0
180
それ、AWS Step Functionsで置き換えれん?
yamada_r
0
35
はじめてのすくらむ
yamada_r
0
31
新米CBの自己紹介
yamada_r
0
20
Amplify StudioとFigmaで遊ぶ
yamada_r
0
25
Other Decks in Technology
See All in Technology
やさしいとこから始めるGitHubリポジトリのセキュリティ
tsubakimoto_s
3
2.1k
Oracle Cloud Infrastructure(OCI):Onboarding Session(はじめてのOCI/Oracle Supportご利⽤ガイド)
oracle4engineer
PRO
2
17k
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
900
Microsoft Fabricで考える非構造データのAI活用
ryomaru0825
0
610
Physical AI on AWS リファレンスアーキテクチャ / Physical AI on AWS Reference Architecture
aws_shota
1
310
AI時代のシステム開発者の仕事_20260328
sengtor
0
320
出版記念イベントin大阪「書籍紹介&私がよく使うMCPサーバー3選と社内で安全に活用する方法」
kintotechdev
0
140
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
5
1.3k
契約書からの情報抽出を行うLLMのスループットを、バッチ処理を用いて最大40%改善した話
sansantech
PRO
3
340
【Oracle Cloud ウェビナー】データ主権はクラウドで守れるのか?NTTデータ様のOracle Alloyで実現するソブリン対応クラウドの最適解
oracle4engineer
PRO
3
130
Bref でサービスを運用している話
sgash708
0
220
Babylon.js を使って試した色々な内容 / Various things I tried using Babylon.js / Babylon.js 勉強会 vol.5
you
PRO
0
200
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.1k
ラッコキーワード サービス紹介資料
rakko
1
2.9M
Git: the NoSQL Database
bkeepers
PRO
432
67k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
340
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
260
Producing Creativity
orderedlist
PRO
348
40k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Deep Space Network (abreviated)
tonyrice
0
100
A designer walks into a library…
pauljervisheath
211
24k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1k
Transcript
ヤマダ(北野 涼平) Lambda Layerを作るときに沼った話 2023/11/16 アイレット株式会社 クラウドインテグレーション事業部 開発第1セクション
自己紹介 2 所属:アイレット株式会社 X:@benkyo_ganbaman 趣味:ハーゲンダッツの蓋集め 好きなAWSサービス:AWS FIS、AWS Lambda ヤマダ(北野 涼平)
3 本題
とある日のこと 4 ざっくりとこんな感じ • Python3.11 • 追加内容は軽微 • ↑の修正に伴い、Lambda Layerにもライブラリの追加が必要
• Lambda Layerを生成するフローが確立されている(Qiitaにある記事を参考にしていた) ◦ https://qiita.com/hoto17296/items/a374efc2d8159d75bc71 ◦ amazonlinuxにPythonをインストールしてレイヤーを作成している 既存案件の追加開発を行うことに
とある日のこと 5 追加内容が簡単だったこともあり、パパパッと実装を終えました。 そしていざデプロイしてみると... 意気揚々と作業を進める
とある日のこと 6 このエラー、調べると記事がたくさん出てきます。 私は検索結果から何件かの記事を確認しました。するとそれらの記事はおおよそ同じことを書 いていて「Lambdaが動く環境と同じ環境でLayerを作成する必要がある」と言います。 いくつかの記事では「PythonのVersionを合わせること」や「AmazonLinuxで作成しようね」 と多少ばらつきはありましたが、その辺りがよくないということが分かりました! 「よーし、とりあえず記事にあったCloud9で作ってみるのを試してみよう!」 →ここから泥沼が始まります。 やけに長いエラーをググってみる
7 沼①:Cloud9での成功
沼①:Cloud9での成功 8 コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)です。 言わずもがなですが、AmazonLinux環境なのでPythonさえインストールできれば勝ち確。これ も非常に細かく説明してくれている記事があったので特に詰まることもなく環境構築に成功。 少しドキドキしながら作成したLambdaLayerをアップロードしてみます。 実行成功! 今まで失敗していた環境もAmazonLinuxで、Pythonのバージョンも合っている。 Cloud9について
9 沼②:CDKでの成功
沼②:CDKでの成功 10 プログラミング言語の優れた表現力を活かして、信頼性が高く、スケーラブルで、コスト効率 の高いアプリケーションをクラウドで構築できます。今回の構成をそれなりに踏襲したプロジ ェクトを作成し、デプロイしてみました。 特に問題なくデプロイ完了。 そして実行成功! どんどん謎が深まります。 CDKについて
11 沼③:Mac知識の欠落
沼③:Mac知識の欠落 12 この沼の時期に働いている環境が変わって、業務で使用しているPCがMacになりました。 元々ゴリゴリのWindows派で、家に3台あるPCも全てWin11。Windowsならショートカットも バリバリでしたが、Macは初めてで何をするにも分からず調べまくりの毎日です。 未だに右クリックがないことにも慣れていない私では、とある大事な事に気が回るはずもなく ... 業務で使用しているPC
13 そう、CPUアーキテクチャです!
エラーの原因 14 このエラー、環境面のズレのいろんな原因で発生します。もちろんCPUも然りです。 元々構築されていたAWS Lambdaのアーキテクチャは「x86_64」でした。前任者のPCもMac でしたが、M1以前のCPUを積んでいたため、Dockerファイルで記述がない場合は実行してい るPCに依存するので自動的に「x86_64」に。私のPCはM2だったので同じフローに則ると「 arm64」に。 非常にシンプルなミス ここで指定しないと
実行PCに依存する。
15 沼を振り返ってみます。
沼①:Cloud9での成功 16 コードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE)です。 言わずもがなですが、AmazonLinux環境なのでPythonさえインストールできれば勝ち確。これ も非常に細かく説明してくれている記事があったので特に詰まることもなく環境構築に成功。 少しドキドキしながら作成したLambdaLayerをアップロードしてみます。 実行成功! 今まで失敗していた環境もAmazonLinuxで、Pythonのバージョンも合っている。 Cloud9について
Cloud9のCPUは? Cloud9はEC2インスタンス上で動いています。 環境を起動するときに自分でインスタンスを選択しているはずです。私は今回の環 境を作成する際に「t2micro」を選択しました。 t2microはgraviton系ではないので「x86_64」となります。 今回のAWS Lambdaと一致しているため、エラーは発生しません。
沼②:CDKでの成功 17 プログラミング言語の優れた表現力を活かして、信頼性が高く、スケーラブルで、コスト効率 の高いアプリケーションをクラウドで構築できます。今回の構成をそれなりに踏襲したプロジ ェクトを作成し、デプロイしてみました。 特に問題なくデプロイ完了。 そして実行成功! どんどん謎が深まります。 CDKについて CDKのCPUは?
これに関しては全然知りませんでしたが、ドキュメントを見てみるとデフォルトで 「x86_64」にしてくれるようです。 つまり、特に指定がなければよしなに「x86_64」にしてくれているということです ね。これであれば実行するPCに依存しません。CDKではDocker buildxを使用してく れているそうです。 もちろん、AWS Lambdaと一致しているため、エラーは発生しません。
沼③:Mac知識の欠落 18 この沼の時期に働いている環境が変わって、業務で使用しているPCがMacになりました。 元々ゴリゴリのWindows派で、家に3台あるPCも全てWin11。Windowsならショートカットも バリバリでしたが、Macは初めてで何をするにも分からず調べまくりの毎日です。 未だに右クリックがないことにも慣れていない私では、とある大事な事に気が回るはずもなく ... 業務で使用しているPC 業務で使用しているPCは? Macを使用しています。また、かなり新しい綺麗なPCを持たせていただいているの
で、M2が搭載されています。 M2では「arm64」が採用されています。 Lambda Layerを作成した環境は「arm64」 実行するAWS Lambdaは「x86_64」 これが、エラー発生した原因です。
19 まとめ
まとめ 20 一番大きかったのは、私のMac知識の無さだと思います。前任者もMacを使っているという情 報のみで同じCPUアーキテクチャだろうと思って初めから疑いませんでした。 また、Cloud9やCDKやその他諸々を試して軒並み成功していたのでどんどん原因が分からなく なってしまいました。 再現性のある手順で開発フローを確立しておくことはとても大切です。後任の方が資料を見る だけで引き継ぎができる状態がベストだと思います。そのためには環境面でのブレをなくすた めにライブラリのバージョンやCPUアーキテクチャもしっかりと記述しておくということを再 認識できました。
沼った原因について
21 学び
22 CPUはもっと早く疑おう!
23 ご清聴ありがとうございました