Glue Crawlerを使う時の注意点
csvをGlue Crawlerでクロールして、データカタログを作成するとき注意点の csvファイル側の制約(と思われるもの)
csvファイルの制約
- 大文字列名は小文字列名に変換される
- 日本語列名に対応している
- UTF-8のみ扱える。
- ヘッダーの自動読み取りでデータの行が全てStringの場合はヘッダーを認識できない。 docs.aws.amazon.com
ヘッダー行は、データ行と十分に異なっている必要があります。これを判断するには、1 つ以上の行が STRING 型以外として解析されることを確認します。すべての列が STRING 型である場合、最初のデータ行は以降の行と十分に異なっていないため、ヘッダーとして使用できません。
あるある
- 別のCrawler作成時に新規作成したIAMロールを使い回す("既存のIAMロールを選択")と、失敗する。IAMロール作成時にS3パスの制約が入っていることが原因。"IAMロールのポリシーの更新"を選択して、S3の読み取りアクセス許可を追加するか、別途IAMロールを作成する必要がある。
csvファイルにダブルクオートが入っている場合の対処法
- 上記方法に対して対応後、カラムの型をstring型にする必要がある。しないとエラーとなる。 https://aws.amazon.com/jp/premiumsupport/knowledge-center/athena-hive-bad-data-error-csv/
cdk bootstrap実行時の Unable to resolve AWS account to use エラー
CDKの勉強のため、こちらのワークショップを実施中
エラー
cdk bootstrap
実行時に以下のエラーが発生
Unable to resolve AWS account to use. It must be either configured when you define your CDK or through the environment
ネットで検索したところ、.aws/configのdefaultプロファイルを消せとか出てきて、やってみたけど、うまくいかなかった。
原因
~/.aws/config
にて、credential_process
を使ってsts assumeを取得していたことが原因のようだった。
解決方法
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,AWS_SECRET_ACCESS_KEY
を直にexportして再度実行したところ、うまくいった。
aws sts assume-role --role-arn "arn:aws:iam::123456789012:role/example-role" --role-session-name AWSCLI-Session
role-arnとrole-session-nameを指定して、実行するとACCESS_KEY_IDなどが取得できるので、それらをexportする
export AWS_ACCESS_KEY_ID=ASIAXXXXXXXXXXXX export AWS_SECRET_ACCESS_KEY=yyyyyyyyyyyyyyyyyyyyyy export AWS_SESSION_TOKEN=zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz(長い)
これでcdk bootstrap
実行したところ、エラー解消。