ネットワーク設定とポート設定 - AWS Elastic Beanstalk

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ネットワーク設定とポート設定

このセクションでは、VPC 設定、ポート設定、マルチサイトデプロイなど、IIS 移行のネットワーク設定オプションについて説明します。

VPC の構成

eb migrate コマンドは、Elastic Beanstalk 環境に柔軟な VPC 設定オプションを提供します。このツールは、ソース EC2 インスタンスから VPC 設定を検出するか、コマンドラインパラメータを使用してカスタム VPC 設定を受け入れることができます。VPC で Elastic Beanstalk を設定する方法については、Amazon VPC で Elastic Beanstalk を使用する「」を参照してください。

自動 VPC 検出

EC2 インスタンスで eb migrateを実行すると、ソース環境の EC2 インスタンスから VPC 設定を自動的に検出して使用します。次の出力例は、検出した設定情報を示しています。

PS C:\migrations_workspace > eb migrate Identifying VPC configuration of this EC2 instance (i-0123456789abcdef0): id: vpc-1234567890abcdef0 publicip: true elbscheme: public ec2subnets: subnet-123,subnet-456,subnet-789 securitygroups: sg-123,sg-456 elbsubnets: subnet-123,subnet-456,subnet-789 ...

検出された設定には以下が含まれます。

  • VPC 識別子

  • パブリック IP 割り当て設定

  • ロードバランサースキーム (パブリック/プライベート)

  • EC2 インスタンスサブネットの割り当て

  • セキュリティグループの関連付け

  • ロードバランサーサブネットの割り当て

オンプレミスホストまたは非AWS クラウドホスト

がオンプレミスサーバーまたはAWS クラウド以外のホストからeb migrate実行されると、Elastic Beanstalk サービスは AWS アカウントのデフォルト VPC を使用します。次のリストは、コマンドと出力の例を示しています。

