SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
AWS Glueを使った
Serverless ETL の実装パターン
新井 成一
CX事業本部 MADチーム
2自己紹介
CX事業本部
MADチーム所属
サーバーサイドエンジニア
普段の業務
API/IoT用のバックエンドの仕組みをAWSで構築&開発
データ分析&可視化する前のETL処理 ← ここ最近
3よくある話を少しする
AWS IoT Core Firehose S3
Amazon Athena
Amazon Redshift
Amazon EMR
Amazon QuickSight
Collection VisualizationAnalysis
4よくある話を少しする
AWS IoT Core Firehose S3
Amazon Athena
Amazon Redshift
Amazon EMR
Amazon QuickSight
Collection VisualizationAnalysis
時系列データ
を収集
分析処理
ダッシュボード
で可視化
5よくある話を少しする
AWS IoT Core Firehose S3
Amazon Athena
Amazon Redshift
Amazon EMR
Amazon QuickSight
Collection VisualizationAnalysis
時系列データ
を収集
分析処理
ダッシュボード
で可視化
そのままでは使えない場合が多い
データフォーマットがバラバラ
非構造化/半構造化データなど
6
ETL処理が必要
7ETL処理が必要
AWS IoT Core Firehose S3
Amazon Athena
Amazon Redshift
Amazon EMR
Amazon QuickSight
Collection VisualizationAnalysis
時系列データ
を収集
分析処理
ダッシュボード
で可視化
LoadTransformExtract
8
『ETLで使えるAWSサービスは?』
9AWS ETL で検索すると
10
『なんか良さそう!』
11AWS Glueとは?
※ https://aws.amazon.com/jp/glue/ から引用
AWS Glue は抽出、変換、ロード (ETL) を行う完全マネージド型のサービスで、お
客様の分析用データの準備とロードを簡単にします。AWS マネジメントコンソール
で数回クリックするだけで、ETL ジョブを作成および実行できます。AWS Glue で
は、AWS に保存されたデータを指定するだけで AWS Glue によるデータ検索が行
われ、テーブル定義やスキーマなどの関連するメタデータが AWS Glue データカタ
ログに保存されます。
12AWS Glue のコンソール画面
13
『なるほど、わからん...』
14今回する・しない話
今回する話
AWS Glueの概要
AWS Glueを中心としたETL処理の実装方法
開発/テスト/デプロイ/モニタリング
今回しない話
ETLやサーバーレスの概念の話
データ分析や可視化の手法の話
Amazon EMRやAWS Batchの話
15今回の発表の目的
「AWS Glueというサービスの概要がわかった!」
「AWS Glueでの実装イメージが湧いた!」
16INDEX
AWS Glueの概要 10min
AWS Glueに関連するサービスの話 5min
ETLの実装パターン 20min
開発/テスト/デプロイ/モニタリング
17
AWS Glue の概要
18
『AWS Glue』よくわからん…
19なぜわからないのか?
1. 実態をつかみづらい
機能が多い
実は別のサービスの裏側で使われている
2. 何を指しているのかわからない問題
『Lambda』 ≒ Lambda Functionをイメージ
『Dynamo』 ≒ DynamoDBのテーブルをイメージ
『Glue』 ≒ ???
20
AWS Glueのメイン機能は2つ
21AWS Glueのメイン機能
AWS Glueのテーブル
よく言われるデータカタログのこと
データのスキーマ情報(カラム名やデータ型)を持っている
データベース毎に管理する
AWS Glueのジョブ
ETL処理の実行基盤
3種類から選択可能(Python Shell, Spark, Spark Streaming)
22テーブルとジョブのイメージ
23テーブルとジョブのイメージ
テーブル
24テーブルとジョブのイメージ
ジョブ
25
実演
26例えば
IoTデバイスからセンサーデータがJSON形式で送信されている
項目名やデータ型のなど分析基盤側で扱いづらい状態
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
Amazon Redshift
E
• 保存されている生デー
タを取得
T
• カラム名・データ型を変
換
L
• 分析基盤へロード
ETL
27蓄積されているデータ
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
[
{
"device_id": "A",
"timestamp": 1593007044,
"location": {
"lat": "35.698362",
"long": "139.773288"
}
}
…
28蓄積されているデータ
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
[
{
"device_id": "A",
"timestamp": 1593007044,
"location": {
"lat": "35.698362",
"long": "139.773288"
}
}
…
項目名を変えたい
29蓄積されているデータ
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
[
{
"device_id": "A",
"timestamp": 1593007044,
"location": {
"lat": "35.698362",
"long": "139.773288"
}
}
…
データ型を変えたい
30テーブルの作成
S3
AWS glue data
catalog
Crawler
クローラーでテーブルを自動作成
31テーブルの作成
テーブルスキーマが登録される
S3
AWS glue data
catalog
Crawler
32ジョブの作成
Glueが自動生成してくれるスクリプトを利用
33ジョブの作成
データソースの指定 データターゲットの指定
※Redshit ClusterやGlue Connectionは事前に作成済
34ジョブの作成
データのマッピングを指定
35ジョブの作成
Glue Jobのスクリプトが自動生成される
36ジョブの実行
Redshiftにデータが投入される
37実演の振り返り
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
Amazon Redshift
AWS glue data
catalog
Crawler
AWS IoT Core Firehose S3
IoT
sensor
IoT
sensor
Amazon RedshiftAWS Glue Job
ETL
38
イメージ湧きましたか?
39その他 〜AWS Glueの機能〜
ワークフロー
ジョブやクローラの実行順序を定義できる
トリガー
ジョブやクローラーを起動タイミングを制御できる
スケジュール実行などが可能
開発エンドポイント
Glue Jobと同等の実行環境を用意してくれる
ジョブのスクリプトを開発するのに利用できる
40
AWS Glueに関連する
サービスの話
41Glue JobとLambdaの比較
並列度を上げて処理したい場合はLambdaを検討すべき
※2020/06/04時点での東京リージョンでの比較
AWS Glue Job (Python Shell) AWS Glue Job (Spark) AWS Lambda
メモリ 1GB or 16GB 32GB - 128 - 3,008 MB
実行時間 デフォルトで48h デフォルトで48h 最大15min
同時実行数 アカウント内で50 アカウント内で50 リージョン毎に1,000
課金額 従量課金≒性能 * 実行時間(s)
(ただし最小10分)
従量課金≒性能 * 実行時間(s)
(ただし最小10分)
従量課金≒性能 * 実行時間
(100ms)
起動のオーバーヘ
ッド
数十秒 - 数分 数十秒 - 数分 数ミリ秒 - 数秒
言語 Python Python or Scala Python, Node.js … など多数
AWS Step Functions workflow
42Glue Workflow と StepFunctionsの比較
多少難易度は高いが、StepFunctionのほうが柔軟
AWS Glue
Workflow
AWS Step
Functions
複雑さ 低 中
柔軟さ 低 高
連携先 少ない 多い
43実は裏側でGlueを使っているサービス
AthenaのCREATE TABLEはGlueのデータカタログを利用
44
実装パターンの紹介
45
これ以降
PySpark, Python Shell
を前提とした話になります
46実装の手順
開発 テスト デプロイ モニタリング
47開発とテスト
開発 テスト デプロイ モニタリング
48開発とテストのパターン
LocalStack
.py
AWS Cloud AWS Cloud AWS Cloud
AWS Glue
開発エンドポイント
AWS Glue Job
.py
① ② ③ ④
AWS Services
49開発とテストのパターン
LocalStack
.py
AWS Cloud AWS Cloud AWS Cloud
AWS Glue
開発エンドポイント
AWS Glue Job
.py
① ② ③ ④
AWS Services
実行環境が
ローカル
実行環境が
AWS Glue
50開発とテストのパターン
実行環境がローカルなので、デバッグ
やテストがやりやすい
ジョブの実行時に発生する権限エラー
やOMMなどには気づきにくい
Sparkを利用する場合は、実行環境を整
えるのが手間(バージョンの不一致や
aws-glue-libsの既存の不具合などでハマ
りやすい)、ある程度のマシンスペッ
クが必要
①のケースでは、モックツールで利用
可能なAWSサービスが限られていたり、
モックツール自体の不具合がある
LocalStack
.py
AWS Cloud
.py
① ②
AWS Services
51開発とテストのパターン
コードの実行環境がAWSなので、権限
やメモリ割り当て量が適切か確認しや
すい
実行時間が計測しやすい
AWS利用費が高くなりがち
④のケースでは、ジョブの終了までか
なりの時間待たされるので、デバッグ
しずらい
AWS Cloud AWS Cloud
AWS Glue
開発エンドポイント
AWS Glue Job
③ ④
52今回紹介するパターン
② ④
LocalStack
.py
AWS Cloud AWS Cloud AWS Cloud
AWS Glue
開発エンドポイント
AWS Glue Job
.py
① ③
AWS Services
53
これ以降コードが出てきますが
分かりやすさ重視のため
不要な箇所は省略しています
54② AWSサービスを利用したローカル実行
AWS Cloud
.py
②
AWS Services
55② 事前のセットアップ
※ https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-
programming-etl-libraries.html を参照
Version
Python 3.6.9
aws-glue-libs glue-1.0
Apache Maven 3.6.0
Apache Spark 2.4.3
boto3 1.14.13
pytest 5.4.3
AWS Cloud
.py
②
AWS Services
※ aws-glue-libsの不具合: https://github.com/awslabs/aws-glue-
libs/issues/25
56② 事前のセットアップ
AWS Cloud
.py
②
AWS Services
Dockerfileを作成するのもアリ
Version
Python 3.6.9
aws-glue-libs glue-1.0
Apache Maven 3.6.0
Apache Spark 2.4.3
boto3 1.14.13
pytest 5.4.3
57② aws-glue-libsにPytestが用意されている
Amazon Redshift
Spectrum
S3
AWS Cloud
$ git clone -b glue-1.0 --depth 1
https://github.com/awslabs/aws-glue-libs glue/aws-glue-libs
AWS glue data
catalog
Crawler
S3 AWS Glue Job
glue/aws-glue-libs/bin/
├── glue-setup.sh
├── gluepyspark
├── gluepytest
└── gluesparksubmit
.py
Pytestを利用する
テストコードを用意
58② 簡単なテストコードを用意
import sys
from src.pyspark.timeseries_etl import main_job
class TestClass(object):
def test_run_job(self):
# 引数を指定
args = {
"--JOB_NAME": "timeseries_etl",
"--DB_NAME": "arai-test-
devio2020_database",
"--TBL_NAME": "timeseries_data",
"--OUTPUT_DEST": "s3://arai-test-
devio2020/pyspark-output",
}
sys.argv += [item for pair in args.items() fo
r item in pair]
# ジョブを起動
main_job()
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
ソースコード
59② 簡単なソースコードを用意
def main_job():
# 引数取得
args = getResolvedOptions(sys.argv, [
"JOB_NAME",
"DB_NAME",
"TBL_NAME",
"OUTPUT_DEST",
])
# セットアップ
sc = SparkContext()
glueContext = GlueContext(sc)
spark = glueContext.spark_session
job = Job(glueContext)
job.init(args["JOB_NAME"], args)
# コミット
job.commit()
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
Pytestを実行
60② pytestの実行
※ AWS のクレデンシャル情報をセットするのをお忘れなく
$ glue/aws-glue-libs/bin/gluepytest test/pyspark/test_timeseries_etl.py
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
ソースコード
61② 徐々に育てていく
# DynamicFrameの作成
src_timeseries_dyf = glueContext.create_dynamic_f
rame.from_catalog(
database=args["DB_NAME"],
table_name=args["TBL_NAME"],
transformation_ctx="src_timeseries_dyf"
)
# マッピング
mapping_list = [
("device_id", "string", "device_id", "string"
),
("timestamp", "int", "timestamp", "int"),
("location.lat", "string", "latitude", "doubl
e"),
("location.long", "string", "longitude", "dou
ble")
]
map_timeseries_dyf = ApplyMapping.apply(
frame=src_timeseries_dyf,
mappings=mapping_list,
transformation_ctx="timeseries_map_dyf"
)
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
DataFrameへの変換
62② SparkのDataFrameも活用
# DataFrameに変換
timeseries_df = map_timeseries_dyf.toDF()
# カラム追加
timeseries_df = timeseries_df.withColumn(
"year", from_unixtime('timestamp', 'yyyy'))
timeseries_df = timeseries_df.withColumn(
"month", from_unixtime('timestamp', 'MM'))
# 再パーティショニング
timeseries_df = timeseries_df.repartition('year',
'month', 'device_id')
# DataframeをDynamicFrameに変換
timeseries_dyf = DynamicFrame.fromDF(
timeseries_df, glueContext, "timeseries_dyf")
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
S3へ保存
63② テスト用のバケットに出力し中身をチェック
# 保存
save_timeseries_dyf = glueContext.write_dynamic_f
rame.from_options(
frame=timeseries_dyf,
connection_type="s3",
connection_options={
"path": args["OUTPUT_DEST"],
"partitionKeys": [
"year",
"month",
"device_id"
]
},
format="parquet",
transformation_ctx="save_timeseries_dyf"
)
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
テストコード
64② テストの前後処理や結果のチェックを実装
def pytest_runtest_setup():
print('¥n-----setup-----¥n')
# テストデータの作成
TEST_BUCKET.create()
…省略
def pytest_runtest_teardown():
print('¥n-----teardown-----¥n')
# テストデータの削除
TEST_BUCKET.objects.all().delete()
…省略
def test_run_job(self):
…省略
main()
# 結果の取得
res_data = self.get_result_data()
# 正解の取得
corr_data = self.get_correct_data()
# 結果の確認
assert res_data == corr_data
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
launch.json
65② うまく設定すればデバッグ実行も可能
{
"name": "PyTest Glue",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"pythonPath": "${command:python.interpreterPath}",
"module": "pytest",
“args”: [“-svv”, "${file}", "--color", "yes"],
"cwd": "${workspaceRoot}",
"env": {
"PYTHONPATH": "${workspaceRoot}/glue/aws-glue-
libs:/usr/local/spark/python/lib/py4j-0.10.7-
src.zip:/usr/local/spark/python/:${command:python.in
terpreterPath}",
"SPARK_CONF_DIR": "${workspaceRoot}/glue/aws-
glue-libs/conf",
"AWS_SECRET_ACCESS_KEY": “<your_access_key>",
"AWS_ACCESS_KEY_ID": "<your_key_id>",
"AWS_SESSION_TOKEN": "<your_token>"
},
"console": "internalConsole",
"internalConsoleOptions": "openOnSessionStart“
}
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
66② AWSサービスを利用したローカル実行
AWS Cloud
.py
②
AWS Services
67② 事前のセットアップ
Version
Python 3.6.9
boto3 1.14.13
pytest 5.4.3
Pandas 0.25.1
AWS Cloud
.py
②
AWS Services
ソースコード
68② Pandasが便利
def main(plant_id_dpac, current_date):
# 引数取得
args = getResolvedOptions(sys.argv, [
"JOB_NAME",
"DB_NAME",
"TBL_NAME",
"OUTPUT_DEST",
])
# データの取得
timeseries_list = get_timeseries_list()
# 該当データがなければ即終了
if not timeseries_list:
logger.info("Timeseries data not found.")
return
# pandasのDataframeに変換
timeseries_df = pd.DataFrame(timeseries_list)
# TODO: 業務処理
…省略
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
.py
69④ AWS Glue Job を直接実行して確認
AWS Cloud
AWS Glue Job
④
70④ 事前のセットアップ
AWS Cloud
AWS Glue Job
④
Version
Python 3.6.9
boto3 1.14.13
pytest 5.4.3
テストコード
71④ PytestでE2Eテストを実行
def test_exec_job(self, mocker):
# 引数をオーバーライドしてジョブを実行
exec_res = glue_client.start_job_run(
JobName=pytest.JOB_NAME,
Arguments={
"--DB_NAME": "arai-test-
devio2020_database",
"--TBL_NAME": "timeseries_data",
"—-OUTPUT_DEST”: "s3://arai-test-
devio2020/pyspark-output"
}
)
# ジョブの起動が成功していることを確認
assert exec_res["ResponseMetadata"]["HTTPStatusCo
de"] == 200
job_run_id = exec_res["JobRunId"]
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
テストコード
72④ Glue Jobが完了するのを待って結果の確認
…省略
# ジョブが完了するまで待つ
job_status = wait_until_job_finished(pytest.JOB_N
AME, job_run_id, 300)
# ジョブが成功していることを確認
assert job_status == "SUCCEEDED"
# テスト結果の取得
df_test_res = self.get_result_by_dataframe()
# 結果の確認
assert_frame_equal(df_test_res, df_corr_res)
Amazon Redshift
Spectrum
S3
AWS Cloud
AWS glue data
catalog
Crawler
S3 AWS Glue Job
73デプロイ
開発 テスト デプロイ モニタリング
74ソースコードと外部ライブラリのデプロイ
AWS Cloud
from setuptools import setup
setup(
name="pandas",
version="0.25.1",
packages=[],
install_requires=['pandas==0.25.1']
)
$ python setup.py bdist_wheel
S3
.py .whl
AWS Glue Job
参照
Upload
75AWS Glueリソースのデプロイ
AWS Glue Job
AWS glue data
catalog
Crawler
AWS Cloud
# Glue
resource "aws_glue_catalog_database" "database" {
name = "${var.system_name}_database"
}
resource "aws_glue_crawler" "timeseries_crawler" {
name = "${var.system_name}_timeseries_crawler"
database_name = aws_glue_catalog_database.database.n
ame
role = aws_iam_role.glue_iam_role.arn
schedule = "cron(0 */1 * * ? *)"
table_prefix = "timeseries_"
s3_target {
path = "s3://${var.system_name}/Data"
}
}
resource "aws_glue_job" "timeseries_etl" {
name = "${var.system_name}_timeseries_etl"
command {
script_location = "s3://${var.system_name}/glue-
script/pyspark/timeseries_etl.py"
python_version = 3
}
role_arn = aws_iam_role.glue_iam_role.arn
timeout = 60
max_capacity = 2
glue_version = "1.0"
default_arguments = {
"--job-language" = "python"
"--enable-metrics" = "true"
"--extra-py-
files" = "s3://${var.system_name_prefix}-artifacts-
store/glue/modules/pandas-0.25.1-py3-none-any.whl"
"--job-bookmark-option" = "job-bookmark-enable"
…省略
76モニタリング
開発 テスト デプロイ モニタリング
77AWS Glue Jobでジョブメトリクスを有効化
CloudWatch Metrics
78アラート通知
AWS Glue Job Amazon CloudWatch
Events
Amazon Simple
Notification Service
AWS Lambda Amazon CloudWatch
Metrics
…省略
"source": "aws.glue",
"detail-type": "Glue Job State Change",
"time": "2020-01-09T09:33:40Z",
"region": "ap-northeast-1",
"resources": [],
"detail": {
"jobName": "glue-job-for-err-notification",
"severity": "ERROR",
"state": "FAILED",
"jobRunId": "jr_a56a071553c6038a20f1578f74a013
6c94e1ea946a3e9516322b4b2bd2e3a5f4",
"message": "Command failed with exit code 1"
イベントソースの定義 受け取れるイベント
79Complete!
開発 テスト デプロイ モニタリング
80目的は達成できたか?
「AWS Glueというサービスの概要がわかった!」
「AWS Glueでの実装イメージが湧いた!」
81
ご清聴ありがとうございました
セッション後はアンケートへのご協力をよろしくお願いします。
ご回答いただいた方には後日、資料を送付いたします。
SNS投稿にはこちらをお使いください。
#devio2020
イベントのポータルサイトはこちら
https://classmethod.jp/m/devio_2020_connect/
ライブセッション録画もこちらから
視聴できます。https://forms.gle/NzASFqrgcGyBFFzN7
15:00〜15:45
「AWS Glueを使った
Serverless ETLの実装パターン」
のアンケートはこちらです。
Q&A Q&A

Contenu connexe

Tendances

SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したことAmazon Web Services Japan
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)NTT DATA Technology & Innovation
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...Amazon Web Services Japan
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤Yu Otsubo
 
Presto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaPresto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaAmazon Web Services Japan
 
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 RedshiftAmazon Web Services Japan
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAmazon Web Services Japan
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)Masaya Tahara
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性Ohyama Masanori
 
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 ServiceAmazon Web Services Japan
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法Tetsutaro Watanabe
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)Trainocate Japan, Ltd.
 
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続Amazon Web Services Japan
 

Tendances (20)

At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと20220409 AWS BLEA 開発にあたって検討したこと
20220409 AWS BLEA 開発にあたって検討したこと
 
MLOpsはバズワード
MLOpsはバズワードMLOpsはバズワード
MLOpsはバズワード
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
IAM Roles Anywhereのない世界とある世界(2022年のAWSアップデートを振り返ろう ~Season 4~ 発表資料)
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
20180425 AWS Black Belt Online Seminar Amazon Relational Database Service (Am...
 
AWSで作る分析基盤
AWSで作る分析基盤AWSで作る分析基盤
AWSで作る分析基盤
 
データ利活用を促進するメタデータ
データ利活用を促進するメタデータデータ利活用を促進するメタデータ
データ利活用を促進するメタデータ
 
Presto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon AthenaPresto ベースのマネージドサービス Amazon Athena
Presto ベースのマネージドサービス Amazon Athena
 
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
 
AWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon KinesisAWS Black Belt Online Seminar 2017 Amazon Kinesis
AWS Black Belt Online Seminar 2017 Amazon Kinesis
 
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
OSS+AWSでここまでできるDevSecOps (Security-JAWS第24回)
 
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
監査要件を有するシステムに対する PostgreSQL 導入の課題と可能性
 
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
 
MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法MongoDBが遅いときの切り分け方法
MongoDBが遅いときの切り分け方法
 
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
 
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
20200219 AWS Black Belt Online Seminar オンプレミスとAWS間の冗長化接続
 

Similaire à AWS Glueを使った Serverless ETL の実装パターン

ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますinfinite_loop
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発Nomura Yusuke
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Yasuhiro Horiuchi
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeSatoru Ishikawa
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~Serverworks Co.,Ltd.
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコシステムズ合同会社
 
20190305_AWS-Blackbelt-EC2.pdf
20190305_AWS-Blackbelt-EC2.pdf20190305_AWS-Blackbelt-EC2.pdf
20190305_AWS-Blackbelt-EC2.pdfssuserf4b2a6
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうGenta Watanabe
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_publicTomoaki Sakatoku
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたHideaki Aoyagi
 
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話Hibino Hisashi
 
Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Tusyoshi Matsuzaki
 
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...Hinemos
 
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)Amazon Web Services Japan
 

Similaire à AWS Glueを使った Serverless ETL の実装パターン (20)

PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
ゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せますゲームのインフラをAwsで実戦tips全て見せます
ゲームのインフラをAwsで実戦tips全て見せます
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013Programming AWS with Perl at YAPC::Asia 2013
Programming AWS with Perl at YAPC::Asia 2013
 
Developers.IO 2019 Effective Datalake
Developers.IO 2019 Effective DatalakeDevelopers.IO 2019 Effective Datalake
Developers.IO 2019 Effective Datalake
 
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~サーバーワークス re:invent_2016~新サービス・アップデート紹介~
サーバーワークス re:invent_2016~新サービス・アップデート紹介~
 
[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005[Japan Tech summit 2017] DEP 005
[Japan Tech summit 2017] DEP 005
 
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
シスコ装置を使い倒す!組込み機能による可視化からセキュリティ強化
 
20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows20130326 aws meister-reloaded-windows
20130326 aws meister-reloaded-windows
 
20190305_AWS-Blackbelt-EC2.pdf
20190305_AWS-Blackbelt-EC2.pdf20190305_AWS-Blackbelt-EC2.pdf
20190305_AWS-Blackbelt-EC2.pdf
 
Aws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそうAws tools for power shellをつかいこなそう
Aws tools for power shellをつかいこなそう
 
aws mackerel twilio_handson_public
aws mackerel twilio_handson_publicaws mackerel twilio_handson_public
aws mackerel twilio_handson_public
 
20211109 bleaの使い方(基本編)
20211109 bleaの使い方(基本編)20211109 bleaの使い方(基本編)
20211109 bleaの使い方(基本編)
 
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみたAKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
 
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
【第21回Elasticsearch勉強会】aws環境に合わせてelastic stackをログ分析基盤として構築した話
 
Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理Spark Analytics - スケーラブルな分散処理
Spark Analytics - スケーラブルな分散処理
 
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
 
Apache Spark on Azure
Apache Spark on AzureApache Spark on Azure
Apache Spark on Azure
 
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
AWS IoT SiteWise のご紹介 (AWS IoT Deep Dive #5)
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 

AWS Glueを使った Serverless ETL の実装パターン