[アップデート] AWS Systems Manager Parameter Storeにintegerやjsonなど13種類のデータ型が追加されました

[アップデート] AWS Systems Manager Parameter Storeにintegerやjsonなど13種類のデータ型が追加されました

AWS Systems Manager Parameter Storeに追加された13種類のデータ型を、AWS CLIで通る値と弾かれる値を並べて試しました。url・json・jsoncはアドバンスド階層が必要なこと、--data-typeを省略した上書きでも既存の型が引き継がれることも確認しています。
2026.11.09

こんにちは。サービス開発部の武田です。

2026年11月5日に、AWS Systems Manager Parameter Storeのパラメーターに付けられるデータ型が13種類増えました。型を付けておくと、PutParameterの時点で型に合わない値が弾かれます。

https://aws.amazon.com/about-aws/whats-new/2026/11/aws-ssm-parameter-store-allows-organization-validation-with-new-data-types/

これまでのDataTypeは、検証しないデフォルトのtextと、AMI ID用のaws:ec2:image、AutomationのWebhook用のaws:ssm:integrationだけでした。ポート番号やIPアドレスの形式チェックは、アプリケーション側で書くか、正規表現のAllowedPatternで済ませるしかありませんでした。今回はAWS CLIから13種類すべてを試してみました。

追加されたデータ型

ユーザーガイドに載っている13種類は次のとおりです。

型 検証内容 StringList 階層
aws:region 実在するリージョン名 不可 標準可
aws:account:id 12桁の形式。アカウントの実在は確認しない 可 標準可
boolean true / false(小文字・大文字・先頭大文字)と0 / 1 不可 標準可
integer 符号付き32ビット整数 不可 標準可
float 64ビット浮動小数点数 不可 標準可
binary 0と1のみ 不可 標準可
hostname ホスト名 不可 標準可
email メールアドレス 可 標準可
ipv4-address 単一のIPv4アドレス 可 標準可
ipv6-address 単一のIPv6アドレス 可 標準可
url スキームとホストを含むURL 不可 アドバンスドのみ
json トップレベルがオブジェクトか配列のJSON 不可 アドバンスドのみ
jsonc コメント付きJSON 不可 アドバンスドのみ

追加された13種類は、すべてSecureStringにも対応しています。

https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-data-types.html

検証環境

  • AWS CLI 2.36.30
  • 東京リージョン(ap-northeast-1)
  • 検証日は2026年11月9日

型に合わない値はPutParameterで弾かれる

--data-typeを付けてput-parameterを呼ぶだけです。

aws ssm put-parameter --name /myapp/port --type String --data-type integer --value 443

型に合わない値を渡すとValidationExceptionになります。

An error occurred (ValidationException) when calling the PutParameter operation: The parameter value is not a valid integer. A value must be an optional minus sign followed by digits, with no leading zeros, no plus sign, no decimal point and no whitespace.

標準階層で使える10種類について、通る値と弾かれる値を試しました。結果は次のとおりです。

型 通った値 弾かれた値
aws:region us-east-1、af-south-1 us-east-9、Tokyo
aws:account:id 123456789012 1234-5678-9012、11桁
boolean true、FALSE、1 tRue、yes
integer 443、-42、2147483647 2147483648、007、+7、7.0
float 3.14、1e5 NaN、Infinity、1e-999、1e999
binary 0011 012、QUJD
hostname www.example.com、myhost、xn--wgv71a119e.jp _dmarc.example.com、192.0.2.1、日本語.jp
email user@example.com Mary <mary@example.com>、user@localhost
ipv4-address 192.0.2.1 10.0.0.0/16、192.168.001.1、192.0.2.1:80
ipv6-address 2001:db8::1、2001:db8:0:0:0:0:0:1 2001:db8::/32、[2001:db8::1]、fe80::1%en0

結果はすべてドキュメントの記載どおりでした。エラーメッセージは理由まで書いてくれます。integerの範囲外は「outside the supported integer range」と返ってきました。hostnameのアンダースコアは「It contains an underscore」です。日本語ドメインには「Give an internationalized name in punycode (xn--).」と、punycodeで書くよう案内が出ます。

