【AWS re:Invent 2024】【新機能】AWS Transfer Family Web Appsを試してみました

記事タイトルとURLをコピーする

こんにちは。
アプリケーションサービス部、DevOps担当の兼安です。
今回は、AWS re:Invent 2024期間中に発表された新機能「AWS Transfer Family web apps」を試してみたので、その内容をお伝えします。

AWS Transfer Family web appsとは

AWS Transfer Family web appsは、AWS Transfer Familyの新機能です。

aws.amazon.com

Amazon S3バケットに対しファイルを操作するためのWebアプリケーションを簡単に作成できる機能です。

AWS Transfer Family web appsを試してみる

AWS Transfer Family web appsは既に東京リージョンでも利用可能です。
始め方は、上述のアナウンスページの通りですが、少々わかりづらいところがあるので改めて試してみますね。

Amazon S3バケットを作成済みの状態で始めます。

ウェブアプリの作成

AWSマネジメントコンソールでAWS Transfer Familyを開きます。
そして、ナビゲーションペインの「ウェブアプリ」をクリックします。

AWS Transfer Familyのウェブアプリをクリック

ウェブアプリの設定画面が開かれます。

ウェブアプリの設定画面

AWS Transfer Family web appsは認証にAWS IAM Identity Centerを使用します。
そのため、AWS IAM Identity Centerが設定されていない場合は、作成を促されます。
AWS IAM Identity Centerを作成して、ユーザーを作成しておきます。

なお、AWS IAM Identity Centerは、作り方が2種類あります。
てっとり早いのはアカウントインスタンスを作成する方法で、画面ハードコピーに表示されているのはこの方法です。
AWS IAM Identity Centerとアカウントインスタンスの詳しい話は、こちらをご覧ください。

blog.serverworks.co.jp

画面を下にスクロールすると、権限タイプの設定があります。
これを選択します。

権限タイプの設定

ここで一つの注意点があります。
AWS Transfer Family web appsを利用するには2種類のIAMロールが必要で、こちらのページにそれらが書かれています。

docs.aws.amazon.com

ページ上部のCreate an identity bearer roleに書かれているロールが、今表示しているウェブアプリの設定画面で設定するロールです。
このロールは、権限タイプで「新しいサービスロールを作成して使用する」を選ぶと自動で作成されます。
もう一つはページ下部のCreate an access grants roleに書かれているロールです。
ロールに、ページに記載されている信頼ポリシーとS3バケットに対する権限を付与したポリシー(ページの例ではAmazonS3FullAccess)をアタッチします。
こちらは、後述のAmazon S3のAccess Grants設定で使用します。

「次へ」をクリックすると、デザインの設定画面が開かれるので、デザインを設定します。

デザインの設定

「次へ」をクリックすると、確認画面が表示されるので最後に「ウェブアプリを作成」をクリックして完了です。

Amazon S3 Access Grantsの作成

Amazon S3 Access Grantsとは、Active DirectoryやサードパーティのIdPなど、IAM Identity Centerと統合できる認証基盤のアイデンティティ経由でのS3バケットへのアクセスの際に、読み取りや書き込みなどのアクセス権限付与の一元管理や、CloudTrailによる証跡の記録を行えるようにする仕組みです。

blog.serverworks.co.jp

AWS Transfer Family web appsでは、この機能を利用してアクセス権限を設定します。
Amazon S3 Access Grantsは、AWSマネジメントコンソールのAmazon S3のナビゲーションペインから作成します。
1アカウントあたり、かつAWSリージョンごとに1つだけ設定できます。
これがない時だけ、作成ボタンが表示されるのでここから作成します。

Amazon S3 Access Grantsの作成

AWS IAM Identity CenterのARNを入力します。

AWS IAM Identity CenterのARNを入力

ロケーション=S3バケットとIAMロールを設定する画面が表示されるので、設定します。
IAMロールは、Create an access grants roleで作成したロールを選択します。

ロケーションとロールの設定

許可とアクセスの設定をアナウンスページを参考に設定します。

許可とアクセスの設定

IAM Identity CenterのユーザーIDの部分は、ユーザーやグループのIDを入力します。
ユーザーやグループのIDは、AWS IAM Identity Centerのユーザー・グループのページの「一般的な情報」をクリックしたところに表示されます。

IAM Identity CenterのユーザーのIDは、一般的な情報の中にある

Amazon S3 バケットのCORSの設定

Amazon S3バケット側で、CORSの設定が必要です。
バケットを選択し、アクセス許可 > Cross-Origin Resource Sharing (CORS) で設定します。
アナウンスページの画像で記載されているCORSよりもちょっとシンプルにした下記内容で動作確認できたので参考にしてください。
なお、xxxの部分はご使用の環境ごとに変わります。
AllowedOriginsはご自身のWebアプリのURLを参考に置き換えてください。

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE",
            "HEAD"
        ],
        "AllowedOrigins": [
            "https://webapp-xxx.transfer-webapp.ap-northeast-1.on.aws",
            "https://*.webapp-xxx.transfer-webapp.ap-northeast-1.on.aws"
        ],
        "ExposeHeaders": []
    }
]

ウェブアプリへのユーザーとグループの割り当て

作成したウェブアプリを開くと、画面上部に「ユーザーとグループの割り当て」ボタンが表示されます。
これをクリックし、「ユーザーとグループの割り当て」を選択して、IAM Identity Centerのユーザー・グループを選択して割り当てます。

ユーザーとグループの割り当てをクリック

ユーザーとグループの割り当てのダイアログ

以上で作業は完了です。

ウェブアプリへのアクセス

ウェブアプリのURLにアクセスすると、AWS IAM Identity Centerのログイン画面が表示されます。
ログインするとウェブアプリの画面が表示され、S3ファイルの操作が可能です。

ウェブアプリのURLを控える

ウェブアプリの画面

所感と考えられる用途

ファイルアップロード画面は、自分で作ろうと思うと少々手間がかかりますので、これを簡単に作成できるのはとても便利だと思います。
一方で実際に試してみたところ、手順が多いため、IaC(Infrastructure as Code)を活用して作業を自動化しないと広く普及させるのは難しいと感じました。

利用用途を考える際には、コストが気になります。
調査したところ、AWS Transfer Family Web Appsは最低でも時間単価0.5ドルかかるようです。
この点から、コスト面で見ると恒久的に使うサービスとしての優先度は一段下がるように思えます。

aws.amazon.com

また、Amazon S3にWEB UIを付与する選択肢としては、Storage Browser for Amazon S3という案もあります。
ただし、こちらはサービスではなくUIライブラリの提供であるため、利用にはプログラミングが必要です。
手間はかかりますが、恒久的に使用する場合、こちらの方が割安になる可能性が高いです。

以上のことから、AWS Transfer Family Web Appsは、データパイプラインやデータ移行を行う際の簡易的かつ一時的なファイルアップロード画面として利用するのに適しているのではないかと考えています。

aws.amazon.com

github.com

[余談]AWS IAM Identity Centerの存在感が増している

AWS re:Invent 2024におけるアップデートを見ていると、AWS IAM Identity Centerを利用するサービスが増えてきているように感じます。
Amazon Qをはじめとした先進的なサービスを利用するにあたり、AWS IAM Identity Centerの運用方法の確立が重要になってきたと思いますので、私としてもしっかりと理解していきたいと思います。

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS3課所属
2024 Japan AWS Top Engineers (Database)
2024 Japan AWS All Certifications Engineers
認定スクラムマスター
広島在住です。今日も明日も修行中です。