lambda function URLsのeventをプロキシしてhttp apiに流す

小規模なSlack BotはAWS lambda functions URLsに作ると楽だった の話の続きです. 先日lambda function URLsを利用してhttp apiのような実装を記述する方法を紹介しました. 今回は httpadapter と net/http/httputil を利用してlambda function URLsをリバースプロキシとして動かしてbackend apiに流す方法です. 概略図 実装 普通のリバースプロキシを実装するときはhttputil.ReverseProxyを定義してserverを作って待ち受けるわけですが、 今回の場合はhttputil.ReverseProxyを定義した後httpadapter.NewV2に食わせるだけですね. 次の例はlambdaのeventを受け取ったあとlocalで8080ポートで待ち受けるhttp serverにリクエストを流すproxyの例です. func main() { director := func(req *http.Request) { req.URL.Scheme = "http" req.URL.Host = ":8080" } rp := &httputil.ReverseProxy{Director: director} lambda.Start(httpadapter.NewV2(rp).ProxyWithContext) } すべてlambda関数上で完結させたい場合は func init() などでapiを予め立ち上げた後プロキシしてあげると良いと思います. github.com/ieee0824/le2hp ではそのような実装にしました.

2月 2, 2023

剣山へのアクセス方法の色々

徳島県の剣山へのアクセス方法についてです. 登山口について 剣山へ登るための登山口はいくつかあります. 見ノ越 見ノ越登山口 おそらく一番登山者の多い登山口です. この登山口はバスでのアクセスが可能であることと、 駐車場がよく整備されているので便利です. また見ノ越から西島までリフトがあるので体力のない登山者などでも登りやすいことが特徴です. リフトを使う場合疲れることなく森林限界まで上がれるので初めての登山にもおすすめです. 令和4年のものにはなりますが時刻表及び料金表を添付しておくので参考にしてください. 令和4年剣山運行情報 冬場はマイカーのみのアクセスになりますが利用することができます. 夜間は国道が通行止めになるので注意が必要です. 除雪がしっかりされている時は冬タイヤなら2駆でも走行できますがチェーンは携行してください. 冬期の国道438号線の様子 コリトリ 見ノ越から見ノ越隧道を通って国道438号線を進んだ先の垢離取(コリトリ)の登山口もしくはもう少し上がった剣神社から登る登山口です. 剣山へは一ノ森を通ったあと剣山へ歩きます. このルートは見ノ越からのルートより人が少ないです. 深田久弥は「剣山の姿勢は一ノ森から望むのが最上」と言っていますが同意します. 剣山と次郎笈を横並びで見られる珍しいルートでもあります. 一ノ森方面から剣山・次郎笈を望む このルートは私個人的には白骨樹がある独特な景色や見晴らしの良い縦走路もおすすめです. ただ人によれば往復する場合10時間くらい見といたほうがいいかもしれません. 奥祖谷二重かずら橋 奥祖谷二重かずら橋から登るルートです. ここを通る場合下りる場合も入場料が必要です. 剣山へは丸石を経由で登ります. 私はこのルートは剣山から三嶺への縦走でしか使ったことがないのでレビューできないので割愛します. 山の家奥槍戸 登山口の様子 私は厳密にはここからスタートして登ったことはありません. 私がここの登山口を利用した時は見ノ越から剣山、次郎笈を通って山の家歩いて山の家でカレーを食べたあと次郎笈、剣山を通って見ノ越までもどりました. 登山口として利用する場合は剣山スーパー林道を通ってアクセスする必要があります. もしくは剣山から次郎笈方面に歩いて三嶺方面への分岐を曲がったあと丸石行く手前の分岐で左に行くと剣山トンネルを通ってアクセスすることができます. 山の家のカレーを食べたいときについつい足を伸ばしてしまう場所です....

2月 1, 2023

小規模なSlack BotはAWS lambda functions URLsに作ると楽だった

