0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Transfer Family web appsを触ってみた

Last updated at Posted at 2025-01-21

目次

はじめに

AWS re:Invent 2024に現地参加してきました。今年も様々なサービスアップデートが発表されていましたが、現地ではセッションを受けたりしてアップデート内容を追っている時間が十分に取れなかったので、これから触ってみて理解を深めたいと考えています。最初の一歩目として、取り掛かりやすそうなAWS Transfer Family web appsを触ってみることにしました。

アップデート内容

AWS Transfer Family web appsのアップデートは下記のように説明されていました。

AWS Transfer Family ウェブアプリは、ウェブブラウザから Amazon S3 のデータにアクセスするためのシンプルなインターフェイスを作成するために使用できる新しいリソースです。Transfer Family ウェブアプリを使用すると、エンドユーザーが S3 内のデータを閲覧、アップロード、ダウンロードできる、フルマネージドのブランド化された安全なポータルを従業員に提供できます。

AWS Transfer Family web appsの特徴

  • ユーザーフレンドリーなインターフェイスにより、AWSやその他技術的なバックグラウンドを持たないユーザーでもブラウザベースのファイル転送が可能
  • ノーコードで開発が可能で、セットアップが容易
  • ロゴ、ファビコン、URLのカスタマイズが可能
  • S3 Access Grantsによる細かな操作制御が可能
  • AWSエコシステムを活用可能
    • Transfer Family web appsがスケーラブルで可用性に優れている
    • S3のイレブンナインの耐久性イレブンナインや、その他多様な機能も活用可能
    • EventBridgeを利用することで、複数なワークロードも設定可能
  • 従量課金制
    • USD 0.50/時間/ユニット
    • 1 Transfer Family ウェブアプリケーションユニットは、5 分間に最大 250 の一意のセッションを提供。ウェブアプリケーションを作成する際に、プロビジョニングするユニット数を選択する。

構成図

image.png

上記のようなシンプルな構成で触ってみました。
想定としては、エンドユーザーが、Adminから払い出されたIAM Identity Centerのユーザー(TestUserA、TestUserB)を利用してTransfer Family web appsにアクセスして、S3 Access Grantsで付与された権限でS3バケットに対して操作を行います。ユーザーを二つ作成したのは、S3 Access Grantsで付与する権限を変えることで操作できる範囲が異なることを確認するためです。

触ってみた

IAM Identity Centerの設定

image.png

image.png

IAM Identity Centerでユーザー(TestUserA、TestUserB)を作成しました。作成時に登録したメールアドレスに送られてくるURLから、各ユーザーでログインして、MFA登録などを済ませました。

image.png

各ユーザーでアクセスポータルに接続できることを確認しました。この時点ではアプリケーションもまだ作成していないため、何も表示されていない状態でした。

Transfer Family web appsの作成

image.png

AWS Transfer Familyのコンソール画面を開き、左メニューからウェブアプリを選択し、ウェブアプリを作成していきます。

image.png

下記のように設定しました。

  • 権限タイプ:新しいサービスロールを作成して使用する
  • ウェブアプリユニット:1(最大250つの同時セッション)

ここで自動的に作成されるサービスロールは下記のように記述されていました。

信頼ポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": [
                "sts:AssumeRole",
                "sts:SetContext"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "<アカウントID>"
                }
            }
        }
    ]
}
IAMポリシー
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetDataAccess",
                "s3:ListCallerAccessGrants"
            ],
            "Resource": "arn:aws:s3:ap-northeast-1:<アカウントID>:access-grants/*",
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": "<アカウントID>"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListAccessGrantsInstances",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "s3:ResourceAccount": "<アカウントID>"
                }
            }
        }
    ]
}

image.png

ウェブアプリのデザインでは、下記のように設定しました。ロゴやファビコンは特に設定しませんでした。

  • ページタイトル:S3TestPage

image.png

設定を確認して、ウェブアプリを作成を選択しました。

image.png

ウェブアプリが作成されました。アクセスエンドポイントも表示されていました。

image.png

「ユーザーとグループの割り当て」を選択して、IAM Identity Centerで作成したユーザーをウェブアプリに対して割り当てました。

image.png

再びアクセスポータルに接続すると、作成したウェブアプリが表示されました。

image.png

ウェブアプリを選択すると、作成したウェブページが表示されました。しかし、この時点ではどのS3バケットにもアクセスできない状態となっていました。

S3 Access Grantsの設定

image.png

続いて、S3 Access Grantsの設定を行いました。

image.png

まずは、IAMアイデンティティセンターインスタンスARNを入力して、先ほど作成したIAMアイデンティティセンターインスタンスを追加しました。

image.png

続いて、ロケーションの登録を2つ行いました。それぞれロケーション範囲には下記を登録しました。

  • s3://2025-s3testpage/Directory_A/
  • s3://2025-s3testpage/Directory_B/

IAMロールには、AmazonS3FullAccessをアタッチしたロールを指定しました。

image.png

image.png

最後に、権限を下記のように2つ作成しました。(それぞれ、TestUserAにs3://2025-s3testpage/Directory_A/*、TestUserBにs3://2025-s3testpage/Directory_B/*を権限範囲として付与)

  • サブプレフィックス:*
  • 許可:読み込み、書き込み
  • 被付与者タイプ:IAMアイデンティティセンターからのディレクトリID
  • ディレクトリアイデンティティタイプ:ユーザー
  • IAMアイデンティティセンターユーザーID:<アイデンティティセンターユーザーのID>

image.png

image.png

image.png

再度ウェブアプリにアクセスすると、権限を付与した範囲のパスでフォルダを参照することができました。TestUserAではDirectory_Aが、TestUserBではDirectory_Bが確認できました。しかし、ディレクトリを選択するとNetwork Errorが発生し、中身が確認できない状態でした。

CORSの設定

image.png

下記ページを参考に対象とするS3バケットのCORS設定を編集しました。

image.png

CORSの設定により、ディレクトリの中身が確認できるようになりました。(中身は空)

Transfer Family web apps上の操作

image.png

三点マークをクリックすると、コピー、フォルダ作成、削除、アップロードメニューがありました。

  • Upload

image.png

実際にファイルをアップロードしてみました。

image.png

コンソール画面からS3バケットを見ると、確かにファイルがアップロードされているのがわかりました。

  • Create folder

image.png

続いてはフォルダーの作成を試してみました。

image.png

image.png

こちらも作成したフォルダをS3バケット上で確認できました。

  • Copy

image.png

image.png

次はコピーです。ファイルを選択したうえで、コピー先を指定して実行しました。

image.png

確かにコピー先に指定した場所にコピーできていることが確認できました。(S3バケット上も同様)

  • Delete

image.png

最後はファイル削除を試しました。複数ファイルをアップロード後、それらを選択してDeleteを実行しました。

image.png

確かに選択したファイルが削除されるのを確認できました。(S3バケット上も同様)

まとめ

今回はAWS Transfer Family web appsを試してみました。セットアップはノーコードでお手軽にできて、Webアプリとしての機能も非常に豊富だと感じました。(ファイルのアップロードや削除、フォルダ作成、コピー、今回記載していませんが、ファイル検索機能までありました)従量課金制となっており、USD 0.50/時間/ユニットかかるようです。また、似たような機能を持つStorage Browser for Amazon S3というものも発表されているので、そちらも触ってみて今回のTransfer Family web appsとの比較をしたいと思います。

参考記事・動画

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?