share facebook facebook twitter menu hatena pocket slack

2018.02.19 MON

AWS Glueの開発環境をDockerで構築する(その2)

河村 敏貴

WRITTEN BY 河村 敏貴

前回、Glueの開発環境をDockerで作りましたが、zeppelinコンテナを起動してホストからsshフォワードを実行して接続するという構成でホストを意識する必要がありましたが、せっかくzeppelinをdockerで作っているのでsshフォワードを行う部分もdockerで実現できないかと思い考えてみました。

今回作った構成

データを永続化するためにdataコンテナとsshフォワード用にssh forwardコンテナを追加することにしました。
そのためzeppelinコンテナからはssh forwardコンテナに接続しにいくことになります。
こうすることでssh forwardコンテナには名前でアクセスできるので、毎回設定変更する必要がなくなります。

手順

  • ssh forwardコンテナ作成
  • docker-compose.yml作成
  • 起動確認

ssh forwardコンテナ作成

以下のとおりDockerfileを作成します。

FROM ubuntu:latest
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get -y install openssh-client net-tools 

ADD ssh_forward.sh /home/ubuntu/ssh_forward.sh
RUN chmod 644 /home/ubuntu/ssh_forward.sh

CMD ["/bin/sh","/home/ubuntu/ssh_forward.sh"]

コンテナ起動時に実行するssh_forward.shを作成します。
起動時に環境変数で秘密鍵と接続先のIP or DNSを受取り鍵ファイルを作成して開発エンドポイントへ接続します。

#! /bin/sh

echo $SSH_RSA > dev_endpoint.pem
chmod 600 dev_endpoint.pem

ssh -g -i dev_endpoint.pem -NTL 9007:169.254.76.1:9007 glue@$HOST_ADDRESS -o StrictHostKeyChecking=no

ビルド実行

docker build -t ssh_forward .

docker-compose.ymlを作成

version: '2'
services:
  data:
    image: busybox
    container_name: app
    volumes:
      - /zeppelin/notebook

  zeppelin:
    image: apache/zeppelin:0.7.3
    ports: 
       - "8080:8080"
    volumes_from:
      - data
    restart: always
    links:
      - "ssh_server"

  ssh_server:
    image: ssh_forward
    environment:
       SSH_RSA: "[DevEndpoint接続用ssh秘密鍵]"
       HOST_ADDRESS: [GlueのDevEndpointのDNS or IP]

※DevEndpoint接続用ssh秘密鍵は改行コードを「¥n」に置換して1行にしてからセットしてください。

起動確認

busybox、apache/zeppellinについては予めdocker hubから取得しておいてください。
また、GlueのDevEndpointの設定も事前に必要になります。

docker-compose up

以下アドレスにアクセスして画面が表示されていれば成功です。
http://localhost:8080

これで全てdockerコンテナ上で完結できましたね。

元記事はこちら

AWS Glueの開発環境をDockerで構築する(その2)

河村 敏貴

河村 敏貴

クラウド業界に興味を持ち、業務系のアプリエンジニアからインフラエンジニア見習いに転身しました。日々新しい技術に触れることができる環境でもがきつつも楽しい毎日を過ごしています。 河村 敏貴

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。