emailのMary <mary@example.com>のような表示名付きの形式は、空白を含むという理由で弾かれました。

The parameter value is not a valid email address. It contains whitespace or a control character.

型名を間違えたときは、型名がすべて小文字であることを教えてくれます。

The following data type is not supported: int. (Data type names are all lowercase.)

url、json、jsoncはアドバンスド階層が必要

アドバンスド階層で試した結果は次のとおりです。

型 通った値 弾かれた値とメッセージ
url https://example.com、ftp://example.com/path example.comとmailto:user@example.comは「It must start with a scheme followed by ://」、https://user:pass@example.comは「It contains a password. Store secrets in AWS Secrets Manager.」
json {"port":443}、[1,2] 42は「must be a JSON object or array」、{"a":1,"a":2}は「duplicate object key」、末尾カンマとコメントは「not valid JSON」
jsonc {"port":443 /* HTTPS */}、//の行コメント入り 末尾カンマは「not valid JSONC」

パスワード入りのURLには、Secrets Managerを使うよう促すメッセージが返ってきます。

標準階層でjsonを指定すると、次のようなエラーになります。--tierを省略した場合も同じでした。

The json data type is only supported for advanced parameters.

--tier Intelligent-Tieringを付けると、アドバンスド階層で作られました。アドバンスド階層のパラメーターは保管料金がかかるので、json型を使いたいだけの場合も料金を確認しておきましょう。

StringListとSecureString

StringListでは要素ごとに検証され、何番目の要素が不正かがメッセージに出ます。

aws ssm put-parameter --name /myapp/notify-to --type StringList --data-type email \
  --value 'a@example.com,bad'
Element 2 of the StringList: The parameter value is not a valid email address. It has no @.

StringListに対応していない型を指定すると、作成自体が失敗します。

The integer data type is not supported for the following input type: StringList

SecureStringでも検証は同じように動きます。S3cretValueをinteger型で入れたときのメッセージは、Stringのときと同じでした。メッセージに値は含まれていません。

上書きで型を省略すると、既存の型が引き継がれる

既存のパラメーターの型は後から変えられます。1つのパラメーターに対して、上から順に操作した結果は次のとおりです。

手順 結果 型
1. abcを型指定なしで作成 成功 text
2. --data-type integerでabcに上書き 失敗 textのまま
3. --data-type integerで1に上書き 成功 integer
4. 型指定なしでnotanintに上書き 失敗 integerのまま
5. 型指定なしで2に上書き 成功 integer
6. --data-type textでnotanintに上書き 成功 text

注意したいのは手順4です。--data-typeを省略して上書きすると、型はデフォルトのtextに戻らず、既存のintegerが引き継がれて検証が続きます。

値の変更で型が外れないのは安全側の動きです。検証を外したいときは--data-type textを明示します。

jsonなどアドバンスド専用の型に変えるときは、--tier Advancedも一緒に指定しないと失敗します。

取得すると値は文字列で返る

integer型のパラメーターを取得しても、値は文字列です。

aws ssm get-parameter --name /myapp/port \
  --query 'Parameter.{Value:Value,Type:Type,DataType:DataType}'
{
    "Value": "443",
    "Type": "String",
    "DataType": "integer"
}

アプリケーション側で数値に変換する処理は、これまでどおり必要です。型が保証するのは、数値に変換できる値が入っていることだけです。

describe-parametersでは型で絞り込めます。

aws ssm describe-parameters --parameter-filters Key=DataType,Values=json,jsonc

存在しない型名を渡すとInvalidFilterValueになりました。

まとめ

13種類とも、ドキュメントに書かれた境界値のとおりに検証されました。既存のput-parameterに--data-typeを足すだけで使え、上書きで型を省略しても検証は外れません。

これまでAllowedPatternの正規表現で書いていたポート番号やIPアドレスのチェックは、標準階層のまま型に置き換えられそうです。

どなたかの参考になりましたら幸いです。

参考リンク

この記事をシェアする

関連記事