koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Azure CDNのTLS証明書設定は遅かった

この記事ははてな社内のLT会で使ったスライドを記事に手動でコンバートしたものです。

周りは割とディープなLTをしているなか、自分は『うへぇ、こんなに時間かかるのかよ』と言う感想の共有だけという薄さ。

それはそれでアリだと思っているのだけれど、インフラ畑の方の反応は『うんうん、そのくらいかかるよね』った感じで『これが経験値の差か』と思うなどしました。

そんなことがあった、と言う記録です。


Microsoft Azure に CDN がある

  • 選べるプロバイダー
  • 今回はこれには興味なし

Azure Content Delivery Network

Azure CDN に無償の証明書機能がある

  • CDNのエンドポイントに向けたCNAMEレコードを作る
  • 反映までに時間がかかると脅しがある
  • どうせそんなに時間はかからんでしょ?

チュートリアル:Azure CDN カスタム ドメインで HTTPS を構成する

ドメイン名の検証後、カスタム ドメインHTTPS 機能がアクティブになるまでに最大 6 ~ 8 時間がかかります。

最大 6 ~ 8 時間

実際に時間がかかった

  • 23:48 設定完了済
  • 08:31 証明書は発行済だが配置未完了
  • 12:55 流石に完了

(Azure)CDNを操作するときの心得

  • 時間余裕をもとう

Azure の PaaS でのWebアプリケーションホスティングとのゆるい付き合い

WebアプリケーションをMicrosoft Azure上のPaaSにホスティングしている。気が向いたのでどんな構成で付き合っているのか書く。

見出しは以下辺り。

  • アプリケーションの構成
  • 環境
  • 監視など

一言で表すと『ASP.NET Core のアプリケーションを Visual Studio で何となく開発 App Service で何となく運用』している感じだ。

この『何となく』は大事で、難しいことを考えずにゆるくWebアプリケーションの開発運用と付き合えている。楽しい。

続きを読む

ひきこもりの思い出

世間でひきこもりが話題になっているので、少し自分について記録に残しておく。

以前少し書いたけれど、自分は中学生の頃から9年ほどひきこもりと言ってよい状態だった。 一応通信制の高校に在学していたけれど、その月一回の登校も行ったり行かなかったりだった。結果7年在学していた。高校4留である。趣味の買い物には出掛けていたけれど、おおむねひきこもっていたと思う。

その頃何を思っていたのか? 何分10年以上昔の話なので、定かな記憶はないし、良いようにねじ曲げて覚えているようなこともありそうだけれど、おぼろげには感覚が残っているうちに書いておこうといった感じだ。

経済状況

そこそこ長期のひきこもりができる位の経済力がある世帯だった。今はなき中流家庭ではなかろうか。趣味の買い物は主に祖父母からのお年玉などのお小遣いで行っていた。テレビゲームやガンプラ、マンガ、雑誌等の本程度で、浪費という程ではなかったように思う。

当時はこのままなにもしないでいても自分一人が衣食住を賄う位はどうにでもなるだろう。位に考えていたような気がする。

親のリタイヤ

お金はどうにでもなるという感覚はさほど的はずれではなかったはずで、親からもお金回りで苦言の類いを聞いた記憶はない。

ただ、お金はともかく寿命は順当に行けば親の方が先に尽きる。

「自分が死んだ後のことが心配でならない」

といったことを伝えられたことはあって、それなりの印象に残っている。

お金のことと同様に当時はあまり深く考えていた記憶がなくて『うぜーなー、知らんがな』位に捉えていた気がする。

家族とを含めて、現実との接点は希薄だったので、あまり実感がなかったのかもしれない。

余談だけれど、自分が物心ついた頃には祖父は退職していた。大手食品メーカーの工場に勤めていたそうなので、企業年金何かもそこそこ出ていたのではなかろうか。この頃の自分の趣味はそうしたお金に支えられていたのだろう。余裕のある時代だ。

手に職

明確な理由は全然覚えていないのだけれど、自分のお金を稼ぎたいと思った。漠然とした不安感からだろうか。何も覚えていない。

