概要
以前書いたこちらの記事に関連して、AWSのLambdaを使わない方法で同様の機能を実装できないかを検証・開発を行いました。
結果としては接続することができたので記録としてこちらに残したいと思います。
ワークフローの流れ
今回の開発はAWSのLambdaを使わないことを前提にしています。そのためC#でDataverseのPluginを使用し署名付きURLを取得し、それを使ってS3へのファイル転送をHTTPアクションにて行う流れになります。
Pluginを実行することでAWSの認証情報をもとに署名付きURLの生成を行い、それを使ってS3へのリクエストを送ります。
Pluginの処理について
Pluginの開発にあたりC#に既存で存在するSDKの使用をすることができないため、署名付きURLの生成にはSDKと同じ処理をコーディングの中で開発する必要があります。
署名付きURLの開発の手順としては以下の通りになります。
Plugin開発のメリット
・API Gatewayの設定やLambda関数のデプロイを省略し、直接プラグインでS3との連携を行うことができる
・Dynamics365の中でソリューションを完結させることができる
・AWSを触れなくてもIAMやバケットの設定が終わっていれば開発できる
・Lambdaと同じく100MBまでのデータ送信に対応することができる
Plugin開発の注意点
・アクセスキーやシークレットアクセスの取り扱いに気を付ける必要がある
・C#に慣れていない場合、開発に時間がかかる可能性がある
・コード実行の制限があるためそれを考慮した開発をする必要がある