行く記憶の流れは絶えずして

戻ってこないのでメモするところ

lambdaからlightsailに通信しようとして断念

 

貴重な休日の3時間を費やして失敗。
正常な思考をお持ちの皆様はこんなことしないと思うのでPVは低い(断言)

でもメモったのは備忘のため。

 

vpc peeringを使う

まず、lambdaからインスタンスへ通信したい場合、VPC peeringを使用する。
知らない人はググる
このときlightsail側にも設定がある。
lightsailとec2はそれぞれ暗黙のVPC(無料)を持ってるらしい。
前者は触れない、後者は触れる。多分。
で、さっきのlightsailコンソールからチェックボックスをクリックするとピアリングが作成される。

lightsailのvpcは触れないとした理由は、ここでlightsailのVPCっぽいidがリクエスタとして登場しているがリンクではない
(lightsailのipがリクエスvpcのcidrに含まれている)。

 

cdkからlightsailのvpcを指定

で、cdkを使ってlambdaからlightsailのDBやらapiやらを見たいので
vpc.fromLookupでさっきのlightsailのVPCっぽいidを指定したら実行エラーになる。見つからないらしい。
触れない設定がここでも生きてくるのか。

 

分かりづらい課金体系(いつものこと)
なるほど、では通信用のvpcを作ってlambdaに指定、lightsailからピアリングすればよいのでは?
と思ってググると料金が発生するっぽい。
一時間あたりの課金に見えるので大丈夫そうだがちょっと不安。別の手を考える。

 

他に方法はないか
素直にec2インスタンス作れば?とも思ったがそうもいかない。
vpc.fromLookupで間違えてec2のvpcを設定したら「publicなvpcはlambdaにつけられませんぜ」エラーになった。
vpc作る問題が再燃する。

そうなるとlightsailのDBをRDSとかにしてapiをlambdaに移植しろよという話になるがそれはそれでRDSのお金がかかる。
あらヤダ積んでる。

 

結局のところ

lambdaを挟んでたのはhttpsエンドポイント1つの裏に複数のlightsailを隠したいから。
api-gateway(https)-lambdaで分配-各lightsailみたいな。
lambdaを挟まずapi-gatewayとlightsailが1:1ならいけそうだが?また来週。

自宅回線ぶつぶつの原因がPC側、LANポートのドライバだった可能性

先週買い替えて2ヶ月のELECOMルーターが亡くなっておりBAFFALOに買い替え。

その前後にはネットワークがぶつぶつに切れる現象があった。

 

今日再発し、またルーターお亡くなりかと落ち込む。

ログ見れねえかなとスマホググるとラズパイをsyslogサーバーにして送り付けるオプションを見つける。ラズパイ便利すぎワロタ。

ちょっと脱線するとうちのラズパイ(zero w)はこれだけやってる。

  • etherwake
  • 温湿度ロギング
  • エアコン指示(作りかけで送風指示だけ)
  • カメラモジュールで撮影、監視カメラもどき(作りかけ)
  • ルーターのsyslog ( new !! )

コミコミでこれで4000円くらいだから安いのなんの。

話を戻して見てみるとDHCPCがうんたらを繰り返している模様。

ELECOM時代はルーター電源落としての再起動をしていたがBAFFALOはコンソールからWAN側再接続があった。まあELECOMにもあったかもしれんが。

ただWAN側の回線判別からするのでそこそこ時間がかかる。保存してるPPPoE設定を使ってほしい。

プロバイダ側で手掛かりないかと見ていたら障害は発生していないことは分かった。

加えて向こう側で直近の接続/切断ログを持っていた。痒い所に手が届く!

それによるとこちらから切断しているらしい。

 

もう少し手掛かりが欲しいのでひたすらググる。ここでノートPCでググっていたときはぶつぶつが起きないことに気づく。デスクトップ、お前かぁ

なんなんだろ、リクエスト投げまくったりプロトコルがバグったりしてるのか?

それでルーターがくたばってWAN側巻き込んでる説。

あるとしたらLANポートだよな、買い替えかねぇとネットワークカードを探すも古いの高いのしか出てこない。需要ないのね。オンボードで充分ですもんね。

