2
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?

【AWS SSOユーザー向け】DynamoDBの全件をBOM付きCSVで出力する方法

2
Last updated at Posted at 2026-03-18

概要

タイトルの通りですが、コマンド一発叩いてDynamoDBを全件BOM付きでCSV出力する方法を解説します。AWS console上からだと最大300件、あとはポチポチ次のページを読み込んだりとしますがスマートじゃないですし膨大なデータになればそんなことはしてられませんのでコマンド一発叩いてパッと終わらせましょう!

対象の読者

AWSアカウントの管理にSSOを使用している方

→ aws sso login --profile ~~~を叩いたことのある方

先にコマンドだけ

printf '\xEF\xBB\xBF' > output.csv && aws dynamodb scan --table-name {{ テーブル名 }} --profile {{ プロファイル名 }} | jq -r '["Header1","Header2","Header3"], (.Items[] | [.Header1.N, .Header2.S, .Header3.S]) | @csv' >> output.csv

流れ

  1. 対象のDynamoDBがあるAWSアカウントのProfileを作成します
  2. AWS consoleから対象のDynamoDBのテーブル名を取得しておきます
  3. AWS consoleから対象のDynamoDBのヘッダーを取得しておきます
  4. 上記で取得した情報をコマンドに代入していきます
  5. BOMを付けるコマンドを追加して叩いて完了!

始める前に

今回はjqというツールを使いますので各OSに合わせた方法でインストールしましょう

インストール済みか確認

jq --version

 MacOS: 

brew install jq

 Linux: 

sudo apt-get install jq

 Windows: 

jq公式サイトからバイナリをダウンロードし、パスを通します。

1. 対象のAWSアカウントのProfileを作成

aws configure sso

いろいろ聞かれますが、AWS access portalから対象のAWSアカウントの「アクセスキー」をクリックすると必要な情報が一通り載っていますので設定していきます。

2. 対象のDynamoDBのテーブル名を取得

CSV出力したいDynamoDBのテーブル名をを控えておきます

3. 対象のDynamoDBのヘッダーを取得

AWS consoleから対象のDynamoDBのヘッダーを取得しておきます

4. コマンドに代入していきます

コマンド

aws dynamodb scan --table-name {{ テーブル名 }} --profile {{ プロファイル名 }} | jq -r '["Header1","Header2","Header3"], (.Items[] | [.Header1.N, .Header2.S, .Header3.S]) | @csv' >> output.csv

aws dynamodb scan --table-name Hoge-Table --profile hoge-dev | jq -r '["id","name","created_at"], (.Items[] | [.id.N, .name.S, .created_at.S]) | @csv' >> output.csv

代入時の注意点

  • (.Items[] | [.id.N, .name.S, .created_at.S])の部分の記述の.Sや.Nはデータの型を正しく指定しないと値が取れないので自分のデータに合わせて調整しましょう!(String,Number)
  • 出力後にCSVファイルをRenameしたくない場合はoutput.csvも調整しましょう!

5. BOMをつけよう

1. BOM付きCSVファイルの生成

以下のコマンドを使用して、CSVファイルにBOMを追加します。

printf '\xEF\xBB\xBF' > output.csv && aws dynamodb scan --table-name {{ テーブル名 }} --profile {{ プロファイル名 }} | jq -r '["Header1","Header2","Header3"], (.Items[] | [.Header1.N, .Header2.S, .Header3.S]) | @csv' >> output.csv

2. コマンドの解説

BOMの追加:

printf '\xEF\xBB\xBF' > output.csv

BOMを表すバイト列(\xEF\xBB\xBF)を出力先ファイルに最初に追加。

aws dynamodb scan --table-name {{ テーブル名 }} --profile {{ プロファイル名 }} | jq -r '["Header1","Header2","Header3"], (.Items[] | [.Header1.N, .Header2.S, .Header3.S]) | @csv' >> output.csv

上記の工程で作成したコマンドを後半に代入

完成したコマンド

それぞれ取得したいデータやユーザーなどで異なる可変の位置に関しては{{ }}で囲んであります。(使用する場合{{ }}は削除の上、置き換えて下さい)

printf '\xEF\xBB\xBF' > {{ output.csv }} && aws dynamodb scan --table-name {{ テーブル名 }} --profile {{ プロファイル名 }} | jq -r '["{{ Header1 }}","{{ Header2 }}","{{ Header3 }}"], (.Items[] | [{{ .Header1.N }}, {{ .Header2.S }}, {{ .Header3.S }}]) | @csv' >> {{ output.csv }}

printf '\xEF\xBB\xBF' > output.csv && aws dynamodb scan --table-name Hoge-Table --profile hoge-dev | jq -r '["id","name","created_at"], (.Items[] | [.id.N, .name.S, .created_at.S]) | @csv' >> output.csv

まとめ

一度やってみると、それ以降のDynamoDBを使用したプロジェクトで簡単にCSV出力できるようになるので、試してみることをお勧めします!

それでは最後までありがとうございました!失礼します!🙇‍♂️

2
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
2
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?