IoT 디바이스에 직접 액세스 할 수있는 "SORACOM Gate"의 GatePeer를 ECS EC2 타입으로 스케일 아웃 할 수있게한다
SORACOM Gate란?
SORACOM에서 제공하는 SIM 카드(SORACOM Air)를 IoT 디바이스에 삽입하여 IoT 디바이스와 AWS VPC 간에 프라이빗 IP 주소로 원격 액세스할 수 있는 서비스입니다.
htps : // 소라코 m. jp/세 rゔぃ세 s/가테/
이 서비스를 사용하면 AWS VPC의 인스턴스에서 매우 쉽게 IoT 디바이스에 액세스할 수 있습니다!
이미지는 이런 느낌↓
방법
ECS EC2 타입의 경우, 공식적으로 안내되고 있다.
SORACOM Canal 구축
AWS에서 ECS 클러스터 생성
EC2 타입으로 생성합니다.
절차
AUTO SCALING 그룹을 만들고 시작 설정의 사용자 데이터 설정
이쪽이 이번 간입니다.
아래를 사용자 데이터로 설정합니다. 컨테이너 인스턴스는 Amazon ECS-optimized Amazon Linux 2 AMI를 활용합니다.
사용자 데이터
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
# ↑ ユーザーデータの実行ログを/var/log/user-data.logで確認できるように
export FILE_VXLAN="/opt/gate_init_vxlan.sh"
export FILE_JQ="/usr/local/bin/jq"
export FILE_SORACOM="/usr/local/bin/soracom"
export PATH="/usr/local/bin":"$PATH"
# NOTE: 下記パラメーターはssmのパラメータストアやgit-cryptなど使ってください
export VPG_ID="soracom VPGのIDを設定する"
export AUTH_KEY_ID="soracom auth-key-idを設定する"
export AUTH_KEY="soracom auth-keyを設定する"
# ecsクラスター設定
echo ECS_CLUSTER=gate-peer >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
main() {
# soracom cliの返却値がjsonなのでjqコマンドをつかう。
if [ ! -e $FILE_JQ ];then
curl -o $FILE_JQ -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
chmod +x $FILE_JQ
fi
# soracom cliインストール
if [ ! -e $FILE_SORACOM ];then
curl -o /root/soracom_0.5.0_linux_amd64.tar.gz -L https://github.com/soracom/soracom-cli/releases/download/v0.5.0/soracom_0.5.0_linux_amd64.tar.gz
tar xvf /root/soracom_0.5.0_linux_amd64.tar.gz -C /root
cp /root/soracom_0.5.0_linux_amd64/soracom /usr/local/bin/.
mkdir /root/.soracom
# soracom cliの認証情報を生成
echo "{\"sandbox\":false,\"coverageType\":\"jp\",\"authKeyId\":\"${AUTH_KEY_ID}\",\"authKey\":\"${AUTH_KEY}\",\"registerPaymentMethod\":false}" > /root/.soracom/default.json
chmod 700 /root/.soracom/default.json
fi
LOCAL_IP=`ifconfig eth0 | awk '/inet / {gsub("addr:", "", $2); print $2}'`
# ECSインスタンスをgatepeerとしてsoracomに登録し、登録したgatepeerと紐づくsoracom側VPC内のip取得
echo "get GatePeer InnerIP"
GATE_PEER_INNER_IP=`soracom vpg register-gate-peer --outer-ip-address "$LOCAL_IP" --vpg-id "$VPG_ID" | jq -r '.innerIpAddress'`
# soracom側VPC内のGatePeer ip一覧取得
echo "get soracom GatePeer IPs"
SORACOM_GATE_PEER_IPS=`soracom vpg list-gate-peers --vpg-id $VPG_ID | jq -r '.[] | select(.ownedByCustomer==false) | .outerIpAddress' | tr '\n' ' '`
# vxlanで論理L2ネットワークを構築する
if [ ! -e $FILE_VXLAN ];then
curl -o $FILE_VXLAN -l https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh
chmod +x $FILE_VXLAN
fi
echo "${FILE_VXLAN} eth0 $LOCAL_IP vxlan0 $GATE_PEER_INNER_IP 9 $SORACOM_GATE_PEER_IPS"
${FILE_VXLAN} eth0 $LOCAL_IP vxlan0 $GATE_PEER_INNER_IP 9 $SORACOM_GATE_PEER_IPS
}
main
※ 주의점으로서 유저 데이터는 스케일 아웃시의 1회 밖에 실행되지 않기 때문에, 재기동시 등, vxlan의 재설정이 필요하게 됩니다. 위의 사용자 데이터는 다시 시작할 때까지 고려하지 않습니다.
ECS 작업 정의의 네트워크 모드를 Host로 설정
ECS 인스턴스의 호스트 측에서 GatePeer를 구성하므로 ECS 태스크 정의의 네트워크 모드를 Host로 설정하여 호스트 측 네트워크 인터페이스를 사용할 수 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마조네 CS / ㄱ st / ゔ ぇぺ ぺ ぐ で / c 어 _ c ぅ s r. HTML
Gate Peer가 될 ECS 인스턴스를 SORACOM에 등록
Gate 사용
Gate Peer에서 기기에 연결할 수 있는지 확인
이상으로 완료입니다!
조금 귀찮습니다만 Nat 게이트웨이 방식이라면 스케일 아웃 할 수 없기 때문에 이 방법이 현시점에서 제일 좋을 것 같은 생각이 듭니다.
Reference
이 문제에 관하여(IoT 디바이스에 직접 액세스 할 수있는 "SORACOM Gate"의 GatePeer를 ECS EC2 타입으로 스케일 아웃 할 수있게한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tarumzu/items/7d5c44c63bf65a532353
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ECS EC2 타입의 경우, 공식적으로 안내되고 있다.
SORACOM Canal 구축
AWS에서 ECS 클러스터 생성
EC2 타입으로 생성합니다.
절차
AUTO SCALING 그룹을 만들고 시작 설정의 사용자 데이터 설정
이쪽이 이번 간입니다.
아래를 사용자 데이터로 설정합니다. 컨테이너 인스턴스는 Amazon ECS-optimized Amazon Linux 2 AMI를 활용합니다.
사용자 데이터
#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
# ↑ ユーザーデータの実行ログを/var/log/user-data.logで確認できるように
export FILE_VXLAN="/opt/gate_init_vxlan.sh"
export FILE_JQ="/usr/local/bin/jq"
export FILE_SORACOM="/usr/local/bin/soracom"
export PATH="/usr/local/bin":"$PATH"
# NOTE: 下記パラメーターはssmのパラメータストアやgit-cryptなど使ってください
export VPG_ID="soracom VPGのIDを設定する"
export AUTH_KEY_ID="soracom auth-key-idを設定する"
export AUTH_KEY="soracom auth-keyを設定する"
# ecsクラスター設定
echo ECS_CLUSTER=gate-peer >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.config;
main() {
# soracom cliの返却値がjsonなのでjqコマンドをつかう。
if [ ! -e $FILE_JQ ];then
curl -o $FILE_JQ -L https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
chmod +x $FILE_JQ
fi
# soracom cliインストール
if [ ! -e $FILE_SORACOM ];then
curl -o /root/soracom_0.5.0_linux_amd64.tar.gz -L https://github.com/soracom/soracom-cli/releases/download/v0.5.0/soracom_0.5.0_linux_amd64.tar.gz
tar xvf /root/soracom_0.5.0_linux_amd64.tar.gz -C /root
cp /root/soracom_0.5.0_linux_amd64/soracom /usr/local/bin/.
mkdir /root/.soracom
# soracom cliの認証情報を生成
echo "{\"sandbox\":false,\"coverageType\":\"jp\",\"authKeyId\":\"${AUTH_KEY_ID}\",\"authKey\":\"${AUTH_KEY}\",\"registerPaymentMethod\":false}" > /root/.soracom/default.json
chmod 700 /root/.soracom/default.json
fi
LOCAL_IP=`ifconfig eth0 | awk '/inet / {gsub("addr:", "", $2); print $2}'`
# ECSインスタンスをgatepeerとしてsoracomに登録し、登録したgatepeerと紐づくsoracom側VPC内のip取得
echo "get GatePeer InnerIP"
GATE_PEER_INNER_IP=`soracom vpg register-gate-peer --outer-ip-address "$LOCAL_IP" --vpg-id "$VPG_ID" | jq -r '.innerIpAddress'`
# soracom側VPC内のGatePeer ip一覧取得
echo "get soracom GatePeer IPs"
SORACOM_GATE_PEER_IPS=`soracom vpg list-gate-peers --vpg-id $VPG_ID | jq -r '.[] | select(.ownedByCustomer==false) | .outerIpAddress' | tr '\n' ' '`
# vxlanで論理L2ネットワークを構築する
if [ ! -e $FILE_VXLAN ];then
curl -o $FILE_VXLAN -l https://soracom-files.s3-ap-northeast-1.amazonaws.com/gate-peer-tools/gate_init_vxlan.sh
chmod +x $FILE_VXLAN
fi
echo "${FILE_VXLAN} eth0 $LOCAL_IP vxlan0 $GATE_PEER_INNER_IP 9 $SORACOM_GATE_PEER_IPS"
${FILE_VXLAN} eth0 $LOCAL_IP vxlan0 $GATE_PEER_INNER_IP 9 $SORACOM_GATE_PEER_IPS
}
main
※ 주의점으로서 유저 데이터는 스케일 아웃시의 1회 밖에 실행되지 않기 때문에, 재기동시 등, vxlan의 재설정이 필요하게 됩니다. 위의 사용자 데이터는 다시 시작할 때까지 고려하지 않습니다.
ECS 작업 정의의 네트워크 모드를 Host로 설정
ECS 인스턴스의 호스트 측에서 GatePeer를 구성하므로 ECS 태스크 정의의 네트워크 모드를 Host로 설정하여 호스트 측 네트워크 인터페이스를 사용할 수 있습니다.
htps : // / cs. 아 ws. 아마존. 이 m / 그럼 _ jp / 아마조네 CS / ㄱ st / ゔ ぇぺ ぺ ぐ で / c 어 _ c ぅ s r. HTML
Gate Peer가 될 ECS 인스턴스를 SORACOM에 등록
Gate 사용
Gate Peer에서 기기에 연결할 수 있는지 확인
이상으로 완료입니다!
조금 귀찮습니다만 Nat 게이트웨이 방식이라면 스케일 아웃 할 수 없기 때문에 이 방법이 현시점에서 제일 좋을 것 같은 생각이 듭니다.
Reference
이 문제에 관하여(IoT 디바이스에 직접 액세스 할 수있는 "SORACOM Gate"의 GatePeer를 ECS EC2 타입으로 스케일 아웃 할 수있게한다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tarumzu/items/7d5c44c63bf65a532353텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)