2024-01-01から1年間の記事一覧

Google Cloud release notes キャッチアップ 2024-12-21 - 2024-12-27

年末のせいか今週はアップデートは少ない。 cloud.google.com Kubernetes [CHANGED] GKE cluster versions have been updated. GKE パッチリリース。 Rapid / Extended / No channelにて配信。 BigQuery [CHANGED] BigQuery is available in the Mexico (nor…

Google Cloud release notes キャッチアップ 2024-12-14 - 2024-12-20

cloud.google.com Identity and Access Management(IAM) [CHANGED] Principal access boundary policies are generally available. IAM には Principal access boundary policies (PAB policies, プリンシパルアクセス境界ポリシー)という機能がある。これは…

Cloud Monitoringでslack通知をterraform管理できない

Google CloudのCloud Monitoringにおいてslack通知する仕組みをterraformで構築したい。 Email通知の例は公式のガイドに記載があるので、これを参考にslack通知を実現したい。 cloud.google.com Cloud MonitoringとSlackの連携 Cloud MonitoringとSlack連携…

Google Cloud release notes キャッチアップ 2024-12-07 - 2024-12-13

Google Cloudの理解を深めるためにリリースノートを読んでみる。 主に自分が気になるプロダクトのリリース内容について抜粋。 cloud.google.com IAM [CHANGED] Using IAM attributes in custom organization policies is generally available. カスタム組織…

Google Cloud release notes キャッチアップ 2024-12-01 - 2024-12-06

Google Cloudの理解を深めるためにリリースノートを読んでみる。 主に自分が気になるプロダクトのリリース内容について抜粋。 Google Cloud release notes | Documentation Compute Engine [FEATURE] Generally available: Hyperdisk Balanced High Availabi…

Cloudflare Workersでhello world

Cloudflare Workersにhello worldアプリをデプロイして動かしてみる。 API トークンの取得 これは本来必要無いが、自分の開発環境がGUIの無い環境なのでブラウザログインできず認証できない。 このため事前にAPIトークンを発行して設定しておく。 APIトーク…

google cloudのラベルとAWSのタグに関する制約

Google Cloudにおいてリソースへのメタデータとして利用できるラベルという機能がある。 ラベルを使用してリソースを整理する | Compute Engine Documentation | Google Cloud これはAWSのタグ機能とほぼ同等の機能を提供する。 docs.aws.amazon.com Google …

permadiff: 何度applyしても消えない差分

terraformを使っていたら誰もが意図しない差分と格闘したことがあるはず。 その中でも特に何度applyしても差分が消えず残り続けるものがある。このようなdiffのことを permadiff と呼ぶ。 googlecloudplatform.github.io permadiffについての解説はMagic Mod…

pdfファイルのサムネイルが表示されない

Ubuntu 24.04のファイルマネージャーNautilusにてpdfファイルのサムネイルとして、1枚目の内容ではなく汎用のpdfアイコンが表示されて困った。 特に電子書籍を大量に所有しているのでサムネイルとして表紙を描画して欲しい。 サムネイル描画のためだけに追加…

CloudflareのAPIトークンにおいて複数ゾーンリソースを管理する

TerraformにてCloudflareのゾーンリソースを管理したい。 特に単一のゾーンではなく複数のゾーンを扱いたい。 Terraformのcloudflare providerには cloudflare_zoneリソースがあるのでこれを利用すればよい。 Cloudflareとの認証にはAPI_TOKENを利用すればよ…

kubernetesクラスタにおけるetcdコンポーネントの動作検証

Kubernetesクラスタにおけるデータストアとしてetcdがある。 Kubernets The Hard Wayでetcdのセットアップを行ったので、その設定詳細について確認する。 また、Kubernetesにおける etcdクラスタについては以下のドキュメントが参考になる。 kubernetes.io …

envsubstで環境変数をテンプレートに展開する

Kubernetes The Hard Way を進めていたら、見知らぬ envsubstコマンドに遭遇した。 $ export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64) $ envsubst < configs/encryption-config.yaml \ > encryption-config.yaml これは環境変数を展開して埋め込…

LinuxのWeb管理コンソール: Cockpit

前回記事の検証のため、Fedoraにsshしたところ見慣れないメッセージとしてwebコンソールの案内が表示された。 $ ssh 192.168.10.124 Web console: https://localhost:9090/ or https://192.168.10.124:9090/ ... 実際にこのURLにアクセスしたところ、該当サ…

Debianにおける127.0.1.1の取り扱い

Kubernetes The Hard Wayを進めていたら、クラスタノードのホスト名の設定において /etc/hosts 書き換えるというものがあった。 この中で、 127.0.1.1 のエントリを書き換えるという操作があった。 while read IP FQDN HOST SUBNET; do CMD="sed -i 's/^127.…

kindでは構築するクラスタノードのリソースは制御できない

ローカル環境においてKubernetesクラスタの動作検証するときの手段の1つとしてkindがある。 kindはdocker in dockerの仕組みを利用して簡単にkubernetesクラスタを構築・利用することができる。 クラスタノードを制御する kindはマルチノードクラスタにも対…

Krewでkubectlのプラグインを管理する