はじめに ここで言う小規模なSlack Botというのは個人で使うようなBotやチームレベルで使う書き捨てレベルのようなもののことです. このような想定のBotを実装するときそこまでちゃんとインフラコストをかけたくありません. 自前でサーバーを用意したとして処理内容と維持管理費用が割に合わないのです. 無料でhttp serverを立ち上げることができるけど定期的にリクエストを送っておかなければプロセスがkillされるようなサービスもあります. そのようなサービスを使う場合定期的にリクエストを送るか立ち上がるまで待った後Botのためのリクエストを送らないと機能しない問題があります. それらの問題を解消するのにlambda functions URLsは要件にあってそうだなぁと思いました. lambda function URLsはlambdaなので課金が発生する時間単位が短いのでたまにしか実行されないようなものでもサーバーを立てて実現するよりお金がかからないです. またlambda function URLsにリクエストを投げるとlambdaのeventが発火して即時にlambda関数が実行されるので待ち時間も発生しません. 一つ問題があるとしたらlambdaのeventとして作成したプログラムから見えるので普段Botをhttpのapiとして実装している場合はhttp requestとlambdaのeventとのギャップを埋める必要があるということです. とはいえそこまで大きな問題にはならないと思います. 特にGo言語の場合は github.com/awslabs/aws-lambda-go-api-proxy/httpadapter を利用するとほとんどhttp serverと同じような実装でアプリケーションを作ることができます. Goでlambda function URLsを使ってリクエスト受ける例 github.com/awslabs/aws-lambda-go-api-proxy/httpadapter を利用した実装例を上げておきます. frameworkを利用しない例 frameworkを利用しない例です. 生のGo言語でhttp serverを実装したことがある人なら雰囲気が解ると思います. package main import ( "io" "net/http" "github.com/aws/aws-lambda-go/lambda" "github.com/awslabs/aws-lambda-go-api-proxy/httpadapter" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "It Works!") }) // lambda function URLsはapi gateway v2と同じeventなのでv2にする必要がある lambda.Start(httpadapter.NewV2(http.DefaultServeMux).ProxyWithContext) } Ginを利用した例 frameworkを利用することもできます. 例えばGinを利用する場合は次のように記述ができます. package main import ( "context" "net/http" "github....

1月 31, 2023

雪中ドライブとイタリアンカフェ

先日からの寒波によって剣山系にも雪が降ったと思われるので今年初めての剣山に行ってきました. 香川県の徳島県との県境あたりから雪があるので期待できそうです. まんのう町琴南地区川東周辺の様子 もう少し進むと車が通っている路面にも雪が現れてきました. 川奥バス停周辺の様子 国道438号線に除雪ように重機がおいてあるのは知ってたんですけど今日初めて除雪作業をしているところを目撃しました. 三頭トンネルを抜けて徳島に出ると雪が一気に増えるので注意が必要です. 今回はそこまで視界不良にならなかったのですがよく視界不良になるので遠くから来る方は注意してください. 貞光を通り過ぎ一宇の集落郡を抜けるとチェーン規制の看板が現れます. ゴムチェーンを装着する もうすこし手前でもチェーンの交換場所があるのですがよっぽど雪が多い場合でないときは無雪区間が現れて乗り心地が著しく悪くなるので私はいつもこの地点でチェーンを装着しています. 今回は除雪車が結構入っていたようで標高800mくらいまでは雪が平坦で走行しやすかったです. 第7ヘヤピンを通り過ぎたあと剣山スキー場の手前で先行していた方の車が停止していました. 去年この位置でハイエースがスタックしていたことがあり嫌な予感がしました. 今回はスタックではなかったですがどうもこれから先で雪が多くて進めなくなっているという情報をもらいました. 仕方ないので今回はこのあたりで撤退することにしました. いい感じに山々が見えてるのに悲しいなぁ. 撤退時の景色 時は流れて再び貞光市街にもどってきました. ちょうどお昼時だったので前々から気になっていた三好市のカフェレストラン イスバさんへ行ってきました. お昼のセットを頼みました. 500円でデザートとコーヒーを追加できるので追加しました. まずは前菜のサラダです. ドレシングはオリーブオイルのベースのものです. パンはおかわり可能らしいです. 山に登った帰りならおかわりしてたかもしれません. 前菜とパン メインはほうれん草とベーコンのトマトソースベースのパスタを食べました(厳密なメニュー名は覚えていないのでごめんなさい). トマトソースの酸味とベーコンの芳ばしさがマッチしていて美味しかったです. パスタ 暖かくなったらカブで行ってもいいかなぁなどと考えつつトネ・コーケン先生のスーパーカブで椎ちゃんはイタリア風バールを作ろうとしてたなぁと思い出しながら食べていました....

1月 29, 2023

YubiKey使い始めました