PS C:\migrations_worspace> eb migrate ` -k windows-test-pem ` --region us-east-1 ` -a EBMigratedEnv ` -e EBMigratedEnv-test2 ` --copy-firewall-config Determining EB platform based on host machine properties Using .\migrations\latest to contain artifacts for this migration run. ...

Elastic Beanstalk が環境のデフォルト VPC を設定するAmazon VPC で Elastic Beanstalk を使用する方法については、「」を参照してください。

カスタム VPC 設定

特定の VPC 設定が必要なソース環境 (EC2、オンプレミス、またはAWS クラウド以外) の場合は、次の例のような VPC 設定ファイルを指定します。

{ "id": "vpc-12345678", "publicip": "true", "elbscheme": "public", "ec2subnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"], "securitygroups": "sg-123456,sg-789012", "elbsubnets": ["subnet-a1b2c3d4", "subnet-e5f6g7h8"] }

次のコマンドを使用して、この設定を適用します。

PS C:\migrations_workspace> eb migrate --vpc-config vpc-config.json
注記

VPC 設定ファイルには、VPC ID を指定する idフィールドが必要です。他のすべてのフィールドはオプションであり、Elastic Beanstalk は指定しないフィールドのデフォルト値を使用します。

重要

パラメータを指定すると、移行はソース環境からの既存の VPC 設定を無視します--vpc-config。このパラメータを使用すると、移行では、渡す設定ファイルで指定された VPC 設定のみが使用されます。このパラメータを使用すると、ソースインスタンスの VPC 設定を検出するか、デフォルトの VPC を使用するというデフォルトの動作が上書きされます。

これらのシナリオでは、 --vpc-configパラメータを使用します。

  • 検出可能な VPC 設定がないnon-EC2 環境を移行する場合

  • ソース環境で使用される VPC とは異なる VPC に移行する場合

  • サブネット選択またはセキュリティグループ設定をカスタマイズする必要がある場合

  • 自動検出で目的の VPC 設定が正しく識別されない場合

  • オンプレミスから移行し、デフォルトの VPC を使用しない場合

ネットワークセキュリティ設定

デフォルトでは、 はターゲットインスタンスでポート 80 eb migrateを開きますが、ソースマシンから他の Windows Firewall ルールをコピーしません。すべてのファイアウォール設定を含めるには、次のコマンドを使用します。

PS C:\migrations_workspace> eb migrate --copy-firewall-config

このコマンドは、次のアクションを実行します。

  • IIS サイトバインディングで使用されるポートを識別します

  • 対応するファイアウォールルールを取得します。

  • ターゲットインスタンスのルールを再作成するための PowerShell スクリプトを生成します

  • ソースマシンからのポート 80 の DENY ルールを保持します (それ以外の場合、ポート 80 はデフォルトで許可されます)

ソースマシンに次の例で指定されたファイアウォールルールがあるユースケースを考えてみましょう。

# Source machine firewall configuration Get-NetFirewallRule | Where-Object {$_.Enabled -eq 'True'} | Get-NetFirewallPortFilter | Where-Object {$_.LocalPort -eq 80 -or $_.LocalPort -eq 443 -or $_.LocalPort -eq 8081} # Output shows rules for ports 80, 443, and 8081

移行では、次の設定を含むスクリプト (modify_firewall_config.ps1) が作成されます。

New-NetFirewallRule -DisplayName "Allow Web Traffic" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 80,443 New-NetFirewallRule -DisplayName "Allow API Traffic" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 8081

移行ツールは、次のアクションを自動的に実行します。

  • すべての IIS サイトバインディングから HTTP/HTTPS ポートを抽出します

  • Windows Firewall INetFwPolicy2 インターフェイスを使用してファイアウォールルールを列挙します

  • 指定されたポートを明示的に参照するルールのみを含めるようにルールをフィルタリングします

  • HTTP サイトバインディングと HTTPS サイトバインディング、および関連するファイアウォールルールのみを処理する

  • 表示名、アクション、プロトコル、有効状態などのルールプロパティを保持します

  • ファイアウォールルールの個々のポートとポート範囲の両方を処理します

  • ファイアウォール設定スクリプトをデプロイマニフェストに追加します

ロードバランサーの設定

Load Balancer の設定は、 --vpc-config引数を使用して指定できます。以下の例は、パラメータを示しています。

スキームの選択

パブリックロードバランサースキームとプライベートロードバランサースキームのいずれかを選択します。

{ "id": "vpc-12345678", "elbscheme": "private", "elbsubnets": ["subnet-private1", "subnet-private2"] }
サブネットディストリビューション

高可用性を実現するには、ロードバランサーサブネットをアベイラビリティーゾーンに分散します。

{ "elbsubnets": [ "subnet-az1", // Availability Zone 1 "subnet-az2", // Availability Zone 2 "subnet-az3" // Availability Zone 3 ] }
注記

Elastic Beanstalk は Application Load Balancer、Network Load Balancer、Classic Load Balancer による環境作成をサポートしていますが、 eb migrate コマンドは Application Load Balancer のみをサポートします。ロードバランサータイプの詳細については、「Elastic Beanstalk 環境のロードバランサー」を参照してください。

ポート設定を使用したマルチサイトデプロイ

eb migrate コマンドは、アプリケーションが依存関係を共有したり、非標準ポートを使用したりする可能性のある複雑なマルチサイト IIS デプロイを処理します。複数のサイトを持つ一般的なエンタープライズセットアップの例を次に示します。

<!-- IIS Configuration --> <sites> <site name="Default Web Site" id="1"> <bindings> <binding protocol="http" bindingInformation="*:80:www.example.com" /> </bindings> </site> <site name="InternalAPI" id="2"> <bindings> <binding protocol="http" bindingInformation="*:8081:api.internal" /> </bindings> </site> <site name="ReportingPortal" id="3"> <bindings> <binding protocol="http" bindingInformation="*:8082:reports.internal" /> </bindings> </site> </sites>

この設定を移行するには、次のコマンドとパラメータの例を使用します。

PS C:\migrations_workspace> eb migrate ` --sites "Default Web Site,InternalAPI,ReportingPortal" ` --copy-firewall-config ` --instance-type "c5.large"

