AmazonConnect × Salesforce 連携をセットアップしてトラブルシュートした話 その３ （コンタクト追跡レコード（CTR）のセットアップ）

![コンタクト追跡レコード.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/a86a36f6-ac87-c3b3-516f-a664062c03b6.jpeg)

# 前提条件
Saleforce API Version ： v55.0
serverlessrepo-AmazonConnectSalesforceLambda ： 5.19.0
この記事は、2022/10頃に書かれています。

AmazonConnectのGUIの問題（その内VerUpで解消されるかも？）だったり、自分の理解不足の問題だったりするので、備忘以外の何物でもないかもしれません。

同じハマり方をした人に届いたらいいな？と自分への備忘も兼ねて

# トラブルの内容
公式のインストール手順書は下記の通り

https://amazon-connect.github.io/amazon-connect-salesforce-cti/docs/lightning/salesforce-lambdas/05-contact-trace-record-import

前提として

https://docs.aws.amazon.com/ja_jp/connect/latest/adminguide/data-streaming.html

の有効化が必要である。

この手順通りに設定してもデータ連携ができなかった。というのが、今回の記事の主旨になります。

初見の視点で手順書からは分かりにくい前提や、躓きやすい事を、備忘録として書き残しておきます。

# 問題の内容

今回は、エラーメッセージらしきエラーはありません。

+ Firehoseでのストリーミング出力設定から、DataStreamへの切り替えがGUIで出来ない？（疑惑）
+ コンタクトチャネル分析（ContactLens）のDataStreamとコンタクト追跡レコード（CTR）の<strong>DataStreamは共用できない</strong>。

後者の、『<strong>DataStreamは共用できない</strong>』は、それ以上でも、それ以下でもないので、後述は省略します。
（しいて言えば、コンタクト追跡レコード（CTR）のデータ連携は、Firehose→S3トラガー式の連携も提供して欲しいとAWSへ要望を出すか、提供されたLambdaを元に自作してしまうか、、、、なレベル）

![AmazonConnect_CTR検証.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/8e3292c1-22c9-7667-626c-cff290c0b76d.jpeg)

## CLI 調査に必要なコマンドのドキュメント詳細の在処

+ 現状の設定情報確認をする

https://docs.aws.amazon.com/connect/latest/APIReference/API_ListInstanceStorageConfigs.html

+ CLIからストリームを紐づける

https://docs.aws.amazon.com/connect/latest/APIReference/API_AssociateInstanceStorageConfig.html

+ CLIからストリーム紐づけを解除する

https://docs.aws.amazon.com/connect/latest/APIReference/API_DisassociateInstanceStorageConfig.html

<Strong>最後に信じるべきは、GUIではなくCLIである。久々にコレを痛感させられた出来事</Strong>

# 検証（ 未設定 → Firehose ）への切り替え

![AmazonConnect_CTR検証01.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/540d28aa-9f9a-f67c-5a6e-5af62133bfe6.jpeg)

![AmazonConnect_CTR検証02.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/673f9a74-4e7c-e261-e3c9-967dbe17d9de.jpeg)

未設定の状態からFirehose経由の出力するのは問題なし

```shell
aws connect list-instance-storage-configs --instance-id AmazonConnectインスタンスID  --resource-type CONTACT_TRACE_RECORDS
{
    "StorageConfigs": [
        {
            "AssociationId": "自動採番",
            "StorageType": "KINESIS_FIREHOSE",
            "KinesisFirehoseConfig": {
                "FirehoseArn": "arn:aws:firehose:ap-northeast-1:AWSアカウントID:deliverystream/Firehoseストリーム名"
            }
        }
    ]
}

```

# 検証（ Firehose → DataStream ）への切り替え

![AmazonConnect_CTR検証03.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/c8b57282-e141-444a-6dac-16271e2077bb.jpeg)

CLIで設定情報を確認すると。。。

```shell
aws connect list-instance-storage-configs --instance-id AmazonConnectインスタンスID  --resource-type CONTACT_TRACE_RECORDS
{
    "StorageConfigs": []
}

```

何も割当たってない。。。。
<Strong>『ちょっ、まっ！』</Strong>コマンドの結果を見て、驚きの声が隠せませんでした。
（気が付くまでに結構な時間が溶けた）
勿論、このままでは『コンタクト追跡レコード』のデータ連携は出来ません。

なので、GUIでの設定は諦めて、CLIで設定をかけます。

ストリーム割りてのコマンド実行と結果
```shell
aws connect associate-instance-storage-config --instance-id AmazonConnectインスタンスID --resource-type CONTACT_TRACE_RECORDS --storage-config StorageType=KINESIS_STREAM,KinesisStreamConfig={StreamArn=arn:aws:kinesis:ap-northeast-1:AWSアカウントID:stream/ストリーム名}

{
    "AssociationId": "自動採番"
}

```

設定情報の確認
```shell
aws connect list-instance-storage-configs --instance-id AmazonConnectインスタンスID  --resource-type CONTACT_TRACE_RECORDS
{
    "StorageConfigs": [
        {
            "AssociationId": "自動採番",
            "StorageType": "KINESIS_STREAM",
            "KinesisStreamConfig": {
                "StreamArn": "arn:aws:kinesis:ap-northeast-1:AWSアカウントID:stream/ストリーム名"
            }
        }
    ]
}
```

ふぅ、CLIなら無事に設定がかかるようです。
CLIで設定をかけたら、無事にSalesforceへデータ連携も出来ました。

# 検証（ DataStream → Firehose ）への切り替え

こちらは、どうでしょうか、、、

![AmazonConnect_CTR検証04.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281768/7320a070-fc45-304f-0af4-ec500fd16aa8.jpeg)

GUIで再度割り当てて、CLIで設定内容を確認します。

設定情報の確認
```shell
aws connect list-instance-storage-configs --instance-id AmazonConnectインスタンスID  --resource-type CONTACT_TRACE_RECORDS
{
    "StorageConfigs": [
        {
            "AssociationId": "自動採番",
            "StorageType": "KINESIS_FIREHOSE",
            "KinesisFirehoseConfig": {
                "FirehoseArn": "arn:aws:firehose:ap-northeast-1:AWSアカウントID:deliverystream/Firehoseストリーム名"
            }
        }
    ]
}

```

こちらの場合は、大丈夫のようですね。

# まとめ
+ コンタクト追跡レコードは、一度でもFirehose出力の設定をかけるとCLIを使わないとDataStreamへの変更ができない
+ Firehoseへの出力設定は、GUIを利用して設定することが可能

GUIで切り替えられるんだったら、Firehoseの出力も試してみるか、、、と安易な気持ちで試したらDataStream連携への設定に戻らなくなって困ったけど、何とかなった話しでした。

# おまけ（CLIを叩くのに付与したロールとポリシー）

ほぼほぼデバックの為のCLI実行だったので。。。
+ AmazonConnect_FullAccess(組み込みポリシー)
+ カスタムポリシー

```json
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "iam:PutRolePolicy",
            "Resource": "arn:aws:iam::AWSアカウントID:role/*"
        }
    ]
}
```
を付与して実行しました。
ストレージ系の割当変更の実行には、"iam:PutRolePolicy"も必要なようです。

# AmazonConnect トラブルシュートシリーズ

https://qiita.com/Syoji_Yonemoto/items/7e7a466bda0bc566527d

https://qiita.com/Syoji_Yonemoto/items/a3e88dafcef1cafab308

# AWSの相談・お困りごとありましたら、、、

AWSの活用方法や、お困りごとの相談、随時、お仕事の受付しております。

https://www.cs-cloud-aid.com/