私はJVM上で動作するアプリを持っていますが、これはファットジャーとして提供されています。ネイティブのLinuxバイナリを呼び出す必要があります(例:ffmpeg
)。 jarファイルと実行ファイルの両方をパッケージ化するためには、Zipファイルにどのディレクトリ構造を含める必要がありますか?私はドキュメンテーションを見つけることができません。私が作業していないビルドツールを使用したコード例だけです。AWS LambdaパッケージNative Executable with JAR
私のラムダの名前はblah
のふりをしましょう。
Deployable jar contains:
+ blah/ # contains fat jar
+ lib/ # contains ffmpeg
私が書いたbashスクリプトはうまくいきません。次のような回答を得たいと考えています。ファットjarとネイティブの実行可能ファイルを一緒に圧縮する前に、dist/
ディレクトリに置きます。
FATJAR=blah-assembly-0.0.4.jar
mkdir -p dist/
rm -f dist/*
rm -f $DEPLOYED_ZIP
cp $FATJAR dist/
cp /usr/local/bin/ffmpeg dist/
(cd dist && zip -r $FATJAR ffmpeg && mv $FATJAR ../$DEPLOYED_ZIP)
http://stackoverflow.com/questions/2937406/how-to-bundle-a-native-library-and-a-jni-library-inside-a-jar - 実行中は実行できませんjarファイルを手動でローカルファイルシステムにコピーして、あなたが好きな場所に置いたり、あなたのためにこれを行うユーティリティを使用しなければなりません。あなたがaws lamdaでローカルファイルシステムを使用することが許されていれば、ネイティブライブラリを完全に使用できなくなる可能性があります。 – zapl
$ DEPLOYED_ZIPはファイルをLambdaに配信するためのジップです。私はそれが他のすべてのアップロードのようにLambdaによって自動的に解凍されることを期待しています。とにかく、あなたは私の質問に答えませんでした:AWS LambdaにJVMアプリケーションを展開するためのzipファイルの必要なディレクトリの内容は、別の実行可能ファイルも配信される必要がありますか? –
@MikeSlinnあなたはこれまで働いたことがありましたか?もしあなたがあなた自身の質問に答えることができれば、私はまさにこれをするのに苦労しています。私がjarファイルとバイナリファイルを圧縮してLambdaに送信すると、lambdaはjarファイルのエントリポイントを見つけられません。 –