fbpx
< 戻る
印刷

AWS Lambda での使用例

JDeli は画像変換に最適です。 このページでは、S3 バケットにアップロードされた画像を指定された画像タイプに自動的に変換する AWS Lambda 関数をセットアップする方法について詳しく説明します。

S3 バケットの作成

始める前に、画像をアップロードする S3 バケットが必要です。 「Amazon S3」→「バケット」に移動し、「バケットの作成」をクリックします。

「バケット名」を覚えやすいものに設定します。このガイドでは idr-jdeli-demo を使用します。

他の設定はデフォルトのままにしておきます。

Lambda 関数を作成する

「AWS Lambda」→「関数」に移動し、「関数の作成」をクリックします。

[最初から作成する] が選択されていることを確認し、関数に適切な名前を付けて (この例でも関数名に idr-jdeli-demo を使用しています)、ランタイムを Java 11 に設定します。その他はすべてデフォルトのままにします。

関数トリガーのセットアップ

Lambda 関数を実行するには、それを呼び出すトリガーを設定する必要があります。 画像をバケットにアップロードするときにトリガーしたいので、S3 バケット内に作成されるオブジェクトに対してトリガーを設定します。

左側の「トリガーの追加」をクリックし、ドロップダウンで「S3」を選択します。

バケットを選択し、イベント タイプを「すべてのオブジェクト作成イベント」に設定します。

この例では、処理済みの画像と未処理の画像に同じバケットを使用します。 これを行うには、未処理のイメージが 1 つのルート ディレクトリに保存され、別のルート ディレクトリで処理されます。 未処理の画像に対してのみトリガーしたいため、アップロード先のディレクトリにプレフィックスを設定します。 このガイドでは、input/ を使用します。

関数を設定する

一部のファイル変換はかなりの量のメモリを消費する可能性があるため、関数が使用できる量を増やす必要があります。

「構成」→「一般構成」に移動し、「編集」をクリックします。

「メモリ」を 1024 に設定します。 (非常に大きなファイルを変換する予定がある場合は、さらに多くのメモリが必要になる可能性があります)

また、「タイムアウト」を少なくとも 1 分に増やす必要があります。

関数の権限を設定する

Lambda 関数を実行する前に、バケットへのアクセス許可を与える必要があります。

これは、バケットに対する get、put、delete 権限を持つポリシーをアタッチすることで行われます。

まず、新しいポリシーを作成する必要があります。 「IAM」→「ポリシー」に移動し、「ポリシーの作成」をクリックします。

S3 を選択し、「読み取り」→「GetObject」、「書き込み」→「DeleteObject」、および 「書き込み」→「PutObject」 を許可します。

リソースの下で「Specific」がチェックされていることを確認し、「ARNを追加」をクリックします。 表示されるメニューで「リソースバケット名」をバケットの名前 (このガイドでは idr-jdeli-demo) に設定し、「任意のオブジェクト名」にチェックを入れます。

下部の「次へ」をクリックし、ポリシーにわかりやすい名前と説明を付けます。

最後にポリシーを作成します。

次に、ポリシーを Lambda 関数にアタッチする必要があります。

「IAM」→「ロール」に移動し、Lambda 関数のロールを選択します。 (デフォルトでは、ロールの名前に -role-xxxxxxxx が続きます。各 x は乱数または文字です)

「アクセス許可ポリシー」で「アクセス許可の追加」→「ポリシーのアタッチ」をクリックし、作成したポリシーを選択します。

機能コードをアップロードする

すべての設定が完了したら、最後にコードを Lambda にアップロードする必要があります。

このガイドでは GitHubJDeli-Lambda を Lambda 関数の実装として使用します。

この実装は、S3 トリガーをキャッチし、アップロードされたファイルを設定された形式に変換し、変換されたファイルをバケット内の設定された出力ディレクトリにアップロードします。 また、メタデータを使用した再帰的実行 (アップロードされた変換済みファイルで関数を再度トリガーする) に対する保護や、変換後のソース画像の削除など、追加機能もいくつかあります。

プロジェクトを Lambda にデプロイするための完全な手順は Readme に記載されていますが、クイックバージョンは次のとおりです。

プロジェクトをビルドする

				
					mvn clean package
				
			

次に、AWS CLI を使用してデプロイします。

				
					aws lambda update-function-code --function-name idr-jdeli-demo --zip-file fileb://target/jdeli-lambda-1.0-SNAPSHOT.jar
				
			

idr-jdeli-demo を Lambda 関数に付けた名前に置き換えます。

最後に、Lambda 関数で、「コード」→「ランタイム設定」に移動し、「編集」をクリックして、ハンドラーを次のように設定します。

				
					com.idrsolutions.Handler::handleRequest
				
			

完了

これで Lambda 関数がセットアップされるはずです。

画像をバケットの入力ディレクトリにアップロードすると、自動的に変換されて出力ディレクトリに配置されるようになります。

    MENU
    PAGE TOP