かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Azure Functions でスロットを使ってみよう(プレビュー)

Azure Functions は、まだスロットに正式対応していません。現時点ではプレビュー扱いです。 ということで早速使ってみましょう。

スロットの有効化

Function App を作ってポータルで開きます。 そして Function settings を開いてスロットのプレビューをオンにします。

f:id:okazuki:20170821221618p:plain

割と色々と気をつけろよ!みたいなことを書いてる割には押してしまったらなんの確認メッセージも出ずにさくっと有効化されました。人によっては間違えて押しちゃいそうですね…気を付けないと。

スロットの作成

ということで staging スロットを作成してみましょう。 スロットの欄の横にあるプラス記号を押します。

f:id:okazuki:20170821221822p:plain

そうするとスロットの作成画面が開きます。 まぁ入力項目は名前だけなので迷うことはないですよね。

f:id:okazuki:20170821221931p:plain

デプロイするプロジェクトの作成

では staging にデプロイするための関数を作りましょう。 GetMessage という以下のような関数をローカルで定義してみました。

module.exports = function (context, req) {
    context.res = {
        status: 200,
        body: `${process.env.message} v1`,
    };
    context.done();
};

message の定義を返してるだけのシンプルな関数です。 この関数の定義の入ったリポジトリを Visual Studio Team Services あたりに作ります。

staging の展開オプションから作成したリポジトリを展開元として関連付けます。 そして、アプリケーション設定に message の値を追加します。本番に行ってほしくない構成はスロットの設定にしておきます。

f:id:okazuki:20170821223923p:plain

production にも追加しておきます。

f:id:okazuki:20170821224104p:plain

Postman でURLをたたきます。いい感じ。

f:id:okazuki:20170821223159p:plain

スワップ

staging と production を入れ替えてみましょう。staging を選択するとスワップというボタンがあります。

f:id:okazuki:20170821223404p:plain

次の画面でもう一度スワップボタンを押すと、どことどこを入れ替えるか選択する画面になります。

f:id:okazuki:20170821223514p:plain

因みにスワップには2種類あって普通に入れ替えるだけのスワップと、入れ替えは実施せずにアプリケーションの構成だけ入れ替え先のを持ってくるプレビューでのスワップがあります。

f:id:okazuki:20170821223615p:plain

せっかくなので、プレビューでのスワップを選びます。そして警告メッセージとか致命的なものが出てないのか確認します。

f:id:okazuki:20170821224347p:plain

今回は警告が出てますが、まぁいっかって感じなのでそのままOKを選択します。そうすると staging 環境のアプリケーション設定が production のものに上書きされます。

f:id:okazuki:20170821224538p:plain

Postman で URL をたたいてみます。このとき呼び出しに必要な code が変わってるので注意しましょう。

f:id:okazuki:20170821224715p:plain

URL は staging なので出力が production の設定を読み取って返していることが確認できます。

プレビュー品質っぽいところ?

動作確認できたのでスワップを完了させたいと思います。 一度関数の URL を確認するためにスワップの画面を離れてしまった場合関数のポータル画面から素直にスワップボタンを押せなくなっています。

f:id:okazuki:20170821224925p:plain

なのでプラットフォーム設定 → すべての設定 → 画面上部のスワップボタンからスワップの完了か取り消しが行える画面に行けます。

f:id:okazuki:20170821225132p:plain

スワップの取り消しを行うと、staging 環境のアプリケーション設定がもとに戻ります。スワップの完了を選択してOKを押すとスワップが完了して環境が入れ替わります。

f:id:okazuki:20170821225442p:plain

production の関数をたたくとばっちり動きますね。

f:id:okazuki:20170821225625p:plain

これで、また新しいバージョンを VSTS に push すると staging に新しいバージョンが配備されます。 そしてスワップすると、更新バージョンがプロダクションに行きます。

いい感じですね。早く正式リリースされないかな。