Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた④

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Customer managed keys for notebooks 」に関する内容を翻訳し、まとめてみました。

本記事のリンクは下記参照。
■リンク
Customer managed keys for notebooks
Enterprise Cloud Service Public Preview on AWS

エンタープライズセキュリティ

今回の AWS 上での Databricks のエンタープライズクラウドサービスにおけるエンタープライズセキュリティの主な内容は以下の4つです。
今回は、この5つの内の「Notebook の為の顧客管理キー」について、紹介したいと思います。

■エンタープライズセキュリティ
①Data Lake の真のポテンシャルを妨げないセキュリティ
②顧客管理VPC
③セキュアなクラスタ接続
④Notebook の為の顧客管理キー
⑤IAM 証明パススルー

Notebook の為の顧客管理キー

概要

セキュリティを重視する組織は、パブリッククラウドの使用、SaaS アプリケーション、そしてサードパーティサービスのリスクを評価するリスク管理プロセスがあります。
サードパーティのサービスプロバイダのリスクを軽減することで、外部サービスを使用するための強力なケースを構築できます。一部の規制された産業では、管理キーを使用して特定のタイプのデータを暗号化する必要があります。
これは、個人データやその他の機密情報を定期的に使用する部門にとって特に重要です。

ワークスペースノートブックは、主にデータベースの Databricks コントロールプレーン内に保存されます。Databricks プラットフォームでは独自のキーでノートブックを暗号化でき、キーはワークスペースの作成時に提供する必要があります。

操作方法

顧客管理のキーは、コントロールプレーンのワークスペースのノートブックを暗号化します。顧客は、クラウドサービスのキー管理システムのIDで指定された顧客管理キー(CMK)と呼ばれる取り消し可能な秘密キーを提供します。AWS では、顧客キーは AWS Key Management Service(KMS)によって管理されます。

さらに、Databricks では、ワークスペースごとに Databricks が管理するキー(DMK)を作成します。 DMKは、データ暗号化キー(DEK)と呼ばれる結合暗号化キーを生成するために、CMK にラップされます。Databricks は DEK を使用して、ワークスペースのノートブックを暗号化します。

DEK は、数回の読み込み/書き取り操作のためにメモリにキャッシュされ、定期的にメモリから削除されるため、新しいリクエストがあった場合は、クラウドサービスの鍵管理システムへの別のリクエストが必要になります。
キーを削除、あるいは取り消すと、キャッシュ時間間隔の終了時にノートブックの読み取りや書き込みが失敗します。
image.png

ノートブック用の顧客管理キーの追加

顧客管理のノートブックを追加するには、アカウント API を使用してワークスペースを作成する際に CMK を追加する必要があります。

CMK の設定方法:

  1. AWS KMS で対称キーを作成または選択するには、「対称 CMK の作成」または「キーの表示」の手順に従います。
  2. ワークスペース作成の際は、下記の3つの値が必要となるのでコピーを取りましょう。
  • Key ARN
  • Key alias
  • Key region
  1. キーポリシータブで、ポリシー表示に切り替えてキーポリシーを編集し、Databricks がキーを使用して暗号化および復号化処理を実行できるようにします。下記の様に編集します。
[crayon-5f66368503eb0614030939/]
  1. キーを登録するには、「アカウント API を使用して新しいワークスペースを作成する」、の「ステップ 4:ノートブック用の顧客管理キーを構成する(オプション)」の指示に従います。

ステップ 4:ノートブック用の顧客管理キーを構成する

おわりに

Notebook の為の顧客管理キーに関するまとめは以上です。
詳細については、元記事をご参照ください。


Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた③

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Secure Cluster Connectivity 」に関する内容を翻訳し、まとめてみました。

本記事のリンクは下記参照。
■リンク
Secure Cluster Connectivity
Enterprise Cloud Service Public Preview on AWS

エンタープライズセキュリティ

今回の AWS 上での Databricks のエンタープライズクラウドサービスにおけるエンタープライズセキュリティの主な内容は以下の4つです。
今回は、この5つの内の「セキュアなクラスタ接続」について、紹介したいと思います。

■エンタープライズセキュリティ
①Data Lake の真のポテンシャルを妨げないセキュリティ
②顧客管理VPC
③セキュアなクラスタ接続
④Notebook の為の顧客管理キー
⑤IAM 証明パススルー

セキュアなクラスタ接続

概要