契機は一応の高校卒業だったはずだ。とは言え、卒業から手に職をつけようとするまでに半年は過ぎていた。

接客や肉体労働はやりたくなかったしできる気もしなかったので、多少覚えがあったパソコン操作を生かせそうなアルバイトに幾つか応募した。散々説教だけして不採用の連絡もしてこなかった広告作成会社の人事に非常な憎しみを覚えた。一生ゆるさんぞ。

全般に面接後の不採用の連絡はなかった気がする。都度採否を電話をかけて聞いてみじめな思いだった。

就活何十社落ちた、のような例とは規模が違うけれど、それなりに凹んでいたのだろう。今でいう情報商材のようなものにも引っ掛かりかけた。問い合わせを送ると即座に電話がかかってきて、まずx万円払え! のようなことを言われるのだけれど、それを渋ると罵声が飛んでくる。ヤクザな商売である。

その後、運良く外資系のIT周りの派遣企業の募集に引っ掛かって、ソフトのデバッグや評価の仕事をできた。

月並みだけれど、自分でお金を稼げたのは嬉しかった。

ここで面接で説教を受け続けていたら、まだひきこもっていたかもしれない。運だ。

その後、職業訓練を受けてIT業界に潜り込んだ。まぁ、手に職がついたと言っていいだろう。頭と手が動くうちは仕事して給料を貰えそうな感覚がある。

親が死んでも生活力はともかく経済的には大丈夫、位の安心感はもってもらえたのではないかなぁ。と思っている。

オチ

ない。

他にも思い出はあるはずなのでボケる前に思い起こしてメモしていきたい。

Bitbucket Pipelines の Pipes で Azure Blob Storage の静的Webサイトにファイルをコピーする

昨今、静的なWebサイトのホスティングは簡便化が著しく、GitHub PagesのようにGitリポジトリがその機能を提供していたり、クラウドサービスならオブジェクトストレージ+CDNで構成すると安価かつ高速なファイル配信を行えたりする。

Microsoft Azureでこのオブジェクトストレージ+CDNでの静的サイトの構成は、2018年頃まではよい形で行えなかったのだが、2019年6月現在ではなかなか便利に行えるようになっている。

辛さは以下の記事がよくまとまっていて分かりやすい。

qiita.com

自分自身去年同様の不便さに直面した。

koudenpa.hatenablog.com

これらの辛さはどれも解消している。

また、自分がよく使っているGitリポジトリサービスであるBitbucketが Pipes という便利なCI機能をリリース、Azureも各種 Pipe を提供していたので『Bitbucket Pipes + Azure Blob Storage + Azure CDN』の形での静的WebサイトのCDを構成をしてみた。

bitbucket-pipelines.yml

master ブランチへの変更でBlobストレージへファイルコピーする bitbucket-pipelines.yml は以下のような形になった。

pipelines:
  branches:
    master:
      - step:
          name: Deploy to Azure Blob Storage.
          deployment: test
          script:
            - pipe: microsoft/azure-storage-deploy:1.1.1
              variables:
                SOURCE: 'public'
                # コンテナ名の $ を二重にエスケープ
                # 参照: https://community.atlassian.com/t5/Bitbucket-Pipelines-questions/How-do-I-properly-quote-Pipelines-pipe-variables-and-escape/qaq-p/1021713
                DESTINATION: 'https://hoge.blob.core.windows.net/\\\$web'
                DESTINATION_SAS_TOKEN: $AZURE_STORAGE_SAS_TOKEN
                # 参照: https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy-linux
                # ただし、azure-storage-deploy:1.1.1はAzCopy7.3
                EXTRA_ARGS: '--set-content-type'
                DEBUG: 'true'

2つの留意点があった。また、Azure CDNへの指定にも多少癖があったので併記する。

コンテナ名の $ を二重にエスケープ

Azure Blob Storage の静的Webサイトは $web という特別な名前のコンテナにオブジェクトを配置することで利用できる。

これによって / へのアクセスに対して /index.html を返却するようなWebサイトに必要となる機能が提供されるのだ。

docs.microsoft.com