オンボードのLANポートで起きてるなら買い替え先で再発しないようにとメーカーを調べる。Realtek

みんなはRealtekでぶつぶつ起きてないの?とググると数件引っ掛かる。

その中のとあるページ(失念しましたごめんなさい)によるとネトゲしてしばらくで発生、その都度ドライバの再インストールでしのげるらしい。

じゃあ別メーカー探すかと探そうにも見つからないし見つけるスキルもないと気づき気分転換の晩飯。

よくあることだが別のことをするとふと妙案が浮かんだりする。ドライバが怪しいならドライバ更新すればいいんじゃね?

Realtek PCIe GbE Family Controllerでググるも今入ってるのと同じ日付(2018年)しかでてこない。先のブログもそんなもんの日付。

少し悩んでマザボのメーカーで配ってないか見に行く。2020年1月あった!

早速更新し今のところ再発無し。2019年11月の日付になる。

30分刻みでWAN側切断してたのが今のところ2時間くらい発生してない。

原因が完全にLAN側だとしたら直ったということにしよう。

横浜のバスにやられる

定期券の範囲内に横浜駅があり、そこからバスで銭湯が最近の気分転換。

ただ往復440円くらいとられるのも癪なので何かないかと探していたら、市営バス一日券600円を見つける。

センター南に寄り道していろいろお店見てでちょうどいいのではと思い実行。

 

…のはずが。

IC一日券くださいで着席し、suica引去額を見ると想定より多い。1030円。

調べた結果。

横浜駅で乗ったバスは市営ではなく神奈川中央交通(かなちゅう)バスで、一日券の範囲も値段も全く違う。

センターなんていかないし、厚木~町田~橋本の方に広がっている。

そりゃあ高いしそちらに用があるつもりで買ったわけではないし。

加えて思ったより不便。

私鉄(今回は市営も含めてしまうが)はそれぞれバスを持っており、自分の駅からは自分のバスを出したいのが当然。

なのでそのあたりの便利っぽい路線は抑えられてて、かなちゅうは私鉄から別の私鉄の駅を結ぶ感じの路線が多い。

 

加えて、かなちゅう縛りは思った以上に不便。

運営会社を間違えると一日券が効かないので、同じ路線でも会社を選んで乗らなきゃいけない。

銭湯入ってドトールで必死に考えて、曇りの昼過ぎだから今日は損切りで帰宅にしました。

仮に今回、偶然市営バスに乗れて思った通りになったとしてもいつかはこうなるわけだし、今だったと思うことにする。

 

で、使い倒すコースも一応立案。

近日実行予定(かなちゅうの思惑通りかもしれない)。

房総半島一周の旅

18きっぷが余り気味だったので房総半島1周してきました。

余った18きっぷは新橋で売ってくる縛りつきです。

内房線から周るコースで君津、館山、安房鴨川、千葉で乗換。

 

電車で緑や海を眺める以外は、乗換待ちが館山の1時間と安房鴨川の30分。

金券屋は閉まるのが早いから。

 

・君津

 グリーン車を使用。実に快適。

 18きっぷの旅の楽しみの一つだと思う。

 ただ不慣れなのでスピーカー真下に座ってしまった。

・館山

 房総半島1周は18きっぷ消化が半分目的だけど、ここは来て良かった。

 先週は山、今週は海と自然に飢えてるのが分かる。

f:id:taketsuru:20190831205636j:plain

駅出てこれですよ、テンション上がる

f:id:taketsuru:20190831205716j:plain

海岸まで歩く。海の匂いとか久しぶり

f:id:taketsuru:20190831205822j:plain