いくつかのデプロイメントタイプと Databricks サブスクリプションには、安全なクラスタ接続がオプションで含まれています。安全なクラスタ接続により、顧客の VPC には開いているポートも無く、Databricks ランタイムワーカにはパブリック IP アドレスもありません。一部の API では、これはパブリック IP(NPIP)と呼ばれます。

  • ネットワークレベルで各クラスタは、クラスタ作成中にコントロールプレーンセキュアクラスタ接続リレーへの接続を開始
  • クラスタはポート 443(HTTPS)を使用してこのセキュアな接続を確立し、Web アプリケーションや REST API に使用されるものとは異なる IP アドレスを使用
  • 新しい Databricks ランタイムジョブの開始やクラスタ管理の実行など、コントロールプレーンが論理的に開始するアクションはリバーストンネルを介してクラスタへの要求として送信される
  • データプレーン(お客様のVPC)には開いているポートが無く、Databricks ランタイムワーカにはパブリック IP アドレスは無い

クラスタ接続のメリット

  • 簡単なネットワーク管理
    • セキュリティグループでのポート構成やネットワークピアリング構成が不要
  • より簡単な承認
    • 優れたセキュリティと単純なネットワーク管理のため、情報管理チームが Databricks を PaaS プロバイダとして承認するのがより簡単に image.png

安全なクラスタ接続の使用

セキュアなクラスタ接続をワークスペースに利用する場合は、マルチワークスペース API を使用し新しいワークスペースを作成する必要があります。既存のワークスペースにセキュアなクラスタ接続の追加はできません。

おわりに

セキュアなクラスタ接続についての紹介は以上です。詳し内容については、本記事をご参照ください。


databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~

はじめに

公式ドキュメントやってみたシリーズ第2弾です。
今回のテーマは
「Secure access to S3 buckets using instance profiles」です。
インスタンスプロファイルを使用してセキュアにS3バケットにアクセスする方法をdatabricks公式ドキュメントの手順に従ってやってみたいと思います。

今回の作業内容

今回行う作業は以下の8項目です。

※0.ターゲットS3バケットの作成

  1. S3バケットにアクセスするためのインスタンスプロファイルを作成
  2. ターゲットのS3バケットのバケットポリシーの作成
  3. databricks on AWSデプロイ時のIAMロールの確認
  4. ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与
  5. インスタンスプロファイルをdatabricksにアタッチ
  6. インスタンスプロファイルを使用してクラスタを立ち上げる
  7. ノートブックから今回設定したS3へのアクセスを確認する

作業自体がやや長いのと、
細かいロールやポリシーの設定があるため

  • 前編(0~3)→AWS側の設定
  • 後編(4~7)→databricks側の設定

に分けてやっていきたいと思います。

本題

では、本題に入っていきましょう。

5. インスタンスプロファイルをdatabricksにアタッチ

前編.1で作成したIAMロールを選択し、インスタンスプロファイルARNをコピーします。
image.png

databricksにログインして
右側の人間マークからdatabricks adminコンソールに入る、
image.png

Instance Profileに移動、
image.png

Add Instance Profileをクリック。
image.png

Instance Profile ARNに先ほどコピーしたIAMロールインスタンスプロファイルARNを貼り付けてAddをクリック。
その下の2つの項目に関しては今回はチェックしないで進めたいと思います。
image.png

6. インスタンスプロファイルを使用してクラスタを立ち上げる

先ほど作成したインスタンスプロファイルを使用してクラスターの立ち上げを行います。
すでに作成済みもしくは新しいクラスタのページに移動します。
Advanced Optionsをクリックして項目を表示させると、一番下にInstance Profileを記入する欄がありますのでクリック
先ほど設定したInstance Profileがあると思うので、それを設定してクラスターを立ち上げます。
image.png

7. ノートブックから今回設定したS3へのアクセスを確認する

新しくノートブックを開きます。
名前はなんでもOKで、言語はPython、クラスタはインスタンスプロファイルを設定したものを選択してください。
ノートブックの画面を開いたら下記を実行します。s3-bucket-nameは今回のターゲットS3バケット名を記入します。

[crayon-5f66368504547466482904/]

このようにターゲットS3バケットの中身が表示されたら無事今回の作業がうまくいっていることになります。
(この例ではターゲットS3バケット内にsampleとsample2という2つのフォルダを入れているのでこのような結果表示になっています。)
image.png

注)ターゲットS3バケットが空の状態でスクリプトを実行すると対象のディレクトリがありませんという内容のエラーを吐くので、必ずフォルダもしくはファイルを最低1つ入れた状態にしてください。

終わりに

以上がdatabricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(後編)~でした。
今回の内容を活用して、ぜひご自身の目的に合ったセキュアなdatabricks環境構築に取り組んでみてください。
最後までお読みいただきありがとうございました。
本記事がどなたかのお役に立てていれば幸いです。

