カテゴリー
AWS

Amazon EC2ではないサーバからDocker-composeのログをCloudwatch Logsに転送する

Docker-composeのログをCloudwatch Logsに転送する場合、Amazon EC2であればIAM Roleをインスタンスプロファイルとして設定すれば自動的にAPIクレデンシャルを取得してログを出力してくれる。

ところが、Azure VMなどAmazon EC2でないサーバからDocker-composeでログ出力しようとすると、~/.aws/credentialsにAPIキーを設定しても以下のようなエラーメッセージが出て上手く行かないことがある。

ERROR: for jitakurack_web_1 Cannot start service web: failed to initialize logging driver: failed to create Cloudwatch log stream: NoCredentialProviders: no valid providers in chain. Deprecated.
Starting jitakurack_streaming_1 … error

このエラーは、DockerサービスがAPIキーを上手く取得出来ていない。手元の環境だとsystemd環境だと起こるような気がする。なので、systemd経由でAPIキーをDockerサービスに引き渡してあげると動くようになる。

で、 https://wdullaer.com/blog/2016/02/28/pass-credentials-to-the-awslogs-docker-logging-driver-on-ubuntu/ の情報に従って、Dockerサービスの環境変数を追加する。

$ sudo mkdir -p /etc/systemd/system/docker.service.d/
$ sudo touch /etc/systemd/system/docker.service.d/aws-credentials.conf

[Service]
Environment=”AWS_REGION=<aws_region>”
Environment=”AWS_ACCESS_KEY_ID=<aws_access_key_id>”
Environment=”AWS_SECRET_ACCESS_KEY=<aws_secret_access_key>”

$ sudo systemctl restart docker.service

$ docker-compose logs
Attaching to jitakurack_streaming_1, jitakurack_web_1, jitakurack_sidekiq_1
sidekiq_1 | WARNING: no logs are available with the ‘awslogs’ log driver
streaming_1 | WARNING: no logs are available with the ‘awslogs’ log driver
web_1 | WARNING: no logs are available with the ‘awslogs’ log driver

あとはCloudwatch Logsのコンソールを確認すればログが出ている。

カテゴリー
AWS Azure

Mastodon鯖をAWSからAzureにお引っ越しする話

AWS上で動かしていたMastodonインスタンスを、このブログと同じAzure上にお引っ越ししている話をスライドにまとめました。

カテゴリー
AWS

Azure Front Doorを使ってApp Serviceのアプリを公開する

Azure Front Doorを使ってSSL/TLS通信をさせる

Front Door経由で配信したいドメイン(FQDN)に対してCNAMEを設定し、ドメインの所有権を確認させられば、Azureが提供する無償のSSL証明書を使うことができる。

最近は一般サイトも常にSSL通信させることが普通になってきているので、HTTPでのリクエストもHTTPSにリダイレクトさせる設定をFront Doorに設定する。

Front Doorデザイナーでの設定例

① HTTPで受信したら、HTTPSにリダイレクトする

② HTTPSで受信しても、App Serviceのホスト名でアクセスされていたら、公開用のドメイン名に変えてリダイレクトする

③ HTTPSで公開用のドメイン名でアクセスされたら、バックエンドのApp Serviceにリクエストを転送(Forward)して結果を返す

リダイレクトがうまくいっているかの確認方法

  1. ブラウザでアクセスしてみる
  2. ChromeやFirefoxなどのブラウザ内蔵のデベロップメントツールでHTTPリクエストがHTTPSにリダイレクトされていることを見る
  3. curl -v http://…とコマンド実行して、Locationヘッダでリダイレクトされていることを確認する