渚の駅たてやま。館山とさかなクンさんはご縁があるようで

 海岸散歩も充分よかったけどこの渚の駅が予想以上によかった。 

 さかなクンさん謹製の魚の絵が飾ってある。

 絵なのでそれなりにデフォルトしてあったり色使いの癖とかあるんだけれど現物と比較して違和感がない。

 絵が水槽の奥でスクロールしてても違和感がないというか。驚き。

 手癖で写真撮りたくなった。禁止と書いてなかったけどよかったのかな?

 それを見た後に現物の魚がいる水槽もあり、時間があったら見比べたかった。

 イセエビがなんか引っかかってて窮屈そうにしてたのが印象深い。

 ここまで全部タダ。水槽とかお手入れ大変なのにタダ。非常にありがたい。

 水槽も海も絵もたまに見るからありがたいのかなと思う。

 自分で水槽持ってたり海が近かったりするのには憧れるけど飽きが怖い。

 あと地元の漁業の歴史もあったり。公共施設ですからね。

 紹介ページが非常に簡素。公共施設ですからね。

f:id:taketsuru:20190831211022j:plain

帰り道から見える館山駅

f:id:taketsuru:20190831211105j:plain

特急さざなみ?だったかな。お金がないので乗れない

 これだけの観光地だがアクアラインの影響が大きく、意外に特急の本数が少ない。

 休日なのに館山までの特急は2本。悲しい。


安房鴨川

 30分なのであまり冒険できず。

 イオンで弁当を買って車内で食べた。

 寿司がおいしそうだったけどコスパ思考で普通の弁当(398円)に。

 ちょっと後悔している。

f:id:taketsuru:20190831205435j:plain

内房線外房線の境界

18きっぷの売却結果

 残り3回を3000円。

 足元見られてた気もするが、ほとんどの金券屋が休んでたのと残りが夏休み明け10日というのを考えると文句は言えない。

 以前、計画的に使って不要分即売却とかしてたころは残2が5000円のときもあった。

 今度から計画的に使いましょう。

 

18きっぷの件も含め、最近は判断遅れや事前調査不足で後悔することが多い。

山と海でリフレッシュできたはずなので以降立て直したい。

丹沢大山登ってきました

お盆前に計画していたのですが気温が高いので様子を見続けてました。

最近相対的に涼しくなってきたので本日決行。

 

概要

山旅ロガーを使ってログを取りました。

8時間21分

鶴巻温泉駅スタート
・上り:4時間30分(下社経由)
・頂上休憩:25分
・下り:3時間26分(下社経由せず)

東海大学前駅手前のイートイン付きファミマでゴール
距離:23km
てっぺん:1258m
獲得標高:2341m

f:id:taketsuru:20190825212218p:plain

標高と時間のログ

服装

ワークマン半袖
ワークマンチノパン
20Lくらい?のリュック
メレルの靴

今回は晴れと曇りを繰り返すような、麓の最高気温も31℃くらいの日なのでワークマンで問題ありませんでした。

( 用途に合わせて選んだのではなく、予算面からこれしか持ってない )

 

持ち物

水2.6L
BCAA500ml用一袋
ようかん8個(100均で4個入りのやつを2セット)
カレーパン、おにぎり2つ
カッパ
帰りの着替え
銭湯セット
モバイルバッテリー
塩(ヒル用)

 最近ほぼ全くといっていいくらい運動していないので水がこれでも足りませんでした。

詳細は後程。

登ってる途中で思い出しましたが、トイレットペーパー、ガムテープ忘れてましたね。

 

感想

文章下手なので箇条書きです。

写真もないとかPV稼ぐ気ないですね。

・曇りと晴れを繰り返すような天気
・最初の吾妻山がいきなりきつい登り
・吾妻山~念仏山~高取山~蓑毛越えまで登ったり降りたり
ヒルはでなかった
・下社から頂上までで、疲れが開始から下社までと同じくらい
・下社まで人は全然いない、下社から大賑わい

・下社~頂上間は初心者向けか?と思う
・ようかんは1時間に1つを目安、5つ消費
 口がある程度乾くので水の節約のため下りは控える
・水の消費
 開始から下社までで600ml
 下社から頂上までで1200ml+BCAA
 頂上から終了までで800ml
 ずっと晴れだったら足りなかったかもしれない
 下ってコンビニのイートインで700ml飲む
 その後マクドでアイスコーヒーL(350mlくらい?)を飲む
 でもトイレには行ってない
