[Amazon Connect] クロスアカウントでLambdaを利用してみる

2019.01.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

AIソリューション部の平内(SIN)です。

Amazon Connect(以下、Connect)では、コンタクトフローの中からLambdaを利用することが可能ですが、この場合、利用するLambdaへConnectからの実行を許可する必要があります。

そして、ConnectのインスタンスとLambdaが、同一アカウントの同一リージョンにある場合は、AWSコンソールから簡単に付与することができます。

今回は、AWS CLIを利用することで、別アカウントのLambdaにパーミションを付与してクロスアカウントでConnectから利用できることを確認してみました。

「それが、どうした?」 と言われると、その通りなのですが・・・一応、応用の範囲として動作確認です。それでも良ければ読み進めて頂けると嬉しいです。

2 コンタクトフローとLambda関数

テストのために用意したコンタクトフローは以下のようなものです。

ログ記録を有効にし、音声を日本語に設定した後、Lambdaを呼び出し、その戻り値を再生しています。

AWS Lambda関数を呼び出すブロックのオプションでは、関数のARNに別アカウントで用意したLambdaのARNをそのまま設定しました。

また、Connectのインスタンスとは、別のアカウントで用意したLambda関数が次のとおりです。

3 パーミッションがない場合

パーミッションを与えないで、このまま利用すると、当然ですがエラーとなり、ログから、AccessDeniedが確認できます。

4 パーミッションの付与

AWS CLIによるパーミッション付与の書式は以下のとおりです。

aws lambda add-permission --function-name function:{ファンクション名} --statement-id {ステートメントID} --principal connect.amazonaws.com --action lambda:InvokeFunction --source-account {ソース元アカウント} --source-arn {ConnectのインスタンスID} --region {リージョン}

以下、パーミッション付与を行っている様子です。

$ aws lambda add-permission --function-name function:test --statement-id 1 --principal connect.amazonaws.com --action lambda:InvokeFunction --source-account xxxxxxxxxxxx --source-arn arn:aws:connect:ap-northeast-1:xxxxxxxxxxxx:instance/b19de6a9-5d00-452a-adbc-fb51c9f3bc12 --region ap-northeast-1
{
"Statement": "{\"Sid\":\"1\",\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"connect.amazonaws.com\"},\"Action\":\"lambda:InvokeFunction\",\"Resource\":\"arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxx:function:test\",\"Condition\":{\"StringEquals\":{\"AWS:SourceAccount\":\"xxxxxxxxxxxx\"},\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:connect:ap-northeast-1:xxxxxxxxxxxx:instance/b19de6a9-5d00-452a-adbc-fb51c9f3bc12\"}}}"
}

5 パーミッションがある場合

パーミッションを付与すると、問題なく利用できていることが確認できます。

6 最後に

今回は、クロスアカウントでも特に問題なくLambdaが利用できることを確認できました。

実は、Connectのインスタンス移動(例えば、シドニーから東京リージョンへの移行など)を考えた時、コンタクトフローは、エクスポート/インポート(ベータ)があるので、一応コピー可能なのですが、コンタクトフローの中でLambdaが利用されている場合は、ARNがそのままコピーされるだけなので、Lambdaの移行は、すべて手作業となってしまいます。

クロスアカウントでも、リージョンをまたいでも、今回の確認のとおり、そのまま利用可能ですので、「とりあえずコンタクトフローのコピーだけを行って動作を確認し、その後、順にLambdaを移行する」というような作業手順も検討の1つになるのではないでしょうか。

弊社では、「Amazon Connect」の導入を検討している方を対象とした無料相談会を毎週開催中です。

また、音声を利用した各種ソリューションの導入支援を行っております。お気軽にお問い合わせください。

チャットボット開発支援

クラウド型コンタクトセンターサービス導入支援