※本内容はこちらの公式ドキュメントを参考にしております。
https://docs.databricks.com/administration-guide/cloud-configurations/aws/instance-profiles.html


databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(前編)~

はじめに

公式ドキュメントやってみたシリーズ第2弾です。
今回のテーマは
「Secure access to S3 buckets using instance profiles」です。
インスタンスプロファイルを使用してセキュアにS3バケットにアクセスする方法をdatabricks公式ドキュメントの手順に従ってやってみたいと思います。

今回の作業内容

今回行う作業は以下の8項目です。

※0.ターゲットS3バケットの作成

  1. S3バケットにアクセスするためのインスタンスプロファイルを作成
  2. ターゲットのS3バケットのバケットポリシーの作成
  3. databricks on AWSデプロイ時のIAMロールの確認
  4. ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与
  5. インスタンスプロファイルをdatabricksにアタッチ
  6. インスタンスプロファイルを使用してクラスタを立ち上げる
  7. ノートブックから今回設定したS3へのアクセスを確認する

作業自体がやや長いのと、
細かいロールやポリシーの設定があるため

  • 前編(0~4)→AWS側の設定
  • 後編(5~7)→databricks側の設定

に分けてやっていきたいと思います。

本題

では、本題に入っていきましょう。

0.ターゲットS3バケットの作成

今回の内容では、databricks on AWSのデプロイ時に使用したS3バケットとは別のS3バケットが必要となりますので、お持ちでない方は新たに作成しましょう。
既存のバケットを使用するという方は次に進みます。

1.S3バケットにアクセスするためのインスタンスプロファイルを作成

AWSにログインしてコンソール画面に入ります。
IAMのページに移動します。
サイドバーからロールを選択してロールの作成をクリック。
image.png

信頼されたエンティティの種類を選択→AWSサービス
ユースケースの選択→EC2
を選択して、次のステップに進みます。
image.png

アクセス権限、タグの設定は特に設定不要なのでそのまま進んでOKです。
最後の確認ページでロール名を記入してロールの作成をクリック。
image.png

作成したロールに戻ってインラインポリシーの追加をクリック。
ポリシーの作成ページでJSONのタブを選択し、以下スクリプトをコピぺ。
image.png

s3-bucket-name のところは今回使用するターゲットS3バケット名を記入してください。

[crayon-5f6636850490e752761896/]

ポリシーの確認に進んでポリシー名を記入し、ポリシーの作成をクリックでOK
作成したロールにもどって、ロールARNをコピーしておきましょう。
image.png

2.ターゲットのS3バケットのバケットポリシーの作成

AWSコンソール画面にもどってS3設定画面に移動します。
ターゲットS3バケット、アクセス権限、バケットポリシーの順で移動します。
バケットポリシーエディター欄で以下スクリプトをコピペします。
arn:aws:iam::aws-account-id-databricks:role/iam-role-for-s3-accessの部分は1.でコピーしたロールARNを貼り付けます。
s3-bucket-nameは今回使用するターゲットS3バケット名を記入します。

[crayon-5f6636850491e114567648/]

こんな感じでコピペできたら保存をクリックします。
image.png

S3バケットポリシーの設定は以上です。

3.databricks on AWSデプロイ時のIAMロールの確認

https://accounts.cloud.databricks.com/registration.html#login
からdatabricksにログインします。
サイドバーからAWS Accountを選択しデプロイに使用したロールARNを確認します。

image.png

4.ターゲットS3バケットにアクセスするためのIAMロールをEC2に付与

AWSの、ロール設定画面に戻ります。
3.で確認したdatabricks on AWS デプロイ時に使用したロールを選択します。
ポリシーの編集で以下スクリプトをコピペします。
arn:aws:iam::aws-account-id-databricks:role/iam-role-for-s3-accessには1.で作成したIAMロールのARNを記入します。
image.png
image.png

[crayon-5f6636850492b964343503/]

編集を終えたらポリシーの確認、変更の保存でOKです。

おわりに

databricks公式ドキュメントやってみた~Secure access to S3 buckets using instance profiles(前編)~
は以上です。
前半でAWS側の設定は完了となりましたので、後半ではそれを使ってdatabricks側の設定作業を行なっていきます。
お読みいただきありがとうございました。
引き続き後半もご覧いただけると幸いです。


Enterprise Cloud Service Public Preview on AWS - Enterprise Security 編についてまとめて和訳してみた②-2

はじめに

