Blog
s3からのdistcp費用を70%OFFする方法
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を利用し、事前確認した問い合わせの結果を書き換える事にしました。
インストール
1 |
yum -y install dnsmasq |
設定
/etc/dnsmasq.conf
1 2 3 |
resolv-file=/etc/dnsmasq.resolv.conf strict-order conf-file=/etc/dnsmasq.more.conf |
/etc/dnsmasq.resolv.conf
1 |
nameserver DNS_Server_IP |
※/etc/resolv.confで指定していたDNSサーバーは上記で指定
/etc/dnsmasq.more.conf
1 |
cname=バケット名.s3.amazonaws.com,s3-ap-northeast-1-w.amazonaws.com |
/etc/hosts
1 |
S3_VPC_Endpoint_IP s3-ap-northeast-1-w.amazonaws.com |
※ここで構築したS3 VPC EndpointのIPを指定
/etc/resolv.conf
1 |
nameserver 127.0.0.1 |
上記設定を行ったらdnsmasqを起動させてdigで確認してみてください。
dig バケット名.s3.amazonaws.com
1 2 3 4 |
;; ANSWER SECTION: バケット名.s3.amazonaws.com. 1782 IN CNAME s3-ap-northeast-1-w.amazonaws.com. s3-ap-northeast-1-w.amazonaws.com. 5 IN A S3_VPC_Endpoint_IP |
S3 VPC Endpoint側設定
【Amazon S3の転送料金を大幅削減】VPCエンドポイントを使ったS3プライベートアクセスのススメの記事の中ではNginxを利用してテストしていたかと思いますが
今回distcpを通す上ではStoneに変更しています。
1 |
service nginx stop |
Stone導入(割愛)
Stone起動
1 |
stone -l s3-ap-northeast-1-w.amazonaws.com:443 443 |
distcp
後はdistcpを実行し正しくS3 VPC Endpointを経由していることを確認して終了です。
S3 VPC Endpoint側1ヶ月間のグラフ
※distcpコマンドでオプションにて300Mbpsくらいに抑えて転送しています。
これで1ヶ月あたり80万円削減できました!
Author