AWS S3 にデータをアンロードする
このトピックでは、CelerData から AWS S3 バケットにデータをアンロードする方法について説明します。
ステップ 1: S3 バケットのアクセス ポリシーを設定する
AWS アクセス制御要件
CelerData がフォルダーおよびそのサブフォルダー内のファイルにアクセスできるようにするには、S3 バケットおよびフォルダーに次の権限が必要です。
s3:GetObject
s3:PutObject
s3:DeleteObject
s3:ListBucket
IAM ポリシーの作成
次のステップバイステップの手順では、AWS マネジメント コンソールで CelerData のアクセス許可を設定し、S3 バケットを使用してデータをアンロードできるようにする方法を説明します。
-
AWS マネジメント コンソール にログインします。
-
ホーム ダッシュボードから Identity & Access Management (IAM) を選択します。
-
左側のナビゲーション ペインから Account settings を選択します。
-
Security Token Service Regions リストを展開し、CelerData クラスターがデプロイされている AWS リージョンを見つけ、ステータスが Inactive の場合は Activate を選択します。
-
左側のナビゲーション ペインから Policies を選択します。
-
Create Policy をクリックします。
-
JSON タブをクリックします。
-
CelerData が S3 バケットおよびフォルダーにアクセスできるようにするポリシー ドキュメントを追加します。
次の JSON 形式のポリシーは、指定されたバケットおよびフォルダー パスに対する CelerData の必要なアクセス権限を提供します。ポリシー エディターにテキストをコピーして貼り付けることができます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket_name>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject",
],
"Resource": [
"arn:aws:s3:::<bucket_name>/*"
]
}
]
}NOTE
<bucket_name>
をアクセスしたい S3 バケットの名前に置き換えてください。たとえば、S3 バケットがbucket_s3
という名前の場合、<bucket_name>
をbucket_s3
に置き換えます。 -
Review policy をクリックします。
-
ポリシー名(例:
celerdata_export_policy
)とオプションでポリシーの説明を入力します。次に、Create policy をクリックしてポリシーを作成します。
ステップ 2: IAM ユーザーを作成する
-
左側のナビゲーション ペインから Users を選択し、Add user をクリックします。
-
Add user ページで、新しいユーザー名(例:
celerdata_export
)を入力し、アクセス タイプとして Access key - Programmatic access を選択し、Next: Permissions をクリックします。 -
Attach existing policies directly をクリックし、先ほど作成したポリシーを選択し、Next: Tags をクリックします。
-
ユーザーの詳細を確認します。次に、Create user をクリックします。
-
アクセス資格情報を記録します。最も簡単な方法は、Download Credentials をクリックしてファイル(例:
credentials.csv
)に書き込むことです。NOTICE
このページを離れると、Secret Access Key は AWS マネジメント コンソールのどこにも表示されなくなります。キーを紛失した場合は、ユーザーの新しい資格情報セットを生成する必要があります。
これで次のことが完了しました。
- S3 バケット用の IAM ポリシーを作成しました。
- IAM ユーザーを作成し、ユーザーのアクセス資格情報を生成しました。
- ポリシーをユーザーにアタッチしました。
AWS アクセス キー (AK) とシークレット キー (SK) を使用して、CelerData で broker load を使用してバケットにアクセスするために必要な資格情報を取得しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<bucket_name>"
]
},
{
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::<bucket_name>/*"
]
}
]
}
ステップ 3: AWS S3 にデータをアンロードする
バージョン 3.2 以降、CelerData はテーブル関数 FILES() を使用してリモートストレージに書き込み可能なテーブルを定義することをサポートしています。その後、INSERT INTO FILES を使用して CelerData からリモートストレージにデータをアンロードできます。
CelerData がサポートする他のデータエクスポート方法と比較して、INSERT INTO FILES を使用したデータのアンロードは、より 統一された、使いやすく、豊富な機能を備えたインターフェースを提供します。SELECT ステートメントを使用してデータをロードしたのと同じ構文を使用して、リモートストレージに直接データをアンロードできます。さらに、Parquet、ORC、および CSV (バージョン 3.3 以降) 形式のファイルへのデータのアンロードをサポートしています。したがって、ほとんどの場合、INSERT INTO FILES は EXPORT または SELECT INTO OUTFILE よりも推奨されます。
NOTE
Amazon S3 からのデータアンロードには S3A プロトコルが使用されます。したがって、指定するファイルパスは
s3a://
プレフィックスで始める必要があります。
INSERT INTO FILES を使用したデータのアンロード (推奨)
INSERT INTO FILES を使用したデータのアンロードは、さまざまなファイル形式 (Parquet、ORC、および CSV (バージョン 3.3 以降でサポート))、圧縮アルゴリズム、および Partition By Column や単一のデータファイルの出力などの便利な機能を備えています。
INSERT INTO FILES を使用すると、テーブル全体のデータや複雑なクエリの結果をアンロードできます。
-
次の例では、テーブル
user_behavior
のデータをすべて Parquet 形式のファイルにアンロードします。INSERT INTO FILES(
'path' = 's3a://<bucket_name>/path/to/user_behavior/',
'format' = 'parquet', -- Parquet 形式のファイルとしてデータをアンロードします。
'aws.s3.access_key' = '<your_access_key_id>',
'aws.s3.secret_key' = '<your_secret_access_key>',
'aws.s3.endpoint' = 's3.<region_id>.amazonaws.com'
)
SELECT * FROM user_behavior;