コンタクトフローが Amazon Connect で関数を呼び出そうとしたときに、AWS Lambda 関数が呼び出されない理由を知りたいです。
1. Amazon Connect インスタンスのコンタクトフローログを有効にします (まだ行っていない場合)。
2. コンタクトフローログを検索して、AccessDeniedException エラーメッセージを探します。このエラーは、関数を呼び出すためのアクセス許可を関数の AWS Identity and Access Management (IAM) リソースベースのポリシーが Amazon Connect に付与していない場合に表示されます。
注: 関数のリソースベースのポリシーを手動で確認して、必要なアクセス許可が含まれているかどうかを確認することもできます。詳細については、「AWS Lambda でのリソースベースのポリシーの使用」を参照してください。
必要なアクセス許可を追加するには
次の add-permission AWS CLI コマンドを実行します。プリンシパル connect.amazonaws.com と Amazon Connect インスタンスの Amazon リソースネーム (ARN) を含めます。
注意: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
詳細については、Amazon Connect 管理者ガイドの「Lambda 関数の作成」を参照してください。また、Lambda デベロッパーガイドの「AWS のサービスへのアクセス権を関数に付与する」も参照してください。
関数を呼び出すアクセス許可を Amazon Connect に付与する Lambda 関数のリソースベースのポリシーの例
重要: を関数の ARN に置き換えてください。お使いの Amazon Connect インスタンスの ARN を に置き換えてください。
{ "Version": "2012-10-17", "Id": "default", "Statement": [ { "Sid": "100", "Effect": "Allow", "Principal": { "Service": "connect.amazonaws.com" }, "Action": "lambda:InvokeFunction", "Resource": "<Qualified AWS Lambda ARN>", "Condition": { "ArnLike": { "AWS:SourceArn": "<Amazon Connect ARN>" } } } ] }
Amazon Connect 管理者ガイドの「関数のレスポンスを検証する」の手順に従います。Lambda 関数から返された出力をテストして以下を確認します。
構成されている Timeout 設定内で関数が呼び出されない場合、コンタクトは「AWS Lambda 関数の呼び出し」の Error ブランチにルーティングされます。デフォルトの Timeout 設定は 3 秒です。最大 Timeout 設定は 8 秒です。
関数の呼び出しにかかる時間を確認するには、Amazon CloudWatch で関数の Duration メトリクスを確認します。
Lambda 関数の Timeout 設定を確認および編集するには、「問い合わせブロック: AWS Lambda 関数の呼び出し」を参照してください。
注: 呼び出しに 8 秒以上かかるコンタクトフローに Lambda 関数を含めるには、Amazon Connect で非同期 Lambda 関数を使用します。
Amazon Connect では、Lambda 関数のシーケンスの持続時間が 20 秒に制限されます。
詳細については、Amazon Connect 管理者ガイドの「Amazon Connect のベストプラクティス」の「Lambda」セクションを参照してください。
「Lambda 関数が失敗する場合のトラブルシューティング方法」の手順に従います。
Invoke an AWS Lambda function alias from Amazon Connect