概要
LambdaでRubyがかけるようになったのですが、画面上のコードをいじるより実際は手元の環境で動かしてそれをデプロイすることのほうが多いと思います。
そこで今回はLambdaに手元のrubyファイルをアップロードする方法を紹介します。
(今回はGemを使わないものを紹介します。Gemを使うものはまた次回記載予定です。)
既存の関数のエクスポート
まず、現在のLambda関数を手元の環境に持ってきましょう。
Lambdaの変更したい関数のページに行き、上の方のアクションボタンから「関数のエクスポート」を選択
ダイアログの「デプロイパッケージのダウンロード」を選択
すると手元のrubyファイルが取得されるかと思います。
既存のコードの変更
ここはしたいように変更していただいて結構です。
自分の場合初期の状態から変更していなかったので
require 'json'
def lambda_handler(event:, context:)
# TODO implement
{ statusCode: 200, body: JSON.generate('Hello from Lambda!') }
end
このような状態だったものを
require 'json'
def lambda_handler(event:, context:)
# TODO implement
{ statusCode: 200, body: JSON.generate('Changed') }
end
に変更しました。
ZIPファイルの作成
注意点
ソースファイルをアップロードするにはZIPにする必要があるのですが、ここで注意なのが作業ディレクトリがあった場合そのディレクトリをzipにしてしまうとだめというところです。
どういうことかというと
このようにディレクトリの中にソースを入れて、そのディレクトリをzip化してしまうとだめということです。
アップロードしてみたらわかりますが、関数が入れ子になってしまいます....
やり方
ではどうすればいいかという話なのですが、ただソースファイルだけをZIPにすればよいです。
GUIでやる場合
CLIでやる場合
zip lambda_function.zip lambda_function.rb
といった形でzip化
アップロード
ここまでくればあとはアップロードするだけです。
画面の「zipファイル」を選択して
zip化したファイルを添付して完了です。
画面の方にも反映されているのがわかると思います。
以上!!
近いうちにGemを使ったアップロードも記述する予定です!!