2016/03/10

AWS Lambda用にffmpegをビルドするだけのMakefile

このエントリーをはてなブックマークに追加 Buffer Pocket
serverlessだけどbuildserverlessじゃないAWS Lambdaなので、ffmpegのビルドをするMakefileをつくったよ。

オプションについて



  • ffmpeg/ffprobeのみビルド
  • docはなし
  • archは、x86_64
  • h264を使いたいので、x264も合わせてビルド





---
---


2016/02/18

brew で古いバージョンを指定してインストールする手順

このエントリーをはてなブックマークに追加 Buffer Pocket

今回は、原点のstable go1.5ではなく、go1.4を入れる手順

まずは現状確認

$ brew info go
go: stable 1.5.3, devel 1.6rc2, HEAD
Go programming environment
https://golang.org
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/go.rb
==> Options
--without-cgo
Build without cgo
--without-godoc
godoc will not be installed for you
--without-vet
vet will not be installed for you
--devel
Install development version 1.6rc2
--HEAD
Install HEAD version
==> Caveats
As of go 1.2, a valid GOPATH is required to use the `go get` command:
  https://golang.org/doc/code.html#GOPATH

You may wish to add the GOROOT-based install location to your PATH:
  export PATH=$PATH:/Users/a12057/homebrew/opt/go/libexec/bin




次に、brew version を実行する。

$ brew versions
Error: Unknown command: versions

上記のエラーが出たら、下記を実行

$ brew tap homebrew/versions

そして、入れたいバージョンを探す

$ brew search go
algol68g                                  goffice                                   gource                                    libmongoclient
app-engine-go-32                          gollum                                    gowsdl                                    mongo-c
app-engine-go-64                          golo                                      gringo                                    mongodb
arangodb                                  gom                                       gst-plugins-good                          mongoose
argon2                                    goocanvas                                 homebrew/versions/go12                    pango
artifactory-cli-go                        google-benchmark                          homebrew/versions/go13                    pangomm
bogofilter                                google-sparsehash                         homebrew/versions/go14                    pangox-compat

..................


homebrew/versions/go14 が見つかったので、あとは、下記のコマンドで普通にインストール


$ brew install homebrew/versions/go14


おしまい。





2016/02/16

AWS Lambda で d3.jsを動作させる方法 (node.js)

このエントリーをはてなブックマークに追加 Buffer Pocket
なんか、いろいろ大変だったのでめもがてら

今回の問題

普通に、Macで動作するとこまで作って、ビルドして、lambdaにアップロードしても動かなかった


理由

d3.jsがjsdomを必須としているが、jsdomがnode.js 4.x以上じゃないと動かない。
でも、aws lambda は node v0.10系なので ......

前知識

AWS Lambda情報 2016/02/16時点

https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

> 注) awsの日本語ドキュメントが古くなっているので、気をつけてね^^


  • AMI ID: ami-383c1956 in the Asia Pacific (Tokyo) region.
  • Node.js: v0.10.36


それでも頑張って動かす方法

  1. EC2にビルド用のAmazon Linux (ami-383c1956)を作成してそこでビルドする。
  2. d3.jsとjsdom を下記のバージョンに固定してビルドする。

"dependencies": {
  "d3": "~3.5.5",
  "jsdom": "~3.1.2",
  "xmldom": "~0.1.22"
 },


Amazon Linuxでビルドが必要な理由

最近のjsdomは、コンパイルが必要なライブラリを使用していないが、
jsdom#~3.1.2 だと、contextifというライブラリを使用していてコンパイルするライブラリがあるため。

当然、Macでビルドしても、lambdaがlinuxなので動かないから

最後に

AWS Lambda のランタイムは、Travis CI みたいに、バージョン指定もできたらいいのにね^^




fkei おすすめ商品