今回は、2020年6月12日に Vinay Wagh 氏と Abhinav Garg 氏によって投稿されました「 Enterprise Cloud Service Public Preview on AWS 」で紹介されている Enterprise Security の1つである「 Customer-managed VPC 」のリージョナルエンドポイントについて、まとめました。

本記事のリンクは下記参照。
■リンク
Customer-managed VPC
Enterprise Cloud Service Public Preview on AWS

リージョナルエンドポイント(セキュアなクラスタ接続限定)

カスタママネージド VPC を使用してセキュアなクラスタ接続を行う場合は、AWS グローバルエンドポイントと比較して、より直接的な接続を実現し、コスト削減のために AWS サービスへのリージョナル VPC エンドポイントのみを使用するよう VPC を構成可能です。
以下の4つが、カスタマー管理のVPC を持つ Databricks ワークスペースが到達する必要がある AWS サービスです。

  • STS
  • S3
  • Kinesis
  • RDS (※デフォルトの Databricks メタストアを使用する場合のみ VPC から RDS サービスへの接続が必要)

RDS 以外の3つのサービスにおける、VPCエンドポイントを使用したネットワークの動作、ノートブック、またはクラスターレベルの Spark 構成による動作の変化や構成について説明します。

STS リージョナル VPC エンドポイント概要

AWS STSへのデータプレーンアクセスの場合:

  • デフォルトでは VPC エンドポイントを設定すると、トラフィックは S3 VPC エンドポイントをバイパスし、グローバル STS URL を使用して送信します。全てのトラフィックがVPCエンドポイントを通過するようにするには、追加の設定が必要です。
  • 関連する Spark 構成をノートブック、またはクラスターレベルに追加すると、STS VPC エンドポイントを介してトラフィックが出ます。

Databricks では、アクセスが一時的に使用される場合に備えて、STS グローバル URL へのアクセスを許可する出口装置を構成することをお勧めします。たとえば、最初のワークスペース作成後、ノートブック、またはクラスタ Spark 構成とクラスターポリシのセットアップ前に、Databricks はグローバル URL を使用しなくてはいけません。

S3 リージョナル VPC エンドポイント概要

コントロールプレーン内のアーティファクトとログ保存のための S3 へのデータプレーンアクセスのために VPC エンドポイントを構成すると、次のような動作になります。

  • us-west-2、us-east-1 と us-east-2、リージョンへのトラフィックは S3 VPC エンドポイントを使用
  • us-west-1 のリージョンの場合、関連するエンドポイントがクロスリージョンのため、S3 VPC エンドポイントはバイパスされる

DBFS ルートストレージ用のS3へのデータプレーンアクセスと、VPCリージョン内の独自のS3データストレージ用。

  • デフォルトでは、VPC エンドポイントを設定すると、トラフィックは S3 VPC エンドポイントをバイパスし、グローバル S3 URL を使用して送信します。全てのトラフィックが VPC エンドポイントを通過するようにするには、追加の設定が必要です。
  • ノートブック、またはクラスタレベルで関連する Spark 構成を追加すると、トラフィックは S3 VPC エンドポイントを使用して送信されます

Databricks では、アクセスが一時的に使用される場合に備えて、S3 グローバル URL へのアクセスを許可する出口装置を構成することをお勧めします。たとえば、最初のワークスペース作成後、ノートブック、またはクラスタ Spark 構成とクラスターポリシのセットアップ前に、Databricks はグローバル URL を使用しなくてはいけません。

Kinesis リージョナル VPC エンドポイント概要

コントロールプレーンのロギングおよび使用状況データエンドポイントのKinesisへのデータプレーンアクセスの場合:

  • us-west-2、us-east-1 と us-east-2、リージョンへのトラフィックは Kinesis VPC エンドポイントを使用
  • us-west-1 のリージョンの場合、関連するエンドポイントがクロスリージョンのため、Kinesis VPC エンドポイントはバイパスされる

VPCリージョン内の顧客データストリームのKinesisへのデータプレーンアクセスの場合:

  • トラフィックは、Kinesis VPCエンドポイントを使用

リージョナルエンドポイントのセットアップ

ここでは、ノートブックやクラスタレベルでのアウトバウンドアクセスの制限や、Spark の設定を追加するためのオプションの手順と、リージョナルエンドポイントの設定方法を説明します。

S3 VPC ゲートウェイエンドポイントのセットアップ

AWS コンソール、または AWS CLI ツールで利用できます。

■CLI コマンド

[crayon-5f66368504cd3324620852/]

STS VPC ゲートウェイエンドポイントのセットアップ

