読者です 読者をやめる 読者になる 読者になる

@テク野路ジーロード

配信タグシェアリングシステムpickvyを開発、運営開始。最近は、Googleアナリティクスを研究中

Test Failed 400 (Invalid Argument)を解決した話し

運用しているSqaleからMySqlのダンプデータを取り出そうと試みました。
思わず、エラーが出て、プチハマリしました。英語って大切ですよね、トホホ...。

 

Sqaleのデータ取り出し制限の話し

Sqaleはペパボが提供しているPaasサービスでして、
Ruby On Railsを手軽に構築できて、凄く便利です。
しかし、データベースのデータを直接、自分のPCへダウンロードできない等、
制限があります。

 

データを取り出すためには、Amazon Web Service (以下、AWS) 上のS3という
ファイルシステムを経由させる必要があります。

 

丁寧に解説されているウェブサイトが見つかりました。

qiita.com

 

AWSのサイトをみると、無料アカウント枠があるようなので、
早速、アカウント作成して、
自分のPCとAWSの間ではデータのやりとりができることを確認しました。

 

見よう見まねでやってみたら、エラーが出て、プチハマリ
Test Failed 400 (Invalid Argument)!

本題はここから。
上記のウェブサイトを参考に、見よう見まねでやってみたわけです。
上手くいかなかったのです。

 

まず、SqaleからAWSのS3へデータベースのデータをアップロードするわけですけど、
「s3cmd」コマンドを利用します。そして、手番として、2ステップが必要です。

 

以下の感じです。

  1. S3へのアクセス設定(AWSから取得したアクセスキーIDとシークレットキー登録)を、Sqale側に登録する
  2. SqaleからS3へデータベースのデータをアップロード

しかし、ステップ1でいきなりエラーが...

f:id:sunday150:20160515014711p:plain

  • Test failed: 400 (InvalidArgument): Authorization header is invalied -- one and only one ' '(space) required

 

意味わからん。目がつぶれてしまうわ。

なになに? 「テストが失敗したよ、無効な属性だよ、認証ヘッダーが無効だよ、1つ、そして、1つだけスペースが必要」?? わからん。

 

google検索によって、いくつか参考になりそうなページが見つかるが、全て英語。

f:id:sunday150:20160515015917p:plain

ruby on rails 3 - Authorization header is invalid -- one and only one ' ' (space) required - Amazon S3 - Stack Overflow

OpenSource tools to access Amazon S3 file storage ()

外人たちが、あーでもない、こーでもない、と言ってる風には思うけど、
全然理解できない。困った。

 

冷静になって、そもそも俺はどういうコマンドを打ってきたんだっけ?と考えてみた→解決!

はたと気付いた。このシチュエーション、前にも経験したことあるぞと。

もしかして。。。

 

       結果:シークレットキーの最後に半角スペースが入っていた

f:id:sunday150:20160515022004p:plain

 

なぜこれに気付いたかというと、AWSのアクセスキーIDとシークレットキーを
Sqaleに登録する際、間違えないようにAWS画面からSqale画面へコピー&ペーストで
値をコピーしていたから。

 

コピー&ペーストでやると、半角スペースがどうしても入ってしまうことって多い。
ペーストした後に、カーソルの位置が文字列から少し離れていないか確認することが
大事。改めて認識。

 

本記事は以上ですが、

 Sqaleにスマホ経由でSSL接続する方法も書いてますので、こちらもどうぞ!
↓↓↓

sunday150.hatenablog.com