あきろぐ

いろいろめもするよ

Google CalendarをCLIで扱えるnpmを作成しました

作ったもの Google CalendarをCLIで扱えるnpmを公開しました。機能はシンプルですが、ターミナル上でGoogle Calendarのイベントを表示、登録、編集、削除することができます。 www.npmjs.com 作成動機 最近Javascriptを勉強していたこともあり、外部APIを使…

CodeDeployで"TaskDefinitionTemplateArtifact"パラメータを見直してくれって言われたときの回避策

aws

どんなエラー? 遭遇したエラーは以下の通り。 タスク定義の検証に失敗したので、CodePipelineのアクションに記述されている"TaskDefinitionTemplateArtifact"のタスク定義を見直してほしいとのこと。 別のデプロイパイプラインも同じ構成となっているのに関…

Rubyのoptparseについて掘り下げてみる

これは、「フィヨルドブートキャンプ Part 2 Advent Calendar 2021」2日目の記事です。 adventar.org part1もあるので、こちらもどうぞ! adventar.org はじめに 何かしらのプログラミング言語を使ってコマンドを実装する場合、付属するオプションを自前で解…

aws-cli + pecoを使ってセッションマネージャー接続を楽にする(aws-vault ver.)

aws-cliを使ってEC2インスタンスに接続するの面倒くさいので、簡単に接続できるようにMakefileを書きました。 タグで特定のenvironmentの稼働中インスタンスの名前とインスタンスIDをpecoに渡して、選択したインスタンスIDをHOSTに入れてます。 ssm-ec2: ech…

Terraform v0.12からv0.15にupgradeするときにつまったところ

やっとTerraformのアップグレードに手をつけました。 そのときにつまったときのメモを残しておきます。 リソースに存在しない属性がサポートされていない aws_codedeploy_appリソースに存在しない属性がサポートされていないというエラーが0.13にアップグレ…

AWS WAFv2導入でつまずいた&考慮したほうがいいところ(rate limit編)

aws

概要 AWS WAFv2を実際に使って検証したので、その際につまずいたところや考慮したほうがいいところなどまとめます。 今回はレートベースのルールを使ってリクエストの発生元の IP アドレスが同一のものからリクエストが閾値以上になったらブロックする設定に…

aws-vaultコマンドのエラー対応

aws

こんにちは。 久しぶりにブログ書きます。 aws-vaultコマンド便利ですよね。 色々触っていたらエラー吐くようになったので調査したときのログです。 今回のエラー 雑な意訳:ネストに気をつけてね。$AWS_VAULTを強制的にアンセットして。 なにこれ? aws-vau…

ALBのヘルスチェックに失敗するときに確認すること

aws

概要 ALBのヘルスチェックにハマったので、そのときに見直すところのメモ。 構成 ALB ECS Nignxコンテナ Railsコンテナ 確認 ヘルスチェックのエンドポイントが間違っていないか ALBのターゲットグループに設定するヘルスチェックのエンドポイントが間違って…

aws firelensを使ってみる

aws

Firelensとは 去年ECSのログ出力先をカスタマイズできる「Firelens」機能がリリースされました。 それまでは、ECSコンテナのログはCloudwatchLogsか自前でFluendコンテナを立ててログ取集する仕組みを作るみたいなやり方だったと思います。 CloudwatchLogsは…

ECSコンテナインスタンスにSSMセッションマネージャを使えるようにする

aws

概要 今までECSのコンテナインスタンスの中に入ってDockerコンテナのデバッグするためには、踏み台サーバー経由して対象のインスタンスにsshする必要がありましたが、ECSエージェントのアップデートによりsshなし踏み台なしでコンテナインスタンスの中に入る…

ecs-cliを使ってみる

aws

概要 awsのコマンドラインツールはaws-cliがありますが、ecsに特化したecs-cliを使えば、ローカルからクラスタやタスクの作成や簡単なモニタリングをすることが可能です。 そのecs-cliの導入とちょっと使ってみたときのメモです。 導入 macOSの場合 ecs-cli…

Route53を使う

aws

AWS勉強ログ。 Route53 ドメイン管理機能 Route53で新規のドメイン取得や更新ができる 権威DNS機能 ドメインとIPアドレスを変換するシステム ドメインを取得するとき 取得したいドメインを入力し、「チェック」する 入力したドメインが使えるかどうか確認で…

CloudFrontを使う

aws

AWS勉強ログ。今回は、CloudFrontです。 CloudFrontとは HTMLファイルやCSS、画像や動画などの静的コンテンツをキャッシュして、オリジンサーバーの代わりに配信するCDN(Contents Delivery Network)サービス AWSは世界中にエッジロケーションが120あり、利…

ECSのタスクロールとタスク実行ロール

aws

ECSのタスクロールとタスク実行ロールは何が違うのかのメモ タスクロール AWSの開発者ガイドには以下のように書かれている。 Amazon ECS タスク用の IAM ロールを使用すると、タスクのコンテナで使用できる IAM ロールを指定できます。 上記の文言からだと分…

ECSタスクのCPUとメモリをチューニングする

aws

ECSのtask定義のメモリとCPUをチューニングするときのメモ メモリ制限 メモリは「ハード制限」と「ソフト制限」があり、2つの値を設定するとき必ず「ハード制限>ソフト制限」である必要がある。 「ソフト制限」は、コンテナに予約するメモリ量(MiB) 「ハ…

