SlideShare a Scribd company logo
1 of 93
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS 公式 Webinar
https://amzn.to/JPWebinar
過去資料
https://amzn.to/JPArchive
Solutions Architect 倉光 怜
2019/08/06
AWS Glue
サービスカットシリーズ
[AWS Black Belt Online Seminar]
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
自己紹介
倉光 怜
所属:ソリューションアーキテクト
経歴:
SIer、クラウドインテグレータを経てAWS入社
前職ではお客様のAWS導入のご支援、設計・構築
好きなサービス:
AWS Glue Amazon S3Amazon Kinesis
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Black Belt Online Seminar とは
「サービス別」「ソリューション別」「業種別」のそれぞれのテーマに分かれて、アマゾ
ン ウェブ サービス ジャパン株式会社が主催するオンラインセミナーシリーズです。
質問を投げることができます!
• 書き込んだ質問は、主催者にしか見えません
• 今後のロードマップに関するご質問は
お答えできませんのでご了承下さい
Twitter ハッシュタグは以下をご利用ください
#awsblackbelt
① 吹き出しをクリック
② 質問を入力
③ Sendをクリック
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
内容についての注意点
• 本資料では2019年08月06日時点のサービス内容および価格についてご説明しています。最新の
情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。
• 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相
違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。
• 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消
費税をご請求させていただきます。
• AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to
change in accordance with the AWS Customer Agreement available at
http://aws.amazon.com/agreement/. Any pricing information included in this document is provided
only as an estimate of usage charges for AWS services based on certain information that you
have provided. Monthly charges will be based on your actual use of AWS services, and may vary
from the estimates provided.
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Agenda
• AWS Glue登場の背景
• AWS Glueの機能
• 開発
• ネットワーク/セキュリティ/監視
• ユースケース
• 料金
• まとめ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
AWS Glue登場の背景
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データ分析のプロセス例
収集 保存 分析 活用
データ
ユーザー
データのパイプライン
収集・・・データベースやファイルなどからデータを集める
保存・・・分析対象のデータをデータベースやストレージに保存する
分析・・・過去・現在のデータから状況を可視化して、未来を予測する
活用・・・予測結果を社内、または他システムに連携する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データ分析のプロセス例(Big Dataが注目される前)
収集 保存 分析 活用
データ
ユーザー
分析対象のほとんどはCSVやRDB上のデータ
分析対象のほとんどは構造データで、それに対してETL処理(※1)を実施していた
データのパイプライン
(※1)ETL処理:Extract(抽出)、Transform(変換)、Load(ロード)の略
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データ分析のプロセス例(現在)
収集 保存 分析 活用
データ
ユーザー
・従来の保存方法では最低限必要なデータに絞って、加工整形済みのデータを保存することしかできなかった
・データの種類や量の増加、非常に速いスピードでデータが生成されるようになり、大量データを分析して
ビジネス価値を生み出す動きが活発化、加えて、お客様ビジネス自体の変化も早くなり始めた
大量のデータが保存でき、かつ必要なときに必要分のデータを取得して、活用できる保存場所が求められた
データのパイプライン
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データ分析のプロセス例(現在)
データ
ユーザー
様々なデータソースから生成される生データをそのまま保存する「データレイク」の概念が登場
生データを分析対象のデータにするためには・・・?
データのパイプライン
収集 保存 分析 活用
データレイク
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データ分析のプロセス例(現在)
データ
ユーザー
前処理
データレイク上のデータを分析するために前処理(=ETL処理)を実施する
データのパイプライン
収集 保存 分析 活用
データレイク
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glue
様々なデータソースのメタデータを管理する、
フルマネージドでサーバーレスなETLサービス
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの特徴
AWS Glue
サーバーレス 柔軟な起動方法
コードに集中
データソースの
メタデータ管理
VPC内からのアクセス
他のAWSサービスと
容易に連携
Notebookでの開発セキュア
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
AWS Glueの機能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー データカタログ
サーバーレスエンジン
トリガー
他のAWSサービス
AWS Glue
①データをクロール ②メタデータを管理
③手動、スケジュール、イベントで起動
⑤変換ジョブを実行してデータをターゲットにロード④変換対象のデータを抽出
ターゲット
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー
AWS Glue
①クローラーがデータソースの
メタデータをクロールする
ターゲット
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー データカタログ
AWS Glue
①データをクロール
②クローラーがデータカタログに
登録・更新し、メタデータを管理
ターゲット
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー データカタログ トリガー
ターゲット
AWS Glue
①データをクロール ②メタデータを管理
③トリガーにて
ジョブの実行タイミングを定義
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー データカタログ
サーバーレスエンジン
トリガー
ターゲット
AWS Glue
①データをクロール ②メタデータを管理
④データカタログのメタデータを元に、
データソースからデータを抽出
③手動、スケジュール、イベントで起動
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの全体像
データソース
クローラー データカタログ
サーバーレスエンジン
トリガー
ターゲット
AWS Glue
①データをクロール ②メタデータを管理
⑤サーバーレス エンジンにて、
ジョブを実行し、ターゲットに出力
④変換対象のデータを抽出
③手動、スケジュール、イベントで起動
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの構成要素
データカタログ オーケストレーションサーバーレスエンジン
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの構成要素
データカタログ オーケストレーションサーバーレスエンジン
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
データカタログ
Apache Hiveメタストア互換のメタデータリポジトリ
- データカタログにメタデータを作成するにはクローラー、GlueのAPI、Hive DDL(Athena/EMR/Redshift
Spectrum)の3つの方法が利用可能。
- テーブル、テーブルバージョン、パーティション、データベースのことをオブジェクトという(料金単位に関連する)
- データソースとして、Amazon DynamoDB、Amazon S3、Amazon Redshift、Amazon RDS、Amazon VPC内のRDB on
Amazon EC2(Oracle、Microsoft SQL Server、MySQL、PostgreSQL)、JDBC接続可能なオンプレミスDBが指定可能
- メタデータをAmazon Redshift Spectrum、Amazon Athena、Amazon EMRに連携可能
- メタストアの管理が不要の為、運用負荷を低減できる
DynamoDB S3
Redshift RDS
RDB on EC2オンプレミスDB
(JDBC接続)
データソース
メタデータ保存
Glue ETL Athena
Redshift
Spectrum
EMR
連携可能なサービス
Hive互換アプリ
データカタログ参照
メタデータ取得
データカタログクローラー
データカタログの連携イメージ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Apache Hiveメタストアとは
Apache Hiveで実データとは別に表の定義だけ格納する仕組み
- 実データはHDFSやS3などに保存する
- EMRではデフォルトではマスターノード上のMySQL、外部メタストアを利用する際はRDSがHiveメタストアと
して利用されていた
- その他Big Data関連のミドルウェアも参照することが可能
データソース
アプリケーション
メタストア
Glueのデータカタログ
に変更可能
Hive Spark
Presto
HDFS
RDS データベース
S3
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
クローラー
Glueのデータカタログにメタデータを作成するプログラム
- 分類子の優先度に従って、スキーマ情報を自動で判断する
- 分類子:データのスキーマを決定するGlueの機能。分類子がデータ形式を認識するとスキー
マを形成する
- クローラーを使わずにテーブル定義をAPI経由で登録することも可能
- 実行結果のログはAmazon CloudWatch Logsに出力される
- Grok・XML・JSON・CSVを用いて、分類子をカスタマイズ可能(=カスタム分類子)
- 指定したパス(S3)およびテーブル(JDBC接続)をクローラーの読込み対象外とするエク
スクルードパターンも設定することが可能(※DynamoDBテーブルは未サポート)
参考URL:カスタム分類子の記述形式:https://docs.aws.amazon.com/ja_jp/glue/latest/dg/custom-classifier.html
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
メタデータの構成例
テーブル情報
テーブルプロパティ
テーブルスキーマ
テーブルパーティション クローラーがHiveパーティションを自動認識する
「sample-data/location=US/year=2019/month=08/day=06・・・」
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
スキーマ管理
データカタログに登録したテーブルのスキーマをバージョン管理することが可能
- テーブルのスキーマおよびスキーマのバージョンを一覧・比較することが可能
- 手動でスキーマ項目を追加、削除、型の変更が可能
旧バージョン 新バージョン
スキーマ編集画面でデータ型が変更可能
スキーマのバージョンを管理
差分を比較
スキーマバージョン比較
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
接続管理
Redshift RDS RDB on EC2オンプレミスDB
(JDBC接続)
Glue
Glue
IAMロールでアクセス
IAMロール
JDBCでアクセス
S3
- AWS IAMでアクセスを行う
- S3バケットを指定する
DynamoDB
- AWS IAMでアクセス制御する
- テーブル名を指定する
JDBC接続
- 事前に接続設定を追加する
(インスタンス名・データベース名・ユーザー名・パスワードを設定)
- 自己参照型のセキュリティグループでアクセス制御
DynamoDB
テーブル
IAMロールでアクセス
IAMロール S3
バケット
S3・DynamoDB・JDBC接続のアクセス方法
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの構成要素
データカタログ オーケストレーションサーバーレスエンジン
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ジョブ作成
- ETLの処理単位をジョブといい、ジョブの種類にApache SparkとPython Shellがある
(Python Shell:Pythonスクリプトを実行する機能)
- Glueが自動生成したコード、自身で作成するスクリプト、既存のコード(オンプレミスで動
作していたものも可)が実行可能
- ジョブの状態を追跡(=チェックポイント)できるブックマーク機能がある
- SparkとPython Shellは下記バージョンをサポート
Glueのバージョン Spark Python Shell
Glue 0.9
Spark 2.2.1
(Python 2)
ー
Glue 1.0
Spark 2.4.3
(Python 2、Python 3)
Python 2.7
Python 3.6
参考URL:Glueバージョン(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/release-notes.html)
Spark Overview(https://spark.apache.org/docs/latest/)
※Python Shellについては、Glue1.0のみ指定可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Worker Type
Glue内のSparkジョブにメモリ大量使用ワークロード向けのWorker Typeが指定可能に
- ジョブ実行時に割り当てる処理能力をDPU(Data Processing Unit)という
1DPU = 4vCPU、16GBメモリ
- これまでの標準に加えて、G.1xとG.2Xが選択可能に。
Worker
Type
DPU数
/1Worker
Executor数
/1Worker
メモリ数
/1Executor
標準 1 2 5.5GB
G.1X 1 1 12GB
G.2X 2 1 24GB
参考URL:Spark Components(https://spark.apache.org/docs/latest/cluster-overview.html)
Worker Type一覧 Worker Type構成イメージ
標準
Executor
(Mem:5.5GB)
Worker
Executor
(Mem:5.5GB)
DPU
G.1X
Worker
DPU
G.2X
Worker
DPU
DPU
Executor
(Mem:24GB)
Executor
(Mem:12GB)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
SparkでETL実行した際に起きうる課題
DataFrame:データをテーブル構造で扱えるSparkの機能。SparkSQLを用いて、DataFrameを操作する
Col_a Col_b Col_c
1
2
3
4
・・・
・・・
1,000,000
“1000001”
“1000002”
■テーブル例(特定カラムで複数の型が存在する場合)
bigint(数値型)
string(文字列)
DataFrame処理前にデータの中身を調査して、事前に複数の型が混じることを想定した
ETLコードを記述する必要がある
複数の型が存在した場合、処理が中断し、再
処理しなければならない可能性がある
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DynamicFrameとは
SparkSQL DataFrameと似たGlue特有の抽象化の概念
- SparkSQL DataFrameとの違いはETLに特化しているかどうか
(DynamicFrameはスキーマの不一致を明示的にエンコードする”Schema on the Fly”を採用)
- 複数の型の可能性を残して、後で決定できるようにする (Choice型)
- DynamicFrameはデータ全体を表し、DynamicRecordはデータ1行を指す
- DataFrameとDynamicFrame間でそれぞれ変換することができる(fromDF関数・toDF関数)
- Pythonライブラリ PandasのDataFrameとは異なるので注意
Spark Core: RDDs
Spark DataFrame Glue DynamicFrame
SparkSQL AWS Glue ETL
データ構造イメージアーキテクチャ:SparkおよびGlueライブラリ
SparkSQL DataFrame DynamicFrame
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
struct型
Choice型
DynamicFrameの列で複数の型を発見した場合に両方の型を持つことができる
- ResolveChoiceメソッドで型を解決することが可能
root
|-- uuid: string
|
|-- device id: choice
| |-- long
| |-- string
choice型のデータ構造例
device id列はlongとstringの両方のデータを持っている
(例:device idカラムに数字の1234と文字列の”1234”が混同する)
project
(型を廃棄する)
cast
(単一の型にキャストする)
make_cols
(すべての型を別の列に保持する)
ResolveChoiceの実行例
deviceid: choice型
long型 string型 long型 long型 long型 string型long型
deviceid deviceid deviceid deviceid_long deviceid_string
long型
deviceid
make_struct
(Map変換してstruct型にする)
string型
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ブックマーク機能
ジョブの実行状態を保持する機能
- 定常的にETL処理が必要な場合において有効
例:処理済みデータを再度処理しないように回避
処理結果のデータをターゲットに重複出力しないように回避
run 1 run 2 run 3
有効無効
一時停止
実行イメージ設定内容
設定 内容
有効 中断した場所から実行する
無効 最初からジョブを実行する
一時停止 ブックマークの進行を一時的に無効にする
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DynamicFrameとDataFrameの特性を生かしたETL処理
DynamicFrame DataFrame DynamicFrame
結果を出力
(Parquetファイル等)
ETLジョブ
JOIN対象のデータが
存在するデータソース
ETLジョブの例
- JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
ETL対象データ
(JSON・CSV)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DynamicFrameとDataFrameの特性を生かしたETL処理
DynamicFrame DataFrame DynamicFrame
ETLジョブ
DynamicFrameでChoice型を検出した場合、
必要に応じて、型を修正する
JOIN対象のデータが
存在するデータソース
ETL対象データ
(JSON・CSV)
ETLジョブの例
- JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DynamicFrameとDataFrameの特性を生かしたETL処理
DynamicFrame DataFrame DynamicFrame
ETLジョブ
JOIN対象のデータが
存在するデータソース
toDF・fromDF関数を用いて、
DataFrameに変換。他のデータソース
とJOINする場合はDataFrameで実行
ETL対象データ
(JSON・CSV)
ETLジョブの例
- JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
DynamicFrameとDataFrameの特性を生かしたETL処理
DynamicFrame DataFrame DynamicFrame
結果を出力
(Parquetファイル等)
ETLジョブ
JOIN対象のデータが
存在するデータソース
ファイル形式をParquetなど、
後続処理で実施する内容に応じて変換する
ETL対象データ
(JSON・CSV)
ETLジョブの例
- JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
PySparkコードサンプル
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(arg[‘JOB_NAME’], arg)
memberships =
glueContext.create_dynamic_frame.from_catalog(
database="legislators",
table_name="memberships_json")
//省略
job.commit()
初期化処理からデータソースへのアクセス、ジョブコミットまで
- GlueContextはSpark SQLContextを継承し
て、独自拡張したクラス
- create_dynamic_frame.from_catalogで
データカタログ経由でDynamicFrameを作成
する
- create_dynamic_frame.from_RDDで
SparkのRDDからDynamicFrameを作成可能
- create_dynamic_frame_from_optionsで
データカタログを経由せず、直接データソー
スにアクセスし、DynamicFrameを作成する
ことも可能
- DynamicFrameだけでなく、SparkSQL
DataFrameを記述、実行することも可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
PySparkコードサンプル
my_partition_predicate = "(country=='JP' and year==‘2019' and month==‘08' and day==‘06')"
glue_context.create_dynamic_frame.from_catalog(database = "my_S3_data_set",
table_name = "catalog_data_table",
push_down_predicate = my_partition_predicate)
push_down_predicateオプション
- DynamicFrame生成前にPre-Filteringすることでデータの読み込みを削減可能
groupFiles、groupSizeオプション
- データソースからファイルを読み取る際、グループ化する
- S3パーティション内のデータをグループ化する際はgroupFiles、読み取るグループのサイズをgroupSizeオプ
ションで指定する
- スモールファイルをまとめて処理する際に、処理効率がよくなる
df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://s3path/"],
'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
PySparkコードサンプル
datasink = glueContext.write_dynamic_frame.from_options(
frame = dropnullfields3, connection_type = "s3",
connection_options = {
"path": "s3://xxxxxxxxx/xxxxx/xxxxx”
}, format = ”parquet", transformation_ctx = "datasink")
ターゲットへの書き込み
- write_dynamic_frame_catalogで出力。例ではParquet形式で出力
applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(“deviceid”, “string”, “deviceid”, “string”),【省略】,
("day", "long", "day", "long")], transformation_ctx = "applymapping1")
ApplyMapping
- ETLのターゲットとなる列をDynamicFrameに合わせる処理
・“parquet”、”orc”などのファイル形式を指定することが可能
・より Glue に最適化された "glueparquet"を利用することで、出力ファイルのスキーマを動的に計算し、
高速に”parquet”ファイルに書き込むことが可能 (通常の parquet ファイルとして読み込み可能)
参考URL:ETL 入力・出力形式オプション(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-format.html)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Python Shellコードサンプル
def get_connection(host):
rs_conn_string = "host=%s port=%s dbname=%s
user=%s password=%s" % (
host, port, db_name, user, password_for_user)
rs_conn = pg.connect(dbname=rs_conn_string)
rs_conn.query("set statement_timeout = 1200000")
return rs_conn
def query(con):
statement = "Select * from table_name;"
res = con.query(statement)
return res
Redshiftに接続し、クエリを実行する例
参考URL:GlueでのPythonシェルジョブの追加(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job-python.html
デフォルトで利用可能ライブラリ例
- Boto3
- CSV
- gzip
- Numpy
- pandas
- Scipy
- sklearn
- zipfile
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
サーバーレスETL処理の使い分け
AWS Lambda AWS Glue
Python Shell
AWS Glue
Spark
• 実行時間の制限なし
• 並列分散処理が得意
• 大量データの処理
• 実行時間の制限なし
• Lambdaに比べてメモリ量が多
い(1GBまたは16GB(※1))
• Pandasなどのライブラリが利用
可能
• RedshiftやEMR、Athenaに対す
るSQLベースの分析
• 15分以内に完了できる処理
• 豊富なトリガー(S3に配置されたタイ
ミングで逐次処理)
• Pandasなどのライブラリが利用可能
小規模処理 中規模処理 大規模処理
データの規模やETL処理の中でやりたいことによって使い分ける
(※1)Python Shellでは0.0625(1/16)DPUと1DPUが選択でき、その計算結果を記載。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS Glueの構成要素
データカタログ オーケストレーションサーバーレスエンジン
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
独自ライブラリの利用
PythonおよびScalaの独自ライブラリが利用可能
- Spark(PySpark、Scala)、Python Shellともに独自のライブラリを利用することが可能
- S3にPythonのライブラリ、ScalaのJARファイルをアップロードし、パスを指定する
- S3のURLをカンマ区切りで記述することで複数のライブラリを指定可能
- PySpark利用時、C言語に依存するPandasなどのライブラリは利用できない。Pandasを利用したい場合は、
Python Shellを推奨
- Python Shell:Python2.7または3.6互換のライブラリを指定可能
Pythonのライブラリを指定
JavaまたはScalaのJARファイルを指定
スクリプトに必要な設定ファイルを指定
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
トリガー
ジョブを開始するための定義を設定できる機能
- スケジュール(日時・曜日・cron)、ジョブイベント、手動(即時実行)で指定可能
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/trigger-job.html)
ジョブの起動
スケジュール
を指定
先行ジョブ
を指定
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ワークフロー機能
クローラー、トリガー、ジョブのDAGを生成するワークフロー機能
- DAG(有向非巡回グラフ):ある頂点からある頂点の方向が決まっており(有向)、同じ辺を通らない(非巡回)
- ワークフローの状況をモニタリングすることや、エラー時のトラブルシューティングを視覚的に確認可能
- boto3を利用したPython Shellを実行することで、他のAWSサービスと連携することが可能
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/orchestrate-using-workflows.html)
クローラー、トリガー、ジョブを追加する 処理結果が確認可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
開発
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
開発
開発エンドポイント
- ジョブ実行環境に直接アクセスするためのアクセスポイント
- Glueでジョブを実行するために開発したコードを動かす実行環境
- 開発エンドポイントでG.1XとG.2XのWorker Typeを選択することが可能
Notebookサーバー
- Amazon SageMaker Notebook(Jupyter Notebook)もしくはApache Zeppelin Notebookが利用
可能
- SageMaker Notebook、Zepplin NotebookともにVPC内にNotebookインスタンスを起動すること
が可能
- プログラムそのものの記述と実行結果を表示する環境
- 開発エンドポイントを削除しても、Notebookインスタンスは削除されない為、手動削除が必要
ETLジョブのコードを開発/実行するための環境
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
SageMaker Notebook
https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/apache-spark.html)
- Glueのコンソール上でSageMaker Notebookサーバーを起動する
- SageMakerでSparkライブラリを利用することが可能
- ジョブ・開発エンドポイントでデータカタログが指定できるようになった為、データカタログに保存されている
テーブルに対して、SageMaker Notebookから直接SparkSQLが実行可能に
「%%sql」を記述することでSparkSQLが実行可能IPythonファイルを作成時にPySparkが指定可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
開発エンドポイントとNotebookの関係
VPC
お客様オフィス
ユーザー
開発
エンドポイント
Glue
Notebook(SageMaker/Zeppelin)
Driver
Executor
Executor
Executor
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
ネットワーク/セキュリティ/監視
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
オンプレミス環境
Private Subnet
Public Subnet
S3 DynamoDB
Glue
ENI
Internet
オンプレミスDB
(JDBC接続)
VPC
VPC
RDS Redshift
NAT Gateway Internet Gateway
VPC Endpoint
VPC Peering
Virtual Gateway VPN Connection
Direct Connect
JDBC接続
RDB on EC2
JDBC接続
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
Private Subnet
Public Subnet
Glue
VPC
ENI経由でプライベートIPアドレスが割り当てられる
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
Private Subnet
Public Subnet
Glue
ENI
Internet
VPC
NAT Gateway Internet Gateway
NAT Gateway経由でInternetへアクセスする
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
Private Subnet
Public Subnet
S3 DynamoDB
Glue
ENI
VPC
VPC Endpoint
VPC Endpointを用いて、アクセスする
※VPC Endpointを使用せず、 NAT Gateway経由で
Internet経由でもアクセス可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
Private Subnet
Public Subnet
Glue
ENI
VPC
VPC
RDS RedshiftVPC Peering RDB on EC2
JDBC接続
VPC Peeringを利用して、別VPC内にあるデータベースにアクセス
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
GlueからVPCへのアクセス
凡例
インターネットへのアクセス経路
VPC Endpointを経由したS3・
DynamoDBへのアクセス経路
他のVPC上に存在する
データソースへのアクセス経路
オンプレミスDBへのアクセス経路
GlueからENIへのアクセス
オンプレミス環境
Private Subnet
Public Subnet
Glue
ENI
オンプレミスDB
(JDBC接続)
VPC
Virtual Gateway VPN Connection
Direct Connect
JDBC接続
Virtual Gateway経由でDirect ConnectもしくはVPN接続を用いて、
オンプレミス上のデータベースにアクセスする
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
セキュリティグループ
- RDS・Redshiftなどインスタンス単位でアクセス制御を行う場合、Glueからアクセスできるよう
にセキュリティグループを設定する
- 自己参照型のセキュリティグループを設定する
(自己参照型:自分のセキュリティグループからのアクセスをすべて許可する設定)
Private Subnet
Glue
ENI
VPC
RDS
Security group
ポート番号 IPアドレス
3306 10.0.0.0/16
ALL sg-xxxxxxxx
セキュリティグループ(RDS)
RDSのセキュリティグループ
IDを設定(=自己参照型)
セキュリティグループID:sg-xxxxxxxx
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/setup-vpc-for-glue-access.html)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
IAM設定
IAMユーザー
- AWSマネジメントコンソール上でGlueを利用する際に必要な権限
(他サービスはバックグラウンドで使用)
- IAMユーザーで必要な権限(ノートブック利用を含む)
・AWSGlueConsoleFullAccess
・CloudWatchLogsReadOnlyAccess
・AWSGlueConsoleSageMakerNotebookFullAccess
・AWSCloudFormationReadOnlyAccess
・AmazonAthenaFullAccess
IAMロール
- ETLジョブ実行および開発エンドポイントに対してアクセスする際に、
IAMロールを指定する
- ETLジョブは「AWSGlueServiceRole」、開発エンドポイントは
「AWSGlueServiceNotebookRole」が基本ポリシーであり、他サー
ビスと連携する(S3など)場合はそのサービスのIAMロールを設定する
- S3上のファイルが暗号化されている場合は復号可能なロールも必要
Management Console GlueIAMユーザー
CloudWatch logs
SageMaker
Notebook
Athena
CloudFormati
on
連携
Glue
IAMロール
KMS
他のAWSサービス
SageMaker
Notebook
S3
IAMユーザー・IAMロールを用いて、Glueの権限管理を行う
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
リソースレベルによるポリシーとアクセス許可
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/using-identity-based-policies.html)
Glue内で管理するアクセスポリシー
- データカタログリソースへのアクセス制御を行う
- データカタログに対するクロスアカウント・クロスリージョンのアクセス制御が可能
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"glue:CreateTable"
],
"Principal": {"AWS": [
"arn:aws:iam:: account-A-id:user/dev",
"arn:aws:iam:: account-B-id:root"
]},
"Resource": [
"arn:aws:glue:us-east-1:account-A-id:table/db1/*",
"arn:aws:glue:us-east-1:account-A-id:database/db1",
"arn:aws:glue:us-east-1:account-A-id:catalog"
]
}
]
}
Catalog
Database
Table
Table
Version
Connection
Function
Partition
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
暗号化
データカタログ、暗号化されたデータソースとも連携可能
データカタログ
- KMSキーを指定して、データベースやテーブルなどデータカタログ全体の暗号化が設定可能
- クローラーまたはジョブで定義するIAMロールにはKMSを操作できる設定(Decrypt、Encrypt、GenerateDataKey権限)が必要
接続パスワード
- データカタログがGetConnectionおよびGetConnectionsのAPIを実行時に取得される
- 接続の作成・更新された際、パスワードが暗号化されているかチェックし、暗号化されている場合は指定されたKMSキーがチェッ
クされる
セキュリティ設定
- Glueが使用できるセキュリティのプロパティ
- S3、CloudWatch Logs、ジョブのブックマークが暗号化の対象
- セキュリティ設定はETLジョブのパラメータとして渡されるS3サーバーサイド暗号化(SSE-S3)の設定をすべてオーバーライドする。
ジョブにセキュリティ設定とSSE-S3の両方が設定されている場合、SSE-S3の方は無視されるので、注意
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/encryption-glue-resources.html)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
モニタリング
クローラー・ジョブステータス・ジョブの実行状況が確認可能
クローラー・ジョブステータスのハンドリング
- クローラー、ETLジョブのステータス変更やETLジョブ実行中のステータスをトリガーにAmazon CloudWatch Eventsを実行可能
例えば、ETLジョブ失敗時にAmazon SNSやAWS Lambdaに連携することが可能
ジョブの実行状況確認
- ETLジョブのジョブ実行状況は管理コンソールまたはCloudWatch Logsで確認可能
- 暗号化されている場合は指定されたKMSキーによって判断される
- [Monitoring options] - [Job Metrics]オプションを有効にすることでジョブ監視とデバッグが可能
ジョブ監視の例
・Sparkのメモリが不足していないかどうかドライバーとエグゼキューターのメモリ使用率の確認
・ジョブ実行時のDPU(データ処理単位)数のモニタリング
・複数ジョブの進行
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Continuous Logging
Spark ETLジョブの進捗状況をリアルタイムに追跡できる機能
- 5秒間隔・各executor終了前までログが出力される
- CloudWatch Logsにてアプリケーション固有メッセージ、プログレスバー(進捗状況)の表示が可能
- デフォルトのフィルタを使用することにより、ログの詳細度を調整できる
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-continuous-logging.html)
from awsglue.context import GlueContext
from pyspark.context import SparkContext
sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
import com.amazonaws.services.glue.log.GlueLogger
object GlueApp {
def main(sysArgs: Array[String]) {
val logger = new GlueLogger
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
}
}
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
その他 前回(2017/10/18)からの主なアップデート
・Glueがインターフェイス型VPCエンドポイントを実装
- PrivateLinkでGlueのAPIが利用可能に
・クローラー、トリガー、ジョブ、開発エンドポイントにタグづけが可能に
- タグを活用してコスト計算、IAMポリシーを利用してリソースへのアクセス制御を行うことが可能
・データカタログで利用しているHiveメタストア用のソースコードがダウンロード可能に
- Hiveメタストアと互換性のあるアプリケーションを構築する実装例として利用可能
参考URL(https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore)
・既存のデータカタログのテーブルをソースとしてサポート
- 既存のテーブルに対して、スキーマの変更を検出してテーブル定義を更新する
・Apache SparkのETLジョブメトリクスが追加
- コードのデバッグ、データ問題の特定、CPU容量計算に利用可能
・ブックマーク機能のサポートファイル形式としてParquetとORCが追加
- 既存のJSON・CSV・Avro・XMLに加えて、ParquetとORCが追加(Glueバージョン1.0以降)
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
ユースケース
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
ユースケース
1. データカタログを用いたメタデータ管理
2. ジョブによるSQLの定期実行
3. WorkFlow機能を用いたETLパイプライン
4. サーバーレスアナリティクス
5. データレイクを用いたログ分析基盤
6. GlueとSageMakerを用いた機械学習基盤
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1.データカタログを用いたメタデータ管理
EMR・Athena・Redshift Spectrumを利用する際のメタデータ管理に利用
- S3上にあるデータのメタデータ(スキーマ構造・パーティション等)をデータカタログに登録する
- Redshiftからクエリが実行できるように、Redshift Spectrumを利用する
- ユーザーがクエリを実行時、データカタログの情報を元にRedshift SpectrumがS3上に
データを取得する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1.データカタログを用いたメタデータ管理
ユーザー
S3
バケットA
S3
バケットA
分析対象データをS3に保存
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1.データカタログを用いたメタデータ管理
ユーザーデータカタログクローラー
S3上のメタデータをデータカタログに登録
S3
バケットA
S3
バケットA
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1.データカタログを用いたメタデータ管理
S3
バケットA
Redshift Spectrum Redshift ユーザー
Redshiftの外部テーブルとして
Redshift Spectrumを利用
S3
バケットA
クローラー データカタログ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
1.データカタログを用いたメタデータ管理
S3
バケットA
Athena ユーザー
Athenaで実行
S3
バケットA
クローラー データカタログ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
2.ジョブによるSQLの定期実行
トリガー・Python Shellを用いてRedshiftに定期クエリを実行する
- 実行するPython Shellにタイムアウトを設定できる為、SQLを長時間実行し続けることや
タイムアウト値を設定して途中で中断することが可能
サーバーレス
エンジン
トリガー Redshift Redshift S3
・夜間バッチでデータマートを作成する場合に有効
・Redshift Spectrumの利用目的で古いデータを定期的に送信する
・S3を利用する他のサービスに連携する目的で送信する
サーバーレス
エンジン
トリガー Redshift
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
3.WorkFlow機能を用いたETLパイプライン
WorkFlow機能を用いて単一ジョブではなく、複数ジョブを組み合わせて実行する
下記ジョブをGlueのWorkflow機能を使って、パイプライン処理として定義する
- S3上にあるデータをクロールし、データカタログに登録する
- PySparkでフォーマット変換・パーティション化をして、S3に出力するETL処理を実行する
- Python Shellでジョブの終了をSNSで通知する
PySpark Python Shell
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
4.サーバーレスアナリティクス
Glueの開発エンドポイント、SageMaker Notebookを用いて分析を行う
- 開発エンドポイント設定時にGlueのデータカタログを利用するように設定する
- SparkSQLを用いて、標準SQLでSageMaker Notebookから対話的にデータ分析が可能
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5.データレイクを用いたログ分析基盤
スピードレイヤ・バッチレイヤを活用したログ分析基盤
- ログデータをS3に保存し、Athena・Redshiftでクエリが実行できるようにGlueでETL処理を
実施する
- Lambda Architecture(※1)に沿って、スピードレイヤとバッチレイヤを構築する
https://d1.awsstatic.com/whitepapers/lambda-architecure-on-for-batch-aws.pdf
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5.データレイクを用いたログ分析基盤
Kinesis Data
Streams
ログデータを分析するためにKinesisに連携
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5.データレイクを用いたログ分析基盤
Kinesis Data
Streams
Kinesis Data Firehose Elasticsearch
Service
スピードレイヤー
リアルタイム性の高いデータを可視化する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
5.データレイクを用いたログ分析基盤
S3 Athena QuickSight
データベース
バッチレイヤー
Glue
Kinesis Data
Streams
Redshift
Kinesis Data
Firehose
S3に溜まったデータをGlueのデータカタログ、サーバー
レスエンジンを利用して、ETL処理を実行する。
実行処理した結果に対してクエリを実行し、可視化する
Kinesis Data Firehose
スピードレイヤー
Elasticsearch
Service
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6.GlueとSageMakerを用いた機械学習基盤
Glue WorkFlowを利用したETL・機械学習のワークフロー
- Glueにて学習用入力データを作成し、学習ジョブの実行とモデルのデプロイをSageMakerで
実行する
- ワークフロー自体はGlueのWorkFlow機能、またはStep Functionsを利用する
Glueのワークフローで実行する場合はPySparkとPython Shellを組み合わせる
Step Functionsを利用する場合は、ワークフローの内容をJSONで定義する
コードの実装、サービスのインテグレーション内容をもとに選択する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6.GlueとSageMakerを用いた機械学習基盤
S3 PySpark SageMaker
Glue Workflow
S3
データカタログクローラー
データソース
Python
Shell
GlueのWorkFlow内でPySparkとPython Shellを実行し、
機械学習で実行する処理を自動化する
トリガー
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
6.GlueとSageMakerを用いた機械学習基盤
S3 Glue SageMaker
S3
データカタログクローラー
データソース
Step Functions WorkflowCloudWatch
Events
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
料金
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
料金
1DPU(Data Processing Unit) = 4vCPU、16GB
・ETLジョブ
Apache Spark:$0.44 DPU/時 (課金は秒単位)
- 10分間未満の処理は10分としてカウントされる
- 2個以上のDPUが必要で、デフォルトでは各Sparkジョブに10個のDPUが割り当てられる
Python Shell :1DPU:$0.44 DPU/時 (課金は秒単位)または1/16DPU:$0.0275 DPU/時(課金は秒単位)
- 1分間未満の処理は1分としてカウントされる
- 1個または1/16DPU個が選択可能で、デフォルトでは各Python Shell単位で1/16個のDPUが
割り当てられる
・開発エンドポイント
エンドポイント作成から料金が発生。DPU単位で費用がかかる
2個以上のDPUが必要で、デフォルトでは5個のDPUが割り当てられる
Zeppenlin Serverの場合は通常のEC2の料金、SageMaker NotebookはNotebookインスタンスの料金が発生する
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
料金
・データカタログ
ストレージ:100万オブジェクトまで無料
(オブジェクト=テーブル、テーブルバージョン、パーティション、データベース)
100万以上保存された場合、10万オブジェクトあたり$1/月
リクエスト:100万リクエスト/月まで無料
100万以上保存された場合、10万オブジェクトあたり$1/月
・クローラー
$0.44 DPU/時 (課金は秒単位)
- クローラーの実行に使用されたDPUの数に応じて時間あたりの課金が発生
- クローラーごとに10分の最小期間が設定される。10分未満の処理は10分として計算される
・その他
データ転送量やS3の保存データについては別途料金がかかる
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark
まとめ
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
まとめ
・GlueはサーバーレスのETLサービス
・クローラー・データカタログでメタデータを管理
・EMR/Athena/Redshift、SageMakerなど他のサービスとセキュアに連携
データソース
クローラー データカタログ
ETL実行エンジン
スケジューラー
ターゲット
他のAWSサービス
AWS Glue
①データをクロール ②メタデータを管理
③手動またはスケジュール実行
④ETLジョブを実行④データを抽出し、ロード
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
参考資料
AWS Glue ホームページ
https://aws.amazon.com/jp/glue/
AWS Glue 開発者ガイド(公式ドキュメント)
https://aws.amazon.com/jp/documentation/glue/
AWS Glue ETL Code Samples (サンプルコード)
https://github.com/awslabs/aws-glue-samples
AWS Glue用のPythonパッケージ(awsglue.*のソースコード)
https://github.com/awslabs/aws-glue-libs/
AWS Glueの料金
https://aws.amazon.com/jp/glue/pricing/
AWS Glueのサービス制限
https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html#limits_glue
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
Q&A
お答えできなかったご質問については
AWS Japan Blog 「https://aws.amazon.com/jp/blogs/news/」にて
後日掲載します。
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS の日本語資料の場所「AWS 資料」で検索
https://amzn.to/JPArchive
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
で[検索]AWS イベント
毎週”W-A個別技術相談会”を実施中
• AWSのソリューションアーキテクト(SA)に
対策などを相談することも可能
• 申込みはイベント告知サイトから
(https://aws.amazon.com/jp/about-aws/events/)
AWS Well-Architected 個別技術相談会
© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
AWS 公式 Webinar
https://amzn.to/JPWebinar
過去資料
https://amzn.to/JPArchive
ご視聴ありがとうございました

More Related Content

What's hot

What's hot (20)

AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB AWS Black Belt Online Seminar 2017 Amazon DynamoDB
AWS Black Belt Online Seminar 2017 Amazon DynamoDB
 
20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions20190522 AWS Black Belt Online Seminar AWS Step Functions
20190522 AWS Black Belt Online Seminar AWS Step Functions
 
20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSync20210316 AWS Black Belt Online Seminar AWS DataSync
20210316 AWS Black Belt Online Seminar AWS DataSync
 
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
 
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service20210216 AWS Black Belt Online Seminar AWS Database Migration Service
20210216 AWS Black Belt Online Seminar AWS Database Migration Service
 
20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway 20190514 AWS Black Belt Online Seminar Amazon API Gateway
20190514 AWS Black Belt Online Seminar Amazon API Gateway
 
20200218 AWS Black Belt Online Seminar Next Generation Redshift
20200218 AWS Black Belt Online Seminar Next Generation Redshift20200218 AWS Black Belt Online Seminar Next Generation Redshift
20200218 AWS Black Belt Online Seminar Next Generation Redshift
 
The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発The Twelve-Factor Appで考えるAWSのサービス開発
The Twelve-Factor Appで考えるAWSのサービス開発
 
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
20200722 AWS Black Belt Online Seminar AWSアカウント シングルサインオンの設計と運用
 
20210119 AWS Black Belt Online Seminar AWS CloudTrail
20210119 AWS Black Belt Online Seminar AWS CloudTrail20210119 AWS Black Belt Online Seminar AWS CloudTrail
20210119 AWS Black Belt Online Seminar AWS CloudTrail
 
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
20210127 AWS Black Belt Online Seminar Amazon Redshift 運用管理
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy20210126 AWS Black Belt Online Seminar AWS CodeDeploy
20210126 AWS Black Belt Online Seminar AWS CodeDeploy
 
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
20201111 AWS Black Belt Online Seminar AWS CodeStar & AWS CodePipeline
 
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
20200623 AWS Black Belt Online Seminar Amazon Elasticsearch Service
 
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
AWS Black Belt Online Seminar 2017 AWSにおけるアプリ認証パターンのご紹介
 
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
20191016 AWS Black Belt Online Seminar Amazon Route 53 Resolver
 
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty20180509 AWS Black Belt Online Seminar Amazon GuardDuty
20180509 AWS Black Belt Online Seminar Amazon GuardDuty
 
AWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormationAWS Black Belt Online Seminar 2016 AWS CloudFormation
AWS Black Belt Online Seminar 2016 AWS CloudFormation
 
20200128 AWS Black Belt Online Seminar Amazon Forecast
20200128 AWS Black Belt Online Seminar Amazon Forecast20200128 AWS Black Belt Online Seminar Amazon Forecast
20200128 AWS Black Belt Online Seminar Amazon Forecast
 

Similar to 20190806 AWS Black Belt Online Seminar AWS Glue

在 AWS 上構建無服務器分析
在 AWS 上構建無服務器分析在 AWS 上構建無服務器分析
在 AWS 上構建無服務器分析
Amazon Web Services
 

Similar to 20190806 AWS Black Belt Online Seminar AWS Glue (20)

STG206_Big Data Data Lakes and Data Oceans
STG206_Big Data Data Lakes and Data OceansSTG206_Big Data Data Lakes and Data Oceans
STG206_Big Data Data Lakes and Data Oceans
 
A Look Under the Hood – How Amazon.com Uses AWS Services for Analytics at Mas...
A Look Under the Hood – How Amazon.com Uses AWS Services for Analytics at Mas...A Look Under the Hood – How Amazon.com Uses AWS Services for Analytics at Mas...
A Look Under the Hood – How Amazon.com Uses AWS Services for Analytics at Mas...
 
Construindo data lakes e analytics com AWS
Construindo data lakes e analytics com AWSConstruindo data lakes e analytics com AWS
Construindo data lakes e analytics com AWS
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
 
Value of Data Beyond Analytics by Darin Briskman
 Value of Data Beyond Analytics by Darin Briskman Value of Data Beyond Analytics by Darin Briskman
Value of Data Beyond Analytics by Darin Briskman
 
How Amazon.com uses AWS Analytics
How Amazon.com uses AWS AnalyticsHow Amazon.com uses AWS Analytics
How Amazon.com uses AWS Analytics
 
Data_Analytics_and_AI_ML
Data_Analytics_and_AI_MLData_Analytics_and_AI_ML
Data_Analytics_and_AI_ML
 
Building Data Lakes with AWS
Building Data Lakes with AWSBuilding Data Lakes with AWS
Building Data Lakes with AWS
 
How Amazon.com uses AWS Analytics
How Amazon.com uses AWS AnalyticsHow Amazon.com uses AWS Analytics
How Amazon.com uses AWS Analytics
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
 
Building Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWSBuilding Data Lakes and Analytics on AWS
Building Data Lakes and Analytics on AWS
 
ABD318_Architecting a data lake with Amazon S3, Amazon Kinesis, AWS Glue and ...
ABD318_Architecting a data lake with Amazon S3, Amazon Kinesis, AWS Glue and ...ABD318_Architecting a data lake with Amazon S3, Amazon Kinesis, AWS Glue and ...
ABD318_Architecting a data lake with Amazon S3, Amazon Kinesis, AWS Glue and ...
 
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
Build an ETL Pipeline to Analyze Customer Data (AIM416) - AWS re:Invent 2018
 
在 AWS 上構建無服務器分析
在 AWS 上構建無服務器分析在 AWS 上構建無服務器分析
在 AWS 上構建無服務器分析
 
Data Catalog & ETL - Glue & Athena
Data Catalog & ETL - Glue & AthenaData Catalog & ETL - Glue & Athena
Data Catalog & ETL - Glue & Athena
 
Data Catalog & ETL - Glue & Athena
Data Catalog & ETL - Glue & AthenaData Catalog & ETL - Glue & Athena
Data Catalog & ETL - Glue & Athena
 
How Amazon.com Uses AWS Analytics: Data Analytics Week SF
How Amazon.com Uses AWS Analytics: Data Analytics Week SFHow Amazon.com Uses AWS Analytics: Data Analytics Week SF
How Amazon.com Uses AWS Analytics: Data Analytics Week SF
 
AWSome Day MODULE 3 - Databases
AWSome Day MODULE 3 - DatabasesAWSome Day MODULE 3 - Databases
AWSome Day MODULE 3 - Databases
 
RET301-Build Single Customer View across Multiple Retail Channels using AWS S...
RET301-Build Single Customer View across Multiple Retail Channels using AWS S...RET301-Build Single Customer View across Multiple Retail Channels using AWS S...
RET301-Build Single Customer View across Multiple Retail Channels using AWS S...
 

More from Amazon Web Services Japan

More from Amazon Web Services Japan (20)

202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
202205 AWS Black Belt Online Seminar Amazon VPC IP Address Manager (IPAM)
 
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
202205 AWS Black Belt Online Seminar Amazon FSx for OpenZFS
 
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender202204 AWS Black Belt Online Seminar AWS IoT Device Defender
202204 AWS Black Belt Online Seminar AWS IoT Device Defender
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
202204 AWS Black Belt Online Seminar Amazon Connect を活用したオンコール対応の実現
 
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
202204 AWS Black Belt Online Seminar Amazon Connect Salesforce連携(第1回 CTI Adap...
 
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデートAmazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
202202 AWS Black Belt Online Seminar AWS Managed Rules for AWS WAF の活用
 
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
202203 AWS Black Belt Online Seminar Amazon Connect Tasks.pdf
 
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
SaaS テナント毎のコストを把握するための「AWS Application Cost Profiler」のご紹介
 
Amazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDDAmazon QuickSight の組み込み方法をちょっぴりDD
Amazon QuickSight の組み込み方法をちょっぴりDD
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
機密データとSaaSは共存しうるのか!?セキュリティー重視のユーザー層を取り込む為のネットワーク通信のアプローチ
 
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
パッケージソフトウェアを簡単にSaaS化!?既存の資産を使ったSaaS化手法のご紹介
 
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
202202 AWS Black Belt Online Seminar Amazon Connect Customer Profiles
 
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するためにAmazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
Amazon Game Tech Night #24 KPIダッシュボードを最速で用意するために
 
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
 
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
[20220126] JAWS-UG 2022初頭までに葬ったAWSアンチパターン大紹介
 
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
202111 AWS Black Belt Online Seminar AWSで構築するSmart Mirrorのご紹介
 

Recently uploaded

Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

ChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps ProductivityChatGPT and Beyond - Elevating DevOps Productivity
ChatGPT and Beyond - Elevating DevOps Productivity
 
Simplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptxSimplifying Mobile A11y Presentation.pptx
Simplifying Mobile A11y Presentation.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
AI+A11Y 11MAY2024 HYDERBAD GAAD 2024 - HelloA11Y (11 May 2024)
 
Choreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software EngineeringChoreo: Empowering the Future of Enterprise Software Engineering
Choreo: Empowering the Future of Enterprise Software Engineering
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
API Governance and Monetization - The evolution of API governance
API Governance and Monetization -  The evolution of API governanceAPI Governance and Monetization -  The evolution of API governance
API Governance and Monetization - The evolution of API governance
 
Navigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern EnterpriseNavigating Identity and Access Management in the Modern Enterprise
Navigating Identity and Access Management in the Modern Enterprise
 
UiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overviewUiPath manufacturing technology benefits and AI overview
UiPath manufacturing technology benefits and AI overview
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
The Ultimate Prompt Engineering Guide for Generative AI: Get the Most Out of ...
 
Quantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation ComputingQuantum Leap in Next-Generation Computing
Quantum Leap in Next-Generation Computing
 

20190806 AWS Black Belt Online Seminar AWS Glue

  • 1. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS 公式 Webinar https://amzn.to/JPWebinar 過去資料 https://amzn.to/JPArchive Solutions Architect 倉光 怜 2019/08/06 AWS Glue サービスカットシリーズ [AWS Black Belt Online Seminar]
  • 2. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 自己紹介 倉光 怜 所属:ソリューションアーキテクト 経歴: SIer、クラウドインテグレータを経てAWS入社 前職ではお客様のAWS導入のご支援、設計・構築 好きなサービス: AWS Glue Amazon S3Amazon Kinesis
  • 3. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Black Belt Online Seminar とは 「サービス別」「ソリューション別」「業種別」のそれぞれのテーマに分かれて、アマゾ ン ウェブ サービス ジャパン株式会社が主催するオンラインセミナーシリーズです。 質問を投げることができます! • 書き込んだ質問は、主催者にしか見えません • 今後のロードマップに関するご質問は お答えできませんのでご了承下さい Twitter ハッシュタグは以下をご利用ください #awsblackbelt ① 吹き出しをクリック ② 質問を入力 ③ Sendをクリック
  • 4. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 内容についての注意点 • 本資料では2019年08月06日時点のサービス内容および価格についてご説明しています。最新の 情報はAWS公式ウェブサイト(http://aws.amazon.com)にてご確認ください。 • 資料作成には十分注意しておりますが、資料内の価格とAWS公式ウェブサイト記載の価格に相 違があった場合、AWS公式ウェブサイトの価格を優先とさせていただきます。 • 価格は税抜表記となっています。日本居住者のお客様が東京リージョンを使用する場合、別途消 費税をご請求させていただきます。 • AWS does not offer binding price quotes. AWS pricing is publicly available and is subject to change in accordance with the AWS Customer Agreement available at http://aws.amazon.com/agreement/. Any pricing information included in this document is provided only as an estimate of usage charges for AWS services based on certain information that you have provided. Monthly charges will be based on your actual use of AWS services, and may vary from the estimates provided.
  • 5. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Agenda • AWS Glue登場の背景 • AWS Glueの機能 • 開発 • ネットワーク/セキュリティ/監視 • ユースケース • 料金 • まとめ
  • 6. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark AWS Glue登場の背景
  • 7. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データ分析のプロセス例 収集 保存 分析 活用 データ ユーザー データのパイプライン 収集・・・データベースやファイルなどからデータを集める 保存・・・分析対象のデータをデータベースやストレージに保存する 分析・・・過去・現在のデータから状況を可視化して、未来を予測する 活用・・・予測結果を社内、または他システムに連携する
  • 8. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データ分析のプロセス例(Big Dataが注目される前) 収集 保存 分析 活用 データ ユーザー 分析対象のほとんどはCSVやRDB上のデータ 分析対象のほとんどは構造データで、それに対してETL処理(※1)を実施していた データのパイプライン (※1)ETL処理:Extract(抽出)、Transform(変換)、Load(ロード)の略
  • 9. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データ分析のプロセス例(現在) 収集 保存 分析 活用 データ ユーザー ・従来の保存方法では最低限必要なデータに絞って、加工整形済みのデータを保存することしかできなかった ・データの種類や量の増加、非常に速いスピードでデータが生成されるようになり、大量データを分析して ビジネス価値を生み出す動きが活発化、加えて、お客様ビジネス自体の変化も早くなり始めた 大量のデータが保存でき、かつ必要なときに必要分のデータを取得して、活用できる保存場所が求められた データのパイプライン
  • 10. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データ分析のプロセス例(現在) データ ユーザー 様々なデータソースから生成される生データをそのまま保存する「データレイク」の概念が登場 生データを分析対象のデータにするためには・・・? データのパイプライン 収集 保存 分析 活用 データレイク
  • 11. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データ分析のプロセス例(現在) データ ユーザー 前処理 データレイク上のデータを分析するために前処理(=ETL処理)を実施する データのパイプライン 収集 保存 分析 活用 データレイク
  • 12. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glue 様々なデータソースのメタデータを管理する、 フルマネージドでサーバーレスなETLサービス
  • 13. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの特徴 AWS Glue サーバーレス 柔軟な起動方法 コードに集中 データソースの メタデータ管理 VPC内からのアクセス 他のAWSサービスと 容易に連携 Notebookでの開発セキュア
  • 14. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark AWS Glueの機能
  • 15. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー データカタログ サーバーレスエンジン トリガー 他のAWSサービス AWS Glue ①データをクロール ②メタデータを管理 ③手動、スケジュール、イベントで起動 ⑤変換ジョブを実行してデータをターゲットにロード④変換対象のデータを抽出 ターゲット
  • 16. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー AWS Glue ①クローラーがデータソースの メタデータをクロールする ターゲット
  • 17. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー データカタログ AWS Glue ①データをクロール ②クローラーがデータカタログに 登録・更新し、メタデータを管理 ターゲット
  • 18. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー データカタログ トリガー ターゲット AWS Glue ①データをクロール ②メタデータを管理 ③トリガーにて ジョブの実行タイミングを定義
  • 19. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー データカタログ サーバーレスエンジン トリガー ターゲット AWS Glue ①データをクロール ②メタデータを管理 ④データカタログのメタデータを元に、 データソースからデータを抽出 ③手動、スケジュール、イベントで起動
  • 20. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの全体像 データソース クローラー データカタログ サーバーレスエンジン トリガー ターゲット AWS Glue ①データをクロール ②メタデータを管理 ⑤サーバーレス エンジンにて、 ジョブを実行し、ターゲットに出力 ④変換対象のデータを抽出 ③手動、スケジュール、イベントで起動
  • 21. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの構成要素 データカタログ オーケストレーションサーバーレスエンジン
  • 22. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの構成要素 データカタログ オーケストレーションサーバーレスエンジン
  • 23. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. データカタログ Apache Hiveメタストア互換のメタデータリポジトリ - データカタログにメタデータを作成するにはクローラー、GlueのAPI、Hive DDL(Athena/EMR/Redshift Spectrum)の3つの方法が利用可能。 - テーブル、テーブルバージョン、パーティション、データベースのことをオブジェクトという(料金単位に関連する) - データソースとして、Amazon DynamoDB、Amazon S3、Amazon Redshift、Amazon RDS、Amazon VPC内のRDB on Amazon EC2(Oracle、Microsoft SQL Server、MySQL、PostgreSQL)、JDBC接続可能なオンプレミスDBが指定可能 - メタデータをAmazon Redshift Spectrum、Amazon Athena、Amazon EMRに連携可能 - メタストアの管理が不要の為、運用負荷を低減できる DynamoDB S3 Redshift RDS RDB on EC2オンプレミスDB (JDBC接続) データソース メタデータ保存 Glue ETL Athena Redshift Spectrum EMR 連携可能なサービス Hive互換アプリ データカタログ参照 メタデータ取得 データカタログクローラー データカタログの連携イメージ
  • 24. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Apache Hiveメタストアとは Apache Hiveで実データとは別に表の定義だけ格納する仕組み - 実データはHDFSやS3などに保存する - EMRではデフォルトではマスターノード上のMySQL、外部メタストアを利用する際はRDSがHiveメタストアと して利用されていた - その他Big Data関連のミドルウェアも参照することが可能 データソース アプリケーション メタストア Glueのデータカタログ に変更可能 Hive Spark Presto HDFS RDS データベース S3
  • 25. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. クローラー Glueのデータカタログにメタデータを作成するプログラム - 分類子の優先度に従って、スキーマ情報を自動で判断する - 分類子:データのスキーマを決定するGlueの機能。分類子がデータ形式を認識するとスキー マを形成する - クローラーを使わずにテーブル定義をAPI経由で登録することも可能 - 実行結果のログはAmazon CloudWatch Logsに出力される - Grok・XML・JSON・CSVを用いて、分類子をカスタマイズ可能(=カスタム分類子) - 指定したパス(S3)およびテーブル(JDBC接続)をクローラーの読込み対象外とするエク スクルードパターンも設定することが可能(※DynamoDBテーブルは未サポート) 参考URL:カスタム分類子の記述形式:https://docs.aws.amazon.com/ja_jp/glue/latest/dg/custom-classifier.html
  • 26. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. メタデータの構成例 テーブル情報 テーブルプロパティ テーブルスキーマ テーブルパーティション クローラーがHiveパーティションを自動認識する 「sample-data/location=US/year=2019/month=08/day=06・・・」
  • 27. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. スキーマ管理 データカタログに登録したテーブルのスキーマをバージョン管理することが可能 - テーブルのスキーマおよびスキーマのバージョンを一覧・比較することが可能 - 手動でスキーマ項目を追加、削除、型の変更が可能 旧バージョン 新バージョン スキーマ編集画面でデータ型が変更可能 スキーマのバージョンを管理 差分を比較 スキーマバージョン比較
  • 28. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 接続管理 Redshift RDS RDB on EC2オンプレミスDB (JDBC接続) Glue Glue IAMロールでアクセス IAMロール JDBCでアクセス S3 - AWS IAMでアクセスを行う - S3バケットを指定する DynamoDB - AWS IAMでアクセス制御する - テーブル名を指定する JDBC接続 - 事前に接続設定を追加する (インスタンス名・データベース名・ユーザー名・パスワードを設定) - 自己参照型のセキュリティグループでアクセス制御 DynamoDB テーブル IAMロールでアクセス IAMロール S3 バケット S3・DynamoDB・JDBC接続のアクセス方法
  • 29. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの構成要素 データカタログ オーケストレーションサーバーレスエンジン
  • 30. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ジョブ作成 - ETLの処理単位をジョブといい、ジョブの種類にApache SparkとPython Shellがある (Python Shell:Pythonスクリプトを実行する機能) - Glueが自動生成したコード、自身で作成するスクリプト、既存のコード(オンプレミスで動 作していたものも可)が実行可能 - ジョブの状態を追跡(=チェックポイント)できるブックマーク機能がある - SparkとPython Shellは下記バージョンをサポート Glueのバージョン Spark Python Shell Glue 0.9 Spark 2.2.1 (Python 2) ー Glue 1.0 Spark 2.4.3 (Python 2、Python 3) Python 2.7 Python 3.6 参考URL:Glueバージョン(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/release-notes.html) Spark Overview(https://spark.apache.org/docs/latest/) ※Python Shellについては、Glue1.0のみ指定可能
  • 31. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Worker Type Glue内のSparkジョブにメモリ大量使用ワークロード向けのWorker Typeが指定可能に - ジョブ実行時に割り当てる処理能力をDPU(Data Processing Unit)という 1DPU = 4vCPU、16GBメモリ - これまでの標準に加えて、G.1xとG.2Xが選択可能に。 Worker Type DPU数 /1Worker Executor数 /1Worker メモリ数 /1Executor 標準 1 2 5.5GB G.1X 1 1 12GB G.2X 2 1 24GB 参考URL:Spark Components(https://spark.apache.org/docs/latest/cluster-overview.html) Worker Type一覧 Worker Type構成イメージ 標準 Executor (Mem:5.5GB) Worker Executor (Mem:5.5GB) DPU G.1X Worker DPU G.2X Worker DPU DPU Executor (Mem:24GB) Executor (Mem:12GB)
  • 32. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SparkでETL実行した際に起きうる課題 DataFrame:データをテーブル構造で扱えるSparkの機能。SparkSQLを用いて、DataFrameを操作する Col_a Col_b Col_c 1 2 3 4 ・・・ ・・・ 1,000,000 “1000001” “1000002” ■テーブル例(特定カラムで複数の型が存在する場合) bigint(数値型) string(文字列) DataFrame処理前にデータの中身を調査して、事前に複数の型が混じることを想定した ETLコードを記述する必要がある 複数の型が存在した場合、処理が中断し、再 処理しなければならない可能性がある
  • 33. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DynamicFrameとは SparkSQL DataFrameと似たGlue特有の抽象化の概念 - SparkSQL DataFrameとの違いはETLに特化しているかどうか (DynamicFrameはスキーマの不一致を明示的にエンコードする”Schema on the Fly”を採用) - 複数の型の可能性を残して、後で決定できるようにする (Choice型) - DynamicFrameはデータ全体を表し、DynamicRecordはデータ1行を指す - DataFrameとDynamicFrame間でそれぞれ変換することができる(fromDF関数・toDF関数) - Pythonライブラリ PandasのDataFrameとは異なるので注意 Spark Core: RDDs Spark DataFrame Glue DynamicFrame SparkSQL AWS Glue ETL データ構造イメージアーキテクチャ:SparkおよびGlueライブラリ SparkSQL DataFrame DynamicFrame
  • 34. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. struct型 Choice型 DynamicFrameの列で複数の型を発見した場合に両方の型を持つことができる - ResolveChoiceメソッドで型を解決することが可能 root |-- uuid: string | |-- device id: choice | |-- long | |-- string choice型のデータ構造例 device id列はlongとstringの両方のデータを持っている (例:device idカラムに数字の1234と文字列の”1234”が混同する) project (型を廃棄する) cast (単一の型にキャストする) make_cols (すべての型を別の列に保持する) ResolveChoiceの実行例 deviceid: choice型 long型 string型 long型 long型 long型 string型long型 deviceid deviceid deviceid deviceid_long deviceid_string long型 deviceid make_struct (Map変換してstruct型にする) string型
  • 35. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ブックマーク機能 ジョブの実行状態を保持する機能 - 定常的にETL処理が必要な場合において有効 例:処理済みデータを再度処理しないように回避 処理結果のデータをターゲットに重複出力しないように回避 run 1 run 2 run 3 有効無効 一時停止 実行イメージ設定内容 設定 内容 有効 中断した場所から実行する 無効 最初からジョブを実行する 一時停止 ブックマークの進行を一時的に無効にする
  • 36. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DynamicFrameとDataFrameの特性を生かしたETL処理 DynamicFrame DataFrame DynamicFrame 結果を出力 (Parquetファイル等) ETLジョブ JOIN対象のデータが 存在するデータソース ETLジョブの例 - JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ ETL対象データ (JSON・CSV)
  • 37. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DynamicFrameとDataFrameの特性を生かしたETL処理 DynamicFrame DataFrame DynamicFrame ETLジョブ DynamicFrameでChoice型を検出した場合、 必要に応じて、型を修正する JOIN対象のデータが 存在するデータソース ETL対象データ (JSON・CSV) ETLジョブの例 - JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
  • 38. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DynamicFrameとDataFrameの特性を生かしたETL処理 DynamicFrame DataFrame DynamicFrame ETLジョブ JOIN対象のデータが 存在するデータソース toDF・fromDF関数を用いて、 DataFrameに変換。他のデータソース とJOINする場合はDataFrameで実行 ETL対象データ (JSON・CSV) ETLジョブの例 - JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
  • 39. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. DynamicFrameとDataFrameの特性を生かしたETL処理 DynamicFrame DataFrame DynamicFrame 結果を出力 (Parquetファイル等) ETLジョブ JOIN対象のデータが 存在するデータソース ファイル形式をParquetなど、 後続処理で実施する内容に応じて変換する ETL対象データ (JSON・CSV) ETLジョブの例 - JSONやCSVデータに対して、他のデータソースとJOIN、ファイル形式を変換して出力するジョブ
  • 40. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. PySparkコードサンプル import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job args = getResolvedOptions(sys.argv, ['JOB_NAME']) sc = SparkContext() glueContext = GlueContext(sc) spark = glueContext.spark_session job = Job(glueContext) job.init(arg[‘JOB_NAME’], arg) memberships = glueContext.create_dynamic_frame.from_catalog( database="legislators", table_name="memberships_json") //省略 job.commit() 初期化処理からデータソースへのアクセス、ジョブコミットまで - GlueContextはSpark SQLContextを継承し て、独自拡張したクラス - create_dynamic_frame.from_catalogで データカタログ経由でDynamicFrameを作成 する - create_dynamic_frame.from_RDDで SparkのRDDからDynamicFrameを作成可能 - create_dynamic_frame_from_optionsで データカタログを経由せず、直接データソー スにアクセスし、DynamicFrameを作成する ことも可能 - DynamicFrameだけでなく、SparkSQL DataFrameを記述、実行することも可能
  • 41. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. PySparkコードサンプル my_partition_predicate = "(country=='JP' and year==‘2019' and month==‘08' and day==‘06')" glue_context.create_dynamic_frame.from_catalog(database = "my_S3_data_set", table_name = "catalog_data_table", push_down_predicate = my_partition_predicate) push_down_predicateオプション - DynamicFrame生成前にPre-Filteringすることでデータの読み込みを削減可能 groupFiles、groupSizeオプション - データソースからファイルを読み取る際、グループ化する - S3パーティション内のデータをグループ化する際はgroupFiles、読み取るグループのサイズをgroupSizeオプ ションで指定する - スモールファイルをまとめて処理する際に、処理効率がよくなる df = glueContext.create_dynamic_frame_from_options("s3", {'paths': ["s3://s3path/"], 'recurse':True, 'groupFiles': 'inPartition', 'groupSize': '1048576'}, format="json")
  • 42. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. PySparkコードサンプル datasink = glueContext.write_dynamic_frame.from_options( frame = dropnullfields3, connection_type = "s3", connection_options = { "path": "s3://xxxxxxxxx/xxxxx/xxxxx” }, format = ”parquet", transformation_ctx = "datasink") ターゲットへの書き込み - write_dynamic_frame_catalogで出力。例ではParquet形式で出力 applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [(“deviceid”, “string”, “deviceid”, “string”),【省略】, ("day", "long", "day", "long")], transformation_ctx = "applymapping1") ApplyMapping - ETLのターゲットとなる列をDynamicFrameに合わせる処理 ・“parquet”、”orc”などのファイル形式を指定することが可能 ・より Glue に最適化された "glueparquet"を利用することで、出力ファイルのスキーマを動的に計算し、 高速に”parquet”ファイルに書き込むことが可能 (通常の parquet ファイルとして読み込み可能) 参考URL:ETL 入力・出力形式オプション(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-format.html)
  • 43. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Python Shellコードサンプル def get_connection(host): rs_conn_string = "host=%s port=%s dbname=%s user=%s password=%s" % ( host, port, db_name, user, password_for_user) rs_conn = pg.connect(dbname=rs_conn_string) rs_conn.query("set statement_timeout = 1200000") return rs_conn def query(con): statement = "Select * from table_name;" res = con.query(statement) return res Redshiftに接続し、クエリを実行する例 参考URL:GlueでのPythonシェルジョブの追加(https://docs.aws.amazon.com/ja_jp/glue/latest/dg/add-job-python.html デフォルトで利用可能ライブラリ例 - Boto3 - CSV - gzip - Numpy - pandas - Scipy - sklearn - zipfile
  • 44. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. サーバーレスETL処理の使い分け AWS Lambda AWS Glue Python Shell AWS Glue Spark • 実行時間の制限なし • 並列分散処理が得意 • 大量データの処理 • 実行時間の制限なし • Lambdaに比べてメモリ量が多 い(1GBまたは16GB(※1)) • Pandasなどのライブラリが利用 可能 • RedshiftやEMR、Athenaに対す るSQLベースの分析 • 15分以内に完了できる処理 • 豊富なトリガー(S3に配置されたタイ ミングで逐次処理) • Pandasなどのライブラリが利用可能 小規模処理 中規模処理 大規模処理 データの規模やETL処理の中でやりたいことによって使い分ける (※1)Python Shellでは0.0625(1/16)DPUと1DPUが選択でき、その計算結果を記載。
  • 45. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS Glueの構成要素 データカタログ オーケストレーションサーバーレスエンジン
  • 46. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 独自ライブラリの利用 PythonおよびScalaの独自ライブラリが利用可能 - Spark(PySpark、Scala)、Python Shellともに独自のライブラリを利用することが可能 - S3にPythonのライブラリ、ScalaのJARファイルをアップロードし、パスを指定する - S3のURLをカンマ区切りで記述することで複数のライブラリを指定可能 - PySpark利用時、C言語に依存するPandasなどのライブラリは利用できない。Pandasを利用したい場合は、 Python Shellを推奨 - Python Shell:Python2.7または3.6互換のライブラリを指定可能 Pythonのライブラリを指定 JavaまたはScalaのJARファイルを指定 スクリプトに必要な設定ファイルを指定
  • 47. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. トリガー ジョブを開始するための定義を設定できる機能 - スケジュール(日時・曜日・cron)、ジョブイベント、手動(即時実行)で指定可能 https://docs.aws.amazon.com/ja_jp/glue/latest/dg/trigger-job.html) ジョブの起動 スケジュール を指定 先行ジョブ を指定
  • 48. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ワークフロー機能 クローラー、トリガー、ジョブのDAGを生成するワークフロー機能 - DAG(有向非巡回グラフ):ある頂点からある頂点の方向が決まっており(有向)、同じ辺を通らない(非巡回) - ワークフローの状況をモニタリングすることや、エラー時のトラブルシューティングを視覚的に確認可能 - boto3を利用したPython Shellを実行することで、他のAWSサービスと連携することが可能 https://docs.aws.amazon.com/ja_jp/glue/latest/dg/orchestrate-using-workflows.html) クローラー、トリガー、ジョブを追加する 処理結果が確認可能
  • 49. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark 開発
  • 50. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 開発 開発エンドポイント - ジョブ実行環境に直接アクセスするためのアクセスポイント - Glueでジョブを実行するために開発したコードを動かす実行環境 - 開発エンドポイントでG.1XとG.2XのWorker Typeを選択することが可能 Notebookサーバー - Amazon SageMaker Notebook(Jupyter Notebook)もしくはApache Zeppelin Notebookが利用 可能 - SageMaker Notebook、Zepplin NotebookともにVPC内にNotebookインスタンスを起動すること が可能 - プログラムそのものの記述と実行結果を表示する環境 - 開発エンドポイントを削除しても、Notebookインスタンスは削除されない為、手動削除が必要 ETLジョブのコードを開発/実行するための環境
  • 51. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. SageMaker Notebook https://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/apache-spark.html) - Glueのコンソール上でSageMaker Notebookサーバーを起動する - SageMakerでSparkライブラリを利用することが可能 - ジョブ・開発エンドポイントでデータカタログが指定できるようになった為、データカタログに保存されている テーブルに対して、SageMaker Notebookから直接SparkSQLが実行可能に 「%%sql」を記述することでSparkSQLが実行可能IPythonファイルを作成時にPySparkが指定可能
  • 52. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 開発エンドポイントとNotebookの関係 VPC お客様オフィス ユーザー 開発 エンドポイント Glue Notebook(SageMaker/Zeppelin) Driver Executor Executor Executor
  • 53. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark ネットワーク/セキュリティ/監視
  • 54. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス オンプレミス環境 Private Subnet Public Subnet S3 DynamoDB Glue ENI Internet オンプレミスDB (JDBC接続) VPC VPC RDS Redshift NAT Gateway Internet Gateway VPC Endpoint VPC Peering Virtual Gateway VPN Connection Direct Connect JDBC接続 RDB on EC2 JDBC接続
  • 55. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス Private Subnet Public Subnet Glue VPC ENI経由でプライベートIPアドレスが割り当てられる
  • 56. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス Private Subnet Public Subnet Glue ENI Internet VPC NAT Gateway Internet Gateway NAT Gateway経由でInternetへアクセスする
  • 57. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス Private Subnet Public Subnet S3 DynamoDB Glue ENI VPC VPC Endpoint VPC Endpointを用いて、アクセスする ※VPC Endpointを使用せず、 NAT Gateway経由で Internet経由でもアクセス可能
  • 58. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス Private Subnet Public Subnet Glue ENI VPC VPC RDS RedshiftVPC Peering RDB on EC2 JDBC接続 VPC Peeringを利用して、別VPC内にあるデータベースにアクセス
  • 59. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. GlueからVPCへのアクセス 凡例 インターネットへのアクセス経路 VPC Endpointを経由したS3・ DynamoDBへのアクセス経路 他のVPC上に存在する データソースへのアクセス経路 オンプレミスDBへのアクセス経路 GlueからENIへのアクセス オンプレミス環境 Private Subnet Public Subnet Glue ENI オンプレミスDB (JDBC接続) VPC Virtual Gateway VPN Connection Direct Connect JDBC接続 Virtual Gateway経由でDirect ConnectもしくはVPN接続を用いて、 オンプレミス上のデータベースにアクセスする
  • 60. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. セキュリティグループ - RDS・Redshiftなどインスタンス単位でアクセス制御を行う場合、Glueからアクセスできるよう にセキュリティグループを設定する - 自己参照型のセキュリティグループを設定する (自己参照型:自分のセキュリティグループからのアクセスをすべて許可する設定) Private Subnet Glue ENI VPC RDS Security group ポート番号 IPアドレス 3306 10.0.0.0/16 ALL sg-xxxxxxxx セキュリティグループ(RDS) RDSのセキュリティグループ IDを設定(=自己参照型) セキュリティグループID:sg-xxxxxxxx https://docs.aws.amazon.com/ja_jp/glue/latest/dg/setup-vpc-for-glue-access.html)
  • 61. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. IAM設定 IAMユーザー - AWSマネジメントコンソール上でGlueを利用する際に必要な権限 (他サービスはバックグラウンドで使用) - IAMユーザーで必要な権限(ノートブック利用を含む) ・AWSGlueConsoleFullAccess ・CloudWatchLogsReadOnlyAccess ・AWSGlueConsoleSageMakerNotebookFullAccess ・AWSCloudFormationReadOnlyAccess ・AmazonAthenaFullAccess IAMロール - ETLジョブ実行および開発エンドポイントに対してアクセスする際に、 IAMロールを指定する - ETLジョブは「AWSGlueServiceRole」、開発エンドポイントは 「AWSGlueServiceNotebookRole」が基本ポリシーであり、他サー ビスと連携する(S3など)場合はそのサービスのIAMロールを設定する - S3上のファイルが暗号化されている場合は復号可能なロールも必要 Management Console GlueIAMユーザー CloudWatch logs SageMaker Notebook Athena CloudFormati on 連携 Glue IAMロール KMS 他のAWSサービス SageMaker Notebook S3 IAMユーザー・IAMロールを用いて、Glueの権限管理を行う
  • 62. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. リソースレベルによるポリシーとアクセス許可 https://docs.aws.amazon.com/ja_jp/glue/latest/dg/using-identity-based-policies.html) Glue内で管理するアクセスポリシー - データカタログリソースへのアクセス制御を行う - データカタログに対するクロスアカウント・クロスリージョンのアクセス制御が可能 { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:CreateTable" ], "Principal": {"AWS": [ "arn:aws:iam:: account-A-id:user/dev", "arn:aws:iam:: account-B-id:root" ]}, "Resource": [ "arn:aws:glue:us-east-1:account-A-id:table/db1/*", "arn:aws:glue:us-east-1:account-A-id:database/db1", "arn:aws:glue:us-east-1:account-A-id:catalog" ] } ] } Catalog Database Table Table Version Connection Function Partition
  • 63. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 暗号化 データカタログ、暗号化されたデータソースとも連携可能 データカタログ - KMSキーを指定して、データベースやテーブルなどデータカタログ全体の暗号化が設定可能 - クローラーまたはジョブで定義するIAMロールにはKMSを操作できる設定(Decrypt、Encrypt、GenerateDataKey権限)が必要 接続パスワード - データカタログがGetConnectionおよびGetConnectionsのAPIを実行時に取得される - 接続の作成・更新された際、パスワードが暗号化されているかチェックし、暗号化されている場合は指定されたKMSキーがチェッ クされる セキュリティ設定 - Glueが使用できるセキュリティのプロパティ - S3、CloudWatch Logs、ジョブのブックマークが暗号化の対象 - セキュリティ設定はETLジョブのパラメータとして渡されるS3サーバーサイド暗号化(SSE-S3)の設定をすべてオーバーライドする。 ジョブにセキュリティ設定とSSE-S3の両方が設定されている場合、SSE-S3の方は無視されるので、注意 https://docs.aws.amazon.com/ja_jp/glue/latest/dg/encryption-glue-resources.html)
  • 64. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. モニタリング クローラー・ジョブステータス・ジョブの実行状況が確認可能 クローラー・ジョブステータスのハンドリング - クローラー、ETLジョブのステータス変更やETLジョブ実行中のステータスをトリガーにAmazon CloudWatch Eventsを実行可能 例えば、ETLジョブ失敗時にAmazon SNSやAWS Lambdaに連携することが可能 ジョブの実行状況確認 - ETLジョブのジョブ実行状況は管理コンソールまたはCloudWatch Logsで確認可能 - 暗号化されている場合は指定されたKMSキーによって判断される - [Monitoring options] - [Job Metrics]オプションを有効にすることでジョブ監視とデバッグが可能 ジョブ監視の例 ・Sparkのメモリが不足していないかどうかドライバーとエグゼキューターのメモリ使用率の確認 ・ジョブ実行時のDPU(データ処理単位)数のモニタリング ・複数ジョブの進行 https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-profile-glue-job-cloudwatch-metrics.html)
  • 65. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Continuous Logging Spark ETLジョブの進捗状況をリアルタイムに追跡できる機能 - 5秒間隔・各executor終了前までログが出力される - CloudWatch Logsにてアプリケーション固有メッセージ、プログレスバー(進捗状況)の表示が可能 - デフォルトのフィルタを使用することにより、ログの詳細度を調整できる https://docs.aws.amazon.com/ja_jp/glue/latest/dg/monitor-continuous-logging.html) from awsglue.context import GlueContext from pyspark.context import SparkContext sc = SparkContext() glueContext = GlueContext(sc) logger = glueContext.get_logger() logger.info("info message") logger.warn("warn message") logger.error("error message") import com.amazonaws.services.glue.log.GlueLogger object GlueApp { def main(sysArgs: Array[String]) { val logger = new GlueLogger logger.info("info message") logger.warn("warn message") logger.error("error message") } }
  • 66. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. その他 前回(2017/10/18)からの主なアップデート ・Glueがインターフェイス型VPCエンドポイントを実装 - PrivateLinkでGlueのAPIが利用可能に ・クローラー、トリガー、ジョブ、開発エンドポイントにタグづけが可能に - タグを活用してコスト計算、IAMポリシーを利用してリソースへのアクセス制御を行うことが可能 ・データカタログで利用しているHiveメタストア用のソースコードがダウンロード可能に - Hiveメタストアと互換性のあるアプリケーションを構築する実装例として利用可能 参考URL(https://github.com/awslabs/aws-glue-data-catalog-client-for-apache-hive-metastore) ・既存のデータカタログのテーブルをソースとしてサポート - 既存のテーブルに対して、スキーマの変更を検出してテーブル定義を更新する ・Apache SparkのETLジョブメトリクスが追加 - コードのデバッグ、データ問題の特定、CPU容量計算に利用可能 ・ブックマーク機能のサポートファイル形式としてParquetとORCが追加 - 既存のJSON・CSV・Avro・XMLに加えて、ParquetとORCが追加(Glueバージョン1.0以降)
  • 67. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark ユースケース
  • 68. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. ユースケース 1. データカタログを用いたメタデータ管理 2. ジョブによるSQLの定期実行 3. WorkFlow機能を用いたETLパイプライン 4. サーバーレスアナリティクス 5. データレイクを用いたログ分析基盤 6. GlueとSageMakerを用いた機械学習基盤
  • 69. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1.データカタログを用いたメタデータ管理 EMR・Athena・Redshift Spectrumを利用する際のメタデータ管理に利用 - S3上にあるデータのメタデータ(スキーマ構造・パーティション等)をデータカタログに登録する - Redshiftからクエリが実行できるように、Redshift Spectrumを利用する - ユーザーがクエリを実行時、データカタログの情報を元にRedshift SpectrumがS3上に データを取得する
  • 70. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1.データカタログを用いたメタデータ管理 ユーザー S3 バケットA S3 バケットA 分析対象データをS3に保存
  • 71. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1.データカタログを用いたメタデータ管理 ユーザーデータカタログクローラー S3上のメタデータをデータカタログに登録 S3 バケットA S3 バケットA
  • 72. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1.データカタログを用いたメタデータ管理 S3 バケットA Redshift Spectrum Redshift ユーザー Redshiftの外部テーブルとして Redshift Spectrumを利用 S3 バケットA クローラー データカタログ
  • 73. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 1.データカタログを用いたメタデータ管理 S3 バケットA Athena ユーザー Athenaで実行 S3 バケットA クローラー データカタログ
  • 74. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 2.ジョブによるSQLの定期実行 トリガー・Python Shellを用いてRedshiftに定期クエリを実行する - 実行するPython Shellにタイムアウトを設定できる為、SQLを長時間実行し続けることや タイムアウト値を設定して途中で中断することが可能 サーバーレス エンジン トリガー Redshift Redshift S3 ・夜間バッチでデータマートを作成する場合に有効 ・Redshift Spectrumの利用目的で古いデータを定期的に送信する ・S3を利用する他のサービスに連携する目的で送信する サーバーレス エンジン トリガー Redshift
  • 75. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 3.WorkFlow機能を用いたETLパイプライン WorkFlow機能を用いて単一ジョブではなく、複数ジョブを組み合わせて実行する 下記ジョブをGlueのWorkflow機能を使って、パイプライン処理として定義する - S3上にあるデータをクロールし、データカタログに登録する - PySparkでフォーマット変換・パーティション化をして、S3に出力するETL処理を実行する - Python Shellでジョブの終了をSNSで通知する PySpark Python Shell
  • 76. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 4.サーバーレスアナリティクス Glueの開発エンドポイント、SageMaker Notebookを用いて分析を行う - 開発エンドポイント設定時にGlueのデータカタログを利用するように設定する - SparkSQLを用いて、標準SQLでSageMaker Notebookから対話的にデータ分析が可能
  • 77. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5.データレイクを用いたログ分析基盤 スピードレイヤ・バッチレイヤを活用したログ分析基盤 - ログデータをS3に保存し、Athena・Redshiftでクエリが実行できるようにGlueでETL処理を 実施する - Lambda Architecture(※1)に沿って、スピードレイヤとバッチレイヤを構築する https://d1.awsstatic.com/whitepapers/lambda-architecure-on-for-batch-aws.pdf
  • 78. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5.データレイクを用いたログ分析基盤 Kinesis Data Streams ログデータを分析するためにKinesisに連携
  • 79. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5.データレイクを用いたログ分析基盤 Kinesis Data Streams Kinesis Data Firehose Elasticsearch Service スピードレイヤー リアルタイム性の高いデータを可視化する
  • 80. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 5.データレイクを用いたログ分析基盤 S3 Athena QuickSight データベース バッチレイヤー Glue Kinesis Data Streams Redshift Kinesis Data Firehose S3に溜まったデータをGlueのデータカタログ、サーバー レスエンジンを利用して、ETL処理を実行する。 実行処理した結果に対してクエリを実行し、可視化する Kinesis Data Firehose スピードレイヤー Elasticsearch Service
  • 81. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 6.GlueとSageMakerを用いた機械学習基盤 Glue WorkFlowを利用したETL・機械学習のワークフロー - Glueにて学習用入力データを作成し、学習ジョブの実行とモデルのデプロイをSageMakerで 実行する - ワークフロー自体はGlueのWorkFlow機能、またはStep Functionsを利用する Glueのワークフローで実行する場合はPySparkとPython Shellを組み合わせる Step Functionsを利用する場合は、ワークフローの内容をJSONで定義する コードの実装、サービスのインテグレーション内容をもとに選択する
  • 82. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 6.GlueとSageMakerを用いた機械学習基盤 S3 PySpark SageMaker Glue Workflow S3 データカタログクローラー データソース Python Shell GlueのWorkFlow内でPySparkとPython Shellを実行し、 機械学習で実行する処理を自動化する トリガー
  • 83. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 6.GlueとSageMakerを用いた機械学習基盤 S3 Glue SageMaker S3 データカタログクローラー データソース Step Functions WorkflowCloudWatch Events
  • 84. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark 料金
  • 85. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 料金 1DPU(Data Processing Unit) = 4vCPU、16GB ・ETLジョブ Apache Spark:$0.44 DPU/時 (課金は秒単位) - 10分間未満の処理は10分としてカウントされる - 2個以上のDPUが必要で、デフォルトでは各Sparkジョブに10個のDPUが割り当てられる Python Shell :1DPU:$0.44 DPU/時 (課金は秒単位)または1/16DPU:$0.0275 DPU/時(課金は秒単位) - 1分間未満の処理は1分としてカウントされる - 1個または1/16DPU個が選択可能で、デフォルトでは各Python Shell単位で1/16個のDPUが 割り当てられる ・開発エンドポイント エンドポイント作成から料金が発生。DPU単位で費用がかかる 2個以上のDPUが必要で、デフォルトでは5個のDPUが割り当てられる Zeppenlin Serverの場合は通常のEC2の料金、SageMaker NotebookはNotebookインスタンスの料金が発生する
  • 86. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 料金 ・データカタログ ストレージ:100万オブジェクトまで無料 (オブジェクト=テーブル、テーブルバージョン、パーティション、データベース) 100万以上保存された場合、10万オブジェクトあたり$1/月 リクエスト:100万リクエスト/月まで無料 100万以上保存された場合、10万オブジェクトあたり$1/月 ・クローラー $0.44 DPU/時 (課金は秒単位) - クローラーの実行に使用されたDPUの数に応じて時間あたりの課金が発生 - クローラーごとに10分の最小期間が設定される。10分未満の処理は10分として計算される ・その他 データ転送量やS3の保存データについては別途料金がかかる
  • 87. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Amazon Confidential and Trademark まとめ
  • 88. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. まとめ ・GlueはサーバーレスのETLサービス ・クローラー・データカタログでメタデータを管理 ・EMR/Athena/Redshift、SageMakerなど他のサービスとセキュアに連携 データソース クローラー データカタログ ETL実行エンジン スケジューラー ターゲット 他のAWSサービス AWS Glue ①データをクロール ②メタデータを管理 ③手動またはスケジュール実行 ④ETLジョブを実行④データを抽出し、ロード
  • 89. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 参考資料 AWS Glue ホームページ https://aws.amazon.com/jp/glue/ AWS Glue 開発者ガイド(公式ドキュメント) https://aws.amazon.com/jp/documentation/glue/ AWS Glue ETL Code Samples (サンプルコード) https://github.com/awslabs/aws-glue-samples AWS Glue用のPythonパッケージ(awsglue.*のソースコード) https://github.com/awslabs/aws-glue-libs/ AWS Glueの料金 https://aws.amazon.com/jp/glue/pricing/ AWS Glueのサービス制限 https://docs.aws.amazon.com/ja_jp/general/latest/gr/aws_service_limits.html#limits_glue
  • 90. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. Q&A お答えできなかったご質問については AWS Japan Blog 「https://aws.amazon.com/jp/blogs/news/」にて 後日掲載します。
  • 91. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS の日本語資料の場所「AWS 資料」で検索 https://amzn.to/JPArchive
  • 92. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. で[検索]AWS イベント 毎週”W-A個別技術相談会”を実施中 • AWSのソリューションアーキテクト(SA)に 対策などを相談することも可能 • 申込みはイベント告知サイトから (https://aws.amazon.com/jp/about-aws/events/) AWS Well-Architected 個別技術相談会
  • 93. © 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved.© 2019, Amazon Web Services, Inc. or its Affiliates. All rights reserved. AWS 公式 Webinar https://amzn.to/JPWebinar 過去資料 https://amzn.to/JPArchive ご視聴ありがとうございました