ブログ

ASCII Azure App ServiceではFTPデプロイよりZipデプロイを使おう

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「Azure App ServiceではFTPデプロイよりZipデプロイを使おう」を再編集したものです。

App ServiceのFTPデプロイについて

 App ServiceにはFTPデプロイが提供されており、Azureポータルから[デプロイセンター] > [FTPS資格情報]にアクセスすることで、FTPエンドポイントと認証情報が確認でき、WinSCPなどのクライアントを利用することで、FTP接続ができます。

App ServiceのFTPS資格情報

 また、[構成] > [全般設定] > [FTPの状態]で受け入れる接続の制限ができます。

 既定では「すべて許可」になっており、「FTPSのみ」「無効」に変更できます。

App ServiceのFTPの状態

 上記の手順でFTP接続し、アプリケーションを配置することで、App Serviceへアプリケーションをデプロイすることができます。

WinSCPでApp ServiceにFTP接続した状態

App ServiceのFTPにはアクセス制限をかけることはできない

 App Serviceには単純なIP制限や、App Serviceを仮想ネットワーク内に閉じ込めてしまうプライベートエンドポイントといった機能やサービスが用意されていますが、これらの機能を用いても例えばオフィスやデプロイ用のサーバからのみFTPでアクセスできる、といったアクセス元の制限はできません。

 こちらの理由ですが、App Serviceにアクセスした際、通常はフロントに配置されたロードバランサーを経由して、アプリケーションが実行されているワーカーへとアクセスしますが、FTPでのアクセス(とVisual StudioでのWebデプロイ)はフロントを経由せず、パブリッシャーというロールを経由して、App Serviceにアタッチされたファイルサーバにアクセスします。

 このようなアーキテクチャーのため、App ServiceのFTPデプロイはパブリックIPによって提供され、IP制限やプライベートエンドポイントを用いてもアクセス元の制御はできません。

対応策

 FTPは暗号化されない通信プロトコルであり、上記の通りアクセス元を制限することもできません。

 また、FTPデプロイではアプリケーションのバージョン管理ができないといった欠点もあります。

 Azure DevOps PipelineやGitHubを用いてデプロイを自動化してしまうのがイマ風ですが、さまざまな制約によってデプロイは手動で行ないたい、というケースもあるかと思います。

 そのような場合は、Zipデプロイを利用することができます。

Zipデプロイについて

 ZipデプロイはプロジェクトのZipアーカイブを作成し、App Serviceの管理サイト(SCMサイト)にアップロードすることでデプロイする方法です。

 こちらの場合、SCMサイトへのアクセスはIP制限やプライベートエンドポイントを用いて仮想ネットワーク内に閉じ込めることができるのでセキュリティー面で優れています。

 また、前回デプロイと比較して削除されたファイルやディレクトリを自動で削除してくれるので、FTPよりもアプリケーションの整合性が失われる可能性が低いです。

 デプロイ方法もGUIとAPIの2パターンが用意されています。 ※Linux App serviceではAPIのみ

Zipデプロイを実際に行なう

 Visual Studio 2019で.NET 5のウェブアプリケーションを作成している場合のZipデプロイ手順を紹介します。

ASCII Azure App ServiceではFTPデプロイよりZipデプロイを使おう

ローカルで作成したWebアプリケーション

 まずは[パッケージマネージャコンソール]で下記コマンドを実行し、アプリを発行します。

 下記コマンドは.NET 5での「フレームワークに依存する展開」の場合のコマンドです。

 バージョンが違ったり、展開方法を「自己完結」にしたい場合はオプションを適宜変更してください。

dotnet publish -c Release -p:UseAppHost=false

Visual Studioでのアプリの発行

 プロジェクト内の bin\Release\net5.0\publish にファイル一式が作成されるので、下記コマンドを実行し、Zipアーカイブを作成します。

Compress-Archive -Path * -DestinationPath {ファイル名}.zip

PowerShellでのZipアーカイブの作成

 AzureポータルからApp Serviceの[高度なツール] > [移動]を押下し、SCMサイトに移動します。

App ServiceのSCMサイト

 SCMサイトのURLの末尾に「/ZipDeployUI」を追記し、Zipデプロイ用のページに移動します。

SCMサイトのZipデプロイページ

 先ほど作成したZipファイルをエクスプローラからドラッグして配置し、デプロイが完了するまで待機します。

ブラウザーでのZipデプロイ

 ページ下部にデプロイの進捗状況が表示され、最後に「Deployment successful.」と表示されればデプロイ成功です。

デプロイの進捗状況

 App Serviceにアクセスすると、アプリケーションがデプロイされています。

デプロイ完了後のApp Service

最後に

 App ServiceでFTPデプロイを使ってるケースは少ないとは思いますが、もし使っているのであればZipデプロイへの切り替えを検討するのがよいかと思います。

 また、App Serviceの[FTPの状態]は[無効]にしておきましょう。

神田 仁/FIXER

cloud.config Division所属Azureを用いたインフラ構築を行なっています。構築のノウハウやTerraformを用いた効率化の方法などを紹介していけたらいいな。

[転載元]Azure App ServiceではFTPデプロイよりZipデプロイを使おう

■関連サイト

ホット記事

iPhoneやパソコンでWebサイトをPDFで保存する方法 | Business Insider Japan

iPhoneやパソコンでWebサイトをPDFで保存する方法 | Business Insider Japan

無料のメールマガジンに登録平日17時にBusiness Insider Japanのメルマガをお届け。利用規約を確認iPhoneのSafariを含め各種ウェブブラウザーから、ウェブサイトをPDFとして保存できる。撮影:今村拓馬Webページは突...

続きを読む 続きを読む
ニュース 録画忘れでも大丈夫!オリンピックの名場面をスマホであとから見る方法

ニュース 録画忘れでも大丈夫!オリンピックの名場面をスマホであとから見る方法

アーカイブ配信の利用方法を解説選手のプレーはもちろん、ユニークな解説などでも注目が集まる東京オリンピック。話題になったのに見逃してしまったり、録画していなかったりした場合でも、あとから好きなタイミング...

続きを読む 続きを読む
Yahoo!ニュース 伝統の「小紋染め」紋様をデジタル化へ 消滅危機、老舗社長の挑戦

Yahoo!ニュース 伝統の「小紋染め」紋様をデジタル化へ 消滅危機、老舗社長の挑戦

富田篤さんが広げる手前のファイルには、保存状態の良い型紙をできるだけ空気に触れさせないよう入れている。デジタル化に備えて、劣化を防ぐためだ=東京都新宿区の富田染工芸で2021年12月10日午前、近藤浩之撮影 ...

続きを読む 続きを読む

関連記事