0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Fivetranを用いたELT作業【その1】

Last updated at Posted at 2024-04-26

【概要】

Fivetran、S3(Icebergテーブル)、OracleDBを用いてELTを実施いたします。今回記事ではまずFivetranとS3の疎通確認を行います。

【イメージ図】

image.png

【Fivetranとは?】

Fivetranとはデータ統合自動化サービスです。
データベース、ファイル等のデータソースからデータ抽出し、データ同期先へのロードを自動化することが可能です。
変換/加工処理をデータ同期先であるデータウェアハウス上で行うこともできます。

【Fivetran⇔S3疎通作業】

①Icebergテーブルの作成

AWS_Athenaからクエリを実行し、IcebergテーブルをS3上に作成します。

テーブル作成クエリ
CREATE TABLE 【作成するテーブル名】 (
  id int,
  data string,
  category string) 
PARTITIONED BY (category, bucket(16,id)) 
LOCATION 's3://【バケット名称】/【ディレクトリ名称】' 
TBLPROPERTIES (
  'table_type'='ICEBERG',
  'format'='parquet',
  'write_compression'='snappy',
  'optimize_rewrite_delete_file_threshold'='10'
)

下記画像の通り、Icebergテーブルが作成される。
image.png

②Fivetran接続作業

②-1: 「Add destination」を押下する。
image.png

②-2: Destination名を入力し、左下の「Add」を押下する。
image.png

②-3: 「S3 Data Lake」を選択する。
image.png

②-4: 各項目を入力していく。
【Bucket】
対象のS3バケット名を入力する。

【Fivetran Role ARN】
AWS上でFivetranからAWS上で必要なサービスへの許可Roleを作成し、FivetranにRoleを割り当てる。
※後ほどRoleの設定方法を記載いたします。

【S3 Prefix Path(optional)】
対象のS3バケット配下のディレクトリのパスを入力する。

【Bucket Region】
対象のS3バケットのリージョン名を入力する。
例)東京リージョンの場合:ap-northeast-1
image.png

【External ID】
AWSでRoleを作成する際に使用します。
デフォルトで入力されています。

【Data processing location】
Japanを選択します。

【Cloud service provider】
AWSのS3を使用するため、AWSを選択します。
※デフォルトでAWSになっていると思います。

【Time zone】
Japan Standard Time JSTを選択します。

image.png

②-5: AWSでRoleを作成する。
下記ポリシーを二つ作成する。

Fivetran-S3
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListBucketOfASpecificPrefix",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::【バケット名称】"
            ],
            "Condition": {
                "StringLike": {
                    "s3:prefix": [
                        "iceberg-folder/*"
                    ]
                }
            }
        },
        {
            "Sid": "AllowAllObjectActionsInSpecificPrefix",
            "Effect": "Allow",
            "Action": [
                "s3:DeleteObjectTagging",
                "s3:ReplicateObject",
                "s3:PutObject",
                "s3:GetObjectAcl",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:PutObjectTagging",
                "s3:DeleteObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::【バケット名称】/iceberg-folder/*"
            ]
        }
    ]
}
Fivetran-S3-Glue-Policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "SetupFormTest",
            "Effect": "Allow",
            "Action": [
                "glue:DeleteDatabase"
            ],
            "Resource": [
                "arn:aws:glue:【リージョン】:【アカウントID】:database/fivetran*",
                "arn:aws:glue:【リージョン】:【アカウントID】:catalog",
                "arn:aws:glue:【リージョン】:【アカウントID】:table/fivetran*/*",
                "arn:aws:glue:【リージョン】:【アカウントID】:userDefinedFunction/fivetran*/*"
            ]
        },
        {
            "Sid": "AllConnectors",
            "Effect": "Allow",
            "Action": [
                "glue:GetDatabase",
                "glue:UpdateDatabase",
                "glue:CreateTable",
                "glue:GetTables",
                "glue:CreateDatabase",
                "glue:UpdateTable",
                "glue:BatchDeleteTable",
                "glue:DeleteTable",
                "glue:GetTable"
            ],
            "Resource": [
                "arn:aws:glue:【リージョン】:【アカウントID】:*"
            ]
        }
    ]
}

②-6: ②-5で作成したポリシーをアタッチしたロールを作成する。

「ロールを作成」を押下する。
image.png

「AWSアカウント」を選択する。
image.png

「別のAWS アカウント」の「アカウントID」欄に、セットアップガイドに記載のあるFivetranのアカウントID「834469178297」を入力しますを入力します。
また、[外部IDを要求する]にチェックを選択します。
入力する外部IDは、②-4のセットアップの画面に表示されたExternal IDを入力します。設定後、[次へ]を押下します。

image.png

②-7: 許可ポリシーとして先ほど作成した2つのIAMポリシーを選択し、[次へ]を押下します。
image.png

②-8: ロール名を記入し、[ロールを作成]を押下します。

image.png

image.png

②-9: 作成したロールからARNをコピーして取得します。
image.png

②-10: Fivetranの設定画面に戻り、「Fivetran Role ARN」の欄に②-9でコピーしたARNを貼り付け、「Save & Test」を押下する。
image.png

②-11:「All connection tests passed!」と表示されれば接続テスト完了です。
image.png

【まとめ】

ここまででFivetranとS3との連携は完了です。
次回はFivetarnとOracleデータベースの連携作業に移ります。

株式会社ジールでは、「ITリテラシーがない」「初期費用がかけられない」「親切・丁寧な支援がほしい」「ノーコード・ローコードがよい」「運用・保守の手間をかけられない」などのお客様の声を受けて、オールインワン型データ活用プラットフォーム「ZEUSCloud」を月額利用料にてご提供しております。
ご興味がある方は是非下記のリンクをご覧ください:
https://www.zdh.co.jp/products-services/cloud-data/zeuscloud/?utm_source=qiita&utm_medium=referral&utm_campaign=qiita_zeuscloud_content-area

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?