AWS コンソール、または AWS CLI ツールで利用できます。

■CLI コマンド

[crayon-5f66368504ce1657265362/]

■AWS コンソール
1. AWS コンソール画面より、 VPC サービスの画面に移動
2. 左のナビゲーションより「エンドポイント」を選択し、「エンドポイントの作成」をクリック
3. 「サービス名」フィールドで sts を検索し、ユーザの利用しているリージョンのを選択
4. 「VPCフィールド」で Databricks デプロイメントと関連づいている VPC を選択
5. 同じフィールドで、ワークスペースのサブネットを選択(本番環境への導入時は、エンドポイントネットワークインターフェイス用のサブネットはワークスペースのサブネットとは異なる必要がある。)
6. 「DNS 名を有効化」にチェック
7. VPC で DNS ホスト名と DNS 解決が有効になっていることを確認
8. セキュリティグループ画面で、Datarbricks ワークスペースに関連づいたセキュリティグループを選択
9. ポリシー画面にて「フルアクセス」を選択
10. STS インターフェイスエンドポイントが AWS VPC コンソールのエンドポイントセクションに表示されていることを確認

おわりに

Customer Managed VPC の リージョナルエンドポイントに関するまとめは以上です。
詳細については、元記事をご参照ください。


databricks on AWS deploy手順~その3~

はじめに

databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。

  • その1 databricksアカウントの作成
  • その2 AWSアカウントとの連携
  • その3 databricks用S3バケットとの連携 ← 今回はここ

本題

長かったdatabricks on AWS のdeploy手順もいよいよ最後のその3まできました。
今回もAWSアカウントとdatabricksアカウントの両方使用するので、
ログインした状態でご準備をお願いいたします。

➀databricks用S3バケットの作成

databricks用のS3バケットを作成します。
databricks公式サイトでも、databricks専用のS3バケットを作成することがベストプラクティスとされているのでそちらに則って進めていきたいと思います。

S3のコンソール画面に移動します。
「バケットを作成する」をクリックしてdatabricks用新規バケット作成作業に入ります。
image.png

名前とリージョン

バケット名は任意のものでOK(私はs3-for-databricks-testという名前にしました)
リージョンは「アジアパシフィック(東京)」
既存のバケットから設定をコピーは入力不要です。
バケット名とリージョンを記入したら「次へ」をクリック
スクリーンショット 2020-08-14 14.45.09.png

オプションの設定

ここでは様々なオプションを設定することができます。
今回は、databricks公式サイトの方で強く推奨されている「バージョニング」機能のみ設定してとりあえず先に進みたいと思います。
一番上の「バージョニング」にチェックを入れて「次へ」をクリック
スクリーンショット 2020-08-14 14.45.29.png

アクセス許可の設定

何も変更せずに「次へ」をクリック
スクリーンショット 2020-08-14 14.45.42.png

確認

バケット名
バージョニングの有効化
アクセス権限
を確認したら、「バケットを作成」をクリックして、
databricks用S3バケットの作成が完了です。
スクリーンショット 2020-08-14 14.46.10.png

➁バケットポリシーの作成

databricksコンソール画面から左部の「AWS Storage」欄を選択するとこの画面になります。
画面中央部の空欄に作成したdatabricks用S3バケット名を記入して「Generate Policy」をクリック。
image.png

生成されたバケットポリシーをコピーしておく。
image.png

S3コンソール画面に戻って
「databricks用S3バケット」→「アクセス権限」→「バケットポリシー」の順に進みます。
バケットポリシーエディターに先ほどコピーしたバケットポリシーを貼り付けます。
画面右側の「保存」をクリック。

image.png

databricksのAWS Storage画面に戻り
「Apply Change」をクリック。
このような画面になったらS3の設定完了です。
image.png

➂Deploy Databricks

databricksのコンソール画面に戻り、
画面左部から「Deploy Databricks」を選択するとこの画面になります。
空欄にチェックをいれて「Deploy」をクリック。
Deployが完了するまで30分ほどかかります。
image.png

deployが完了するとdatabricksからこのようなメールが届き、
image.png
databricksコンソール画面でもこのような表示になります。
image.png

以上で、作業は終了です。

おわりに

3章にわたるdeploy作業も今回でついに終わりを迎えました。
お疲れさまでした。
本記事がどなたかのお役に立てていれば幸いです。

今後も引き続きdatabricks公式ドキュメントを参考に記事をupしていく予定です。


databricks on AWS deploy手順~その2~

はじめに

databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。

  • その1 databricksアカウントの作成
  • その2 AWSアカウントとの連携 ← 今回はここ
  • その3 databricks用S3バケットとの連携

本題

AWSアカウントとの連携方法は

  • クロスアカウントロールを使用する方法
  • アクセスキーを使用する方法

の2種類がありますが、databricks公式サイトではクロスアカウントロールを使用する方法を強く推奨しているので、今回はそちらの方法で進めて行こうと思います。
ここからはAWSアカウントとdatabricksアカウントを使用するので、
両方ログインした状態のページのご用意をお願いいたします。

➀databricksアカウント設定

databricksコンソール画面から、サイドバー内「AWS Account」を選択
「Deploy to AWS using Cross Account Role」にチェック
AWS Regionは「ap-northeast-1:Asia Pacific(Tokyo) Region」を選択
External IDはIAMロール作成時に使用するので、コピーしておいてください
ここまで終えたら一旦AWS側の設定に移ります。
image.png

➁クロスアカウントロールとアクセスポリシーの作成

AWSコンソール画面からIAMサービスのページへ移動します。
(検索欄でIAMと入れれば移動できます。)

画面左部のサイドバーから「ロール」を選択。
image.png

「ロールの作成」をクリック。
「別のAWSアカウント」を選択。
「このロールを使用できるアカウントを指定する」の必要事項欄を埋めていきます。
アカウントID : 414351767826
オプション : 外部IDが必要にチェック
外部ID : 本題➀でコピーしたExternal IDをペースト
3つの記入が済んだら「次のステップ:アクセス権限」をクリック
image.png

何もせず「次のステップ:タグ」をクリック
image.png

何もせず「次のステップ:確認」をクリック
image.png

ロール名を記入して「ロールの作成」をクリック
image.png

IAMの画面に戻り、サイドバーから「ロール」を選択。
ロール一覧内から作成したロールを選択
image.png

画面右にある「インラインポリシーの追加」をクリック
image.png

JSONのタブを選択し、以下コードをコピペ
「ポリシーの確認」をクリック

[crayon-5f66368504f62848477883/]

image.png

ポリシー名を記入して、「ポリシーの作成」をクリック
image.png

再度ロールのページに戻って、「ロールARN」をコピー
image.png

➂databricksアカウント設定残り

本題➀で使用していたdatabricksの画面に戻ります。
本題➁でコピーしておいたロールARNをペーストして「Next Step」をクリック
image.png

自動的にS3設定画面に移動したら、その2の作業は無事完了です。
image.png

おわりに

今回その2ではAWSアカウントとの連携作業を行いました。
次回その3ではいよいよ最後のS3との連携作業を行います。
引き続き頑張りましょう!
お疲れ様でした。


databricks on AWS deploy手順~その1~

はじめに

databricks on AWSをdeployするまでの手順をご紹介したいと思います。
databricks on AWSのdeploy完了までには
databricks側とAWS側でいくつかの登録&設定作業が必要となっているため以下3章に分けてご説明いたします。

  • その1 databricksアカウントの作成 ← 今回はここ
  • その2 AWSアカウントとの連携
  • その3 databricks用S3バケットとの連携

本題

➀databricksアカウント登録

では、さっそく本題に参ります。
以下URLから登録画面に飛びます。
https://databricks.com/try-databricks?_ga=2.231496607.1278047542.1597105290-1399252035.1593565763
image.png

必要情報を埋めていきましょう。
How would you describe your role?(あなたは役割なに?)
What is intended use case?(用途は?)
の質問に関しては、正確でなくてOKです。
※当てはまるものがなければ、とりあえず何か選択して先に進みましょう。
すべて記入したら画面下部の「SIGN UP」をクリック
image.png

記入漏れなどがなければ、この画面に進みます。
2020-08-12_10h10_05.png
画面下部の
GET STARTED ON 「Azure」OR 「AWS」
でAWSの方をクリック
image.png

問題がなければ、databricksから以下のメールが届きます。
メール内のリンクを踏んでdatabricksアカウントのパスワード設定画面に飛びます。
※メール内の2つのリンクは同じですので、どちらからでもOKです。
image.png

パスワード設定画面です。
ここでパスワードを設定します。メモを忘れずに。
image.png

➁決済情報の登録

パスワード設定が完了し、ログインすると以下画面になります。
画面左部の「Billing Details」欄から決済情報の登録を行います。
必要事項の記入したら「Next Step」をクリックで登録は完了です。
image.png

その1の内容はここまでです。

おわりに

