ECS タスクの各コンテナ単位のパフォーマンスメトリクスを取得する方法
By msysh on 2021-08-08
ECS での標準的に利用できるメトリクスとしては、サービス単位での CPU 利用率、メモリ利用率であり、タスク毎にどんなパフォーマンスなのかというのはわかりません。そこで Container Insights を利用することで、マネジメントコンソールからは現在値になりますがタスク単位での平均 CPU 使用率、メモリ利用率の他、サービス単位で時系列のネットワーク I/O、ストレージ I/O などが確認可能になります。これらでも充分有用なのですが、タスクにサイドカーも備えるなど複数コンテナで構成しているケースで、時には調査のため “コンテナ単位” でのパフォーマンス値を確認したいことがあるかもしれません。一発でグラフなどに出せるわけではありませんが、そんなシーンで利用できる Tips を紹介します。
API Gateway の IP を固定にしてアクセスしたい
By msysh on 2021-08-06
“固定 IP で接続したい・・・” 送信元、あるいは接続先の IP を固定して接続したいケース、いろいろあるかと思います。最近はゼロトラストな考えでどんな IP だろうと信用しない、という考え方も見受けられるようになってきましたが、会社をまたいだ旧来のシステム間の連携など、まだまだ要件としては根強い状況かと思います。今回は “接続先の API Gateway の IP の固定化” について検討する機会がありましたので記録として残しておきたいと思います。
DynamoDB テーブルの内容をキャパシティ消費なしで CSV に出力する方法
By msysh on 2021-04-08
レガシーなシステムとの連携のために DynamoDB テーブルの内容を CSV に出力したいという要件、まあまああるのではないかなと思います。そもそもその CSV 連携をやめてもっと効率の良いやり方で、、、と言いたくなるところではありますが、しがらみの多い世界だとそうもいきません。一方で、CSV 出力のために稼働中の DynamoDB テーブルに対して全件スキャンとかもキャパシティのことを考えるとしたくないものです。
2020年11月に DynamoDB テーブルデータを Amazon S3 のデータレイクにエクスポート する機能が発表されました。この機能を使って、キャパシティを消費することなく CSV 出力し、さらに Step Functions で自動化を実現する機会がありましたのでメモとして残しておきたいと思います。
EventBridge API Destinations を使用して AWS コンソールログイン時に Lambda なしで Slack に通知する
By msysh on 2021-03-05
2021/3/5(日本時間)に EventBridge から外部の HTTP エンドポイントを叩けるアップデートがありましたので、Lambda なしで Slack への通知ができそうだったのでやってみました。
CDK で既存のタスク定義を参照する場合のリビジョン指定について
By msysh on 2020-12-23
AWS CDK (Cloud Development Kit) の小ネタです。
CDK で既存のタスク定義を参照したい場合、ecs.TaskDefinition.fromTaskDefinitionArn
で arn からタスク定義がとってこれるわけですが、タスク定義の arn はマネジメントコンソールから確認できる JSON や CLI から参照すると末尾にリビジョン番号がついてきます。
describe で出力した ECS タスク定義をさくっと登録可能な形に整形する
By msysh on 2020-12-12
Amazon ECS (以下、ECS) のタスク定義は aws cli などの describe-task-definition
で JSON 形式で出力することができますが、その JSON ファイルはそのままではタスク定義の登録や更新(register-task-definition
)には使えなかったりします。
うまく整形してやれば、タスク定義の登録や更新に利用できるので jq
などを駆使してさくっと整形する方法をメモっておきます。
ALB と docker ヘルスチェックによる ECS の挙動について
By msysh on 2020-08-30
AWS による docker コンテナのオーケストレーションサービスである Amazon ECS / Fargate のヘルスチェックの挙動について調査する機会がありましたのでアウトプットしておきたいと思います。
前提として Fargate で ECS のサービスとして、ロードバランサーは Application Load Balancer(ALB)を利用して実行するケースで調査しました。網羅的ではない点、ご了承ください。
FireLens で rewrite_tag による複数ターゲットへのログの振り分け
By msysh on 2020-07-19
FireLens fluent bit でログを振り分けたい場合、 fluent bit の設定ファイル内で Parsers_File
などで指定した別のファイルを用いて、カスタム docker イメージを作成するサンプルが多いかと思いますが、カスタムイメージを作成することなく( Parsers_File
無しで)ささやかながら実現した例を紹介したいと思います。
#aws #fluentbit #firelens #ecs #logging #firehose #elasticsearch
SpringBoot Micrometer を Amazon CloudWatch へ送信するための設定
By msysh on 2020-06-16
maven や Gradle、application.properties
に設定してしまえば、自動的に CloudWatch に送信されるようになるようです。最近、10年ぶりぐらいに Java をいじっているのですが、最近はこんなに便利なんですね。
hugo によるブログサイトを aws でパイプラインを組んで構築した話
By msysh on 2020-06-13
2014年以降、更新が途絶えてしまっていましたが、また一念発起して静的サイトジェネレータである hugo を使って、また、今っぽくパイプラインを組んで aws 上にブログサイトを実装してみました(このサイトです)。その時の aws 側と hugo 側のポイントなんかを記録として残しておきたいと思います。