1. ホーム
  2. node.js

[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件

2022-02-02 14:50:53

質問内容

AWS LambdaにZIPをアップロードしたところ、"ref"が含まれていました( https://www.npmjs.com/package/ref ) を検証するために必要なもので、iOS Game Center 認証トークン ( サードパーティのnode.jsサーバからGame Centerユーザを認証する方法 ).

残念ながら、これを起動すると "invalid ELF header" というエラーが発生します。

{
  "errorMessage": "/var/task/node_modules/ref/build/Release/binding.node: invalid ELF header",
  "errorType": "Error",
  "stackTrace": [
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)",
    "bindings (/var/task/node_modules/ref/node_modules/bindings/bindings.js:76:44)",
    "Object.<anonymous> (/var/task/node_modules/ref/lib/ref.js:5:47)",
    "Module._compile (module.js:456:26)",
    "Object.Module._extensions..js (module.js:474:10)",
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)"
  ]
}

これはYosemiteが動作する64bitのMacbook Proで開発されており、ローカルでコードを実行するのに問題はありません。ググってみると、quot;invalid ELF header"はほとんどヒットせず、ここからどこへ行けばいいのかわかりません。私はnode.jsの領域でこれを尋ねる方が良いですか、それはプラットフォームの問題であるかもしれないので、これは関連する領域ですか?

解決方法は?

これは、あるアーキテクチャで構築したアドオンを、別のアーキテクチャ(または場合によってはプラットフォーム)で使用しようとしたときに発生します。

によると このページ アドオンをLambdaサービスで使用するためには、EC2上のAmazon Linuxイメージに対してコンパイルする必要がある場合があります。