kakakakakku blog

Weekly Tech Blog: Keep Learning!

Terraform

Security Hub CSPM で [EC2.182] Amazon EBS Snapshots should not be publicly accessible を修復する

Security Hub CSPM の AWS Foundational Security Best Practices (FSBP) で [EC2.182] Amazon EBS Snapshots should not be publicly accessible という警告が出ていた docs.aws.amazon.com EC2.182 とは [EC2.182] Amazon EBS Snapshots should not be pub…

Terraform の AWS Cloud Control Provider (awscc) で CloudWatch Alarm「ミュートルール」を設定しよう

2026年2月に Amazon CloudWatch Alarm の「ミュートルール (Mute Rules)」 という新機能がリリースされた❗️ 計画メンテナンスのときなど Amazon CloudWatch Alarm のアクションを一時的に止めたい場合に今までだと「無効化」を設定する必要があった.もしく…

Terraform で moved ブロックを使わなくても count を削除できる

Terraform で環境ごとにリソースの有無を制御する場合や段階的にリソースを有効化するような場合に count を三項演算子のように使って制御できる. developer.hashicorp.com しかし count を使うと aws_sqs_queue.sandbox[0] のようにリソース id にインデッ…

Lambda Managed Instances に入門できるパターン「AWS Lambda Hello World on AWS Lambda Managed Instances (Terraform)」

2025年11月にリリースされた「AWS Lambda Managed Instances」を使うと Amazon EC2 上で AWS Lambda 関数を実行できる.AWS Lambda の良さ(お手軽さ)を残しつつ,Amazon EC2 で実行することによってコールドスタートを解消できたり,GPU インスタンスを選…

Terraform で Amazon ECR のブロブマウンティングを有効化する(Terraform AWS Provider v6.29.0 から)

2026年1月に発表された Amazon ECR のブロブマウンティング (Blob mounting) を有効化すると Amazon ECR リポジトリ間で同じレイヤーを共有できてイメージのプッシュを高速化できる. aws.amazon.com docs.aws.amazon.com Terraform AWS Provider v6.29.0 Te…

Terraform バックエンド「Stategraph」の Quickstart を試す

Terraform のステートをデータベースで管理して tfstate 管理のボトルネック解消を目指す Stategraph という新プロダクトがある.ウェブサイトに書いてある Plans in seconds, not minutes はインパクトがある2026年2月25日に開催された Stategraph Demo Day…

tflint-ruleset-aws の Deep Checking で AWS アカウントのリソースを考慮した静的解析を実行する

Terraform プロジェクトの静的解析ツールとして TFLint と TFLint Ruleset for terraform-provider-aws (tflint-ruleset-aws) をよく使っている 最近 tflint-ruleset-aws のコードを読んでいたら「Deep Checking」という機能があることを知って,試してみる…

Terraform で region を指定したリソースをインポートする場合は @<region> を付ける

Terraform AWS Provider v6 から「リソースレベルで」リージョンを指定できる.たとえばプロバイダーで ap-northeast-1 リージョンを指定しつつ,Amazon ECR リポジトリを us-east-1 リージョンにデプロイする場合は以下のように実装すれば OK resource "aws…

Terraform AWS Provider v6.31.0 で追加された aws_account_regions データソースを試す

2026年2月4日にリリースされた Terraform AWS Provider v6.31.0 で新しく aws_account_regions データソースが追加されていた気になって試してみることにした. 一言で言うと「AWS Organizations のメンバーアカウントで有効化されているリージョン情報」を…

Amazon CloudFront 標準ログ v2 を Terraform でデプロイする

