インストールについて

チュートリアル

LightFile Coreは、AWSのLambdaに対応したプログラムです。

ダウンロード

弊社が案内する方法により、最新版のプログラムファイルを入手してください。プログラム一式はZIP形式により提供されます。

Lambdaのセットアップ

AWSのWebコンソールからセットアップする方法を解説します。AWSのWebコンソールは、デザインや操作方法が変更されることがあります。
まずは、LambdaのFunction一覧画面を開き、Create a Lambda functionボタンをクリックしてください。

LambdaのFunction一覧画面
LambdaのFunction一覧画面

Select blueprintはSkipしてください。

Select blueprint 画面
Select blueprint 画面

トリガとしてS3を選択します。

Configure triggers 画面
Configure triggers 画面

ファイルサイズの削減を行うBucketを必ず指定し、Event typeにはObject Created (All)を選択します。
Prefix、Suffixは必要に応じて入力してください。Suffixには.jpgを指定することを推奨します。Enable triggerにチェックを付けて、Nextボタンを押してください。

Configure function 画面
Configure function 画面

Nameには任意の名前を入力します(例shrink-core)。Descriptionには必要に応じて説明文を入力してください。RuntimeはNode.js 6.10、Code entry typeはUpload a .ZIP fileを選択します。
Uploadボタンを押し、入手したプログラムファイルをアップロードします。

Handlerにはlambda.normalを指定します。

Roleには、初めての場合はCreate a custom roleを選択することをお勧めします。別ウィンドウまたは別タブでAWS Lambda requires access to your resources画面が開かれます。

AWS Lambda requires access to your resources 画面
AWS Lambda requires access to your resources 画面

IAMロールは新しいIAMロールの作成、ロール名には任意のロール名(例 shrink-core-role)を入力します。

許可ボタンを押すと、ウィンドウ(または別タブ)が閉じられます。

Configure function 画面
Configure function 画面(Advanced settings) ※画像取得必要※

Lambdaのセットアップを行っていたウィンドウ(またはタブ)に戻ります。RoleとしてChoose an existing roleを選択し、先ほど作成したIAMロールを選択します。

続いて、Lambdaの実行環境の性能とタイムアウト時間を指定します。この設定値はいつでも変更できます。

実行環境のメモリサイズにより料金が変化します。最適なメモリサイズは計算により算出できないので、いろいろなサイズで検証することをお勧めします。

開発者の環境では、Memoryに256を指定したところ、数百KB程度の画像であれば問題なく動作しましたが、8MBの画像を対象に処理したところ異常終了しました。

Timeoutも扱うファイルサイズにより前後しますが、10秒程度から検証することをお勧めします。

大きなサイズのファイルを扱う場合は、目的別リファレンス「大きなサイズのファイルを扱うには」も参照ください。

VPCは特別な理由がない限り、No VPCを選択してください。VPCを選択するとLambdaの起動に時間を要するようになります。

ロールの編集
ロールの編集

これでLambdaの利用準備ができましたが、作成したIAMロールにはS3バケットへの操作権限が与えられていません。

IAMのWebコンソールを開き、作成したロールの編集画面を開きます。

ロールの編集画面
ロールの編集画面

次にインラインポリシーとしてロールポリシーの作成ボタンを押します(shrink-coreの展開によっては、管理ポリシーを作成するほうが望ましいことも考えられます。状況に応じて読み替えてください)。
カスタムポリシーを選択します。

カスタムポリシー
カスタムポリシー

ポリシー名に任意の名称(例 shrin-core-policy)を入力し、例としてポリシードキュメントに次のJSONを記述します。このポリシードキュメントは、操作対象となるS3バケットに対し、全ての操作を認めるものです。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "arn:aws:s3:::<対象のバケット>",
        "arn:aws:s3:::<対象のバケット>/*"
      ]
    }
  ]
}
        	

動作確認

これでLambdaプログラムと、S3へのイベント設定が完了しました。

対象のバケットにJpegファイルをアップロードし、ファイルサイズが削減されるか試してみましょう。

S3のWebコンソールから、対象のバケットにJpegファイルをひとつアップロードします。

アップロード直後
アップロード直後

この例では、アップロード直後には345.9KBでした。アップロードとほぼ同時にLambdaプログラムが起動し、ファイルサイズを削減します。

数秒程度の時間をおいて、再読込ボタンを押してください。
改めてファイルサイズを見ると、227.8KBに変化しました。約66%にファイルサイズが削減されたことが確認できました。

ファイル削減後
ファイル削減後