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.shと input_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