ふり返る暇なんて無いね

日々のメモ書きをつらつらと。メインブログに書くほどでもないことを流してます

GitHub Actionsで `save-state` と`set-output` が廃止されるようです。

ふとGitHub Actionsを実行ログを眺めてたら、下記のwarningsがでてることに気づきました。

The `set-output` command is deprecated and will be disabled soon. Please upgrade to using Environment Files. For more information see: https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/

なんだろと思いつつ、示されてた参考リンクを見ると set-output が使えなくなる模様。

10月11日にリリースしたrunner version 2.298.2からこのwarningsがでるようになってて、2023年6月1日からsave-stateまたはset-outputを使うと失敗するようになるので、それ以降使えないとのこと。

それまでに対応する必要がありそう。

リンクの例に書かれてますが、今回使えなくなる set-outputsave-state の形式がこれで、

- name: Save state
  run: echo "::save-state name={name}::{value}"

- name: Set output
  run: echo "::set-output name={name}::{value}"

今後は、こっちのように指定のファイルに出力するように対応すれば良い。

- name: Save state
  run: echo "{name}={value}" >> $GITHUB_STATE

- name: Set output
  run: echo "{name}={value}" >> $GITHUB_OUTPUT

しかし、10月11日からwarningsでてたはずなのに気づいてなかった。。。

はてなブログのカテゴリごとのRSSフィード

こんな形式のURLになってます。

https://${domain}/rss/category/${category}
https://${domain}/feed/category/${category}

うちのでいうとこんな感じですね。

このブログわりかし技術系以外の内容が含まれてるので、技術系のカテゴリだけslackに流したいなと思って、特定カテゴリだけのRSSフィードがないか探してました。

これで良い感じにできそう。

未解決: Google Cloud Storageの静的配信でnginxで言うところのtry_files的なことをしたかった。。。。

結論から言うと、ページとしては想定のものが返ってきてるが、status code 404が返るようになってうまくいってないです。

nginxだと下記の様に設定すると、指定されたファイルを探して見つからなかったら/index.htmlを返す(それもなかったら404を返す)。ということをしてくれます。

try_files $uri /index.html =404;

シングルページアプリとかだと返して欲しいhtmlはindex.htmlだけど、パスに応じて挙動を変えるみたいなことをしてると思います。これに対応するために上記の設定をしています。

もともとNginxをCloudRunで動かして、これをやっていたのですが、どうせ静的配信しかしないならCloud Storageでいいのでは?となって移行しようとしています。

これと同等のことCloud Storageでやるには、NotFoundPage = index.htmlを指定するとよさそうです。terraformで書くとこんな感じになります。

