adtech studio

s3からのdistcp費用を70%OFFする方法

nario By nario

AWS Hadoop ネットワーク

S3へアクセスする際にDirect Connect経由にできましたので
(参考:【Amazon S3の転送料金を大幅削減】VPCエンドポイントを使ったS3プライベートアクセスのススメ
AWSとDirect Connectでつながっているデーターセンター側にあるHadoop環境にて
S3からのdistcpについても外を経由せず、安いDirect Connect経由で実施してみます。

実際にどの程度費用が削減できるか試算
通常のS3からのデータ転送費用:0.140 USD/GB
DirectConnect経由のS3からのデータ転送費用:0.042 USD/GB

DirectConnectを経由することで100-0.042/0.140*100=70%OFF(2016/05/18現在)

 

事前確認

distcpでS3からデータを取得するまでの流れをtcpdumpで確認したところ

DNSに バケット名.s3.amazonaws.com を問い合わせ、返ってきた以下情報を利用してhttpsでアクセスしています。

CNAMEレコードでS3 Endpoint(s3-ap-northeast-1-w.amazonaws.com 等)
S3 EndpointのAレコード(IP Address)

 

サーバー側設定

distcpを実行するサーバー側でdnsmasqを利用し、事前確認した問い合わせの結果を書き換える事にしました。

インストール

設定
/etc/dnsmasq.conf

/etc/dnsmasq.resolv.conf

※/etc/resolv.confで指定していたDNSサーバーは上記で指定

/etc/dnsmasq.more.conf

/etc/hosts

※ここで構築したS3 VPC EndpointのIPを指定

/etc/resolv.conf

上記設定を行ったらdnsmasqを起動させてdigで確認してみてください。

dig バケット名.s3.amazonaws.com

 

S3 VPC Endpoint側設定

【Amazon S3の転送料金を大幅削減】VPCエンドポイントを使ったS3プライベートアクセスのススメの記事の中ではNginxを利用してテストしていたかと思いますが
今回distcpを通す上ではStoneに変更しています。

Stone導入(割愛)

Stone起動

 

distcp

後はdistcpを実行し正しくS3 VPC Endpointを経由していることを確認して終了です。

S3 VPC Endpoint側1ヶ月間のグラフ

distcp_traffic
※distcpコマンドでオプションにて300Mbpsくらいに抑えて転送しています。
これで1ヶ月あたり80万円削減できました!