AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

シークレットマネージャを使う時は valueFrom だ!

タイトルがすべてシリーズ。

missing required field

シークレットマネージャから読み出す環境変数を追加したので、ECS のタスク定義を更新したらエラーになった。

│ Error: failed creating ECS Task Definition (stg-example-ecs-task-definition-backend): InvalidParameter: 2 validation error(s) found.
│ - missing required field, RegisterTaskDefinitionInput.ContainerDefinitions[1].Secrets[4].ValueFrom.
│ - missing required field, RegisterTaskDefinitionInput.ContainerDefinitions[2].Secrets[4].ValueFrom.
│
│
│   with aws_ecs_task_definition.backend,
│   on ecs.tf line 145, in resource "aws_ecs_task_definition" "backend":
│  145: resource "aws_ecs_task_definition" "backend" {

あーはん?

ちなみに ContainerDefinitions[1] ContainerDefinitions[2] となっているのは、 app コンテナと sidekiq コンテナが存在しており、それぞれに同様の追加をしたから。

value ではない

最初はパラメータストアに素朴にセットしていたので "value" : で呼び出していたのだけど、これ暗号化しとかないとダメなやつじゃん? となり、その後移動させたのだった。

その際にタスク定義内でもコピペしてしまい、 "valueFrom" : に修正するのを忘れていたとさ、というお話でした。

タスク定義の抜粋
ぺけ
      {
        "name" : "VALUE",
        "value" : "${ecs_app_secret_value}"
      }

おっけー
      {
        "name" : "VALUE",
        "valueFrom" : "${ecs_app_secret_value}"
      }

CloudFront encountered an internal error. Please try again.

CloudFront + S3 でフロントエンドをやってるんだけど、毎回デプロイ毎にキャッシュ削除で /* 対象にして投げていたら、今回始めて遭遇した。

詳細は出力されないし Try again で later じゃないらしいので何度か挑戦するもだめ。

なので、一度キャッシュ削除しようとしているディストリビューションに割り当ててあるドメインへアクセス。 この状態で削除リクエスト投げたら無事に走り出した。

何度も実行したことで通ったのか、アクセスしたことでキャッシュ的ななにかが認識されて削除通るようになったのか、みたいなのは不明。

AWS くんさあ。

MongoDB でクエリログをやる

クエリの出力

MySQL みたいにクエリログとして用意されている訳ではないらしく、 SlowQuery を出力する機能を利用してマイナス秒指定することで全部出力できるとのこと。

はえーとんちみてえ。

 mongod --logpath=/usr/local/var/log/mongodb/mongo.log -profile=1 --slowms=-1

systemd でやってる時は /etc/systemd/system/ 以下とか、 /usr/ 以下を掘って Unit ファイルを探しましょう。

参考

qiita.com

ディストリごとのタイムゾーン変更について

zenn.dev

いままで利用してきたメインディストリが RHEL クローンだったのだけど、今使っている ruby 公式のイメージが ubuntu で、なおかつ先人が用意してくれていた設定が TZ 指定だけだったので「これで動くんか?」と思っていたけど、やはりファイル変更するのが最強っぽかった。

timedatectl コマンドとかいらんかったんや!

NginxProxyManager で nginx "SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number"

プライベートクラウドIPv4 枯渇問題に対応するために NginxProxyManager を運用しているんだけど、その一幕。

nginx "SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number"

ホスト追加した際に Proxy 転送できず、上記のエラーが出ていた。

なんじゃいこれ、と思うもググると「壊れたエラーメッセージ」みたいに言われて全然参考にならない。

原因は Scheme の設定

ProxyHost 追加する際、ドメインの次に以下の設定を指定する必要がある。

Proxy 追加画面

バックエンドは http://192.168.1.10:80/ が完全な URL となる。

で、ここで指定できる Scheme が、外部から (ユーザがアクセスする際) Listen する時に利用されるものを指定するんだ!と思っていたのが原因だった。 つまり画像の状態は誤りなんですね。

上記のバックエンド URL に当てはめると以下のようになる。

Scheme Forward Hostname / IP Forward Port
http 192168.1.10 80

気づいてみれば簡単だったんだけど、色々な経験に邪魔されて「なんで動かねえんだよぉおおお!」となっていた。

NginxProxyManager、ほぼ理想通りの GUI なのでサイコーとなっている。 これ多言語対応とかやってんのかな。

error: some local refs could not be updated; try running

git pull したらエラーが。

❯ git pull

...

error: cannot lock ref 'refs/remotes/origin/feature/sso': 'refs/remotes/origin/feature/sso/add_permissions_api' exists; cannot create 'refs/remotes/origin/feature/sso'
 ! [new branch]          feature/sso                 -> origin/feature/sso  (unable to update local ref)

...

error: some local refs could not be updated; try running
 'git remote prune origin' to remove any old, conflicting branches

ローカルのブランチ情報が更新できなかったっぽいけど、これはローカルに存在するブランチとリモートブランチで衝突が起きたってとこでいいんだろうか。

とりあえず指示のとおり git remote prune origin する。

❯ git remote prune origin
Pruning origin

...

 refs/remotes/origin/HEAD has become dangling!

なおった。 ちなみにこのリポジトリは開発に参加していないので、多分リモート側でなんかやった結果、前回との差分で情報が死んだ気がする。 俺は悪くねえ!ヴァン先生が(ry

参考

qiita.com

www.r-staffing.co.jp