LoginSignup
4
0

More than 5 years have passed since last update.

ssm put-parameterでvalueにURLを指定するとGETされる件

Last updated at Posted at 2017-06-04

事象

CLIを使ってAWSのEC2 Systems Manager Parameter StoreにURLの文字列を格納しようとした場合に以下のようなエラーとなりました。どうやらパラメータURLに対してGETした結果を格納しようとしている様子です。コンソールから手で登録できれば良いのですが、なぜかKMSにある自前のキーを使いたい場合CLI経由で登録する必要があります。

実行したコマンド
aws ssm put-parameter --name test.url --value "https://*****.co.jp" --type SecureString --key-id "****" --region ap-northeast-1

結果
An error occurred (ValidationException) when calling the PutParameter operation: 1 validation error detected: Value '

<!DOCTYPE HTML>
<html lang="ja">
以下略
</html>

' at 'value' failed to satisfy constraint: Member must have length less than or equal to 4096

原因

CLIの仕様で"file://", "fileb://", "http://" 及び "https://" のプレフィックスが付いた場合は自動的にデータをロードしてしまうためです。今回の場合はリモートファイルのURLと判断されて中身を取得しにいってしまったというわけです。

解決法

上記の仕様を使ってURLの文字列をデータとしてロードさせてやればOKです。

url.txtにURLを書いて保存します。

url.txt
https://*****.co.jp

下記のコマンドを実行

aws ssm put-parameter --name test.url --value "file://url.txt" --type SecureString --key-id "****" --region ap-northeast-1

注意点

この方法で登録はできるのですが、パラメータを読み出した時に改行コードが末尾に付いてくるので注意しましょう。
現在私の環境ではRubyのSDKから読み出した時にいちいちchompしています。もっとエレガントな方法があるのだと思いますが、併せて機能改善も待たれるところです。

4
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
4
0