---
title: AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた
description: AWS Lambdaを用いて、SFTPサーバーとSnowflakeを連携する方法をご紹介します。
image: https://knowledge.insight-lab.co.jp/hubfs/SFTP-%25~1.png
---

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png)

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png)

[![お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275)

<https://knowledge.insight-lab.co.jp/snowflake/aws-lambda-snowflake-sftp#tmpmodule_159357067471898>

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [SNOWFLAKEナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

###### 3 分で読むことができます

# [AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた](https://knowledge.insight-lab.co.jp/snowflake/aws-lambda-snowflake-sftp)

 執筆者 [Osyou](https://knowledge.insight-lab.co.jp/snowflake/author/osyou) 更新日時 2022年10月04日

###### Topics: [AWS](https://knowledge.insight-lab.co.jp/snowflake/tag/aws)

![AWS Lambdaを使ってSnowflakeとSFTPサーバーを連携してみた](https://knowledge.insight-lab.co.jp/hubfs/SFTP-%25~1.png)

 目次

## 概要

既存システムの様々な場所に散在したデータを、Snowflakeへ格納したいという要望は多いと思います。また、企業が保持するデータは機密性が高いため、アクセス制限をかけたSFTPサーバーに保存されることも多いのではないかと思います。

そこで、この記事ではAWSLambdaを用いて、SnowflakeとSFTPサーバーの日次連携処理を、サクッと実装する例をご紹介いたします。

 

## 要件概要

今回実装するシステムの要件概要を以下に示します。

- SFTPサーバー上に１日１回出力されるファイルをSnowflakeへ連携する

- SFTPサーバーのアクセスには、**IPホワイトリスト制限**がかかっている
- SFTPサーバーの認証方式は、公開鍵認証方式を用いる

SnowflakeとSFTPサーバーの連携は、troccoやFivetranなどのデータ収集SaaSで簡単に実現できるとは思いますが、IPホワイトリスト制限がかかっていたり認証方式が指定されている場合などは、自前で実装してしまった方が早いこともあるのではないかと思います。

 

## システム構成と処理フロー

実装するシステムの構成と、処理フローを以下に示します。

![SFTP-%~1](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/SFTP-%25~1.png?width=661&name=SFTP-%25~1.png)

 

1. Amazon Event Bridgeから定周期でAWS Lambdaを起動します

1. Lambda内でSFTPサーバーからファイルをGetします

1. GetしたファイルをAmazon S3にPutします

1. SnowpipeでAmazon S3とSnowflakeを連携します
2.  

## 実装のポイント

実装するでいくつかポイントとなりそうな点をまとめていきます。

### ポイント１：AWS LambdaのIPアドレス固定

AWS Lambdaはデフォルトだと動的なパブリックIPが付与されます。これだと、IPホワイトリスト制限に対処不可能です。 IPアドレスを固定して、Lambdaから外部サービスにアクセスしたい場合は、以下の構成で解決します。

- NATGatewayにElastic IPを付与
- LambdaからはNATGatewayを経由してアクセス

![sftp-fixed_ip.drawio](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/sftp-fixed_ip.drawio.png?width=680&name=sftp-fixed_ip.drawio.png)

ポイントは以下3点です。

1. NAT GatewayにElastic IP を割り当てる
   
   NAT Gatewayを作成するときに、Elatic IPを割り当てます。所属するサブネットは事前に作成したパブリックサブネットです。
   
   ![Untitled-Sep-16-2022-07-56-37-61-AM](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/Untitled-Sep-16-2022-07-56-37-61-AM.png?width=754&name=Untitled-Sep-16-2022-07-56-37-61-AM.png)

1. LambdaをVPCに所属させる
   
   Lambdaを作成する際に、VPCオプションを有効にして、事前に作成したプライベートサブネットに所属させます。
   
   ![lambda](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/lambda.png?width=1706&name=lambda.png)

1. LambdaにVPC, ENIに関する権限を追加
   
   Lambdaに付与するロールには、**AWSLambdaENIManagementAccess, AWSLambdaVPCAccessExecutionRole**を付与します。

### ポイント２：Lambda Layerの利用

今回は、pythonで「paramiko」というライブラリを利用しました。 Lambdaで外部ライブラリを利用する場合、パッケージとしてビルドすることも可能ですが、今回は「Layer」を利用しました。   
レイヤーの作成方法の詳細は、[こちらの公式](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html)を参照ください。

### ポイント３：ソースコード

LambdaでSFTPサーバーからファイルを取得して、S3にPUTするサンプルコードを示します。 認証に利用する秘密鍵はAWS SecretManagerに保存してある前提です。   
※AWS SecretManagerでは改行がスペースに変換されるため、その逆変換処理が入ってます

## まとめ

いかがでしたでしょうか。簡単な例ではありますが、SFTPサーバーとSnowflakeを連携する方法をご紹介しました。Snowpipeを利用するとLambdaでS3にファイルを置くだけで、簡単にSnowflakeとデータ連携ができますね。

 

Snowflakeを体験してみませんか？

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

[![詳細はこちら](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc)

- [Tweet](https://twitter.com/share)

#### 執筆者 [Osyou](https://knowledge.insight-lab.co.jp/snowflake/author/osyou)

###### [前の投稿](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

[![【Snowflake×dbt】データパイプライン構築](https://knowledge.insight-lab.co.jp/hubfs/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202022-05-29%20154756-png.png)](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

###### [【Snowflake×dbt】データパイプライン構築](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

###### [次の投稿](https://knowledge.insight-lab.co.jp/snowflake/snowflake-xml)

[![SnowflakeでXML形式のデータを扱ってみた](https://knowledge.insight-lab.co.jp/hubfs/Untitled%205.png)](https://knowledge.insight-lab.co.jp/snowflake/snowflake-xml)

###### [SnowflakeでXML形式のデータを扱ってみた](https://knowledge.insight-lab.co.jp/snowflake/snowflake-xml)

RECOMMEND こちらの記事も人気です。

<https://knowledge.insight-lab.co.jp/snowflake/pricing>

###### 4 分で読むことができます。

##### [Snowflakeの料金体系｜クレジットと費用最適化のポイントをご紹介](https://knowledge.insight-lab.co.jp/snowflake/pricing)

###### 2021年 6月 28日

<https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline>

###### 12 分で読むことができます。

##### [【Snowflake×dbt】データパイプライン構築](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

###### 2022年 6月 17日

<https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard>

###### 1 分で読むことができます。

##### [Snowsightでどこまでできるか！？限界に挑戦！](https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard)

###### 2023年 12月 14日

<https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata>

###### 5 分で読むことができます。

##### [【禁断の比較？】SnowflakeとTreasure Dataを比べてみました](https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata)

###### 2021年 5月 24日

<https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce>

###### 5 分で読むことができます。

##### [【Snowflake】新機能「Streamlit in Snowflake」とは何者か！？](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

###### 2023年 9月 21日

<https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl>

###### 2 分で読むことができます。

##### [【Snowflake】get\_ddl関数でオブジェクトの定義を取得して再利用する](https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl)

###### 2020年 7月 28日

##### 運営会社

運営会社

- [会社概要](https://insight-lab.co.jp/about/)
- [お問い合わせ](https://contact.insight-lab.co.jp/main)

##### メニュー

メニュー

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [Snowflakeナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

[![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=200&height=55&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png "INSIGHT LAB")](https://www.insight-lab.co.jp/)

- [プライバシーポリシー](https://www.insight-lab.co.jp/privacy.html)

Copyright © 2020 INSIGHT LAB, Inc.

<https://twitter.com/INSIGHTLAB_INC><https://www.youtube.com/channel/UCOKNKiO4uuza4NioSZpBMhg>