オンプレミスからDirect Connect経由でWinSCPを利用しS3に接続したかったから検証した
はーいこんにちは。
オガワです
詰まったことをちょくちょく記録していこうと思ってるんですけど大体DevelopersIO見たら解決することが多いです。
最近飲み会とサウナ以外の趣味がなくなってきたのが悩みです。
趣味、募集中です。
やりたかったこと
オンプレミスサーバーからDirect Connect経由でS3インターフェースエンドポイントを使い、WinSCPでS3にファイル転送したい。
参考URL
AWS PrivateLink for Amazon S3
VPC ピアリング接続の DNS 解決を有効にする
検証構成
本来やりたい構成図

個人の検証環境ではDirectConnectもオンプレミス環境も使えないため、以下の代替構成で検証

前提条件
- IGWをアタッチしていないVPCを用意し、WindowsEC2を起動していること
- EC2にSSMフリートマネージャーを利用し、RDP接続できること
- EC2にWinSCPをインストールしていること
結論&まとめ
できます。
詰まりポイントは個人的に2点です。
エンドポイントのDNSの指定とピアリングのDNS設定。
忘れてしまうのでブログ書きました。
以下2点しっかり確認する!
DNS名を使用してリソースにアクセスする場合は、*適切な値に置き換えてください。
DNS 解決が無効 (デフォルト)
作成するAWSリソース一覧
| リソース | 用途 | 備考 |
|---|---|---|
| VPC-A | EC2配置(オンプレ想定) | IGWなし |
| VPC-B | S3エンドポイント配置 | IGWなし |
| サブネット(VPC-A) | EC2配置用 | - |
| サブネット(VPC-B) | エンドポイント配置用 | - |
| Windows EC2 | WinSCP接続元(オンプレ想定) | VPC-Aに配置 |
| VPCピアリング接続 | VPC-A/VPC-B間の接続 | DXの代替 |
| ルートテーブル(VPC-A) | VPC-B向きのルート追加 | - |
| ルートテーブル(VPC-B) | VPC-A向きのルート追加 | - |
| セキュリティグループ | エンドポイント用 | HTTPS:443許可 |
| S3インターフェースエンドポイント | PrivateLink経由でS3接続 | VPC-Bに配置 |
AWS側の構築ポイント
ルートテーブルの設定
VPC-A(EC2側)
| 送信先 | ターゲット |
|---|---|
| VPC-BのCIDR(例:192.168.0.0/16) | pcx-xxxxxxxx(ピアリング) |
VPC-B(エンドポイント側)
| 送信先 | ターゲット |
|---|---|
| VPC-AのCIDR(例:10.0.0.0/16) | pcx-xxxxxxxx(ピアリング) |
S3インターフェースエンドポイントのセキュリティグループ
| タイプ | プロトコル | ポート | ソース |
|---|---|---|---|
| HTTPS | TCP | 443 | VPC-AのCIDR(例:10.0.0.0/16) |
VPCピアリングのDNS設定
まず1つ目の躓き
ここの設定漏れで「なんか繋がらへん。」っていう状況になりました。
VPC → ピアリング接続 → 対象ピアリング → アクション → DNS設定を編集
| 設定項目 | 値 |
|---|---|
| リクエスターDNS解決 | 有効 |
| アクセプターDNS解決 | 有効 |

デフォルトOFF。。ONにしないとVPC-AのEC2からエンドポイントのDNS名が解決できず接続できない。Oh
参考URLにも記載していますが一次情報はこちら。
VPC ピアリング接続の DNS 解決を有効にする
WinSCPの設定
| 項目 | 値 |
|---|---|
| 転送プロトコル | Amazon S3 |
| ホスト名 | bucket.vpce-xxxxxxxxxxxxxxxxx-xxxxxxxx.s3.ap-northeast-1.vpce.amazonaws.com |
| アクセスキー/シークレットキー | IAMユーザーの認証情報 |
ホスト名の確認方法
VPC → エンドポイント → 対象エンドポイント → 詳細タブ → DNS名
コンソールには以下のような形式でDNS名が表示される。
*.vpce-0f278e982db09126f-97v3x47e.s3.ap-northeast-1.vpce.amazonaws.com
この * の部分は**用途に応じて置き換える必要がある。
ここでも躓いた。
「エンドポイントのDNSを指定すればいける」と思ってたんですよね。
それだけではダメでしたね。Oh
僕はコンソールで表示されているDNSをコピペしてました。
参考URLにも記載していますが、公式URLはこちらです。
WinSCPでバケットにファイル転送したい場合は bucket を使う。

# WinSCPのホスト名に指定する実際のDNS名
bucket.vpce-0f278e982db09126f-97v3x47e.s3.ap-northeast-1.vpce.amazonaws.com
2度目ですけど* の部分をそのままにしたり、bucket. なしで指定すると接続できないので注意
ブログ書く習慣がないので最後の締めくくり方がわからないんですけどこんな感じで。足りてないことあったら追記します。
ではまた。






