aws-cliでSSMのparameter storeにデータをいれる

## 使うコマンド
```
$ aws ssm put-patameter
```

## 文字列をそのまま入れる

```
$ aws ssm put-parameter --name "test" --type "String" --value "hello"
{
    "Version": 1
}
```
`ssm get-parameters`で取得できます。

```
$ aws ssm get-parameters --name "test" | jq .
{
  "InvalidParameters": [],
  "Parameters": [
    {
      "Name": "test",
      "LastModifiedDate": 1540291994.341,
      "Value": "hello",
      "Version": 1,
      "Type": "String",
      "ARN": "arn:aws:ssm:ap-northeast-1:99999:parameter/test"
    }
  ]
}

```

## 上書きする

アクション名はputですが、そのまま実行すると怒られます。

```
$ aws ssm put-parameter --name "test" --type "String" --value "hello world"

An error occurred (ParameterAlreadyExists) when calling the PutParameter operation: The parameter already exists. To overwrite this value, set the overwrite option in the request to true.
```

`--overwrite`オプションをつけて、明示的に上書きしましょう。

```
$ aws ssm put-parameter --name "test" --type "String" --value "hello world" --overwrite
{
    "Version": 2
}
```

getすると、新しいバージョンのデータが取れます。

```
{
  "InvalidParameters": [],
  "Parameters": [
    {
      "Name": "test",
      "LastModifiedDate": 1540292106.049,
      "Value": "hello world",
      "Version": 2,
      "Type": "String",
      "ARN": "arn:aws:ssm:ap-northeast-1:99999:parameter/test"
    }
  ]
}
```

以前のバージョンは、`get-parameter-history`で確認できます。

```
$ aws ssm get-parameter-history --name "test" | jq .
{
  "Parameters": [
    {
      "Name": "test",
      "LastModifiedDate": 1540291994.341,
      "Labels": [],
      "Value": "hello",
      "Version": 1,
      "LastModifiedUser": "arn:aws:iam::999999:user/developer",
      "Type": "String"
    },
    {
      "Name": "test",
      "LastModifiedDate": 1540292106.049,
      "Labels": [],
      "Value": "hello world",
      "Version": 2,
      "LastModifiedUser": "arn:aws:iam::999999:user/developer",
      "Type": "String"
    }
  ]
}
```

誰が更新したかも記録してくれてるみたいですね。

## セキュアに保存する

パスワードやtokenなどは、平文で保存したくないものです。
その場合は`type=SecureString`でputしましょう。

比較がしやすいので、`--overwrite`でいきます。

```
$ aws ssm put-parameter --name "test" --type "SecureString" --value "hello world" --overwrite
{
    "Version": 3
}

```

Historyでみると、Version: 3だけ暗号化されていますね。

```
$ aws ssm get-parameter-history --name "test" | jq .
{
  "Parameters": [
    {
      "Name": "test",
      "LastModifiedDate": 1540291994.341,
      "Labels": [],
      "Value": "hello",
      "Version": 1,
      "LastModifiedUser": "arn:aws:iam::999999:user/developer",
      "Type": "String"
    },
    {
      "Name": "test",
      "LastModifiedDate": 1540292106.049,
      "Labels": [],
      "Value": "hello world",
      "Version": 2,
      "LastModifiedUser": "arn:aws:iam::999999:user/developer",
      "Type": "String"
    },
    {
      "KeyId": "alias/aws/ssm",
      "Name": "test",
      "LastModifiedDate": 1540292264.596,
      "Labels": [],
      "Value": "AQICAHhpaogOe4fhQlvnUVPt0gxy8Q22XJVDE6qLcPVeg5TPEQGYPCmVdGBS8FFRbBM7HZxVAAAAaTBnBgkqhkiG9w0BBwagWjBYAgEAMFMGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMW5oTfRpPrcv8u+JvAgEQgCZ+g900m/CE7TGKmc55EAaclq2rvoDtMuSkoclDT+63ZRccx5Rlyg==",
      "Version": 3,
      "LastModifiedUser": "arn:aws:iam::999999:user/developer",
      "Type": "SecureString"
    }
  ]
}
```

## 暗号化したものを復号する
AWS CLIから復号したものをとる場合、`get-parameters`の`--with-decryption`を使います。

```
$ aws ssm get-parameters --name "test"  --with-decryption 
{
    "InvalidParameters": [], 
    "Parameters": [
        {
            "Name": "test", 
            "LastModifiedDate": 1540292264.596, 
            "Value": "hello world", 
            "Version": 3, 
            "Type": "SecureString", 
            "ARN": "arn:aws:ssm:ap-northeast-1:999999:parameter/test"
        }
    ]
}
```

## 後片付け
遊んだ後は、`delete-parameter`でちゃんとお掃除しましょう。

```
$ aws ssm  delete-parameter --name test
```