AWSを触ってみた

はじめに

AWSで構築されているシステムの運用・保守を任されたのは良いのだけれども、これまで AWSを触ったことがなかったので調べました。以前から AWSを触ってみたかったので、とても良い機会です。

システムの構成図

今回はシステムの一部分である SFTP機能について書きます。構成図は以下の通りです。システムの概要については、ユーザが WinSCPFilezillaなどのツールを用いて S3のリソースにアクセスしにくるので、事前に登録したユーザ情報を基に認証を行います。


f:id:yd0:20200719224014p:plain

各サービスについて

  • Transfer for SFTP

    • SFTPを使用し、S3との間でファイル転送ができるフルマネージド型のサービス
    • フルマネージド型なのでインフラストラクチャの運用、管理は不要
  • API Gateway

    • APIの作成から配布、保守、監視、保護が行えるフルマネージド型のサービス
    • トラフィック管理や APIのバージョン管理など、APIコールの受け入れと処理に伴うすべてのタスクを取り扱う
  • Lamdba

    • サーバなしでプログラムが実行できるサービス (≒ Google Cloud Functions)
  • Secrets Manager

    • アプリケーションやリソースなどの認証情報を、簡単にローテーション、管理、取得できるサービス
  • S3

    • ストレージサービス (≒ Google Cloud Storage)


使用しているサービスには GCPにも同様のサービスが存在したりするので、役割であったり仕組みであったりが直感的に理解できました。

わからなかったこと、疑問に思ったことなど

なぜ Secrets Managerを使うのか?

  • Transfer for SFTPには 2つの認証方法がある

    • サービス内にユーザ IDを作成するサービスマネージド型認証
    • 任意の IDプロバイダーを統合できるカスタム認証
  • 前者であればユーザ認証はサービス内で完結するのに、なぜ後者を選んで Secrets Managerを使用するのか?

  • 理由は以下の 2つ

    • ユーザは外部の IDを持っていたこと
    • SSHキーではなくパスワードでの認証が必要であったこと
  • サービスマネージド型はパスワード認証がサポートされていないので、カスタム認証を採用する必要があった

  • 参考

GCPで同じシステムを作るには?

  • GCPには Transfer for SFTPのようなフルマネージド型のサービスは存在しない (はず)

  • SFTPを使用して Cloud Storageとの間でファイル転送するには?

    • Compute Engine + Cloud Storage FUSE + Cloud Storageの構成
    • Compute Engine VMではデフォルトで SFTP接続が可能
    • Cloud Storage FUSEで、Compute Engine VM上のディレクトリに Cloud Storageをマウント
  • GCPではフルマネージドの AWSとはちがって Compute Engine VMの運用、管理が必要

  • 参考

さいごに

はじめて AWSに触れましたが、普段 GCPを使っていることでクラウドやインフラストラクチャに対する理解や考察が深まっている気がします。また複数のパブリッククラウドサービスを使ってみることで、各サービスの特徴なども見れていいですね。

AWSはドキュメントが豊富かつわかりやすくて助かります。GCPはわかりにくい (気がする)。

次は、システムのネットワーク部分について記事を書こうと思います。