はじめに
AWSに知見はあるけど、Azureは初めて触るという方向けです。
比較している内容について、:(コロン)を挟んで左辺がAzureサービス、右辺がAWSサービスとなってます。
Azureの公式サイトでも「AWS プロフェッショナルのための Azure」というタイトルでAWSとの比較をしてくれてはいるのですが・・・
本記事ではAzureリソースの理解を深めるため、必要に応じて(便利な言葉)そのリソースの解説やハンズオンとなるURLも貼付しています。
「とりあえず、触れてみないことには何も分からんよな!」という方の一助になれば幸いです。
ネットワーク
- Azure VNET:Amazon VPC
- サブネット:サブネット
⇒AzureもAWSも一緒だが、AWSは”サブネットに対してAZを指定”しますが、Azureはサブネットに対してAZを指定するのではなく、”仮想マシンを作成する際にAZを指定”します。
- ルートテーブル:ルートテーブル
- NATゲートウェイ:NATゲートウェイ
- Azure Front Door:Amazon CloudFront
- プライベートエンドポイント/サービスエンドポイント:VPCエンドポイント
※プライベートエンドポイントとサービスエンドポイントの違い
- プライベートエンドポイント⇒Azure PaaS のパブリック IP アドレスに対する接続を最適化する
- サービスエンドポイント⇒プライベート IP アドレスで Azure PaaS に接続する
- Azure Firewall:AWS Network Firewall
※FirewallとApplication Gatewayの組合せについては以下が参考になります。
コンピューティング
- 仮想マシン(Azure Virtual Machines):Amazon EC2
- サービスコネクタ(Service Connector)
⇒AWSで該当するようなサービスなし。Azureコンピュートサービスと他のバッキングサービス間の接続を簡素化するAzureサービスとのこと。Container AppからContainer Registriesへの接続を簡素化してくれたりする。
- Azure Load Balancer:Elastic Load Balancer
- Application Gateway:Application Load Balancer(ALB)
⇒内部業務アプリケーションへのセキュアなアクセス制御、オンプレミスとクラウド間のハイブリッド構成、複数のバックエンドサービスへの高度なトラフィック振り分けが必要なシナリオに使う。インターネット向けの公開目的であればFront Doorの方がよさそう。
Application GatewayとContainer Appsの統合は以下。ついでにWAFも作れる。
※HTTPで接続する場合は、Container Appsの「イングレス>セキュリティで保護されていない接続」にチェックをいれる
⇒仮想マシン(VM)とApplication Gatewayを接続するチュートリアルは以下
- Azure Automation :(一例だが)Lambda+Step Functions
コンテナ
- Container Registries:Amazon ECR
- コンテナーアプリ(Azure Container Apps):Amazon ECS(Fargate)
⇒中々に癖がある。コンテナ環境用のサブネット(Container Apps環境)が別途必要だったり、しかもその環境のサブネットマスクは/23以上必要だったり。まあ実態がAKS(Azure Kubernetes Service)ベースで、各Podに個別IPが必要ってところから多くのIPアドレスが必要なのかなと思います。
※操作するにあたり、(個人利用を除き)有償化してしまったDocker Desktopの代替として、Rancher Desktopを使用して以下のハンズオンを実施しました。
指定のVNET内にコンテナを作りたいときは以下を参照。
- Azure Kubernetes Service(AKS):Amazon EKS
※プライベートクラスターを作成する
※Kubernetis APIを使用してノードに接続する
※内部ロードバランサとの統合
CI/CD
- Azure DevOps(Azure pipelines):AWS Codeシリーズ
- Azure Pipeline:Code Pipeline
※Kubernetesにデプロイする
ストレージ
ストレージアカウントの種類が多くて複雑・・・。
※Azure Storage Explorerは便利そう。Azure Storage アカウントに対してアップロード、ダウンロード、コピー等のファイル操作をGUIで行いたい場合に効果的。
- Azure Blob Storage:Amazon S3
⇒命名規則が英数字小文字のみ24文字以内ってどうなの。
- Azure Disk Storage:Amazon EBS
- Azure Files:Amazon EFS
データベース
- Azure Database for PostgreSQL:Amazon RDS for PostgreSQL
※プライベート アクセス接続方法はこちら(VNET内でのアクセスに利用)
- Azure CosmosDB:Amazon DynamoDB
- Azure Cache for Redis:Amazon ElastiCache
バックアップ
Azureのバックアップには色々種類があって分かりづらい。
Azure バックアップ ソリューションで利用する Recovery Services コンテナーとバックアップ コンテナーのバックアップ対象の違いについては、以下を参照いただけると良いです。
- Recovery Services コンテナー:AWS Backup
- バックアップコンテナー:AWS Backup
セキュリティ
- Azure WAF:AWS WAF
⇒WAF そのものがリソースとして存在しているわけではなく、Azure Application Gateway や Azure Front Door などに含まれる一つの機能として存在しています。
例えば、Container Appsと統合したい場合は、Container Appsを内部イングレスに設定したあと、Azure Application Gateway経由でWAFと統合します。
または、Azure Front Door+WAFでもContainer Appsと統合できます。
Application GatewayおよびFront DoorとContainer Appsの組合せにWAFをアタッチする場合は以下も参考になります。
⇒WAFのログはアタッチしているリソース(Application Gatewayなど)の設定から「診断設定」を選択してログ出力を有効化する必要がある。
- Key Vault:AWS Certificate Manager(証明書管理)、AWS KMS、AWS SecretManager
⇒外部からの証明書をインポート可能。
また、パートナー CA によって発行された Key Vault に証明書を追加することが可能(有料)。
または、自己証明書を無料で作成できる。
- Azure App Service:AWS Certificate Manager(証明書作成)
- Azure Container Apps:AWS Certificate Manager(証明書作成)
⇒上記2つのサービスは、サービス側からSSL/TSL証明書を発行できるが、検証目的でドメイン登録(Aレコード、CNAMEレコード、TXTレコードなど)は必須となる。
マネージドID
- マネージドID(システム割り当て)※Azureリソースに紐づいて作成される認証
- マネージドID(ユーザ割り当て)※単独のAzureリソースとして作成する認証
⇒AWSに「マネージドID」という概念はない。以下のURLを参照頂ければと。
メール送信
・Azure Communication Services(Email Communication Service):Amazon SES
Azure公式ドキュメント
1:Communication Services リソースを作成する
2:Email Communication Service リソースの作成と管理
3:電子メール通信サービスに Azure マネージド ドメインを追加する
※カスタムドメインを使用する場合の追加方法は以下
4:Azure Communication Services を使用してメールを送信する
制限について
メール送信数に上限(カスタムドメインの場合、1分につき30通、60分につき100通)がありますが、Azureサポートリクエストから送信ボリュームの増加を要求可能とのことです。
監視
- Azure Monitor:Amazon CloudWatch
⇒Azureでは仮想マシン作成時にアラートルールを設定できる。便利だった。
- 分析情報(Azure VM Insights):CloudWatch AgentやCloudWatch Insightsなど複数のサービス
⇒VMのメモリ使用率などVM 上で実行されているソフトウェアとプロセスを監視する。
- ログ検索アラートルール:CloudWatchメトリクスフィルター
⇒AWSではメトリクスフィルター上でアラートとなるワードを指定すれば良かったが、Azureだとクエリ文を書く必要がある。正直面倒だなあと思ってしまった。
例)
**Syslog
| where SeverityLevel in ("err", "error","crit", "alert", "emerg")
| where TimeGenerated > ago(24h)
| project TimeGenerated, Computer, SeverityLevel, Facility, SyslogMessage
| sort by TimeGenerated desc**
- メトリックアラートルール:CloudWatchアラーム
ログ
- Log Analytics:Amazon CloudWatch Logs
- データ収集ルール:CloudWatch Agent+ログ収集設定
- ログ診断設定:Amazon Data Firehose + サブスクリプションフィルター
⇒ログの格納先をLog AnalyticsやBlob Storageなどに保存できる。準リアルタイム性あり。
Blobストレージへの保存は最大90分かかるらしいけど、実際はそんなかからない。数分程度。
通知
- アクショングループ:Amazon SNS
名前解決
- AzureプライベートDNSゾーン:Route 53 Private Hosted Zone
権限管理
- Azure ロールベースのアクセス制御 (Azure RBAC):AWS IAM
- リソースプロバイダー
⇒AWSには無い概念。Azureリソースを作成・管理するためのサービスAPIであり、特定の Azure サービスの機能を利用する(有効化する)ために必要な機能です。
- カスタムポリシー定義:AWS Config+SCP(カスタムポリシー定義は予防的措置も実施してくれるので)
アカウント管理
- AzureとAWSのアカウント管理について考え方が大きく異なります。
理解を深めるために、以下の記事が参考になりました。
【おまけ】Azure CLIについて
- Windows に Azure CLI をインストールする
- Azure CLI を使用して Azure に対する認証を行う
- Azure CLI を使用して対話形式で Azure にサインインする
draw.ioについて
- draw.ioにAzureのアイコンを追加する