私はパスワードの管理に1Passwordを利用しています. 基本的に2段階認証を1Password上で設定してるのですが1Passwordの2段階認証どうするか問題が発生していました. 1Passwordのアカウントが流出してしまった場合すべてのアカウントが流出することになるので重要な問題でした. また最近あった事件としてよく見ているYouTuberの方がアカウントを乗っ取られる事件がありました. 皆様、すみません。 今日あかでみっくモーターカレッジチャンネルも乗っ取られました。 とりあえず報告です。 — 杏仁さん (@annin333333) January 18, 2023 なのでセキュリティ周りを強化しようと思った次第です. この度私はYubiKeyを利用することにしました. 今回利用するのはYubiKey 5C NFCです. iPhoneからでもNFCモデルは利用できるということなのでこの製品を選択しました. まえまえからこれ系の製品電池切れとかってどうなんだろうと思っていたのですがNFCとUSBなので電源喪失の心配は必要ないようです. 購入したYubiKey 5C NFC 運用方法としては1PasswordのアカウントをYubiKeyで守って、他のMFA対応したアカウントは1Passwordで管理するようにしようと思っています. 上記写真で2台のYubiKeyがあるのは1Passwordは複数の物理キーを紐付けることができるので2台を紐付けておいて1つは普段持ち歩く用としてもう1つは予備として家に保管しておくためです. 紛失したときにそれこそ詰んでしまうためです. 設定はブラウザで1Passwordにログインしたあと マイプロファイル > その他アクション > 2要素認証の管理 から行うことができます. 補足ですがYubiKeyのデバイスはキーホルダーみたいに持ち歩くことが想定されるのでUSBのコネクタに別途カバーをつけています. YubiKey自体いい価格なので500円程度のキャップで守られるのなら安いものだと思います. 追記 2023/01/30 Linux(Ubuntu 22.04.1 LTS)版の1Passwordクライアントだと何故かログインできない macOS, iOS版は問題ありません ブラウザ版は普通に普段どおりLinuxも利用可能でした apt, snap版双方だめでした 買ったもの YubiKey 5C NFC サンワサプライ タイプC コネクタキャップ オス用 TK-CAP9BK

1月 27, 2023

六十番札所横峰寺再訪問

先週色々あって撤退した四国遍路の六十番札所の横峰寺ですが気を改めてもう一度参拝してきました. 本当は前日笹ヶ峰の下山後に訪れる予定だったのですが思ったより時間がおしていたので翌日に見送りました. 今回登った経路は前回と同じく湯浪から登りました. 湯浪の上り口 横峰寺の参道は小刻みに案内板があって進捗がわかりやすくありがたいです. 案内板 前回半分までは歩いてるので要領がわかっていたので気持ちも楽でした. 前回の撤退地点までおおよそ30分ほどで上がることができました. 前回の撤退地点 ここまでは前回の復習だったので良かったのですがやはり歩いてない領域は大変で残り600m, 400m, 200mと近づいていくものの少しの距離が大変でした. 昔のお遍路さんは自分たちが歩いている道よりもおそらく険しい道を歩いていたはずなので本当に大変なことだったのだなぁと思います. 山門が見えたときは登山を始めた頃山頂についたときのように嬉しかったです. 横峰寺山門 今回は湯浪から登りましたが機会があれば虎杖からも登ってみたいなぁと思います. 活動記録 横峰寺

1月 23, 2023

愛媛県の笹ヶ峰へ最強寒波を体験に行きました

今シーズン最強と言われている寒波を体験しに行ってきました. 場所は愛媛県の笹ヶ峰です. 登山口はいくつかありますが南西部の林道登山口から丸山荘を通って登るルートをいつものように利用しました. 笹ヶ峰登山口への林道 登山口付近は多少雪が舞っていて白くなっていましたが凍結しているというわけではなく安心して走行できました. 登山口は夏場はぎっちり植物で覆われていますがこの次期は枯れていて幾分登りやすいように思われます. 登山口の様子 今回は凍結路面はそこまでなかったのですが日によって沢から流れた水で斜面が凍結してることもあるのでチェーンスパイクを持っていると安心です. 丸山荘まではアイゼンだと爪が長くて登りづらい印象があります. 沢の上を越えていく木道 丸山荘から上は雪が増えてくるので休憩がてらアイゼンに履き替えました. このあたりになると標高も上がり気温は氷点下10度くらいになっていました. 今シーズン最強と言われる寒気の力をしっかり感じますね. 丸山荘から少し進むと笹ヶ峰綺麗に望める場所があり今から登る場所をしっかり見せてくれて山としてとても良いポイントだと思います. 疲れているとまだ登るのかという気持ちにもさせられますが. 丸山荘のテント場を抜けた先から笹ヶ峰を望む 広場をすぎると再び樹林帯に突入します. 今回は直近で山に入っている人が少なかったためかしばらく行くとすぐにトレースが薄くなっていました. 薄くなるトレース ここからは地図とにらめっこです. 夏場は道がしっかりとしている山ですし赤いテープも多いのですが霧氷でテープは見えなくなりますし, 石鎚山や剣山のようにたくさん人が来る山でもないので頼れるのはやはり地図です. 斜度が増えてきてもよく踏み固められているとストックだけで問題なく登れるのですが今回は比較的平たい雪面なので森林限界手前でピッケルに持ち替えました. 少し硬い雪の上に粉上の雪が乗っていてあまりしっかりアイゼンが刺さるという雰囲気ではなかったです. 突き当りまで直登したあと左に折れると登山道が見えてくる 森林限界を超えるとご褒美の時間です. よく視界が澄み渡っていてすべてを見通すことができます. ちょっとの標高で雪があったりなかったりするの面白いですね....

