Amazon Connectはコンタクト(呼)ごとにコンタクト属性を保持することができます。
保存可能サイズは 最大32KBと記載されていますが、実際に使用しているバイト数を確認する方法を紹介します。
概要
ドキュメントには「コンタクトレコード属性セクションの最大サイズ: 32KB」と記載があります。
サイズ感はイメージできますが、「何文字記録できるの?」「超過したらどうなるの?」と気になる方もいらっしゃると思います。
Amazon Connect 機能の仕様 - Amazon Connect
超過した場合の挙動
コンタクトフロー
「コンタクト属性の設定」ブロック設定時に32KBを超過した場合、属性は設定されず、エラーへ分岐します。

API
UpdateContactAttributes で設定時に32KBを超過した場合も属性は設定されずエラーレスポンスされます。
32767バイト以内である必要がある、というメッセージが返されます。
$ aws connect update-contact-attributes \ --instance-id <instanceId> \ --initial-contact-id <contactId> \ --attributes X=123 An error occurred (InvalidParameterException) when calling the UpdateContactAttributes operation: AttributeMap should not exceed 32767 in size
確認方法
実行結果より、32KB(32767バイト)までである、ということは分かりましたが、どの部分をカウントすればよいか確認してみます。
ケース1
キー= KEY1 、 値= VALUE1 をセットしてみます。
| キー | 値 |
|---|---|
| KEY1 | VALUE1 |
- 「KEY1」と「VALUE1」、なので、10バイトになりそうです
- 属性が未設定のコンタクトへ KEY1=VALUE1をセットします
$ aws connect update-contact-attributes \ --instance-id <instanceId> \ --initial-contact-id <contactId> \ --attributes KEY1=VALUE1
- 確認します。(JSON形式で出力しています)
$ aws connect get-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
{
"Attributes": {
"KEY1": "VALUE1"
}
}
上記結果JSONから、 KEY1 と VALUE1 をカウントしたいので、jqコマンドと組み合わせ、下記のように実行します。
(UTF-8と想定しています)
想定通り 10 と表示されました。
$ aws connect get-contact-attributes \ --instance-id <instanceId> \ --initial-contact-id <contactId> \ | jq '.Attributes | to_entries | map((.key | utf8bytelength) + (.value | utf8bytelength)) | add' 10
ケース2
同様に KEY1 と 漢字です をセットします。
| キー | 値 |
|---|---|
| KEY1 | 漢字です |
- 属性をセットします
$ aws connect update-contact-attributes \ --instance-id <instanceId> \ --initial-contact-id <contactId> \ --attributes KEY1=漢字です
- 確認します
$ aws connect get-contact-attributes \
--instance-id <instanceId> \
--initial-contact-id <contactId> \
{
"Attributes": {
"KEY1": "漢字です"
}
}
- バイト数をカウントします
16と表示されましたKEY1は4バイト、 日本語文字部分は 3バイト×4文字=12バイト、ということになるようです
$ aws connect get-contact-attributes \ --instance-id a87673c9-95e8-4dba-a6d9-cbc96a560ad9 \ --initial-contact-id 1658bacc-22ee-46c3-bdaa-911e712faaa0 \ | jq '.Attributes | to_entries | map((.key | utf8bytelength) + (.value | utf8bytelength)) | add' 16
最後に
上記の確認方法はUTF-8と仮定しており、最大サイズである32,767バイトまでセット、1文字超過させてエラーレスポンスされることを確認しています。
ただし、文字コードについて明記されたドキュメントは見つけられず、確定情報ではないこと、ご了承ください。
そもそも、ギリギリまで詰め込む性質の機能ではないと思いますし、想定した使用方法でどのぐらいのサイズになるのか、等、参考程度にしていただけますようお願いします。