この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
いわさです。
Azure API Managementを使うと様々な環境のAPIを管理出来るようになるのですが、プライベートネットワークもその範囲に含まれています。
API Managementの仮想ネットワーク機能を有効化することで指定した仮想ネットワークへ接続出来るようになるのですが、仮想ネットワーク設定時に「外部」と「内部」の設定があり、少し迷いました。
今回使いたいのは「外部」になりまして、設定する場合の手順をまとめました。
API Managementの仮想ネットワーク設定
API Managementの仮想ネットワーク設定には、「なし」以外には「外部」と「内部」があります。
「外部」はAPI Management自体はパブリックな状態で、バックエンドはプライベートなVNETをターゲットにしています。
「内部」はプライベートなAPI Managementを作成し、バックエンドもプライベートです。
内部モードのAPI Managementへアクセスするためには、まずVNETへVPNやExpressRouteで接続する必要があります。
また、内部を設定した場合はプライベートDNSの構成も必要になります。
設定
まずはVNET内にUbuntuな仮想マシンを1台用意し、Apacheの導入とindex.htmlを用意します。
なお、パブリックIPアドレスは割り当てていないので、この時点では外部からの接続は出来ません。
$ apt install apache2
$ vi /var/www/html/index.html
$ curl http://localhost/
hoge
次に、API Managementを作成します。
Web service URL
がバックエンドのエンドポイントを指しているのですが、プライベートIPアドレスを指定しています。
ただし、まだこの時点ではVNETの設定を行っていないため、API Managementを通しても通信は出来ません。
試しにAPIとオペレーションの設定を行いテストしてみましょう。
forward-request (1.309 ms)
{
"messages": [
"Unable to connect to the remote server",
"Error occured while calling backend service.",
"An attempt was made to access a socket in a way forbidden by its access permissions 10.0.0.4:80"
]
}
リモートサーバーへの接続エラーが発生しますね。
ここで冒頭のVNET設定を「外部」モードで行います。
$ curl -H "Ocp-Apim-Subscription-Key: 3fb30b3215492984835fe6707d381093" http://iwasa-apim.azure-api.net/
hoge
無事、外部からのアクセスが出来るようになりました。
さいごに
本日はAzure API Managementの外部モードでVNETのプライベートAPIへ接続してみました。
また、VNETの接続モードが複数ある点と、外部モード時の設定方法と挙動を確認しました。
API ManagementでVNET構成を検討している方の参考になれば幸いです。