Amazon Q in Connect セルフサービスでの Amazon Lex サービスリンクロールの更新方法
困っていること
Amazon Q in Connect のカスタマーセルフサービスを構築後、電話をかけて動作を確認したところ、ボットを呼び出す「顧客の入力を取得する」ブロックでエラーが発生し、エラールートへ遷移しました。
Amazon Lex ボットのログおよび Amazon Q in Connect のログは有効化していましたが、ログが出力されませんでした。
また、Amazon Connect フローログは以下の通り出力されましたが、エラーの原因を特定できませんでした。
{
"Results": "Error",
"ContactId": "a8d97d94-e26f-4e57-b111-d0179de2f86e",
"ContactFlowId": "arn:aws:connect:ap-northeast-1:111111111111:instance/3ff2093d-af96-43fd-b038-3c07cdd7609c/contact-flow/e9b7c449-5e1f-4a2c-b9af-9d1a4e143dd9",
"ContactFlowName": "cm-hirai-q-in-connect",
"ContactFlowModuleType": "GetUserInput",
"Identifier": "1e79e345-7b31-403f-80ea-9fc535d637ac",
"Timestamp": "2025-02-14T04:43:22.608Z",
"ErrorDetails": {
"ErrorCode": "BadRequestException",
"Message": "The service cannot process the request"
}
}
エラーの原因を教えて下さい。
回答
Amazon Lex ボットで Amazon Q in Connect インテントを使用するには、サービスリンクロール(今回は AWSServiceRoleForLexV2Bots_AmazonConnect_111111111111
)に、以下のアシスタントIDへのアクセス許可が付与されている必要があります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Sid": "QInConnectAssistantPolicy",
"Action": [
"wisdom:CreateSession",
"wisdom:GetAssistant"
],
"Resource": [
"arn:aws:wisdom:*:{accountId}:assistant/[assistantId]",
"arn:aws:wisdom:*:{accountId}:assistant/[assistantId]/*"
]
},
{
"Effect": "Allow",
"Sid": "QInConnectSessionsPolicy",
"Action": [
"wisdom:SendMessage",
"wisdom:GetNextMessage"
],
"Resource": [
"arn:aws:wisdom:*:{accountId}:session/[assistantId]/*"
]
}
]
}
QInConnect インテントが Amazon Lex V2 ボットで使用され、ボットがサービスリンクロール (SLR) を使用している場合、Amazon Lex V2 サービスには、ロールの適切なポリシーを更新して Q In Connect アシスタントと統合するアクセス許可があります。
QInConnect インテントが追加されると、サービスにリンクされたロールは次のアクセス許可で更新されます。QInConnect アクセス用の新しいポリシーが追加されます。
https://docs.aws.amazon.com/ja_jp/lexv2/latest/dg/built-in-intent-qinconnect.html
アシスタントIDは、以下のコマンドで assistantId
を確認できます。統合名は amazon-q-in-connect
です。
$ aws qconnect list-assistants | jq '.assistantSummaries[] |
select(.name == "amazon-q-in-connect")'
{
"aiAgentConfiguration": {
"ANSWER_RECOMMENDATION": {
"aiAgentId": "3025a3fa-5419-4c9c-a040-877213b93f70:4"
},
"MANUAL_SEARCH": {
"aiAgentId": "652f0287-1610-4fee-bbe3-c687c13f5ec3:4"
},
"SELF_SERVICE": {
"aiAgentId": "529207fe-80fd-42be-bcf2-facd2141aec7:1"
}
},
"assistantArn": "arn:aws:wisdom:ap-northeast-1:111111111111:assistant/a1793008-f4de-481b-a9ed-3697ef373ff2",
"assistantId": "a1793008-f4de-481b-a9ed-3697ef373ff2",
"capabilityConfiguration": {
"type": "V2"
},
"integrationConfiguration": {
"topicIntegrationArn": "arn:aws:sns:ap-northeast-1:xxxx:wisdom-78d30d9a-ce3a-4f6f-9312-a1545b31b7d7"
},
"name": "amazon-q-in-connect",
"status": "ACTIVE",
"tags": {
"AmazonConnectEnabled": "True"
},
"type": "AGENT"
}
サービスリンクロール AWSServiceRoleForLexV2Bots_AmazonConnect_111111111111
には、利用しているアシスタントID a1793008-f4de-481b-a9ed-3697ef373ff2
に対応するアクセス許可が追加されていませんでした。これが本件の原因です。
このポリシーは本来自動的に追加されるはずですが、なぜ存在しないのかは不明です。
以下の手順を実行することで、サービスリンクロールのポリシーが変更される可能性があります。
- 「Amazon Q in Connect のインテント」が有効化されているLexボットを削除する
- 「Amazon Connect 管理ウェブサイトで Lex ボット管理を有効にする」のチェックを外し、 「保存」を押下する
- 「Amazon Connect 管理ウェブサイトで Lex ボット管理を有効にする」のチェックを入れ、 「保存」を押下する
- 1分ほど待ち、サービスリンクロールのポリシーが変更されているか確認する
これで、サービスリンクロールAWSServiceRoleForLexV2Bots_AmazonConnect_111111111111
に、アシスタントIDa1793008-f4de-481b-a9ed-3697ef373ff2
に対応するアクセス許可が追加されました。
再度、「Amazon Q in Connect のインテント」が有効化されているLexボットを作成します。
この状態で再度電話をかけると、問題なくセルフサービスのLexボットが利用できました。