Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
takayuki_tanaka
Product and Topic Expert
Product and Topic Expert
856

はじめに

今回は SAP Private Link Service を用いて、顧客が管理するAWSアカウント上のVPC内に設置されたリソース、中でも今回は色々なユースケースが想定されるAmazon EC2への接続を行います。なお、SAP Private Link Service の概要やAmazon S3への接続については、前回のブログ記事をご参照ください。

 

目次

  1. 実装アーキテクチャと全体像
  2. 手順1 - Amazon EC2 でNginxをセットアップする
  3. 手順2 - 顧客管理AWS環境とSAP BTPの接続
  4. 手順3 - Nodeアプリケーションの構築とデプロイ
  5. 手順4 - アプリケーションの実行テスト

 

1. 実装アーキテクチャと全体像

annotate_00_overview.png

SAP BTP上からAWSグローバルネットワーク (AWS PrivateLink) を経由してEC2にアクセスする場合、顧客管理のVPC側にVPCエンドポイントサービスを作成し、接続口を開く必要があります。ここをポイントする形でSAP Private Link Serviceインスタンスを作成することで、接続を確立することが可能です。

SAP Private Link Serviceインスタンスを作成すると、SAP BTP, Cloud Foundry環境上にエンドポイントが生成され、ここにリクエストを送信することで、AWSグローバルネットワーク (AWS PrivateLink) を経由してAWSリソース側へリクエストが転送されます。

AWS 側では、VPCエンドポイントサービスを作成する際にNetwork Load Balancerをアタッチすることが必要です。このNetwork Load BalancerのターゲットグループとしてAmazon EC2を登録します。これにより、VPCエンドポイントサービスを経由して受信したトラフィックをターゲットグループ内のEC2へ転送することが可能となります。

それでは次章から、このアーキテクチャを実装するために必要な設定項目についてみていきましょう。

 

2. 手順1 - Amazon EC2 でNginxをセットアップする

トラフィックを最終的に受け付けるAmazon EC2上で、Webサーバーの機能を提供するNginxをセットアップします。参考文献に記載の 「(*1) Qiita.com - EC2にnginxをセットアップする」 を参照してください。デフォルトの状態で、ポート80にてHTTPのトラフィックを受け付け、「Welcome to nginx!」 というHTMLページを返す設定になっているはずですが、もしなっていない場合には適宜Nginxの設定ファイルに対して修正を行ってください。

 

3. 手順2 - 顧客管理AWS環境とSAP BTPの接続

本題のSPA Private Link Serviceのセットアップを行います。こちらでは主に参考文献に記載の「(*2) SAP Tutorials – Connect SAP Private Link Service to AWS Private Link Service」 にしたがって設定を行うことが可能です。

ただしこのチュートリアルに記載がない部分ですが、自分の場合はAWS側でVPCエンドポイントサービスを作成する際に「Allow Principals」に「*」を設定する必要がありました。VPCエンドポイントサービスに接続を行うことが許可される主体についての設定項目で、これに「*」を設定することで、SAPが管理するAWSアカウントから接続が行えるようになります。

annotate_80_AWS_VPCEndpoint_AllowPrincipals.png

Spoiler
追記:
SAP Help Portalにより安全な設定についての記述があります。上記設定では全てのAWSアカウントからの接続を許可しているため、実際の環境では好ましい設定ではありません。こちらを参考として設定を行うことを推奨します。

SAP Private Link Serviceインスタンスを作成する際に要求される接続先AWSサービスに関するJSONデータには、以下のような情報を渡します。今回はNetwork Load Balancerのターゲットグループが1つのみなので「desiredAZs」 には 「1」 を指定しています。

 

{
    "desiredAZs": 1,
    "serviceName": "com.amazonaws.vpce.<リージョン>.<VPCエンドポイントサービスID> "
}

 

なお、本ブログに沿って実証を行う際には 「btp-privatelink-vpce」という名前でSAP Private Link Serviceのインスタンスを作成してください。このインスタンス名をキーにしてNodeアプリケーションからSAP Private Link Serviceへアクセスが行われます。

 

AWS側の設定項目については、以下のように設定を行いましょう。

まずVPCエンドポイントサービスにNetwork Load Balancer をアタッチします。

annotate_81_AWS_VPCEndpoint_Loadbalancers.png

Network Load Balancerにはポート80でのTCPリスナーを設定し、宛先として次に記載のターゲットグループを指定します。

annotate_82_AWS_NLB_Listeners.png

ターゲットグループには先述のAmazon EC2を登録しておきます。

annotate_84_AWS_TargetGroup.png

Amazon EC2、Network Load BalancerにはVPCのCIDR範囲からのHTTPトラフィックを許可するセキュリティグループを設定します。

annotate_83_AWS_NLB_SecurityGroup.png

4. 手順3 - Nodeアプリケーションの構築とデプロイ

今回はSAP BTPからAmazon EC2へ接続を行うNodeアプリケーションを用意しました。参考文献に記載の 「(*3) GitHub – btp-privatelink-to-ec2」 のリポジトリからCloneを行なってください。その後、cf login コマンドを利用してCloud Foundry環境にログインしてSpaceを指定した状態で、以下のコマンドを実行してアプリケーションをデプロイします。

 

cf push

 

デプロイが完了すると、SAP BTP Cockpit上からアプリケーションのURLが入手できます。

annotate_90_applicationDashboard.png

5. 手順4 - アプリケーションの実行テスト

アプリケーションのURLにアクセスすると、以下のようにNginxのWelcomeページが表示されるはずです。

annotate_91_nginxViaPLS.png

Nginxのログを確認してみても、無事にaxiosによるHTTPトラフィックが到達していることが確認できます。

annotate_92_nginxAccessLog.png

 

まとめ

本ブログでは SAP Private Link Service を用いてAmazon EC2 上で稼働しているNginxに接続を行いました。SAP Private Link Serviceの真価を発揮する、VPC内のAZサービスへの接続をぜひお試しください。

 

参考文献