Lambdaを発火させるAWS特集LambdaS32015年04月24日せーの(265)15この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。こんにちは、せーのです。今日は最近出た新機能を使ったちょっとした実験をご紹介します。Replication」という機能が追加されました。これはS3のオブジェクトを別のリージョンにレプリケーションさせる、という主にDR(災害時の復旧手段)の目的で使うことになるであろう便利な機能です。Replicationについて詳しくはこちらの大栗の記事を御覧ください。Webinar」というAWSサービスの使い方やTipsなどをレクチャーしてくれるWebストリーミングを見ていまして、ちょうどテーマが「S3」だったので思い出して質問してみました。一般公開)になり、弊社でもちょこちょこ実案件に使い出しているのですが、その時に一番ネックになるのは「lambdaは東京リージョンに適応していない」というところなんですね。S3のバケットにファイルがアップロードされたことをトリガーにLambdaを走らせて何らかの処理をする、という場合前提条件として「S3のバケットはUSスタンダードかOregonリージョンに作る」となるわけです。Lambdaを使いたい為だけに他のサービスは東京リージョンで統一しているのにS3バケットだけOregonリージョン、という気持ち悪い構成を甘受しなければいけませんでした。レプリケーションでLambdaが発火するのであれば、管理は東京リージョンのバケットでイケるのではないか、というのがアイデアだったんです。私の質問に対してAWSの中の人の答えはえー、こちら、発火します。面白そうなのでぜひやってみてください。これはやってみるしかないでしょう。やってみたということでやってみようと思います。Replicationで結んで、東京リージョンのバケットにオブジェクトを入れ、USスタンダードリージョンのバケットにトリガーをつけてLambdaを発火、以前の記事で書いたTTLの変更処理をやってみようと思います。S3にバケットを2つ作成します。一つは東京リージョン、もうひとつはUSスタンダードリージョンに立てます。わかりやすいように名前を「chao2suketest-tokyo」「chao2suketest-us」とします。レプリケーション」を選択します。クロスリージョンレプリケーションを使うにはバージョニングが有効になっている必要があるので、バージョニングを有効にします。バージョニングを有効にしたらクロスリージョンレプリケーションの設定に入ります。送信先にUSスタンダードリージョンのバケットを選択します。S3から操作できるようにIAMロールを作成します。IAMロールは東京リージョンのget系とlist系、USスタンダードリージョンのレプリケーションに対して許可を与えています。デフォルトでこのポリシーが設定されているので、何も考えずに[許可]ボタンを押します。]}ここまで設定して[保存]ボタンを押すとこんなエラーメッセージが出ます。このエラーはクロスリージョンレプリケーションではあるあるになるくらい有名なエラーですね。レプリケーション先のバージョニングが有効化されていない時に出るエラーです。USスタンダードリージョンの方のバケット[chao2suketest-us]のバージョニングを有効にしてもう一度保存を押すと、きちんと設定されます。レプリケーションがきちんと効いているかどうか確認してみましょう。東京リージョンにテスト用のファイルを一つアップロードします。[chao2suketest-us]を見てみると、同じファイルがありました。レプリケーションはきちんと働いているようですね。次にこの[chao2suketest-us]に対してLambdaを書いてつなげてみたいと思います。functionを作成、名前は[cmS3toLambdaTest]としました。以前書いたLambdaの記事を参考にこのようなLambdaを書いてみました。);};バケットにオブジェクトが入ったらcache-controlとしてmax-age=10を設定する、というものです。書き終わったらレプリケーション先のバケットとつなげます。トリガーとなるイベントタイプはレプリケーションにてオブジェクトが登録された時、ということで「PUT」を選択します。これでLambdaの設定も完了です。設定し終わるとこんな感じになります。東京リージョンの方に新しいファイルをアップロードしてみます。Logsに吐かれますのでそちらを確認してみます。確かにLambdaが走っていますね。応用編ここからはもう少しLambdaを触ってみましょう。今のこの設定ですとUSスタンダードリージョンにはCache-Controlがつくものの、元の東京リージョンの方にはCache-Controlはつきません。レプリケーションしたファイルに対して操作しているので当然と言えば当然ですね。ここで思い出してみると、元々レプリケーションでLambdaが働くかどうか興味をもったのは「Lambdaを動かすためだけにS3のバケットをUSリージョンにするのが気持ち悪い」という動機だったはずです。なるとそもそも東京リージョンに対して処理ができてなくてはいけないのではないでしょうか。USリージョンに入っているファイルはそもそも要らないんじゃないでしょうか。いうことでLambdaをこのように書き換えてみました。);};Cache-controlをつけるのは東京リージョンのオブジェクトにして、Cache-ControlをつけたらUSリージョン側のオブジェクトを削除する、という実装にしてみました。ちなみにこの場合はLambdaのRoleにはDeleteObject権限も必要になるので注意してください。replicationのロールではなく、Lambdaのロールです。Lambdaのロールはこのようなポリシーに変えています。]}では実験してみましょう。USリージョン側のオブジェクトを全て削除します。次に東京リージョン側に新しいファイルをアップロードします。USリージョン側を確認してみると、ファイルが何もありません。東京リージョン側を確認してみると、先程アップロードしたファイルにcache-controlがついています。Logsを確認してみると、綺麗にLambdaが走っていることがわかります。まとめいかがでしょうか。実はこれで東京リージョンのコストだけでLambdaが使えるな、、、と思っていたのですが、よく考えるとバージョニングしているのですから削除してもコストはかかります。いうか実案件でこんな回りくどい方法を使うのなら素直にUSリージョン使うだろ、という気になってきましたが、まあそこは実験、ということで。機能を組み合わせると何か別のものが見えてくるかも、しれませんしね。2,652,359せーのと申します。北海道にて犬2匹とともにのんびりコードを書いたりしています。最近は触れるデバイスをネットにつなげて遊ぶのにはまっています。リモート参加もOK〜クラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。〜ITエンジニアのお仕事とホンネ〜1月30日に新卒向けの会社説明会〜ITエンジニアのお仕事とホンネ〜を開催します。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。濱田孝治268「ふわわぁ、眠いな。藤井元貴90Gitリポジトリ内を検索する機会はよくあると思います。grepコマンドを使えば、git管理下のファイルのみを対象としてgrepができます。シンプルなコマンドですが、利便性はとても高いと思います。記事2020年01月20日かずえ81速報です。先程大阪リージョン開設予定がアナウンスされました!!以前から大阪ローカルリージョンという色々と制限がついた特殊なリージョンが存在していましたが、それが拡張され、東京リージョンなどと同じ通常のリージョンになります!2021年初頭開設予定です。武田隆志1143このエントリは、2018年、2019年に公開したAWS全サービスまとめの2020年版です。これまではいくつかに分割して公開していましたが、1エントリにまとめてほしいという要望をもらっていたため、今年は1エントリに集約してみました。クラスメソッドの関連会社であるアノテーション株式会社の研修として依頼を受け、チームと心理的安全性、それに礼節というテーマで話をしてきました。CAFEのサービスが「LINEアプリ」として利用できるようになりました。これまではLINEのトークから利用する形でしたが、LINEサービス内から利用できるようになりました。これまでより便利に、シームレスにご利用いただけます。Cafe326件のシェア(そこそこ話題の記事)インフラ未経験の私が内定から入社までに読んだ技術書11冊ブログ記事2020年01月16日Yui326インフラ未経験で入社した私がインフラを勉強するために読んだ技術書11冊を感想とともにまとめました。濱田孝治268「ふわわぁ、眠いな。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。