#概要
前回投稿した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
/#!/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の設定値をご紹介しました。
どなたかの参考になれば幸いです!