先に結論
ファイルを読み込む時は改行コードを確認しよう (受領したものは特に)
何があったか
1 Cognitoユーザー登録お願いできる?リストはこれね
[cloudshell-user@ip-10-130-54-13 ~]$ cat list.csv hogehoge,hoge1,hoge1@example.com,+8180XXXXYYYY hogehoge,hoge2,hoge2@example.com,+8180XXXXYYYY hogehoge,hoge3,hoge3@example.com,+8180XXXXYYYY
2 はいー、下記形式ね
ユーザープールID,ユーザー名,メールアドレス,電話番号
3 ユーザー登録コマンド作成しよう、下記でいけるかな
cat list.csv | awk -F, '{print "aws cognito-idp admin-create-user --username "$2" --user-attributes Name=email,Value="$3" Name=email_verified,Value=true Name=phone_number,Value=""$4"" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id "$1}'
4 実行してみる、、 あれ?
[cloudshell-user@ip-10-130-54-13 ~]$ cat list.csv | awk -F, '{print "aws cognito-idp admin-create-user --username "$2" --user-attributes Name=email,Value="$3" Name=email_verified,Value=true Name=phone_number,Value=""$4"" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id "$1}' " Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge,Value="+8180XXXXYYYY " Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge,Value="+8180XXXXYYYY " Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge,Value="+8180XXXXYYYY [cloudshell-user@ip-10-130-54-13 ~]$
5 聞いたり、調べたりして改行コードが違うんじゃないかという話に
6 改行コード見てみる(Windows(CRLF)になってますね、、)
[cloudshell-user@ip-10-130-54-13 ~]$ od -c list.csv 0000000 h o g e h o g e , h o g e 1 , h 0000020 o g e 1 @ e x a m p l e . c o m 0000040 , + 8 1 8 0 X X X X Y Y Y Y \r \n 0000060 h o g e h o g e , h o g e 2 , h 0000100 o g e 2 @ e x a m p l e . c o m 0000120 , + 8 1 8 0 X X X X Y Y Y Y \r \n 0000140 h o g e h o g e , h o g e 3 , h 0000160 o g e 3 @ e x a m p l e . c o m 0000200 , + 8 1 8 0 X X X X Y Y Y Y \r \n 0000220 [cloudshell-user@ip-10-130-54-13 ~]$
7 依頼元はWindowsで実施環境はUnixだったので改行コードを変更し、再度実施してみる
[cloudshell-user@ip-10-130-54-13 ~]$ tr -d "\r" <list.csv >tmp.csv [cloudshell-user@ip-10-130-54-13 ~]$ cat tmp.csv | awk -F, '{print "aws cognito-idp admin-create-user --username "$2" --user-attributes Name=email,Value="$3" Name=email_verified,Value=true Name=phone_number,Value=""$4"" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id "$1}' aws cognito-idp admin-create-user --username hoge1 --user-attributes Name=email,Value=hoge1@example.com Name=email_verified,Value=true Name=phone_number,Value="+8180XXXXYYYY" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge aws cognito-idp admin-create-user --username hoge2 --user-attributes Name=email,Value=hoge2@example.com Name=email_verified,Value=true Name=phone_number,Value="+8180XXXXYYYY" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge aws cognito-idp admin-create-user --username hoge3 --user-attributes Name=email,Value=hoge3@example.com Name=email_verified,Value=true Name=phone_number,Value="+8180XXXXYYYY" Name=phone_number_verified,Value=true --message-action SUPPRESS --desired-delivery-mediums EMAIL --temporary-password hogefuga --user-pool-id hogehoge [cloudshell-user@ip-10-130-54-13 ~]$
終わりに
もう忘れませんように、、