kubectlはプラグイン機構を備えている。プラグインの仕組みを利用することで、kubectlにサブコマンドを追加して公式cliにはない機能を実現できる。 kubernetes.io Krewによるプラグイン管理 プラグインはファイル名が kubectl-から始まる実行可能なファイル…

bunのlockfileの内容を確認する

bunにおけるlockファイルの bun.lockbから、インストールしているパッケージバージョンを確認したい。 bun.lockはバイナリファイルなのでその内容を直接確認することはできない。 bun.sh bunのコマンドを指定しないで bun.lockbファイルを引数として指定すれ…

Terraformのjsonencode関数が特殊文字をエスケーする問題と回避策

Terraformのjsonencode関数でjson文字列を生成するとき、 < > & U+2028 U+2029 はエスケープされる。 developer.hashicorp.com このため、例えば aws_cloudwatch_event_target の input_transformerを用いて送信メッセージをカスタマイズしたい場合に < > を…

SourceOrgIDとPrincipalOrgIDでOrganiations環境下のアクセス制御を実現する

AWS

導入: リソースベースポリシーとプリンシパル AWSにおいてアクセス元を識別するための仕組みとしてプリンシパルがある。 IAMポリシーにおいてリソースベースのポリシーを定義するとき、さまざまな種類のプリンシパルから指定することができる。 docs.aws.ama…

Principalsに指定したIAMユーザを削除するとS3バケットポリシーが変化する

AWS

まさにこれに遭遇した。 dev.classmethod.jp S3バケットポリシーにIAMユーザのアクセス許可を付与していた。 IAMユーザを削除したが、S3バケットポリシーの修正もれが生じていた。 S3バケットポリシーはterraformで管理していたが、IAMユーザの指定ではIAMユ…

GitHub Composite Actionsではboolean inputsがstringとして扱われる

Composite Actions概要 GitHub Actionsにて複数のworkflowから利用できるactionsとしてComposite Actions (日本語では複合アクション)を作成できる。 Composite Actionsを作成すれば、複数のworkflowから参照することもできるし、複数リポジトリで共有するこ…

論理属性をVueでバインディングする

<button type="button" disabled>送信</button> のように、disabled属性をVueで制御したい。 これを実現するには以下のようにv-bindを利用する <script setup lang="ts"> import {ref} from "vue"; const isButtonDisabled = ref(true); </script> <template> <button v-bind:disabled="isButtonDisabled">Button</button> </template> これにより、isButtonDisabled がt…

Nuxtにおけるルーティング設定とCatch-all Route

Nuxtのpagesやserverではfile-system routingを採用しており、URLの構造のソースコードのディレクトリ構造を一致させることができる。 nuxt.com nuxt.com serverのディレクトリなどにおいて、リクエストパスがいずれのルーティング設定とも一致しない場合の…

Nuxt/TypeScriptにおけるパスエイリアス

TypeScriptにおいて import { NuxtAuthHandler } from "#auth"; のようなインポート文を見かけることがある。この#authのような例をパスエイリアスと呼ぶ。 パスエイリアスを利用することで、相対パスでコンポーネントを指定する場合に比べてディレクトリ構…

GitHub Actionsでmatrixの実行結果(outputs)を取得する

GitHub ActionsにおいてMatrix Jobを実行した結果(outputs)を参照したい。 2024年1月の仕様では、最後に実行したジョブの結果で上書きされるので、ジョブによって結果が異なる場合にそれぞれの値を取得することができない。 これは以下のコミュニティディス…

GitHubでOrganization Environmentsが欲しい

GitHub Organization下の複数リポジトリにてクレデンシャルを共有したいケースがよくある。 このような場合にはOrganization SecretsやOrganization Variableが便利。 docs.github.com これはこれで良いのだけれど、GitHub Environmentsを利用するようになる…

AWS lambdaのNode.jsを18にアップデートする

AWS LambdaのNode.js 16ランタイムは 2024年6月に廃止がアナウンスされている。 (Node.js 16 LTS自体は公式には2023年11月にEOLを迎えている)。 できるだけ早めに Node.js 18 or 20にアプデートしたい。 docs.aws.amazon.com AWS Lambda固有の事情として、No…

エクスポートを利用するためにJavaScriptモジュールとして宣言する

JavaScriptには他のファイルで定義されたリソースを利用するための仕組みとして import/exportがある。 exportを利用するためには、ソースファイルがモジュールである必要がある。 ソースファイルで export 宣言を使用するためには、そのファイルはランタイ…

GitHub Environmentsで設定した変数を参照する。

GitHub Environmentsにはシークレットと変数が設定できて、それぞれ secretsおよびvarsコンテキストを用いて参照する。 例えばシークレットとしてTOKENを設定していれば ${{ secrets.TOKEN }} で、変数として RAILS_ENVを設定していれば ${{ vars.RAILS_ENV …

GitHub Actionsで条件に応じて値を設定する

GitHub Actionsで条件に応じて変数に値を設定したい。 例えばmainブランチを対象とする場合はenvironmentにproductionを、それ以外のブランチを対象とする場合はdevelopmentを設定したい。 このようなケースでは三項演算子が利用できる。 docs.github.com こ…