AlibabaCloud FunctionComputeを使って日中間VPC接続を実現する


概要

前回投稿したSORACOM LTE-M Button for EnterpriseとAlibaba Cloud Function Computeを連携するの続きのお話です。

SORACOMしろボタンで日中間NWを構築するために、
AlibabaCloudのFunctionCompute(AWSで言うとLambda)で、日本と上海に構築してあるVPCをCENというサービスにアタッチする処理を用意しました。
処理の流れは以下のイメージです。

CEN(CloudEnterpriseNetwork)とは

CENとは、VPC間、またはVPCとオンプレ間をつなげられる、ネットワーク同士を接続するAlibabaCloudのサービスです。一押しサービスなのですが詳細は省きます。もっと知りたい方はドキュメントをご覧ください。

FunctionCompute(HTTPトリガー)でVPCをCENにアタッチさせる処理を書く

2リージョン(日本・上海)には既にVPCを構築しているものとします。
今回はPythonで記述しています。コードを書く際は、OpenAPIExplorerのSDKサンプルに助けられました。
コードは以下です。(どんな場合でもステータスコード200を返すようになっていますがあしからず…)
※aliyunsdkをアップロードしておく必要があります

attachVPC_to_CEN.py
attachVPC_to_CEN.py
/#!/usr/bin/env python
/#coding=utf-8
/#CENがデタッチされていることを確認
import logging
import json
import requests
import os
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.acs_exception.exceptions import ClientException
from aliyunsdkcore.acs_exception.exceptions import ServerException
from aliyunsdkcbn.request.v20170912.AttachCenChildInstanceRequest import AttachCenChildInstanceRequest

client = AcsClient(os.environ['AccessKey'], os.environ['AccesskeySecret'], 'ap-northeast-1')

request = AttachCenChildInstanceRequest()
request.set_accept_format('json')

/#CENに日本のVPCをアタッチする
request.set_CenId("アタッチ先CENのID")
request.set_ChildInstanceId("アタッチしたい日本VPCのID")
request.set_ChildInstanceType("VPC")
request.set_ChildInstanceRegionId("ap-northeast-1")

request2 = AttachCenChildInstanceRequest()
request2.set_accept_format('json')

/#CENに上海のVPCをアタッチする
request2.set_CenId("アタッチ先CENのID")
request2.set_ChildInstanceId("アタッチしたい上海VPCのID")
request2.set_ChildInstanceType("VPC")
request2.set_ChildInstanceRegionId("cn-shanghai")

/#ボタンにステータスコード200を返す
jsonDict = {"StatusCode":200}
jsonDict=json.dumps(jsonDict)

/#main
def handler(environ, start_response):
    context = environ['fc.context']
    request_uri = environ['fc.request_uri']
    for k, v in environ.items():
        if k.startswith('HTTP_'):
            pass
    response = client.do_action_with_exception(request)
    response2 = client.do_action_with_exception(request2)
    print(str(response, encoding='utf-8'))
    print(str(response2, encoding='utf-8'))
    status = '200 OK'
    response_headers = [('Content-type', 'text/plain')]
    start_response(status, response_headers)
    return [bytes(jsonDict,'utf-8')]

上記処理を記載したFCのHTTPトリガーエンドポイントを、
SORACOMBeamに設定します。

SORACOMBeamの設定

参考までにスクリーンショットを記載します。

SORACOMBeam設定

Unified Endpoint設定

UDP→HTTPS設定


※ヘッダ操作、レスポンスの各設定項目はOFFなので省きました。事前共有鍵は用いてないです。

あとはボタンをぽちっと押すだけで、
日中間NWの構築ができます!

まとめ

簡単ではありますが、FunctionComputeを使ってVPCをCENにアタッチする方法と、SORACOMBeamの設定値をご紹介しました。
どなたかの参考になれば幸いです!