Amazon S3からData Cloudへのファイル通知の送信手順の詳細まとめ

に公開

このページではdeveloperサイトで公開されているこちらの記事の「Create a UDLO for Unstructured Data from Amazon S3」まで終了していることを前提に、それ以降のステップの詳細をまとめております。S3からのファイル連携の手順確認のご参考にしてください。

設定手順

AWS CLI version2 のインストール

AWS CLI version2 をインストールします。
GUIインストールはここから可能です。
確認コマンドを打つ

which aws
aws --version

非公開、公開鍵のキーペアと証明書の作成

非公開鍵と公開鍵のペアを作成します。
コマンド入力

openssl genrsa -out keypair.pem 2048

鍵ペアからデジタル証明書を作成
コマンド入力

openssl req -new -x509 -nodes -sha256 -days 365 -key keypair.pem -out certificate.crt

上記コマンド入力後、Email Addressまで値入力をしていく
Country Name (2 letter code) [AU]: と表示され入力が必要になる。
「JP」と入力、その次からは任意の値を入力、Email Addressは自身のメールアドレスを入力
キーペアから pkcs8 非公開鍵を作成
コマンド入力

openssl pkcs8 -topk8 -nocrypt -in keypair.pem -out private.key

接続アプリケーションと OAuth の設定

Salesforceにログイン
Setup | External Client App | Settings にて、Allow creation of connected apps をOnにします。
New Connected App を選択します
Basic Information や API (Enable OAuth Settings) を設定します。

Basic Information

それぞれ任意の値を入力

API(Enable OAuth Settings)

  • Enable OAuth Settings ✅️
  • Enable for Device Flow✅️
    • ↑この2つにチェックをいれるとCallback URLに自動的にURLが入力される
  • Use digital Signature ✅️
    • 「ファイルを選択」から作成した証明書を設定する
  • Selected OAuth Scopes
    • Oauth Scopeは必要な権限を付与する
  • Require Proof Key for Code Exchange(PKCE) Extension for Supported Authorization Flows ✅️
  • Require Secret for Web Server Flow✅️
  • Require Secret for Refresh Token Flow✅️

後の手順でCallback URLを使用するため、メモしておきます。

Manage Consumer Details を選択し、Consumer Key および Consumer Secret を確認する。

後の手順で Consumer Key を使用するため、メモしておきます。

Setup | OAuth and OpenID Connect Settings にて、Allow OAuth Username-Password Flows を有効にします。
API 連携設定のため、先程メモした Consumer Key と Callback URL や対象 Org の URL で doc に記載の下記を書き換えてブラウザから実行します。

<YOUR_ORG_URL>/services/oauth2/authorize?response_type=code&client_id=<YOUR_CONSUMER_KEY>&scope=api refresh_token cdp_ingest_api&redirect_uri=<YOUR_CALLBACK_URL>&code_challenge=SHA256

<YOUR_ORG_URL> の値は、Setup | My Domain の Current My Domain URL から確認できます。

Amazon S3 ファイル通知インストーラスクリプトと機能のダウンロード

S3 ファイル通知インストーラスクリプトから以下の 2 ファイルをダウンロードします。

input_parameters_s3.conf
setup_s3_file_notification.sh

aws_lambda_function.zip をダウンロードして任意の場所に配置します。

スクリプト設定のインストール

Brew と jq をダウンロードしてインストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install jq

HomeBrewとは?

コマンドラインで簡単操作: ターミナル上で brew install [パッケージ名] といったシンプルなコマンドを入力するだけで、ソフトウェアをインストールできます。

jqとは?

コマンドラインでJSONデータを扱うための軽量で柔軟なツール

先程ダウンロードした input_parameters_s3.conf を開き、環境変数値を独自の値に置き換えます。

(設定変更が必要な変数)

