[Terraform] destory するときに AWS [email protected] がなかなか削除されない件

CloudFront で Basic 認証をかけたり、サブディレクトリー以下のデフォルトアクセスを index.html にしたりするには [email protected] を利用しますよね。

独自ドメイン当てたり、HTTPS 対応したりするのを手動でやっていると抜け漏れなどがあり、意外と面倒になってきたりします。

そんなときに Terraform を使うわけですが、何度も環境を作り直すため、作っては壊したりを繰り返していると度々下記のエラーが発生します。

* aws_lambda_function.fn: Error deleting Lambda Function: Lambda was unable to delete arn:aws:lambda:~~~~~~~ because it is a replicated function. Please see our documentation for Deleting [email protected] Functions and Replicas.
        status code: 400, request id: ********-****-****-********

このエラーはエラーメッセージの通り、[email protected] 関数とレプリカの削除 を見れば原因が分かります。

読んでみてこういう解釈をしました。

CloudFront のエッジロケーションにおいて、Lambda を用いて細かい設定ができるのが [email protected] ですので、エッジロケーションに実行する関数のレプリカが作られるのでしょう。 そのレプリカは CloudFront から外されたタイミングで削除依頼が出され、その削除には数時間かかるということみたいです。

つまりは terraform destory 一発では消せないということですね。

一度、destroy を実行したら時間をおいて実行、というのを完了するまで繰り返す他なさそうですね。

参考

Bot: Cincraw Crawler - Mozilla/5.0 (compatible; Cincraw/1.0; +http://cincrawdata.net/bot/)

このユーザーエージェントは、自分の管理するサービスでたまに見かけるものです。

Mozilla/5.0 (compatible; Cincraw/1.0; +http://cincrawdata.net/bot/)

株式会社 CINC さんの開発したクローラーのようです。 目的はかかれていないですが、アクセスログを追う限りは非常に礼儀正しいクローラーです。

技術検証用なのでしょうかね?

Cincraw Crawler のクローリングポリシー

Homebrew: インストール先のディレクトリーを /usr/local 以外に指定する方法

Mac ユーザーのエンジニアなら多くの人が Homebrew を使うと思います。
個人的には root 権限が要らないユーザーホームディレクトリー直下に置くのがおすすめです。

$ mkdir -p .homebrew/
$ curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C ~/.homebrew
$ cat << 'EOF' >> ~/.bash_profile
export PATH=$HOME/.homebrew/bin:$PATH
export HOMEBREW_CACHE=$HOME/.homebrew/caches
EOF

参考

Git: 'remote: Repository not found. fatal: repository ~ not found' - Git でプッシュできない件

とあるプロジェクトで Github 上のリポジトリーをローカルにクローンして、諸々作業し終えたあとにコミットしてリモートにプッシュしようとしたときにこのようなエラーが発生しました。

$ git push origin XXXXX
remote: Repository not found.
fatal: repository 'https://github.com/XXXXX/YYYYY.git' not found

エラー内容を見ての通り「リモートにリポジトリーが見つかりません」というメッセージです。

確かにクローンしたはずなのに…と思い、リポジトリーを確認したところやはり存在しているので「もしかするとプッシュする権限がないのではないか」と思って、リポジトリー管理者に問い合わせたところ、案の定、書き込み権限がなかったようでした。

Github の公式ヘルプにも載っていますが、このエラーが発生したら、次のことを疑ってみましょう。

1. 存在を確認しましょう

リポジトリーの名前は「大文字・小文字を区別」するので、タイポかもしれないです。

クローンまたはプッシュが出来る想定ならばリポジトリーも閲覧できるはずなので、リポジトリーの存在を確認する意味でも、実際にアクセスしてみましょう。

アクセスできたならば、そのリポジトリーのクローン URL をコピーして使ってみましょう。

2. 権限を確認しましょう

このエラーは、プライベートリポジトリーをクローンするときに閲覧権限を与えられていないときに発生するエラーでもあります。

閲覧権限は下記のパターンが考えられます。

  • リポジトリーの所有者である
  • リポジトリーのコラボレーターである
  • リポジトリーにアクセス権のあるメンバーである

あとは書込権限を与えられていないリポジトリーにプッシュしようとしたときにもこのエラーが発生します。

これについては当該リポジトリーに対しての書込権限があるかどうかです。

3. SSH アクセスを確認しましょう

SSH 形式でクローン、プッシュするときに実は SSH キーの設定をしていない、もしくは何らかの操作(変更・削除など)をしている可能性があります。

自分のアカウントを確認してみましょう。

Git

Facebook: 1 つのサイトで複数の Facebook Pixel タグを設定するには

前置き

いまさらながらな内容かもしれませんが、ちょっと気になったので備忘録的に書いておきます。 そこからかよっ!という説明になっているかもしれません…。

背景

サービスを運営しているとどこかのタイミングで Facebook などのソーシャルサービスに広告を配信するフェーズが出てきたりします。

Facebook には Facebook 上で広告配信するための管理コンソールであるビジネスマネージャという機能があります。 Facebook に広告を出稿する際には、このビジネスマネージャから発行される広告の効果を測定するためにピクセルタグというものをサイト内のあちこちに貼り付けることになるでしょう。

しかしながら、自社または自身で Facebook の広告を運用するのは大変だったりします。 そこで広告代理店が間に入り、決められた予算内で目標の効果を達成するべく、広告の運用を代行してくれたりします。

代理店が 1 社であればピクセルタグの導入はテンプレ(教科書)通りに導入できますが、 2 社以上になってくると問題が発生してきます。

どういう問題が発生するかというと、ピクセルタグから送信されるデータに不整合(重複して送られたり、優先度が決まっていたり)が発生するのです。

つづきをみる