awsコマンドの'ecr get-login'が非推奨になったので'ecr get-login-password'を試す

aws

概要 クラメソさんの記事を読んでaws ecr get-loginがv1では非推奨、v2では使えなくなっていることを知ったので、自分の環境どうだったか確認をかねて新しいコマンドecr get-login-passwordを使ってみました。 dev.classmethod.jp 自分の環境 自分のawsコマ…

ansible-playbookのwith_itemsが肥大化するのを防ぎたい

概要 Ansible-playbookの1つのタスクで複数のユーザーを作成したり、色んなパッケージをインストールしたいときに役立つのがループ処理です。その代表的なパラメータがwith_itemsではありますが、このパラメータもうまく使わないとwith_itemsに羅列するパラ…

ECRのDockerイメージをローカルにプルしてビルドする

aws

概要 デバッグするために、ECRにあげているDokcerイメージをローカルにプルしてビルドするまでのメモ。 環境 mac10.14.6 aws-vaultコマンドをインストールしている 手順 AWS ECRにログインする 下記コマンドを実行するとDokcerにログインするためのアクセス…

codebuildでyum installが失敗する

aws

概要 今日の午後くらいから今まで動作に問題なかったcodebuildの失敗が連続していた。 原因を調査してみると、fedoraproject.orgの名前解決ができなくなっていた。fedraprojectのDNSサーバーが死んでる模様。同じような現象に遭遇している人もちらほらいるみ…

「AWS IAMのマニアックな話」を読んでIAMについて勉強した

aws

最近、IAMをどのように管理するのがベストなのか悩んでいたので「AWS IAMのマニアックな話」を読みました。全部で126ページの薄い本ではありますが、内容はIAMについて分かりやすく丁寧に書かれているし、チュートリアルもあるので手を動かしながら理解を深…

AmazonLinux2でyumが使えなくなったとき

aws

Amazon Linux2を使ってEC2インスタンスを立てていたのですが、突然yumが使えなくなり戸惑ったのでその対処法について書きます。 エラー内容 遭遇したエラーは下記。 yum updateしようとすると、HTTPエラーが発生しアクセス許可されていないと言われてしまい…

terraformに入門した(aws-vaultを使うver)

はじめに terraformに入門したので、環境構築及び基本操作をまとめました。 環境 CentOS7.6 Terraform0.12.13 aws-cli1.16.278 aws-vault4.7.1 手順 1. linuxbrewのインストール brewコマンドがないとaws-vaultをインストールできないので、事前に入れておき…

【めも】linuxbrewコマンドのインストールに失敗するときはアップデートすると良い

何をしていたのか 自分のLinux環境にaws-vaultを導入しようと思い、まずはlinuxbrewを公式HPを見てインストールしていたら失敗した。 実行していたコマンドは下記。 sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/instal…

RubyでZabbixアラートをSlackに通知する

概要 Rubyの勉強をかねて、今までシェルスクリプトでZabbixのアラート通知をしていたものをRubyで書き換えてみました。 設定方法とつまずいたところをまとめたいと思います。 環境 CentOS7.6 zabbix4.0 Ruby2.4 設定方法 slackのWebhook URLを取得する 通知…

Ansibleでインベントリに書いたIPアドレスを変数として使いたい②

以前、Ansibleでインベントリに書いたIPアドレスを使って、それを変数として使いたい場合の変数の書き方について記事を書きました。 akng-engineer.hatenablog.com しかし、上記の書き方だと他のパターンに適用することが難しいので、今回は別の書き方につい…

Ansibleでテンプレートエラーが出たときの対処法

概要 今回遭遇したエラーは、テンプレートに関する内容で以下の通り。 - Ansible error: template error while templating string missing end of comment tag. - Ansible error: template error while templating string expected token end of print state…

Ansibleでインベントリに書いたIPアドレスを変数として使いたい

概要 最近Ansibleを頻繁に使っていて、こういう使い方ないかなと思って調べたのでそのやり方を整理。 やりたいことは、「インベントリファイルにグループ別にIPアドレスを記載しているので、そのIPアドレスを変数として使いgroup_varsディレクトリ配下のグル…

Zabbixで1秒間隔の監視にしたらヒストリログの肥大化により1週間でディスクフルになった

概要 先日、Zabbixの監視間隔を1秒にしたらMySQLのバイナリファイルによってディスクフルになった話を書いた。 akng-engineer.hatenablog.com しかし、バイナリファイルの肥大化より気にしなければならなかったのは、Zabbixで収集したデータのヒストリ保存期…

【Zabbix】MySQLのバイナリファイルが肥大化してDBが立ち上がらなかった

概要 検証環境のZabbixサーバーがディスクフルでサービス停止していたため調べたところ、/data/mysql配下にmysql-bin-*ファイルが大量に作成されており、ディスク使用量が100%になっていた。なるほど。 原因 expire_logs_days設定していなかった? いや、し…

prometheus+garfanaで遊んでみるよ

この前Prometheusを初めて使ってみたので、復習を兼ねてPrometheusで取得したメトリクスをGrafanaで可視化してみたいと思います。 Prometheus? オープンソースの監視ツールです。 プル型なのでPrometehusサーバーが監視先サーバーに聞きまわり、監視メトリク…