SF_USERNAME=<YOUR_ORG_USERNAME>
Salesforce ログインユーザー名を入力
SF_LOGIN_URL=<YOUR_ORG_URL_PICK_FROM_ABOVE_ACCORDING_TO_WHETHER_YOUR_ORG_IS_PREPROD_OR_PROD>
https://login.salesforce.com」を入力
SF_AUDIENCE_URL=<PICK_FROM_ABOVE_ACCORDING_TO_WHETHER_YOUR_ORG_IS_PREPROD_OR_PROD>
https://login.salesforce.com」を入力
AWS_ACCOUNT_ID=<YOUR_AWS_ACCOUNT_ID>
AWS ログイン後、画面右上から確認できる AWS ACCOUNT ID をハイフンなしで入力
REGION=<YOUR_AWS_REGION>
AWS の REGION を入力(例:us-east-2)
EVENT_S3_SOURCE_BUCKET=<YOUR_DATA_SOURCE_BUCKET_NAME>
S3で作成したバケット名を入力
EVENT_S3_SOURCE_KEY=<YOUR_DATA_FOLDER_WITHIN_DATA_SOURCE_BUCKET>
S3で作成したバケットの配下にあるディレクトリ名を入力
LAMBDA_FUNC_S3_BUCKET=<YOUR_CLOUD_FUNCTION_ZIP_STORE_BUCKET_NAME>
LAMBDA FUNCTION 用に使用するバケット名を入力 "_"などは使わない。
(例)「LAMBDA_FUNC_S3_BUCKET=LAMB33」
LAMBDA_FUNC_LOC_S3_KEY=<YOUR_CODE_FOLDER_WITHIN_CLOUD_FUNCTION_ZIP_STORE_BUCKET>
値なしで OK
「LAMBDA_FUNC_LOC_S3_KEY=」とする。
SOURCE_CODE_LOCAL_PATH=<YOUR_LOCAL_PATH_FOR_SOURCE_CODE_OF_CLOUD_FUNCTION_ZIP>
aws_lambda_function.zip を配置したパスをファイル名も含めて入力
LAMBDA_ROLE=<YOUR_LAMBDA_ROLE_NAME>
任意の名前を入力
(例)「LAMBDA_ROLE=ROLER」
LAMBDA_FUNC_NAME=<YOUR_LAMBDA_FUNCTION_NAME>
任意の名前を入力
(例)「LAMBDA_FUNC_NAME=LAMBDAR」
CONSUMER_KEY_NAME=<YOUR_CONSUMER_KEY_NAME>
AWS 全体でユニークな任意の値を入力
(例)「CONSUMER_KEY_NAME=CONSUMERR」
CONSUMER_KEY_VALUE=<CONSUMER_KEY_OF_CONNECTED_APP_IN_YOUR_ORG>
メモしておいた CONSUMER KEY を入力
RSA_PRIVATE_KEY_NAME=<YOUR_RSA_PRIVATE_KEY_NAME>
AWS 全体でユニークな任意の値を入力
(例)「RSA_PRIVATE_KEY_NAME=RSA_PRIVATE_KEYY202509233」
PEM_FILE_PATH=<YOUR_LOCAL_FILE_PATH_FOR_KEYPAIR.PEM_FILE>
「非公開、公開鍵のキーペアと証明書の作成」パート で作成した PEM の鍵ファイルを含むパスを入力

setup_s3_file_notification.shを実行可能にします。
上記ファイルを保存している、フォルダまで移動して、次のコマンドを貼り付けて実行

chmod +x setup_s3_file_notification.sh

これで実行権限を付与
setup_s3_file_notification.shの 374 行目あたり(# Check if the IAM role exists の上)に、下記 3 行を追加します。

export AWS_ACCESS_KEY_ID=<手順4 で生成したアクセスキー>
export AWS_SECRET_ACCESS_KEY=<手順4 で生成したシークレットアクセスキー>
export AWS_SESSION_TOKEN=

setup_s3_file_notification.shを実行するために必要な情報を各種変数をセットします。
--以下の変数の設定を解除

unset AWS_SECRET_ACCESS_KEY
unset AWS_ACCESS_KEY_ID
unset AWS_SESSION_TOKEN

--セッショントークンの取得

aws sts get-session-token

*「Unable to locate credentials. You can configure credentials by running "aws configure"」が発生した場合、コマンド入力

aws configure

(入力) AWSで取得したIDとKEYと自身のAWSリージョンを入力、formatは"json"

AWS Access Key ID : AWSで確認したものを入力
AWS Secret Access Key : AWSで確認したものを入力
Default region name :  AWSで確認したものを入力
Default output format : json

--上記「セッショントークンの取得」で取得した一時的なアクセスキー、シークレットアクセス、セッショントークンを以下の変数にセット

export AWS_ACCESS_KEY_ID=<temp access key>
export AWS_SECRET_ACCESS_KEY=<temp secret access key>
export AWS_SESSION_TOKEN=<temp token> *長いので注意

setup_s3_file_notification.shinput_parameters_s3.conf を同じディレクトリに配下に配置して setup_s3_file_notification.sh を実行します。
次のコマンドを実行

./setup_s3_file_notification.sh input_parameters_s3.conf

5回くらい yes/ no を聞かれるのでyes と入力
Step16までいけば成功。途中で止まった場合、表示されたメッセージに従ってトラブルシューティング

Amazon S3 に配置した非構造化ファイルを UDLO に連携

設定した Amazon S3 の Directory 配下に任意のファイルを配置します。
作成した UDLO や chunk / index DLO/DMO にファイルが連携されているかを確認します。

Discussion