1月 22, 2023

横峰寺撤退

先日1月15日に60番札所の横峰寺へ参拝しようとしました. 車で行く場合平野林道を通って行くのですが冬期は通行止めであることを知らず足止めをされてしまいました. なんと通行止めじゃったか pic.twitter.com/FszK7TPXFc — 虚無 (@ast839) January 15, 2023 完全に計画不足でした. なので他の道で上がれないかと調べた結果車では上がれないものの徒歩なら可能ということがわかりました. 湯浪休憩所から2時間ほどで遍路道を利用して登れることがわかったので湯浪休憩所へ移動しました. クライムオン pic.twitter.com/sXbDtKNUVL — 虚無 (@ast839) January 15, 2023 遍路道は全体的によく整備されていて歩きやすかったです. とはいえども雨で濡れていたので滑りやすかったので注意は必要です. 遍路道を1kmほど進んだ頃この日二度目のやらかしに気が付きました. 車の中に財布を忘れてしまっていたのです. 財布車に忘れた pic.twitter.com/2bPPqNbr2K — 虚無 (@ast839) January 15, 2023 すぐ引き返して車に戻りましたが、ちょうどその頃雨が降り始めたのと重なるアクシデントがあったのでこの日は縁がなかったのだと思いそのまま帰宅しました. [YAMAP] 横峰寺撤退記録

1月 18, 2023

百番煎じくらいのHLSの話

HLSの正式名称はHTTP Live Streamingである. つまりHTTP上でStreaming配信を行うための技術である. Versionがいくつか存在しておりAWSのElastic Transcoderなどを使うと指定することがあるが、一旦それらを忘れて考えるとする. バージョンに関わらずHLSはm3u8ファイルで動画の構成情報を受け取った後tsファイルなどの動画の実体をもらうことで再生側は動画を再生する. このような構成になっているのは、動画は大きいのですべてのデータをダウンロードしてから再生するような方法を取ると再生開始が遅くなるからである. 頭から再生する場合はもしかしたら問題ないかもしれないが動画をシークして後ろの方から再生しようとすると必要もない前の方のデータをダウンロードすることになる. そういう状態を防ぐためHLSは再生したい場所のデータだけを取得できるようにm3u8ファイルで動画の構成状態を受け取った後再生したい位置のメディア(例えばts)ファイルを配信する. よって配信するときはm3u8というテキストの配信と実体ファイルの配信をそれぞれ行う必要がある. HLSを再生する一連の流れ

1月 17, 2023

2023年現在利用してる冬装備

冬テント泊するときの装備内容です. コッヘルやトレッキングパンツは入れていません. ザック mont-bell トレッキングパック 80 モンベルの公式通販に見当たらなかったのでカタログ落ちした? 寝袋 ダウンハガー800 #0 私のはもう少し古いアルパインダウンハガー800 #0だけど性能表記的には同じ マット U.L. コンフォートシステム アルパインパッド25 180 ちょっとでかいけど地面の温度をしっかり遮断してくれて温かいです ジャバラ式のウレタンマットを使っていた頃もありましたが圧倒的にこっちのほうが温かいです テント ステラリッジ テント2 ステラリッジ2 スノーフライ アルミVペグ 19 15本くらい持っていきます。50cmくらい掘り下げて雪がしまっていればこれでも効きます。 ハンマー ホームセンターで買った1kgのハンマー ペグ打ちや抜くのに使っています シングルバーナー JETBOILジップ 袋麺食べたいときに持っていきます 麺を入れて火をつけると吹きこぼれるので火をつけたり消したりしながら予熱を使って調理しています お湯を沸かすことしか才能のない道具と思って間違いないです SOTOストームブレイカー ガソリン・ガス両方使えて便利です ガソリンを使うときはテントの前室で使えない問題がありますがどんな気温でも使えて重宝しています 山では400mL缶を利用してますが1回の登山で使い切ることはまずないです 点火器 SOTOスライドガストーチ メタルマッチ ライター壊れたときの予備です 登山靴 SCARPAモンブランプロGTX ゲイター GORE-TEX アルパインスパッツ 衣類 メリノウール アルパイン ソックス アルパイン テックグローブ パウダー トリガーフィンガーミトン ジオライン L....

1月 15, 2023