{QLDB}Amazon QLDB からのジャーナルデータのエクスポート

-- 前提: QLDBシェルインストール済み

-- 1. S3バケット作成

aws s3 mb s3://bucket123
aws s3 ls

-- 2. IAMポリシー作成
vim policy01.json

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "QLDBJournalExportS3Permission",
"Action": [
"s3:PutObjectAcl",
"s3:PutObject"
],
"Effect": "Allow",
"Resource": "arn:aws:s3:::bucket123/*"
}
]
}
aws iam create-policy \
--policy-name policy01 \
--policy-document file://policy01.json

-- 3. IAMロール作成
vim role01.json

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "qldb.amazonaws.com"
},
"Action": [ "sts:AssumeRole" ]
}
]
}


aws iam create-role \
--role-name role01 \
--assume-role-policy-document file://role01.json


-- 4. ポリシーをロールにアタッチ
aws iam attach-role-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01 \
--role-name role01

 


-- 5. 台帳の作成
aws qldb create-ledger \
--name qldb01 \
--permissions-mode STANDARD \
--no-deletion-protection

aws qldb list-ledgers
aws qldb describe-ledger --name qldb01

-- 6. テストデータ追加

qldbshell --ledger qldb01

create table tab1
insert into tab1 `{"col1": "val1"}`
select * from tab1


-- 7. ジャーナルデータのエクスポート

vim s3.json
{
"Bucket": "bucket123",
"Prefix": "qldb01/",
"EncryptionConfiguration": {
"ObjectEncryptionType": "SSE_S3"
}
}


aws qldb export-journal-to-s3 \
--name qldb01 \
--inclusive-start-time 2021-08-29T12:00:37Z \
--exclusive-end-time 2021-08-29T12:04:00Z \
--s3-export-configuration file://s3.json \
--role-arn arn:aws:iam::999999999999:role/role01


aws qldb list-journal-s3-exports

aws qldb list-journal-s3-exports-for-ledger \
--name qldb01


aws qldb describe-journal-s3-export \
--name qldb01 \
--export-id 17CRMoOSiwMB54cs7I49kw

 

aws s3 ls s3://bucket123 --recursive --human-readable


aws s3 cp s3://bucket123/qldb01/2021/08/29/12/5pxn49RxgQk4fyxyuvHDpM.0-5.ion .

 

-- 8. クリーンアップ

-- 台帳の削除
aws qldb delete-ledger --name qldb01


-- ロールの一覧
aws iam list-roles | grep role01

-- ロールの削除

aws iam detach-role-policy \
--role-name role01 \
--policy-arn arn:aws:iam::999999999999:policy/policy01


aws iam delete-role --role-name role01

-- ポリシーの一覧
aws iam list-policies | grep policy01

-- ポリシーの削除
aws iam delete-policy \
--policy-arn arn:aws:iam::999999999999:policy/policy01


-- バケット一覧
aws s3 ls

-- バケット削除
aws s3 rb s3://bucket123 --force