0
0

コンタクト追跡レコード(CTR)のFirehose~S3~経由のデータ連携 (後編)

Last updated at Posted at 2022-11-09

前提条件

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

AmazonConnect自体には、コンタクト追跡レコードをFirehoseに流す機能があるけど、連携用のLambdaは提供されてないけど、提供されてるLambdaを流用して、どうにかならないかな?というお試しした話の後編。

  • serverlessrepo-AmazonConnectSalesf-sfIntervalAgent-xxxxxx
  • serverlessrepo-AmazonConnectS-sfContactTraceRecord-xxxxxx

設定に迷った時に参照するのは、上記2つの『Amazon Connect Salesforce CTI Adapter』で作成されるLambdaです。

Lambdaの作成

Lambdaの一覧画面から作成画面へ遷移する。

Lambda_01.JPG

関数の雛形を作成する。
Lambda_02.JPG

Lambdaのレイヤー

Lambda_03.JPG

名前
マージ順序 1
名前 sfLambdaLayer
レイヤーバージョン 1
互換性のあるランタイム python3.7
互換性のあるアーキテクチャ -
バージョン ARN arn:aws:lambda:リージョン:AWSアカウントID:layer:sfLambdaLayer:1

LambdaのIAM(権限:ロール&ポリシー)

Lambda_04.JPG

『Amazon Connect Salesforce CTI Adapter』で作成されたポリシーで流用するのは、下記の3つです。

  • serverlessrepo-AmazonConnectSalesforceLambda-CloudWatchManagedPolicy-XXXXXX
  • serverlessrepo-AmazonConnectSalesforceLambda-KMSManagedPolicy-XXXXXX
  • serverlessrepo-AmazonConnectSalesforceLambda-SecretsManagerManagedPolicy-XXXXXX

新規作成分:S3読み取り用

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::FirehoseのS3出力先バケット名/*"
            ],
            "Effect": "Allow"
        }
    ]
}

新規作成分:Salesforce連携用Lamdba実行用

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "lambda:InvokeAsync",
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:リージョン:AWSアカウントID:function:serverlessrepo-AmazonConn-sfExecuteTranscriptionSt-XXXXXX",
                "arn:aws:lambda:リージョン:AWSアカウントID:function:serverlessrepo-AmazonConnectS-sfContactTraceRecord-XXXXXX"
            ],
            "Effect": "Allow"
        }
    ]
}

コンタクト追跡レコードの連携用という意味では、『AmazonConnectS-sfContactTraceRecord』の方の実行許可があれば良いのですが、コピー元のポリシーと揃える。

Lambdaの環境変数

Lambda_05.JPG

キー
EXECUTE_CTR_IMPORT_LAMBDA serverlessrepo-AmazonConnectS-sfContactTraceRecord-xxxxxx
EXECUTE_TRANSCRIPTION_STATE_MACHINE_LAMBDA serverlessrepo-AmazonConn-sfExecuteTranscriptionSt-xxxxxx
LOGGING_LEVEL INFO
POSTCALL_CTR_IMPORT_ENABLED true
POSTCALL_RECORDING_IMPORT_ENABLED false
POSTCALL_TRANSCRIBE_ENABLED false
SF_ADAPTER_NAMESPACE 他Lambdaを参照して同じネームスペースを設定
SF_CREDENTIALS_SECRETS_MANAGER_ARN 他Lambdaを参照して同じSECRETSのARNを設定
SF_HOST https://利用ドメイン.my.salesforce.com
SF_PRODUCTION 本番かsandboxを利用しているかで切り替える(true/false)
SF_USERNAME 他Lambdaを参照して連携用のユーザIDを設定
SF_VERSION 他Lambdaを参照して同じバージョンを設定

Salesforceへの連携処理も新規作成のLambdaで行うか、現状の実装の通り、非同期Lambda実行とするか迷ったので、環境変数は、どちらにでも対応できるように余分に設定しています。

Lambdaの起動設定(メモリ&タイムアウト)

Lambda_06.JPG

新規作成時の「デフォルト:3秒」は、流石に厳しいので1分に伸ばしています。

LambdaのS3のPUTトリガー

Lambda_07.JPG

Firehoseはデータを一定周期でS3にファイル出力をしてくれるので、履歴データ連携のようにS3のPUTトリガーを設定することで連携できます。
拡張子がつかないので、Prefix条件とSuffix条件はつけれません。専用のS3バケットが必要です。

設定
Bucket arn arn:aws:s3:::バケット名
Event type s3:ObjectCreated:Put
Notification name s3トリガー名
Prefix なし
Service principal s3.amazonaws.com
Source account AWSアカウントID
Suffix なし

後半総括

既存で動いてるLambdaがある時に、どの辺りを設定を確認して設定を施すか?といった所を中心に書く事になりましたが、前編・後編を併せて、コンタクト追跡レコードのFirehose~S3~経由で連携する事ができるようになりました。
(純正のCTIアダプターにも機能として実装して欲しいですね!)

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0