resource "google_storage_bucket" "website" {
  name          = "${local.name}-site"
  location      = "ASIA1"
  storage_class = "MULTI_REGIONAL"

  website {
    main_page_suffix = "index.html"
    not_found_page   = "index.html"
  }

ページの表示としてはうまくいったのですが、status codeが404で返ってきてしまいます。これをうまく200で返す手段がCloud Storageとロードバランサの組み合わせでは見つかりませんでした。

CloudFunctionsでうまくごにょごにょすれば良いかもですが、だったらCloud RunでNginxをサーブする方がシンプルにできそうで良いのでは?と言う気持ちになってます。なにかシンプルなうまい方法ないですかね?

参考:

横須賀で温泉入ってきた

温泉に行きたくてふらっと横須賀温泉に行ってきました。海を見ながらの温泉は最高でした。

www.yurakirari.com

湯上がりに横須賀に似つかわしくないビール。

お湯を上がった後は馬堀海岸で海を見ながら散歩してました。良い眺め。そして、横須賀に似つかわしくない食事。

お昼はここで、地魚丼をいただきました。はい。

www.uogashi-hamakura.com

Google Cloudの外部HTTP(S)ロードバランサと外部HTTP(S)ロードバランサ(従来型)の違いがわからなかった。

外部HTTP(S)ロードバランサには無印と従来型の2つがあります。この辺まとめてるのが日本語では見つからなかったので、ざっくりとドキュメントからかいつまんでみました。

従来型を使いたい特別な理由がない限りは無印を使うとよいのかなとます

無印 従来型
特徴(作成時のツールチップより引用) 複数のリージョンにグローバルに分散されたユーザーまたはバックエンド サービスを持つ外部 HTTP(S) ワークロード向けに推奨されるロードバランサです。このロードバランサは、従来の HTTP(S) ロードバランサよりも多くの機能がある、高度なトラフィック管理機能を備えているため、トラフィックの処理方法をきめ細かく制御できます 従来のグローバル HTTPS ロードバランサは、グローバル HTTPS ロードバランサの以前のバージョンであり、高度なトラフィック管理などの機能をサポートしていません
ネットワークティア プレミアムティア スタンダードティア、プレミアムティア
GKE互換 スタンドアロンNEG IngressまたはGateway
Cloud Armor bot管理を除く bot管理を含む
セッションアフィニティのオプション ヘッダーフィールドとHTTP Clookie未対応
ロードバランサースキーム EXTERNAL_MANAGED EXTERNAL
その他 Envoyプロキシを使用した高度なトラフィック管理

あとの細かいことはドキュメントを見てください。

Google Cloud認定 Professional Cloud Architect合格してた

10/27の午前中にGoogle CloudのProfessional Cloud Architectを受けてきました。

Professional Cloud Architect • 勝史 鈴木 • Google Cloud

スッと試験終了後の画面に合格と表示されてたのでホントに受かってるのか不安でしたが、メールでの通知もあったし、Accredibleにも登録されてるので、これは間違いなく合格してるでしょう。

時間の関係上、実質5日間しか勉強してなく、詰め込みでやったのであんまり達成感ないです。AWSと違ってスコアでないのもどれくらい理解度が進んでたのかが分からないのが難点ですね。

Professional Cloud Developerを今年中に受ける予定なので、こっちはちゃんと身になるように勉強していきたいです。

t3系インスタンスのスペックについて

特にオチはないメモです。

インスタンスタイプ - Amazon EC2 | AWS

基本的にはメモリとCPUクレジットが1サイズ上げると倍になっていく。vCPU数はt3.largeまでは2でそれ以降倍になっていく。

ちょっとした作業スペースとして使うならメモリ0.5GiBのt3.nanoで十分。簡単なwebアプリとか動かすならメモリ2GiBのt3.smallで余裕。

そもそも2vCPUしかないのでCPUを使ったバリバリとして並列処理には向かない

build-in commandのmanが引けなくて困った

zshの話です。

historyコマンドのmanpageを引きたくて以下のようにコマンドを打ったところ、

man history

builtinのmanpageが表示されて、そうじゃないんだよなあ。。。ってなってました。 See the built-in command description in the appropriate shell manual page. 言われても。。。。

BUILTIN(1)                  General Commands Manual                 BUILTIN(1)

NAME
     builtin, !, %, ., :, @, [, {, }, alias, alloc, bg, bind, bindkey, break,
     breaksw, builtins, case, cd, chdir, command, complete, continue, default,
     dirs, do, done, echo, echotc, elif, else, end, endif, endsw, esac, eval,
     exec, exit, export, false, fc, fg, filetest, fi, for, foreach, getopts,
     glob, goto, hash, hashstat, history, hup, if, jobid, jobs, kill, limit,
     local, log, login, logout, ls-F, nice, nohup, notify, onintr, popd,
     printenv, printf, pushd, pwd, read, readonly, rehash, repeat, return,
     sched, set, setenv, settc, setty, setvar, shift, source, stop, suspend,
     switch, telltc, test, then, time, times, trap, true, type, ulimit, umask,
     unalias, uncomplete, unhash, unlimit, unset, unsetenv, until, wait,
     where, which, while – shell built-in commands

SYNOPSIS
     See the built-in command description in the appropriate shell manual
     page.

zshでbuilt-in commandsを調べたいときは以下のようにするのが正しいです。

man zshbuiltins

ちなみに fc -lhistory は同じだそうです。

       history
              Same as fc -l.

人生に疲れたので熱海で温泉入ってきた

人生に疲れたので温泉に入りに来ました。ネットで調べて、ここが良さそうなので前日にパッと決めて新幹線に乗って熱海まで行きました。

atamibayresort.com

朝一で行ったので、朝ご飯食べられそうなところがなかったのですが、到着する直前でやってる店を見つけました。第八富士丸食堂に入って、海鮮丼いただきました。おいしゅういただきました。

tabelog.com

腹ごしらえを終えて、いざ温泉。オーシャンビューの温泉、露天風呂、サウナ、休憩椅子。どれも最高でした。朝一というのもあって、すいててさらに最高でした。 ちなみに

atamibayresort.com

休憩スペースも広くて、電源もあるのでワーケーションがはかどりました。

夕方まで一通り仕事したあと、海岸を散歩してました。こういう景色良いですよね。熱海は駅まで坂が多くて、坂の町の雰囲気とかも好きです(写真なし)

当日まで知らなかったのですが、この日は熱海で花火大会があって、軒並みお店が満員でやっと入れたお店がこちらでした。自分が入った後にすぐ満員になってたのでタイミングが良かったです。 nbsz100.gorp.jp

何も事前情報なくふらっと入ったお店でしたが、これが当たりでした。魚に牡蠣に日本酒に大満足しました。また来る候補入りです。

花火見ようかと思ったんですが、人が多くてちょっとアレなので、混雑する前に新幹線で帰りました。良い旅でした!