1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-04-04

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

SORACOMしろボタンで日中間NWを構築するために、
AlibabaCloudのFunctionCompute(AWSで言うとLambda)で、日本と上海に構築してあるVPCをCENというサービスにアタッチする処理を用意しました。
処理の流れは以下のイメージです。
3f6nm-vahls.gif
#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設定
beam1.png

####Unified Endpoint設定
beam2.png
####UDP→HTTPS設定
beam3.png
※ヘッダ操作、レスポンスの各設定項目はOFFなので省きました。事前共有鍵は用いてないです。

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

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

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?