Amazon CloudFront 標準ログ v2(アクセスログ)を Amazon S3 に保存する構成を Terraform で実装する機会があった.個人環境で検証したことをまとめておこうと思う❗️ docs.aws.amazon.com Amazon S3 関連 まずは Amazon CloudFront 標準ログ v2(アクセスロ…

Amazon CloudFront VPC origins を Terraform でデプロイする

Amazon CloudFront VPC origins を使うとプライベートサブネットにデプロイしたリソース(具体的には Application Load Balancer / Network Load Balancer / Amazon EC2)を Amazon CloudFront 経由で直接配信できる パブリックサブネットにリソースをデプロ…

新機能 Terraform Actions に入門できるチュートリアル「Invoke actions with Terraform」

2025年12月に正式リリースとなった「Terraform Actions」に入門できるチュートリアル「Invoke actions with Terraform」を試してみた AWS と Azure で試せるようになっていて,今回は AWS にした. developer.hashicorp.com Terraform Actions Terraform Act…

Terraform と lambroll で LocalStack に Lambda 関数をデプロイする

lambroll を使って AWS Lambda 関数をデプロイしてる環境で動作確認のために LocalStack にもデプロイしたいという相談があって,検証環境を作る機会があった.結果的に問題なくデプロイできた個人環境で検証したことをまとめておく. github.com 今回の構成…

Terraform で Amazon Athena の「マネージドクエリ結果」を設定する

2025年12月4日にリリースされた Terraform AWS Provider v6.25.0 で Amazon Athena の「マネージドクエリ結果 (Managed query results)」がサポートされた github.com マネージドクエリ結果は2025年6月にリリースされた新機能で,クエリ結果を保存する Amazo…

Terraform sandboxes: 公式のサンドボックス環境で Terraform を勉強しよう

HashiCorp 公式の Terraform サンドボックス環境「Terraform sandboxes」を使うとブラウザ上で Terraform の勉強ができるLocalStack(AWS エミュレータ)もプリインストールされてて Terraform AWS Provider の勉強にもなる. 最近までなかったように思うけ…

Terraform AWS Provider v6: リソースレベルでリージョンを指定する

Terraform AWS Provider v6 から「リソースレベルで」リージョンを指定できるようになった️ 今まではエイリアス付きのプロバイダーを定義する必要があった.詳しくは Terraform AWS provider 6.0 now generally available に載っている. 最近カスタムドメイ…

Terraform TLS Provider: Terraform で EC2 キーペアを生成する

Terraform TLS Provider を使うと Terraform で秘密鍵などを生成できる️ registry.terraform.io ちなみにドキュメントには以下のように書いてあって,tfstate にシークレットが含まれるためプロダクション環境での利用は避けると良さそう. Because of these…

Terraform AWS Provider v6: deprecated になった aws_region データソースの name プロパティ

Terraform AWS Provider v6 へのバージョンアップを数回やっていて(既に4プロジェクトほどやった)そのときによく遭遇するのが aws_region データソースの name プロパティが deprecated になった件で,v6 以降は region プロパティを使う必要がある. name…

Terraform: AWS WAF で Basic 認証を実装する

AWS WAF を使ってアプリケーションに Basic 認証を設定できる️Basic 認証のセキュリティレベルを理解した上で一時的な社内用途などで使いたいという場面はあると思う. 今回は AWS WAF + ALB(固定レスポンス)という簡単な組み合わせを Terraform で実装し…

Cloudflare Terraform Provider でリソース名を変更する (GritQL / removed & import)

2024年8月にリリースされた Cloudflare Terraform Provider v4.40.0 で Cloudflare Zero Trust 関連のリソースに変更があって,多くのリソースが deprecated になっている.よって,現在最新の v5 にアップデートするためにはリソースの変更に対応する必要が…

Terraform S3 バックエンドで使う S3 バケットを Terraform でデプロイする

Terraform で Amazon S3 バックエンドを使う場合に「Amazon S3 バケット自体をどうやってデプロイする?」というブートストラップ問題がある.よく聞く選択肢としてはマネジメントコンソール・AWS CLI・AWS CloudFormation などがある.他にも Terraform で…

Security Hub で [SSM.7] SSM documents should have the block public sharing setting enabled を修復する

AWS Security Hub の AWS Foundational Security Best Practices (FSBP) で [SSM.7] SSM documents should have the block public sharing setting enabled という警告が出ていた docs.aws.amazon.com SSM.7 とは [SSM.7] SSM documents should have the blo…

Terraform の aws_lb_listener で default_action に加重ルーティングを設定する

Terraform で aws_lb_listener を使って ALB (Application Load Balancer) のリスナーをデプロイするときに default_action ブロックに複数のターゲットグループへの加重ルーティングを設定できる ドキュメントを抜粋すると以下のように書いてある.default_…

Dependabot の groups を使って環境別の Terraform AWS Provider のアップデートを1つのプルリクエストにまとめる

Terraform プロジェクトで environments ディレクトリを使って環境別のリソースを管理しているときに(Terraform on Google Cloud に載っている構成)Dependabot で Terraform AWS Provider のアップデートを「1つのプルリクエストにまとめたい」という場面…

Moto: AWS アカウントなしで Terraform のチュートリアル「Manage similar resources with count」を実施する

Moto を使えば AWS アカウントなしで Terraform のチュートリアル「Use configuration to move resources」を実施できるよ〜という紹介記事を前に書いた kakakakakku.hatenablog.com 今度は Terraform のチュートリアル「Manage similar resources with coun…

Terraform の認定試験「HashiCorp Certified: Terraform Authoring and Operations Professional」に合格した

2025年6月22日に HashiCorp 公式の認定試験「HashiCorp Certified: Terraform Authoring and Operations Professional」を受験して合格した❗️やったー \( 'ω')/ 試験問題に関係する内容は NDA を厳守するため書かず,今回は「試験紹介(普及のため!)」と…

Moto: AWS アカウントなしで Terraform のチュートリアル「Use configuration to move resources」を実施する

Moto は LocalStack の内部でも使われている AWS モックツールで,Moto (Server Mode) を使えば http://localhost:5000 で AWS API を呼び出せるようになる github.com Moto を使って AWS アカウントなしで Terraform のチュートリアルを実行できたら勉強す…

Terraform MCP Server: AWS Provider に新しく追加されたリソースのコードを生成する

HashiCorp から公式に提供されている Terraform MCP Server(AWS Terraform MCP Server ではなく‍♂️)の導入検証をする機会があった試したことを簡単にまとめておこうと思う. github.com Terraform MCP Server Terraform MCP Server で使えるツールは現状4…

Terraform AWS Provider で Amazon Inspector 抑制ルールを設定しよう

Amazon Inspector で特定の CVE を一時的に検出対象から除外したいときに「抑制ルール」を活用できる docs.aws.amazon.com Terraform AWS Provider 以外の選択肢 しかし最近までは Terraform AWS Provider で「Amazon Inspector 抑制ルール」を設定すること…

Branch Deploy Action で複数環境に Terraform をデプロイする

Branch Deploy Action (branch-deploy) を使って Terraform をデプロイする仕組みを以下の記事にまとめたプルリクエストに .plan や .apply とコメントするとデプロイできるという IssueOps を実現できる kakakakakku.hatenablog.com 前に書いた記事では「1…