今回はdatabricksアカウント登録~決済情報の登録までを行いました。
次回「その2」ではAWSアカウントとの連携についての作業を行います。
引き続き頑張っていきましょう。
ひとまずお疲れさまでした。


databricks公式ドキュメントをやってみた~Get EC2 instance information~

はじめに

公式ドキュメントに沿ってdatabricks on AWSを動かしてみたいと思います。
今回のテーマは
「Get EC2 instance information」です。
その名の通り、databricks上でコードを実行してEC2インスタンスの情報を表示させるという内容です。

本題

今回行う作業としては、

  • 作業ページまでのログイン
  • クラスターの作成
  • Notebookの作成
  • スクリプトの実行

の4ステップです。
早速初めて行きましょう。

作業ページにログインする

1.以下URLからdatabricksにログインします。
https://accounts.cloud.databricks.com/registration.html#login

2.「Deploy Databricks」を選択し、水色文字になっているURLをクリックします。
image.png

3.1でログイン時に使用したメールアドレスとパスワードを使用してログインします。
この画面に辿りついたらOKです。
image.png

クラスターの作成

1.先ほどの画面Common Tasks欄のNew Clusterをクリック。
※左のメニューバーからClustersを選択してもOKです。

2.ここではクラスターの詳細設定ができますが、とりあえずデフォルトのもので構いません。
(コストが気になるという方は
Worker Typeのところをm4.largeなどの変更しても大丈夫です。)
Cluster Nameを記入したらCreate Clusterをクリックします。
image.png

3.左のメニューバーからClusterページにいき
このようにStateがRunningになったらクラスターの設定が完了です。
image.png

Notebook作成

左上のメニューバーからHome画面に戻ったら
画面右のCreate a Blank Notebookをクリックします。
Name : 任意
Default Language : Python
Cluster : 先ほど作成したもの
を記入してCreateをクリック。
image.png

スクリプトの実行

以下のスクリプトを実行していきましょう。
基本的な動作はjupyter notebookと同じです。

1.今回使うモジュールのimport

[crayon-5f66368505530412530333/]

2.インスタンス情報取得

[crayon-5f6636850553d451878333/]

3.マスター/ドライバーのパブリックホスト名を取得

[crayon-5f66368505547149573438/]

4.全てのワーカーのパブリックホスト名とIP情報を取得
numWorkersはClusterページから確認して各自変更してください。

[crayon-5f66368505550890382676/]

※今回の内容は以下公式サイトを参考に作成しました。
ドキュメント内のスクリプトはPython2のモジュールになっているので、本記事ではPython3用に修正しております。
https://docs.databricks.com/administration-guide/cloud-configurations/aws/describe-my-ec2.html

さいごに

公式ドキュメントに基づいて実際にNotebookを動かしてみました。
非常に簡単でしたが、databricksとAWSが連携していることが確認できたと思います。

最後までお読みいただきありがとうございました。


Amazon Forecast を使った予測の手順まとめ

はじめに

今回は、Amazon Forecast を用いた予測を実施します。手順は以下となります。
AWS 公式の Amazon Forecast の開発ガイドについては、下記リンク参照で。

■リンク
Amazon Forecast 開発者ガイド

■手順

①予測するデータセットの準備(csv を S3 にインポートしておく)
②Amazon Forecast に csv データをインポート
③トレーニングモデルの作成
④予測の実施

Amazon Forecast とは

■Amazon Forecas の特徴

  • 時系列データと、それに関するデータを組みあせて予測を実施
  • 一度に複数のアイテムの予測をすることが可能(最大100,000)
  • 予測結果は csv にして S3 にエクスポート可能
  • 予測をしたい内容に合わせて、以下からドメインを選択して予測を実施

■Amazon Forecast のドメイン一覧

  • RETAIL:小売の需要予測
  • INVENTORY_PLANNING:サプライチェーンとインベントリの計画
  • EC2 CAPACITY:EC2 のキャパシティ予測
  • WORK_FORCE:従業員の計画(労働力需要)
  • WEB_TRAFFIC:今後のウェブトラフィックの見積もり
  • METRICS:収益、およびキャッシュフローなどの予測メトリクス
  • CUSTOM:その他すべての時系列予測のタイプ

予測準備

csv の準備

今回は予測の実施にあたって、2つの csv を用意しました。

■用意した csv データ

  • target_time_series:予測をしたいcsv データ。こちらの csv データだけでも予測の実施は可能
  • related_time_series:target_time_series の補助となる csv データ(天候や気温、曜日など説明変数にあたるデータ)