しかし、Bitbucket Pipelinesでは $ から始まる単語は変数として扱われるためエスケープが必要となる。 また、このスクリプトの実行時にはシェルへのコマンド引数となるため、その際にも変数展開が行われる。

これを回避するには $ を二重にエスケープしなくてはならない。

以下のQAが分かりやすかった。

community.atlassian.com

AzCopyのバージョンが7.3

microsoft/azure-storage-deploy:1.1.1 では実際のファイルコピーに AzCopy というユーティリティを使用しているが、このバージョンが少し古い。

既定のオプション設定や指定などが最新版とは異なっている。

特に EXTRA_ARGS: '--set-content-type' は指定しておかないとファイルのContent-Typeが指定されず、HTMLファイルがダウンロードされるまさかの動作となる。

新しいバージョンの AzCopy ではこのオプション指定は逆転し、Content-Typeを設定しないことがオプションとなっているようだ(オプションの存在確認のみで試してはいない)。

Azure CDN に指定する配信元

Azure Blob Storage の静的Webサイトは通常のオブジェクト配信のURLとは別に、静的Webサイト向けのURLが用意される。 静的Webサイトに関する機能はそちらでの提供になるため、CDNの配信元に指定するホストもそちらとする。

CDN および SSL のサポート

静的な Web サイトのファイルをカスタム ドメインおよび HTTPS 経由で使用できるようにするには、「Azure CDN を使用して HTTPS 経由でカスタム ドメイン付きの BLOB にアクセスする」を参照してください。 このプロセスの一環として、CDN が BLOB エンドポイントではなく "Web エンドポイントを指す" ようにする必要があります。 CDN 構成がすぐに実行されないため、コンテンツが表示されるまで数分待たなければならない場合があります。

2019年6月現在、Azure Portal上での操作ではAzure CDNはAzure内の配信元候補をドロップダウンリストで提示してくれるが、そこにこの静的Webサイトのホストは存在しないので、カスタム配信元を選択する必要がある。

f:id:koudenpa:20190531083855p:plain
配信元種類はカスタムにする

感想

Azure CDNはDV証明書を無償で配置してくれるし、やっとAWSのS3 + CloudFrontに追いつきつつある。 CDN側がCloudFrontに比べると機能不足だが、静的サイトを構成する分には問題ない。

今後の機能充実にも期待したい。

劇場版幼女戦記の好きなところ

劇場版幼女戦記はよい。何度も劇場に足を運んだほどには好きだ。TVアニメの続編映画はとしてとても良くできている。歴史に名を残すほどの名作とまではいかないと思うけれど、自分の好みにあっていてとても楽しんだ。

そんな限定版幼女戦記の好きな点をいくつかあげたい。

※性質上ある程度のネタバレがあります。

f:id:koudenpa:20190419091138j:plain

youjo-senki.jp

続きを読む

Nginx で /.well-known 配下をBasic認証不要にする

開発環境などで雑にBasic認証をかけたい場面がある。そうした環境で特定のパスは認証したくない場合がある。例えば、Let's Encryptでの証明書発行・更新のドメイン検証のリクエストだ。

Nginxの場合、認証の構成によるけれど、Basic認証のみを行っているようなら、以下の様な設定を行うことでそうした要求を満たせる。

satisfy any;
deny all;
auth_basic "basic authentication";
auth_basic_user_file  "/path/to/.htpasswd";

location /.well-known {
    allow all;
}
$ certbot-auto renew
~~~
Congratulations, all renewals succeeded.

Twitterへのつぶやきで済ましていたのだけれど、検索性が悪いので記事にした。

株式会社はてなに入社して一年が経ちました

koudenpa.hatenablog.com

嘘です。本当は五カ月です。

koudenpa.hatenablog.com

去年は嘘から出た真が起きるなどなかなか面白い年でした。

入社後、フリーお菓子の影響か順調に体重が増えていて、まぁ悪くはない感じなのではなかろうかと思います。 (自分はストレスを感じると食が細くなって痩せていく)

ぼちぼち新しい世界にも慣れてきた気がするので、じゃぁ携わっているサービスをよりいい感じに開発運用していくために積極的な活動をしていくぞ、という気分です。

そんな平成最後の四月一日でした。