AWS Transfer Familyの入門チュートリアルをやってみた

2022.09.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!AWS事業本部コンサルティング部のたかくに(@takakuni_)です。

今回は、AWS Transfer Familyの入門チュートリアルをやってみて、どのような構成要素か図解してみようと思います。

まとめ

1枚絵にすると、次の図のリソースを作成しています。

マネジメントコンソールで自動的に作られているリソースもあるため、手順に記載がないリソースも表記しています。

チュートリアルやってみた

では、どのタイミングでどのリソースが作られるのか確認してみようと思います。

ステップ1は、マネジメントコンソールへのログイン手順のため省略します。

ステップ2

ステップ 2: SFTP 対応サーバーの作成

ステップ2では、SFTPサーバーとIAMロールの作成を行います。

手順に従い作成すると次の図のリソースが作成されます。

ログを送るためのロール」として、作成されたIAMロールを確認してみます。

自動で作成したため「AWSTransferLoggingAccess」といった名前で作成されています。ポリシーにはAWS管理ポリシーの「AWSTransferLoggingAccess」がアタッチされていました。

より詳しい詳細は以下ドキュメントに記載されていました。

Log activity with CloudWatch

ステップ3

ステップ 3: サービスマネージドユーザーを追加する

ステップ3では、SFTPサーバーへアクセス可能なユーザーを作成します。

ロールの作成

作成するユーザーがS3にアクセスするために利用するIAMロールとIAMポリシーを作成する必要があります。

今回は次のドキュメントを参考にIAMポリシーを作成してみました。

読み書きアクセスポリシーの例

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::*"
            ]
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject",
                "s3:DeleteObjectVersion", 
                "s3:GetObjectVersion",
                "s3:GetObjectACL",
                "s3:PutObjectACL"
            ],
            "Resource": "arn:aws:s3:::*/*"
        }
    ]
}

構成図

SSHキーの作成

今回、SFTPプロトコルを使用してTransfer Familyと通信するため、SSHキーを作成します。

SSH キーを生成する

ssh-keygenコマンドを利用して、SSHキーペアを作成しました。

takakuni% ssh-keygen -t rsa -b 4096 -N "" -f transfer_tutorial
Generating public/private rsa key pair.
Your identification has been saved in transfer_tutorial
Your public key has been saved in transfer_tutorial.pub
The key fingerprint is:
SHA256:Gf32lItve2epdtEKyhjBHLg9poppse+Dg9RcfLUNQ48 takakuni
The key's randomart image is:
+---[RSA 4096]----+
|       ...       |
|      . .=o      |
|    .  =oE*.     |
|     o..B+ o   . |
|  o . .oSo  o o .|
| ..o  . .  ..+ o.|
|.. * .   + ...o.o|
|. B o   . o  ooo+|
| . +o.      .o=+.|
+----[SHA256]-----+

構成図

S3バケットの作成

転送先のS3バケットを作成しておきます。

今回は、「takakuni-trasnfer-tutorial」といった名前で作成してみました。

構成図

ユーザーの作成

ステップ3の前段階で作成した、IAMリソース、SSHキー、S3バケットを利用してユーザーの作成を行います。

ホームディレクトリは空白で今回は設定しました。

ステップ 3: サービスマネージドユーザーを追加する

ステップ4

ステップ 4: クライアントを使用してファイルを転送する

今回は「Cyberduck」を利用してファイル転送を行なってみようと思います。

Cyberduckを開き、「Open Connection」からSFTPサーバー/ユーザーへの認証情報を入力します。

ログインに成功すると、S3を操作可能になります。今回は「key.png」をアップロードしてみました。

また、初回ファイルアップロード等を行うとCloudWatch Logsロググループが作成されます。

構成図

S3を確認すると、「key.png」が転送されていることが確認できました。

まとめ

以上、「AWS Transfer Familyの入門チュートリアルをやってみた」でした。構成要素が少し多く(特にロールの使い道等)、図解してみようと思ったのがブログのきっかけでした!

この記事がどなたかの参考になれば幸いです。

以上、AWS事業本部コンサルティング部のたかくに(@takakuni_)でした!