pip Commands

install 済みのパッケージ pip list 特定パッケージのインストール場所などの詳細情報 pip show jupyter

5月 19, 2022 · 1 分 · Y Nakajima

AWS-CLI ECR Commands

imageDigest を確認 e.g. apple というECRリポジトリの developタグ aws ecr describe-images --repository-name apple --image-ids imageTag=develop | jq .imageDetails[].imageDigest イメージのPull 1. 認証 aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 12345678.dkr.ecr.ap-northeast-1.amazonaws.com 補足 AWSアカウントIDは例として12345678とする ECRの接続情報はFQDNまたはURL(htttps://~)どちらの表記でも上手くいった。 --region で指定するリージョンは、ECRリポジトリと同じリージョンにする(us-east-1では無いので注意) ecr:GetAuthorizationToken のRoleが必要なので事前に権限付与しておく TroubleShooting 以下のエラーが出る場合がある Error saving credentials: error storing credentials - err: exit status 1, out: `Post "http://ipc/registry/credstore-updated": dial unix Library/Containers/com.docker.docker/Data/backend.sock: connect: connection refused` Qiitaの記事 を参考に、$HOME/.docker/config.json の credsStore の項目を削除することでエラーが消えることを確認(ただし、あくまで応急的な対応) 2. Pull docker pull 12345678.dkr.ecr.ap-northeast-1.amazonaws.com/{repository_name}/{image_name}:{tag_name} ↓ docker images でPullできたことを確認 補足 ecr:BatchGetImage のRoleが必要

5月 18, 2022 · 1 分 · Y Nakajima

GCPのアラート情報をDiscordに通知する

やりたいこと 運用しているシステムで時折、CPU使用率が100%を超過しアクセス不可になる。 Compute Engine(GCE)のインスタンスを再起動することで上記事象は直るので、復旧時間を短くするために、通知することでできるだけ早く気付けるようにする。 通知先として、スマホから手軽に見れてWebhookで楽に設定できるDiscordを使ってみる。 通知のロジックを超カンタンな図で表すと以下のような形: やったこと 通知ポリシーの作成(GCP管理画面) GCEのCPU使用率が95%以上の状態が何分間以上続いたら通知するか、といった条件をGCPの管理画面から設定する。これはGCEの画面のオブザーバビリティのタブから画像のように設定。 通知チャンネルの作成(GCP管理画面) 通知ポリシーと似た名前だがこちらは通知先を設定するサービス。画像の通りSlackやWebhook、(見えてないけど)SMSやEmailの設定が可能。今回はDiscordに通知したかったので通知したいDiscordチャンネルのWebhook URLを設定。 トラブルシューティング 上記の設定を終えたところで、通知チャンネルから「TEST CONNECTION」があったので試しに実行。 「successfully sent」と出ているがDiscordチャンネルを見るとメッセージが届いてない。。 GCP側のログ確認 Cloud Logging で 確認したところ、同タイミングで400エラーが出ていることを確認 😇 curlで送ってみる 件のDiscordにcurlで試しにPOSTをしてみたところ、 $ curl -H 'Content-Type: application/json' -d '{"data": "Hello World"}' https://discord.com/api/webhooks/{YOUR_PATH} {"message": "Cannot send an empty message", "code": 50006} というメッセージが返ってきた。status codeを調べると400なのでGCPと同じエラーっぽい。 微修正して以下のようなPOSTをしたところ通知が成功。 $ curl -H 'Content-Type: application/json' -d '{"content": "Hello World"}' https://discord.com/api/webhooks/{YOUR_PATH} どうやらdiscordではJSONのpayloadに設定する key が “content” じゃないとエラーになる模様。なのでGCPではおそらく、content以外の key名を設定していてエラーが返ってきている? 最終的にCloud Function で実装 以上のような経緯でWebhookで単純に送ることはできなかったため、同じような人がいないか調べたところ Cloud Functions で自前で作るのが良いとのこと。以下のような手順でCloud Functionsで実装を試してみた。...

5月 15, 2022 · 1 分 · Y Nakajima

Webhookの疎通テスト

こちら

5月 14, 2022 · 1 分 · Y Nakajima

Google DriveにあるファイルをOCRするPythonスクリプト

from __future__ import print_function import pickle import os.path from googleapiclient.discovery import build from google_auth_oauthlib.flow import InstalledAppFlow from google.auth.transport.requests import Request # If modifying these scopes, delete the file token.pickle. SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'] def main(): """Shows basic usage of the Drive v3 API. Prints the names and ids of the first 10 files the user has access to. """ creds = None # The file token.pickle stores the user's access and refresh tokens, and is # created automatically when the authorization flow completes for the first # time....

5月 7, 2022 · 1 分 · Y Nakajima