puppeteer on Docker
概要
備忘録です。
Puppeteer をローカル環境を汚さず、 Docker 環境上で実行すべくまとめました。
サンプルスクリプトは example.com のスクリーンショットを取得する、というシンプルなものです。
備忘録です。
Puppeteer をローカル環境を汚さず、 Docker 環境上で実行すべくまとめました。
サンプルスクリプトは example.com のスクリーンショットを取得する、というシンプルなものです。
oreno-mssh、またの名を omssh という AWS EC2 Instance Connect API を利用した ssh ログインツールを作成しました。
View post on imgur.com
imgur.com2019-06-28 に EC2 Instance Conncet が発表されました!
これによって、セキュリティグループと IAM 権限で ssh アクセス許可が可能になります。
例えば、
会社の IP からのみ、特定の IAM User Group に所属している IAM User に ssh アクセス権限を付与、
別のプロジェクトへ異動した、退職した場合は、その IAM User Group から削除で ssh アクセス権限を剥奪できます。
よく設定している Nginx の configure file のアクセス元によっての振り分け方をまとめました。
1 | LB → Nginx → Rails |
2020-05-05 追記 2020 年春のベストプラクティス更新しています。
以前 terraform で workspace 毎に tfstate 管理する方法を執筆しましたが、実運用上いくつかの問題がありました。
結論、現在は workspace 運用をやめています。
まずは実際の運用例です。
もっとうまいことやってるぞ!という話はあろうかと思いますが、まずはありがちなケースを紹介します。
docker-compose 上で ProxySQL で primary DB と secondary DB への SQL 毎にアクセス先をスイッチングする環境を構築し、試験してみました。
kenzo0107/proxysql-mysql-group-replication
ProxySQL はハイパフォーマンスな MySQL の SQL プロキシです。
MySQLのフォークである Percona Server や MariaDB だけでなく、Galera Cluster にも対応しています。
今回注目したのは ProxySQL の SQL プロキシの機能です。
ProxySQL は SQL によって、Read/Write エンドポイントをスイッチングしてくれます。
SendGrid には Event Notification という Webhook を設定することでメールの送信状態をイベント情報として取得することができます。
メールを SendGrid が受信した、送信先に届いた、等の情報です。
例えば、未達だったメールの情報を取得したい場合等に、この Webhook を利用し、イベント情報を保存することで調査や集計が可能です。
AWS API Gateway + Lambda で構築したエンドポイントに投げ、S3 に保存し、送信失敗件数を Athena で検索集計する、ということができます。
1 | $ docker ps |
ある日、ECS で起動させている Datadog Agent コンテナが unhealthy になってしまう事象が発生しました。
その原因と対応法をまとめました。
Datadog Agent イメージを現時点の最新バージョン 6 系にすることで解決できました。
Datadog サポートに問い合わせた所、
今回のケースでは Datadog Agent イメージのバージョンが 5 系だったことに起因していました。
バージョン5が最新だった時には設定手続きは以下に沿って実施していました。
https://docs.datadoghq.com/integrations/faq/agent-5-amazon-ecs/
上記手順にて登場する datadog agent の ECS での起動用タスクが以下になります。
ここで指定しているイメージ (datadog/docker-dd-agent:latest) が 5系でした。
https://docs.datadoghq.com/json/dd-agent-ecs.json
datadog/docker-dd-agent:latest
は 5系の最新だった!
現最新バージョン 6系を扱うには以下設定手続きを参照します。
https://docs.datadoghq.com/integrations/amazon_ecs
手続きで変更点はタスク定義の変更くらいです。
https://docs.datadoghq.com/json/datadog-agent-ecs.json
今の所、datadog/agent:latest
が6系の最新になっています。
7系になった際には是非とも互換維持してほしいです。
サポートに問い合わせると、 caseID という問い合わせの ID をいただけます。
その後、caseID を設定し、起動時のログファイル (tar.gz) を取得し、サポート宛に添付しました。
ECS の管理下にある EC2 に ssh ログインし以下実行します。
1 | $ docker run --rm -v /tmp:/tmp -e API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx datadog/docker-dd-agent:latest /etc/init.d/datadog-agent flare <caseID> |
EC2 ホスト上に /tmp/datadog-agent-2019-01-03-12-27-44.tar.bz2
ファイルが取得できるので、それをサポート宛にメール添付しました。
上記でログも含めサポートに連絡した所、API バージョンにより接続中止されている、という指摘を受け、バージョン上げて!という話になりました。
1 | 2019-01-03 12:27:44,472 | ERROR | dd.collector | utils.dockerutil(dockerutil.py:148) | Failed to initialize the docker client. Docker-related features will fail. Will retry 0 time(s). Error: Error while fetching server API version: ('Connection aborted.', error(2, 'No such file or directory')) |
サポートさんありがとう♪
以上です。
参考になれば幸いです。
備忘録です。
AssumeRole でのアカウントスイッチで credentials 情報を持っている場合に対応した boto3.Session での認証の仕方です。
MFA 設定してる場合も付けときました。