・銭湯
 さざんか:850円
 登山客を意識した作り
 ・内装キレイ
 ・ロッカーでかい
 ・お湯は40度統一
  運動後って熱いの入りたくない
 ・休憩スペース(浴室内、エントランス)が狭い
  疲れから長居されると回転率悪いからねぇ

・体の異常?とか

 太ももの筋肉痛と両足の人差し指の爪にチマメ

 以外にもそれだけ

一番衝撃だったのが水の件。

家についてウーロン茶とか水とかコップ数杯飲んでますが未だにトイレには行ってないです。

 

雑感

運動量も資金も知識も不足していた人間の割にはうまくできたと思います。

筋肉痛の完治にどれだけかかるか見ものです。

cloudformationに必要なiamポリシーとか

試行錯誤でなんとかデプロイ達成。

まあ、ワイがIAMに始まりAWSを理解していないのがいけないのですが。

 

事の発端はgoバイナリをlambdaにデプロイしようと思ったこと。

2年前くらいにlambdaとApiGatewayをひいひい言いながら動かしたことがあるけど

それっきりで身についておらず苦労したことしか覚えてない。

 

というわけで何かないかググる。楽するために努力する。

と、cloudformationとかいうなんかすごそうなものを見つける。

少し前からあったらしいけど全然知らなかった。ので読む。

インフラをドキュメントで定義して管理しましょうね的なサービス。

そういえば弊社でもterraform使ってたような。

 

で使ってみることに。

①samを入れてinitする

②作りかけのgoを混ぜてtemplate.yamlをそれっぽく修正する

awsコンソールから必要な権限を準備する

④sam package --s3-bucket 中間生成物用S3 --output-template-file packaged.yaml

⑤sam deploy --template-file packaged.yaml --stack-name {stack}  --capabilities CAPABILITY_IAM

⑥失敗するとstackに情報が残るのでコンソールからチェックしたら消す

 aws cloudformation delete-stack --stack-name {stack}

⑥成功すると(iamと)lambdaとapigatewayができてる

みたいな流れ。

 

って書くと簡単そうだけど②③でひたすら詰まる。

仕事後の貴重な自由時間3日分くらい。

 

詰まったポイント:

・samを実行するlinux(今回はlightsail)のiamに権限が必要

 用意しておいたロールを使うときにはiam:GetRoleとiam:PassRoleが必要、

 専用の権限を同時に作成する場合は7つくらい必要(後述)

・lambdaに紐づけるロールを用意してやると"lambdaにふさわしくない権限"と弾かれる

 cloudwatch?lamdainvoke?昔の残骸を見ながら試すも無事死亡、あきらめる

 

で、cloudformationからのlambdaのiam生成に必要な権限はこちら(2019/08/23時点)

・iam:DetachRolePolicy
・iam:DeleteRolePolicy
・iam:DeleteRole
・iam:PutRolePolicy
・iam:AttachRolePolicy
・iam:GetRolePolicy

実はGetRoleも必要かも、試す気力がないです...

だいたいAdminでやるから意味のない情報かも。なぜワイはそうしなかったのか。

sam deployをする→failed→メッセージに"iam:~が必要です"と都度表示されるので

短気なワイは結構つらかった。

failedのときはrollbackしようとするのでそこでdeleteとかdetachが必要なのだけど、

その権限がないとrollbackに失敗するのでstackがしばらく残ってしまう。

stack1,stack2...とクソ命名をせざるを得なく、stack6で成功。

ググると2時間くらいほっといたら消えるらしい。

 

結局はlambdaにふさわしいロールの条件はわからず自動生成とした。

自動生成されたポリシーを見ると以下だった。

・AWSXrayWriteOnlyAccess
・AWSLambdaBasicExecutionRole

半分当たって半分外れ。Xrayって昔のlambdaのiamにいなかったぞ...

謎。知らなくても生きていけることはある。

 

template.yamlのメモ:

・outputはなくてもいい、awsのコンソールで値を見ることができる程度

 エンドポイントURLとか作成されたロールを見れると便利

・公式サンプルが一番ためになった

github.com・ブラウザで雛形からある程度のtemplate.yamlを作成できるところがあるらしい

 

ここまで苦労しかなかったけど、やっぱコマンドでいろいろリソースを定義して

