ENGINEERING NOTES

blog.takenoko.dev

72 articles

Filter articles

72 / 72 articles

GitHub Actions と Terraform で構築する ECR + Lambda コンテナデプロイ環境

GitHub Actions から ECR への Docker コンテナ自動デプロイと Lambda でのコンテナ実行環境を構築した際の学習記録です。Terraform による AWS リソース構築、OIDC を利用した GitHub Actions の認証設定、ECR への継続的デプロイの実装手順をまとめました。distroless イメージでの Lambda 実行時の注意点も記録しています。

  • AWS
  • GitHub Actions
  • Terraform

JavaScript URL コンストラクターのネットワークパス参照によるオープンリダイレクト脆弱性と3つの対策パターン

JavaScript の URL コンストラクターで `//evil.com` のようなネットワークパス参照を処理する際に発生するオープンリダイレクト脆弱性について、RFC 3986 の仕様解析と、ドメイン検証・相対パス限定・許可リスト制御の3つの対策パターンの実装方法を記録した備忘録です。

  • TypeScript
  • Node.js
  • セキュリティ

TypeScript で実装する Amazon Cognito User Pools 認証システム【MFA 対応・Terraform 構築】

Amazon Cognito User Pools を使用した TypeScript 認証システムの実装についての記事です。Terraform でのインフラ構築、エイリアス属性の設定、MFA の有効化、ユーザー登録フロー(SignUpCommand、ConfirmSignUpCommand)、認証フロー(InitiateAuthCommand、RespondToAuthChallengeCommand)まで、実際のコード例と動作確認結果を交えて学んだ内容をまとめました

  • TypeScript
  • AWS Cognito
  • Node.js
  • Terraform

OpenTelemetry JS: 構造化ログへtrace_idを自動付与する仕組み

OpenTelemetry JS SDK を利用して、Winston の構造化ログに `trace_id` を自動で付与する方法とその仕組みを学習しました。`@opentelemetry/instrumentation-winston` がどのように `trace_id` をログに挿入するのか、コードを読み解きながら確認しました。Observability を高めるための具体的な設定方法と内部動作について、学んだことを記録します

  • Node.js
  • OpenTelemetry

データベースのスナップショットを作成したアカウントから別アカウントにコピーする

データベースのスナップショットを作成したAWSアカウントから別のアカウントにコピーする方法について説明します。特に、スナップショットの暗号化に使用するカスタマーマネージドキー(CMK)の設定方法と、アカウント間でのスナップショット共有の手順を、具体的に解説していきます。

  • AWS
  • RDS

NICE DCV をインストールした EC2 インスタンスに Web ブラウザからアクセスする

NICE DCV を使ってUbuntuイメージで立ち上げたEC2インスタンスにリモートデスクトップを実装する方法について学習した内容を説明します。WebSocketベースのプロトコルを使用したDCVサーバーの構築から、Webブラウザからのアクセス方法まで、具体的な手順を解説していきます。

  • Ubuntu
  • Linux
  • Terraform
  • AWS
  • Mac
  • DCV

PythonのaiohttpモジュールとGeneratorを使って、ページネーションを処理するHTTPクライアントを実装する

Python で GET リクエストを実行する際、ページネーションの処理が必要な場合があります。AWS SDK のようなライブラリは Paginator クラスなどの実装が用意されていますが、REST API を使用するために HTTP クライアントを使う場合は、自分でページネーションの実装を行う必要があります。今回はaiohttpを使ってページネーションの処理を書いてみます。

  • Python
  • GitHub

Kubernetes上のアプリケーションから繋いでいるDBのマイグレーション方法を考える

Kubernetes上で運用しているアプリケーションのデータベースマイグレーション方法について、様々なアプローチを検討します。手動実行、EC2インスタンス利用、CI実行、Init Containers使用、Kubernetes Job使用の5つの方法を比較し、最終的にHelmのhookを使用した実装方法を選択した過程を解説していきます。

  • Kubernetes
  • Database

privateサブネットに配置したAWS EC2インスタンスにssmでログインする

プライベートサブネットに配置したEC2インスタンスにAWS Systems Manager(SSM)経由でログインする方法について説明します。AWSマネジメントコンソールからのアクセスと、ローカルPCからのaws ssm session-startコマンドによるアクセス、両方の実現方法を、Terraformを使って解説していきます。

  • Terraform
  • AWS
  • AWS Systems Manager

Pagefind UI mount↑↓ select · enter open