Amazon Connectで電話番号を取得しましたが、わけあって別のインスタンスに電話番号を移行することになりました。CLI経由で電話番号を移行した際の備忘録です。

こんな人におすすめ

  • Amazon ConnectのインスタンスURLの設定をミスったなどの理由でインスタンスを破棄したい。
  • インスタンスに関連付けた電話番号を別のインスタンスに移行したい。

作業の流れ

  1. 移行したい電話番号の確認
  2. 移行元のインスタンスIDの確認
  3. 移行先のARNの確認
  4. 必要に応じて関連づいたキューの削除
  5. 電話番号の移行

こんな流れです。CLIとコンソールがあれば5分くらいで終わります。

CLIのリージョンを変えましたか?

CLIのリージョンを変更していない場合はリージョンも変えておきましょう。
設定済みの方はスキップしてください。

% aws configure get region
us-east-1

デフォルトのリージョンを変更する場合

% aws configure set region ap-northeast-1

% aws configure get region
ap-northeast-1

プロファイルごとにデフォルトのリージョンを変更する場合

% aws configure set region ap-northeast-1 --profile my-profile
% aws connect list-phone-numbers --instance-id <インスタンスID> --profile my-profile

一時的にリージョンを変更する場合

% aws connect list-phone-numbers --instance-id <インスタンスID> --region ap-northeast-1

電話番号を確認

移行元のコンソールにログインして 電話番号を確認しましょう。

左のペインからチャネル->電話番号を選択して移行したい電話番号の番号をメモしておきましょう。ここでは +81 120-xxx-xxxと仮定します。

移行元 / 移行先のインスタンスIDを確認

AWSコンソールから

Amazon Connectのインスタンス一覧からインスタンス名を選択してインスタンスIDを確認します。

Instance ARNarn:aws:connect:<RegionName>:<AccountId>:instance/<InstanceId> という構成になっており、instance/に続く文字列が InstanceId です。移行元のInstanceIDと移行先のARNをコピーしておきましょう。

CLIで取得

% aws connect list-instances --query 'InstanceSummaryList[*].[Id,Name]' --output table
--------------------------------------------------
|                  ListInstances                 |
+----------------------------------------+-------+
|  xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  |  xxxx |
+----------------------------------------+-------+

デフォルトではNameがNoneになっているので、判別できなければコンソールを利用しましょう。

CLIで電話番号の情報を取得

次に電話番号のIDを取得します。先ほど取得した移行元のインスタンスIDと電話番号を引数で渡します。電話番号の0が+81になります。サンプルコードの<>は不要です。

% aws connect list-phone-numbers --instance-id <移行元のインスタンスID> --query 'PhoneNumberSummaryList[?PhoneNumber==`+81120xxxxxx`]'
[
    {
        "Id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "Arn": "arn:aws:connect:ap-northeast-1:xxxxxxxxxxxx:instance/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/phone-number/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "PhoneNumber": "+81120xxxxxx",
        "PhoneNumberType": "TOLL_FREE",
        "PhoneNumberCountryCode": "JP"
    }
]

PhoneNumberのIDが取得できました。

電話番号を移行する

aws connect update-phone-number コマンドで電話番号を更新します。

% aws connect update-phone-number --phone-number-id <移行する電話番号のID> --target-arn <移行先のインスタンスARN>

An error occurred (ResourceInUseException) when calling the UpdatePhoneNumber operation: \
This phone number cannot be updated to a different target or instance \
because it’s associated with a queue <関連づいているキューのID>

エラーが出ました。

電話番号にキューが紐づいているため、電話番号が更新できないようです。
エラーメッセージの最後に、関連しているキューのIDが表示されています。it’s associated with a queueのあとに続くQueueIDをメモしましょう。

電話番号に関連したキューを削除

まずは削除対象のキューを確認します。

%aws connect describe-queue \
  --instance-id <移行元のインスタンスID> \
  --queue-id <関連しているキューのID>

{
    "Queue": {
        "Name": "BasicQueue",
        "QueueArn": "arn:aws:connect:<RegionName>:<AccountId>:instance/<InstanceId>/queue/<関連しているキューのID>",
        "QueueId": "<関連しているキューのID>",
        "Description": "A simple, basic voice queue.",
        "OutboundCallerConfig": { #削除対象のキュー
            "OutboundCallerIdNumberId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "OutboundFlowId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
        },
        "HoursOfOperationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "Status": "DISABLED",
        "Tags": {},
        "LastModifiedTime": "2024-12-04T16:32:29.269000+09:00",
        "LastModifiedRegion": "<RegionName>"
    }
}

次にキューを削除します。

% aws connect update-queue-outbound-caller-config \
  --instance-id <移行元のインスタンスID> \
  --queue-id <関連しているキューのID> \
  --outbound-caller-config "{}"

これで関連キューは削除されました。もし別のキュー(またはフロー)がある場合は必要に応じて削除してください。

電話番号を移行 テイク2

さきほどの aws connect update-phone-number コマンドを再度実行します。

% aws connect update-phone-number --phone-number-id <移行する電話番号のID> --target-arn <移行先のインスタンスARN> 

{
    "PhoneNumberId": "<移行する電話番号のID>",
    "PhoneNumberArn": "<移行先のインスタンスARN> "
}

今回は成功しました。

移行先のAmazon Connectコンソールにログインして左ペインからチャネル->電話番号を選択肢、電話番号が移行しているか確認できたら完了です。

以上です。

参考サイト

Amazon Connect で電話番号を移行する | AWS re:Post