紐づけられるってすごい。

あと、sam local start-apiでテストができてしまうのもすごい。

苦労しただけのことはあると思いたい。

 

ああ、次は作りこみだ...

ラズパイの温度計測をGoogle Sheets APIで記録

もはや本ブログのメインカテゴリが定まってないように見えますが、

私の感情が高ぶったことを書いてます(適当)

 

raspberry piで室温を計測したら思いのほか高温になってたことが発端。

朝の9時に外出、その日は晴れで最高気温は15時に32℃の湿度68%。

部屋はその間締め切り。17時帰宅でみなさん体験したことのあるあの熱気を計測。

すると36℃の75%でした。以外と高い。

 

じゃあ次はこれを時系列で記録しようと。

ラズパイなのでsqliteawsでもいいのですがちゃちゃっと表で見たいのでGoogleのSpreadSheetに挑戦。

結果、合計4時間くらい検索してやっと手ごたえを得る(読み出し成功)。

読めれば書くのはすぐでしょ、と気が抜けて達成感を得られたのでブログに。

 

やったことは以下。

Google Sheet APIの有効化。

 これはいくつかの記事から読み取れて難なく終わる。

②サンプルコード

 公式の英語ドキュメント(もちろんほぼ読めない)から頑張って探す。

 ラズパイはpythonで書いたのでpythonのやつ

developers.google.com③サンプルコードで読み込んでるcredential.jsonを頑張って作る

 ここで1.5時間くらい試行錯誤

 GCP?は始めてなんだ、すまない。

f:id:taketsuru:20190729230848p:plain

まずはOAuthクライアントIDの作成

f:id:taketsuru:20190729230947p:plain

その他を選択、名前は適当

f:id:taketsuru:20190729231014p:plain

作成を押すと完了ポップアップが出るが無視、右端の下矢印からjsonをダウンロード

 このクライアントID(~googleusercontent.com)をスプレッドシートの共有で

 追加しておく(スプレッドシートの画面右上、googleアカウントの招待と同じ)

④サンプルコードにcredential.jsonを食わせる

 2.5時間くらい試行錯誤

 コードはとりあえず動く。

f:id:taketsuru:20190729231531p:plain

応答が返ってくるもここからどうすればいいのか

OAuthってよく分からないけどgoogleの画面にいって許可ボタン押すやつかな...とか

考えながらこのURLをssh元PCのブラウザで開く。

すると曖昧な記憶通りの画面(googleアカウントログイン→アクセスを許可しますか?)が

開くが、最後のリダイレクトでこける。

URLをみるとhttp://localhost:38573とかになってる。

なんじゃこりゃ、こんなポート開けた覚えないぞとなりながら夕食。

ネットサーフィンしてから戻ってきて改めて考えなおす。

そもそもこのURLを表示してるコードを見てみるか。

google-auth-oauthlib.readthedocs.io

見てみた。

run_local_server()ってやつらしい。

pythonの組み込みサーバーを起動してるっぽい...?

一つの方法としてはサンプルコードの35行目のrun_local_server()コール時に

raspiのipと開いてるポート渡してPCからアクセスでもいいと思う。

だがソースをみているとrun_local_server()の上にrun_console()っていうのがあって

こっちなら早いんじゃないのrun_local_server()と入れ替えて試してみた。

f:id:taketsuru:20190729232820p:plain

なんか挙動が違う

最終行にEnter the authorization codeとかある!とりあえずURLにアクセスすると、

さっきまでの最後でこけてたリダイレクトがなくなってトークン?が出てきた

f:id:taketsuru:20190729233135p:plain

やったぜ。

で、こいつをさっきのEnter...に貼り付けると動いた!

同じ階層にtoken.pickleができてるのが成功の証。

 

さて、今からspreadsheet書き込みなわけですがどれだけかかることやら。

 

追記:

なんとかできた。15分単位でcronで回してる。

形になるとやっぱうれしいし達成感がある。

本来ならグラフ埋め込みにしたいけどキャプチャで勘弁。

f:id:taketsuru:20190731081325p:plain

湿度はY軸分けたい