Logo
14 Dec 2017 | 1 min. (37 words)

AWS Lambdaにコマンドを追加する

小ネタです。

AWS LambdaはAmazon Linux上で動いていますので、Amazon Linuxにデフォルトで入っているコマンドについては、Lambda内で普通に呼び出すことができます。

ただ、場合によってはデフォルトで入っているもの以外も実行したいケースがあると思います。

この場合は配備するLambdaのパッケージ内に対象のバイナリを含めてアップすることで、デフォルトではインストールされていないコマンドを実行することができます。

自分の場合はLambda内でffmpegコマンドを実行したかったので、以降、これを例に記述します。

まずは実行したいバイナリの準備。当然、ソースからAmazon Linux上でコンパイルするのがベストですが、ffmpegの場合は、公式で配布されているLinux向けバイナリがそのまま動いたので、これをそのまま使うことにします。

こちらのページからx86_64 buildのバイナリをダウンロードし、解凍後ffmpeg本体をbinディレクトリに配置します。

バイナリが提供されていない場合であれば、dockerやEC2などでAmazon Linuxでコンパイルしたバイナリを自前で準備する必要があります。

フォルダ構成としては以下のようになります。

|-- bin
|  `-- ffmpeg
|-- serverless.yml
`-- index.js

デプロイ周りはserverless frameworkにおまかせするのが簡単です。

あとは、コマンド実行前にパスを通せばいいのでindex.jsなどで

process.env.PATH += ':/var/task/bin';
let execSync = require('child_process').execSync;
execSync('ffmpeg ....');

とすることでffmpegコマンドをLambdaで実行できます。

AWS lambda
Twitter Facebook

Amazon Echoで浦ラジを聴く

…

serverless frameworkでAWS Lambda+DynamoDBをやってみる

…

Theme Bleak by zutrinken Published with Hugo
Menu