今回は、RETAIL というドメインを利用して予測を行いたいと思います。ドメインごとに必要な項目が異なりますので、注意しましょう。また、Amazon Forecast で予測できる期間はインポートしたデータの1/3までです。今後1ヶ月の予測をしたい場合は、少なくとも直近3ヶ月分のデータが必要となります。

■RETAILドメインを利用する場合のcsv データセットタイプに必要な項目

  • target_time_series データセットに必要な項目
    • item_id (string) :需要を予測する商品名や商品の ID など
    • timestamp (teimstamp):時系列
    • demand (float) :時系列ごとの商品の販売数。Amazon Forecast が予測を生成するターゲットフィールド
    • location(string):商品の販売先店舗や地域名など(※任意で使用)

2020-07-17_15h37_55.png

  • related_time_series データセットに必要な項目
    • item_id (string) :需要を予測する商品名や商品の ID など
    • timestamp (teimstamp):時系列
    • price (float) :時系列ごとの商品の価格(※任意で使用)

※related_time_series データセットでは、天候や曜日、気温などの項目も使用可能です。

2020-07-21_15h38_32.png

予測実施

データのインポート

コンソール画面から「Amazon Forecast」を検索します。
データセットグループの作成、時系列データセットの作成、そしてcsv データのインポートを実施します。

■データセットグループの作成
image.png

  • Dataset group name:予測をするこのデータセットグループ名を入力
  • Forecasting domain:予測に使用するドメインを選択

■時系列データセットの作成
image.png

  • dataset name:時系列データセット名を入力(S3 にインポートした csv と同じの方が分かりやすい)
  • Frequency of your data:時系列データセットの時系列(月・日・時)を選択
  • Data schema;時系列データのスキーマをJSON 形式で入力

■csv データのインポート
image.png

  • Dataset import name:インポートする csv データ名を推奨
  • Timestamp format:csv のtimestamp 形式をこの形式に合わせておくこと
  • Data location:csv データの置いてあるパス

データのトレーニング

無事にインポートが完了したら、次はインポートしたデータを用いてモデルのトレーニングを実施します。
ここでは、以下の項目を入力します。
image.png

  • Predictor name :予測モデルの名前(任意)
  • Forecast horizon:予測をしたい期間決め(期間は最大で csv データの1/3まで)
  • Forecasat frequency:csv データと同じ時系列を選択
  • Algorithm selection:利用するアルゴリズムを選択(特に希望が無ければ「Automatic」を選択)
  • Country for Holidays:休日・祝日情報を追加する場合、こちらを使用(「Japan」を検索して使用)

夜速のトレーニグの完了には、データにもよりますが大体30分以上はかかります。

予測の実施

それでは、いよいよ予測を実行してみましょう。
image.png

  • Forecast name:予測を実行して出てくる予測結果モデルの名前
  • Predictor:予測の実施にあたり利用する予測モデル(先程の学習モデルを選択すればOK)

上記の2つを入力したら、「Create forecast」を選択し、暫く待ちましょう。
これで、完了です。

Forecast lookup の使用

Amazon Forecast lookup で、Amazon Forecast のコンソール画面上で予測結果を可視化することができます。

image.png

  • Forecast:可視化したい予測結果モデルを選択
  • Start date:可視化したい最初の月日を選択(インポートした csv データの最後の時系列を選択)
  • End date:可視化したい最終の月日を選択(選択できる月日はインポートした csv データの1/3の期間まで)
  • Value:可視化したいアイテム名を選択

可視化結果は、図のように3つの予測モデルが表示されます。
image.png

  • P90 forecast:予測値の上限
  • P50 forecast:一般的に言う予測値
  • P10 forecast:予測値の下限

その他

S3 へのエクスポート

Amazon Forecast で行った予測は、 csv で S3 にエクスポートすることが可能です。
以下が手順です。

image.png
■手順
①ダッシュボードの左の「Forecasts」を選択
②作成した予測モデルを選択
③「Create forecast export」を選択

image.png
■手順
④以下の項目を入力、選択したら S3 へのエクスポートを実行

  • Export name:S3 へ送る csv の名前を決める
  • Generated forecast:S3へ送る 予測結果を選択
  • S3 forecast export location:csv を送る先の S3 のパスを入力

S3 へのエクスポートが完了するのには10数分かかります。

料金体系について

Amazon Forecast は従量課金制です。課金対象は以下の3つです。

■課金対象

  • 予測をしたいアイテムの総数×3パターンの予測モデル
  • csv データの重さ
  • モデルのトレーニングに費やした時間

おわりに

Amaozn Forecast を用いた予測は以上となります。
詳細な内容については、AWS公式を参照ください。