JMDC TECH BLOG

JMDCのエンジニアブログです

AWS Datasync利用時のS3のイベントについて

こんにちは!株式会社JMDCの山岡です。 プロダクト開発部でらくらく健助の開発をしています。

今年、JMDCではアドベントカレンダーに参加しています。 qiita.com 本記事は、JMDC Advent Calendar 2024 8日目の記事です。

今回は社内で進行しているクラウド移行のタスクで詰まった箇所をご紹介致します。

作業内容

オンプレで構築されているシステムがあり、
それをAWSに移行するタスクの担当を行いました。
仕組み自体は既にあったのでデータベースの一部データを
AWS側に持って行くだけでよかったので仕組みを下記のように検討しました。

AWS Datasyncとは?

aws.amazon.com

オンプレミスとAWSの間や、AWS間でデータを転送するサービスになっています。
いろいろ利用パターンがあるようですがが、
今回はオンプレミスとAWS間のサービスで利用しました。

S3のイベントとは?

docs.aws.amazon.com

S3に格納されたファイルの作成や更新イベントをトリガーに、
LambdaやSQS、SNSを起動できるというサービスになっています。

今回はDataSyncで配置されたファイルの検知に利用予定でした。

詰まった箇所

構築完了したあとに動作を確認していると
ファイルの更新を行っていないのに、
S3 Eventが発火しLambdaが起動していることがわかりました。

確認したところDatasyncで同期したファイルは、
随時「作成」扱いになるようで、既に転送済みで変更が無いファイルまでも
作成扱いとされ不要にLambdaが起動してしまうという現象が発生してしまいました。

対応方針

Datasyncの利用中にはS3 Eventでのファイルの管理は難しそうでした。
無理やり行えなくもないですが、無駄にLambdaが起動し実装が複雑化しそうだった為
EventBridgeでポーリングする方式にして対応しました。
以下が構成図になります。

ファイルの時系列の管理は、
HIVE形式(s3://xxxxxxx/year=2020/month=01/day=01/)で行いました。

まとめ

AWS Storage Gatewayと連携したS3 Eventの利用は行った事があったので、
Datasyncも同じ要領でできるかと思い、
構築を行いましたが、予期せぬ箇所でつまづいたので 今回TECH BLOGに記載させて頂きました。




明日9日目は、大出さんによる「JMDCに入社してPMをやっている話」です。お楽しみに!

JMDCでは、ヘルスケア領域の課題解決に一緒に取り組んでいただける方を積極採用中です!フロントエンド /バックエンド/ データベースエンジニア等、様々なポジションで募集をしています。詳細は下記の募集一覧からご確認ください。 hrmos.co

まずはカジュアルにJMDCメンバーと話してみたい/経験が活かせそうなポジションの話を聞いてみたい等ございましたら、下記よりエントリーいただけますと幸いです。 hrmos.co

★最新記事のお知らせはぜひ X(Twitter)、またはBlueskyをご覧ください!

twitter.com

bsky.app