BioErrorLog Tech Blog

試行錯誤の記録

クラウド

Private SubnetのCloud9からAWS APIが叩けない問題 | AWS managed temporary credentials

AWS managed temporary credentialsを使うと、Private Subnetに構築したCloud9からAWS APIが叩けない、ということの備忘録です。 はじめに Private SubnetのCloud9からAWS APIが叩けない問題 起きた現象 なぜAWS APIが叩けないのか 対処法 おわりに 参考 は…

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自身をどのように構築…

azd up / provision / deploy の違い | Azure Developer CLI

Azure Developer CLIにおけるリソースデプロイ系コマンド、 azd up azd provision azd deploy これらの違いを整理します。 はじめに azd up / provision / deploy 違い 動作確認 azd provision azd deploy azd up おわりに 参考 はじめに 最近、Azure Develo…

AzureにおけるSKUとは何か

AzureにおけるSKUの意味を整理します。 はじめに AzureにおけるSKUとは何か SKUは何の略か AzureのSKUとは何なのか おわりに 参考 はじめに これまでずっとAWSばかり使ってきましたが、最近Azureに入門しています。 エラーメッセージやリソース作成時に、"SK…

Azureのregion / location一覧を確認する

Azureのregion / locationの一覧を確認する方法の備忘録です。 はじめに region / location一覧を確認する Azure CLIで確認する ドキュメントで確認する おわりに 参考 はじめに 長いことAWSを触ってきたのですが、最近Azureも使い始めました。 Azureでregio…

Parquetファイルのダミーデータを生成する | Python

Pythonでparquetファイルのダミーデータを生成する方法の備忘録です。 はじめに Parquetファイルのダミーデータを生成する 補足:S3に配置する おわりに 参考 はじめに ちょっとした検証のために、ダミーデータのparquetファイルを用意する機会がありました…

リソース名に"リソース種名"を含めるべきか | AWS命名規則

含めるべきではない、と感じているので考えを整理します。 はじめに リソース名に"リソース種名"を含めるべきか デメリット リソース名実装ロジックの複雑性が増す リソース名の文字数上限を圧迫する リソース種名の略語の決定に時間と労力を消費する メリッ…

SageMakerでlocal training jobが実行できない時の対処法 | Unable to locate credentials

Unable to locate credentials のエラーで、SageMaker instanceのlocal training jobが実行できないときの対処法をまとめます。 はじめに SageMakerでlocal training jobが実行できない時の対処法 事象 原因 対処法 おわりに 参考 はじめに SageMakerでは、S…

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を指定することで、そのリソースの作成…

boto3とbotoの違い | AWS SDK for Pythonの歴史を調べる

boto3とbotoの違いや、そもそもの"boto"の由来など、AWS SDK for Pythonの歴史を調べてまとめます。 はじめに AWS SDK for Pythonの歴史 boto3とbotoの違い boto2はどこに行ったのか "boto"の由来 おわりに 参考 はじめに AWS SDK for Pythonとしてboto3をい…

RustのAWS LambdaをTerraformで実装する

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

AWSデータ分析基盤の良質な学習資料をまとめる

データ基盤領域について、AWS公式から出ている良質な学習資料/参考資料をまとめます。 はじめに AWSデータ分析基盤の学習資料まとめ AWS Well-Architected Framework - Data Analytics Lens AWS Whitepapers - Analytics & Big Data AWS Reference Architect…

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 …

GitHub Actionsで別レポジトリをcloneする

GitHub Actions内で別レポジトリをcloneする方法をまとめます。 はじめに GitHub Actionsで別レポジトリをcloneする やり方 やってみた おわりに 参考 はじめに こんにちは、@bioerrorlogです。 依存関係を持つレポジトリが別にある場合、GitHub Actions内で…

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…

GitHub Actionsでデフォルトの作業ディレクトリを絶対パスで取得する

GitHub Actionsでデフォルトの作業ディレクトリを絶対パスで取得する方法の備忘録です。 はじめに デフォルト作業ディレクトリの絶対パスを取得する ${{ env.GITHUB_WORKSPACE }} では取得できない $GITHUB_WORKSPACE で取得できる ${{ github.workspace }} …

エラー対処: YAML_FILE_ERROR Message: Expected Commands[0] to be of string type | CodeBuild

CodeBuildにおける下記エラーの原因と対処法を整理します。 YAML_FILE_ERROR Message: Expected Commands[0] to be of string type: found subkeys instead at line 6, value of the key tag on line 5 might be empty はじめに 原因は"コロン+スペース" 解…

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

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

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

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

!FindInMapを!Subの中で使う | CloudFormation

AWS CloudFormationで!FindInMapを!Sub内で使うやり方をまとめます。 はじめに !FindInMapを!Subの中で使う おわりに 参考 はじめに こんにちは、@bioerrorlogです。 CloudFormationの!Subは値を代入/置換 ("substitute")できる関数、!FindInMapはMappingsか…

Athena経由でpandas DataFrameを作成する

Amazon Athena経由でpandas DataFrameを作成するやり方をまとめます。 はじめに awswrangler (AWS SDK for pandas)とは Athena経由でpandas DataFrameを作成する おわりに 参考 はじめに こんにちは、@bioerrorlogです。 Amazon Athenaクエリ経由でpandas Da…