

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 Apache Livy 啟用 HTTPS
<a name="enabling-https"></a>

如果您正在執行 Amazon EMR 7.3.0 或更早版本，則此主題是相關的。從 7.4.0 版開始，HTTPS 預設會使用 Apache Livy 啟用。

1. 佈建啟用了傳輸加密的 Amazon EMR 叢集。若要進一步了解加密，請參閱[加密靜態和傳輸中的資料](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-data-encryption.html)。

1. 建立稱為 `livy_ssl.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
   ```

1. 執行下列指令碼作為 Amazon EMR 步驟。此指令碼會將 `/etc/livy/conf/livy.conf` 修改為啟用 SSL。

   ```
   --steps '[{"Args":["s3://amzn-s3-demo-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"}]'
   ```

1. 重新啟動 Apache Livy 服務以使變更生效。若要重新啟動 Apache Livy，請參閱[停止並重新啟動程序](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-process-restart-stop-view.html#emr-process-restart)。

1. 測試用戶端現在是否可以使用 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: "]}
   ```