BioErrorLog Tech Blog

試行錯誤の記録

Terraform

Terraformのone()関数の振る舞いを理解する

Terraformのone()関数の挙動を整理します。 はじめに one()関数の振る舞いを理解する one()関数の仕様 具体例 one()関数の使いどころ おわりに 参考 はじめに Terraformにはone()関数が用意されています。 端的すぎる命名ということもありパッと挙動がわから…

Private SubnetにCloud9を構築する | AWS

AWS Cloud9をPrivate Subnetで作成する方法を整理します。 はじめに 前提: Private SubnetでのCloud9の仕組み Private SubnetでCloud9を構築する Internet Gateway / NATありの場合 Internet Gateway / NATなしの閉域Private Subnetの場合 おわりに 参考 は…

TerraformでAWSリージョンを取得する

TerraformでAWSリージョンを取得する方法の備忘録です。 はじめに TerraformでAWSリージョンを取得する やり方 おまけ: Terraformソースコードを読む おわりに 参考 はじめに TerraformでAWSリソースを書いていると、ARNの指定などでアカウントidやリージョ…

Terraform backend(S3/DynamoDB)をCloudFormationでデプロイする

Terraformのstateを格納するbackend(S3/DynamoDB)を構築する、CloudFormationテンプレートの備忘録です。 はじめに Terraform backendを構築するCloudFormationテンプレート おわりに 参考 はじめに Terraformのstateを格納するbackend自身をどのように構築…

terraform plan結果の要約を表示するワンライナー

terraform plan実行時に、plan結果と要約を併せて表示するワンライナーを組みます。 はじめに terraform plan結果の要約を表示する 1. とりあえずgrep 2. 元々の出力も表示する 3. 一時ファイルの作成にmktempを使う おまけ: aliasを作成する おわりに 参考 …

Terraform module設計時に考慮すべき3つの観点

Terraform moduleスコープ設計時に役立つ3つの観点をまとめます。 はじめに Terraform module設計の考え方 Moduleスコープ設計の3つの観点 Encapsulation / カプセル化 Privileges / 特権性 Volatility /変動性 Module設計例 Network module Web module Ap…

エラー対処: "Missing key/value separator" | Terraform

Terraformのmapでkeyが数字から始まったり、スペースを含んだりするとエラーになる問題の備忘録です。 はじめに Terraformエラー対処: "Error: Missing key/value separator" 起きたこと 原因 対処法 問題あるmap/問題ないmapまとめ おわりに 参考 はじめに …

count制御したリソースをoutputする | Terraform

作成するか否かをcountで制御したリソースをoutputする方法を整理します。 はじめに count制御したリソースをoutputする やり方1:one関数を使う やり方2:try関数を使う おわりに 参考 はじめに Terraformではcountを指定することで、そのリソースの作成…

RustのAWS LambdaをTerraformで実装する

Rustで書いたAWS LambdaをTerraformでデプロイする方法の備忘録です。 はじめに RustのAWS LambdaをTerraformで実装する 作ったもの Terraformの実装 Lambda用Rustパッケージの実装 1. cargo-lambdaのインストール 2. 新規Lambdaパッケージを生成 3. Rustコ…

GitHub ActionsでTerraformフォーマットチェック | terraform fmt

GitHub Actionsでterraform fmtをチェックする方法をメモします。 はじめに GitHub Actionsでterraform fmt おわりに 参考 はじめに こんにちは、@bioerrorlogです。 コードのフォーマットチェックをCIで自動担保させることは、シンプルですが大切なことです…

TerraformでAWSアカウントIDを取得する

Terraformで現在のAWSアカウントIDを取得する方法の備忘録です。 はじめに TerraformでAWSアカウントIDを取得する やり方 おまけ: Terraformソースコードを読む おわりに 参考 はじめに Terraformを書いているとき、arnの指定等でAWSアカウントIDを取得&設…

Terraformにおける三項演算子の使い方

Terraformの三項演算子の使い方と、その使用例をまとめます。 はじめに Terraformで三項演算子 使い方 具体例 シンプルな例 条件演算子を組み合わせ 型がcastされる例 エラー: 異なる型を指定 エラー: bool以外をconditionに指定 活用事例:resource count …

TerraformでDEBUGレベルのログを出力する

Terraformで出力ログレベルを変更するやり方の備忘録です。 はじめに TerraformでDEBUGレベルのログを出力する TerraformとProviderで個別にログの出力レベルを設定する おまけ: Terraformのソースコードを読む おわりに 参考 はじめに こんにちは、@bioerro…

terraform plan結果がNo changesでないときに異常終了させる方法

terraform plan結果がNo changesかどうかを検知するのに便利な方法をメモします。 はじめに terraform plan結果がNo changesでないときに異常終了させる おわりに 参考 はじめに こんにちは、@bioerrorlogです。 terraform applyした直後であっても、terrafo…

Terraformで文字列を切り出す | substrの使い方

Terraformのsubstrを使って、文字列を切り出す/抽出するやり方を整理します。 はじめに substrの使い方 基本の使い方 マイナス値を活用する おわりに 参考 はじめに こんにちは、@bioerrorlogです。 substr関数を使えば、Terraformで文字列を切り出すことが…

Terraformのvariableで特定パターンを強制/validateする

Terraformのmodule variableで、特定パターン・条件を強制/validateする方法を整理します。 はじめに Terraformのvariableで特定パターンを強制する やり方 活用例: AMI ID 活用例: S3 URI おわりに 参考 はじめに こんにちは、@bioerrorlogです。 Terraform…