Apache Livy で HTTPS を有効にする - Amazon EMR

Apache Livy で HTTPS を有効にする

  1. 転送時の暗号化を有効にして Amazon EMR クラスターをプロビジョニングします。暗号化の詳細については、「保管中と転送中のデータの暗号化」を参照してください。

  2. livy_ssh.sh というファイルを次の内容で作成します。

    #!/bin/bash KEYSTORE_FILE=`awk '/ssl.server.keystore.location/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` KEYSTORE_PASS=`awk '/ssl.server.keystore.password/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` KEY_PASS=`awk '/ssl.server.keystore.keypassword/{getline; print}' /etc/hadoop/conf/ssl-server.xml | sed -e 's/<[^>]*>//g' | tr -d ' \t\n\r\f'` echo "livy.keystore $KEYSTORE_FILE livy.keystore.password $KEYSTORE_PASS livy.key-password $KEY_PASS" | sudo tee -a /etc/livy/conf/livy.conf >/dev/null sudo systemctl restart livy-server.service
  3. 次のスクリプトを Amazon EMR ステップとして実行します。このスクリプトは SSL を有効化するように /etc/livy/conf/livy.conf を変更します。

    --steps '[{"Args":["s3://DOC-EXAMPLE-BUCKET/livy_ssl.sh"],"Type":"CUSTOM_JAR","ActionOnFailure":"CONTINUE","Jar":"s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar","Properties":"","Name":"Custom JAR"}]'
  4. Apache Livy サービスを再起動します。これにより変更が有効になります。Apache Livy を再起動する場合は、「プロセスの停止と再起動」を参照してください。

  5. クライアントが HTTPS を使用して通信できるようになったことをテストします。例えば、ジョブを送信するには、次のコードを実行します。

    curl -k -X POST --data '{"file": "local:///usr/lib/spark/examples/jars/spark-examples.jar", "className": "org.apache.spark.examples.SparkPi"}' \ -H "Content-Type: application/json" \ https://EMR_Master_Node_Host:8998/batches

    HTTPS を正常に有効にすると、Livy はコマンドが受け付けられ、バッチジョブが送信されたことを示す応答を送信します。

    {"id":1,"name":null,"owner":null,"proxyUser":null,"state":"starting","appId":null,"appInfo": {"driverLogUrl":null,"sparkUiUrl":null},"log":["stdout: ","\nstderr: ","\nYARN Diagnostics: "]}