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
ヤマダ(北野)
December 13, 2023
Technology
0
9
Lambda Layerを作る時に沼った話
ヤマダ(北野)
December 13, 2023
Tweet
Share
More Decks by ヤマダ(北野)
See All by ヤマダ(北野)
「Kiroってどうなの?」 リアルな使い勝手と最新の料金ガイド
yamada_r
0
75
まずはマネコンでちゃちゃっと作ってから、それをCDKにしてみよか。
yamada_r
3
260
カップラーメンタイマーで感じる生成AIの進化
yamada_r
0
6
Amazon Lexに感じる無限の可能性
yamada_r
0
42
JAWS DAYS 2025 re:Chrees 広報担当の振り返り
yamada_r
0
130
それ、AWS Step Functionsで置き換えれん?
yamada_r
0
14
はじめてのすくらむ
yamada_r
0
11
新米CBの自己紹介
yamada_r
0
9
Amplify StudioとFigmaで遊ぶ
yamada_r
0
11
Other Decks in Technology
See All in Technology
技術広報のOKRで生み出す 開発組織への価値 〜 カンファレンス協賛を通して育む学びの文化 〜 / Creating Value for Development Organisations Through Technical Communications OKRs — Nurturing a Culture of Learning Through Conference Sponsorship —
pauli
5
520
【M3】攻めのセキュリティの実践!プロアクティブなセキュリティ対策の実践事例
axelmizu
0
180
AI駆動開発2025年振り返りとTips集
knr109
1
100
今すぐGoogle Antigravityを触りましょう
rfdnxbro
0
150
巨大モノリスのリプレイス──機能整理とハイブリッドアーキテクチャで挑んだ再構築戦略
zozotech
PRO
0
270
『星の世界の地図の話: Google Sky MapをAI Agentでよみがえらせる』 - Google Developers DevFest Tokyo 2025
taniiicom
0
290
SRE視点で振り返るメルカリのアーキテクチャ変遷と普遍的な考え
foostan
2
730
リアーキテクティングのその先へ 〜品質と開発生産性の壁を越えるプラットフォーム戦略〜 / architecture-con2025
visional_engineering_and_design
0
6.3k
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
3
8.2k
改竄して学ぶコンテナサプライチェーンセキュリティ ~コンテナイメージの完全性を目指して~/tampering-container-supplychain-security
mochizuki875
1
390
信頼性が求められる業務のAIAgentのアーキテクチャ設計の勘所と課題
miyatakoji
0
130
The Complete Android UI Testing Landscape: From Journey to Traditional Approaches
alexzhukovich
1
110
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.3k
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
For a Future-Friendly Web
brad_frost
180
10k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.1k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
BBQ
matthewcrist
89
9.9k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
A Tale of Four Properties
chriscoyier
162
23k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Fireside Chat
paigeccino
41
3.7k
Code Reviewing Like a Champion
maltzj
527
40k
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 ご清聴ありがとうございました