eb migrate コマンドは、各サイトの ID と設定を保持するデプロイパッケージを作成します。コマンドはaws-windows-deployment-manifest.json、これらのサイトのデプロイ方法を定義する を生成します。次の例は、生成された json ファイルを示しています。

{ "manifestVersion": 1, "deployments": { "msDeploy": [ { "name": "DefaultWebSite", "parameters": { "appBundle": "DefaultWebSite.zip", "iisPath": "/", "iisWebSite": "Default Web Site" } } ], "custom": [ { "name": "InternalAPI", "scripts": { "install": { "file": "ebmigrateScripts\\install_site_InternalAPI.ps1" }, "restart": { "file": "ebmigrateScripts\\restart_site_InternalAPI.ps1" }, "uninstall": { "file": "ebmigrateScripts\\uninstall_site_InternalAPI.ps1" } } }, { "name": "ReportingPortal", "scripts": { "install": { "file": "ebmigrateScripts\\install_site_ReportingPortal.ps1" }, "restart": { "file": "ebmigrateScripts\\restart_site_ReportingPortal.ps1" }, "uninstall": { "file": "ebmigrateScripts\\uninstall_site_ReportingPortal.ps1" } } } ] } }

移行プロセスでは、元のルーティングロジックを維持する次の Application Load Balancer リスナールールが作成されます。

  • ポート 80 トラフィックがデフォルトウェブサイトにルーティングされる

  • ポート 8081 トラフィックは InternalAPI にルーティングされます

  • ポート 8082 トラフィックは ReportingPortal にルーティングされます

共有設定と依存関係

サイトが設定または依存関係を共有すると、 はこれらの関係を適切にeb migrate処理します。複数のサイトが共通の設定を共有する場合は、次の例を参照してください。

<!-- Shared configuration in applicationHost.config --> <location path="Default Web Site"> <system.webServer> <asp enableSessionState="true" /> <caching enabled="true" enableKernelCache="true" /> </system.webServer> </location>

移行プロセスは、次のタスクを完了します。

  1. サイト間での共有設定を識別します

  2. これらの設定を適用するための適切な PowerShell スクリプトを生成します

  3. 設定階層と継承を維持します

ベストプラクティス

移行したアプリケーションのネットワーク設定のベストプラクティスに従うことをお勧めします。以下のグループ化は、概要ガイドラインを提供します。

VPC の設計
  • AWS VPC 設計のベストプラクティスに従う

  • ロードバランサーと EC2 インスタンスに別々のサブネットを使用する

  • 適切なルートテーブルと NACLs

  • AWS サービスの VPC エンドポイントを検討する

高可用性
  • 複数のアベイラビリティゾーンにデプロイする

  • ロードバランサーに少なくとも 2 つのサブネットを使用する

  • AZs 間での自動スケーリングを設定する

  • 適切なヘルスチェックを実装する

セキュリティ
  • セキュリティのベストプラクティスに従う

  • セキュリティグループをプライマリアクセスコントロールとして使用する

  • ネットワークアクセスコントロールリスト (ACLs) を実装してセキュリティを強化する

  • VPC フローログのモニタリング

トラブルシューティング

一般的なネットワーク設定の問題には、次の領域が含まれます。次に、環境のネットワーク設定とヘルスに関する詳細情報を取得するためのコマンドの例を示します。

サブネット設定
# Verify subnet availability PS C:\migrations_workspace> aws ec2 describe-subnets --subnet-ids subnet-id # Check available IP addresses PS C:\migrations_workspace>aws ec2 describe-subnets --subnet-ids subnet-id --query 'Subnets[].AvailableIpAddressCount'
セキュリティグループアクセス
# Verify security group rules PS C:\migrations_workspace> aws ec2 describe-security-groups --group-ids sg-id # Test network connectivity PS C:\migrations_workspace> aws ec2 describe-network-interfaces --filters Name=group-id,Values=sg-id
ロードバランサーのヘルス
# Check load balancer health PS C:\migrations_workspace> aws elbv2 describe-target-health --target-group-arn arn:aws:elasticloadbalancing:region:account-id:targetgroup/group-name/group-id