【S3】ファイル転送ソフトを使ってS3へファイルをアップロード

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

エンジョイ AWS!
サーバーワークス エンジニアの伊藤Kです。

冬。温かい飲み物と、チョコレートが美味しい季節です。

今回は、ファイル転送ソフトウェアのS3アップロード機能を使って、S3へファイルをアップロードします。

準備

  • S3のバケットを作成します
    • 今回は、「swx-k-ito-20210107」というバケット名で作成しました
  • アクセスキー、シークレットアクセスキーを持つIAMユーザーを作成します
    • アクセスキー、シークレットアクセスキーはソフトの設定で使用します
  • バケットポリシー、IAMポリシー等でIAMユーザーへのアクセス権を設定します
    • 今回は、以下のIAMポリシーをIAMユーザーにインラインポリシーとしてアタッチしました
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":"arn:aws:s3:::swx-k-ito-20210107"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:PutObjectAcl",
            "s3:GetObject",
            "s3:GetObjectAcl",
            "s3:DeleteObject"
         ],
         "Resource":"arn:aws:s3:::swx-k-ito-20210107/*"
      }
   ]
}
  • S3へのアップロード機能を持つファイル転送ソフトを端末等にインストールしておきます
    • 今回は、Cyberduckを使用します(筆者の環境は、バージョン7.7.2、Windows版)
    • 他にも、WinSCP、FileZillaなどが機能を持っています

アップロード手順

Cyberduckを起動します。
「新規接続」をクリックします。

f:id:swx-kenichi-ito:20210108135034j:plain

新規接続設定画面の最上部、プロトコル選択のプルダウンで「Amazon S3」を選択します。

f:id:swx-kenichi-ito:20210108135046j:plain

以下の各項目を入力します。

サーバ s3.amazonaws.com
アクセスキーID IAMユーザーのアクセスキーID
シークレットアクセスキー IAMユーザーのシークレットアクセスキー
詳細設定 - Path swx-k-ito-20210107 (※1)

※1:S3の全バケットを一覧表示させる「s3:ListAllMyBuckets」の権限が付与されていれば、ここは未入力でも大丈夫です。
 今回は、上記IAMポリシーの通り、権限を付与していないため、ここにバケット名を入力しないとエラーとなり、接続できません。

f:id:swx-kenichi-ito:20210108135105p:plain

バケットの中身が表示され、ドラッグアンドドロップでアップロードが可能です。

f:id:swx-kenichi-ito:20210108135733p:plain
f:id:swx-kenichi-ito:20210108135816p:plain

メニューから、ダウンロード、削除等もできます。

アップロードされたファイルは、S3のマネジメントコンソールからも確認できます。

f:id:swx-kenichi-ito:20210108135153p:plain

アップロードできるしくみ

ソフトの機能で、S3にAPIリクエストを送っています。
S3のサーバーアクセスログではこのようなレコードが見られます。

91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:25 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 4Y3KXXXXXXXSCVAM REST.GET.BUCKET - "GET /?encoding-type=url&max-keys=1000&prefix&delimiter=%2F HTTP/1.1" 200 - 687 - 193 193 "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - Eqv7ZuoDIiPZQlyynNnJXXXXXXXWeTvdz9Z82vt9WSZGAimDU9XXXXXXX6ee8oSTchaJVMIN/No= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:25 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 AP5KXXXXXXXTCZFT REST.GET.VERSIONING - "GET /?versioning HTTP/1.1" 403 AccessDenied 243 - 29 - "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - l9OUBdBlv7/yIzWXYXBxCvB2+gJwXXXXXXXCZvoKMhy8hAvOZhuKXXXXXXXa++dLYc8UH8EZbqw= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:26 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 0F3330XXXXXXX6CA REST.GET.ACCELERATE - "GET /?accelerate HTTP/1.1" 403 AccessDenied 243 - 5 - "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - tR+HxTrO5TX31P+6svNXXXXXXXApTqQ+6p4CSbP4FghXXXXXXX1JhsAyPKkh7UQNIdMZ5Y5pk64= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:26 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 3A7XXXXXXX043E6A REST.GET.VERSIONING - "GET /?versioning HTTP/1.1" 403 AccessDenied 243 - 6 - "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - IEmNn7tIBXSCYrXXXXXXXa5b8zkxZ8PTlhcYYWAaXXXXXXXdDUJea+Qiqy5Y1zKQyvKvVBjB/aY= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:26 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 5362B5ECXXXXXXXA REST.PUT.OBJECT test.pdf "PUT /test.pdf HTTP/1.1" 200 - - 2254581 667 60 "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - PdTzhmucp5qLCT+nx4nOhLXXXXXXXg6vMBQXXXXXXXXUkrf7Exn2Jq8D1Otnq41Y6tatoyXGCus= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:26 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 5XXXXXXXXA22F98A REST.GET.BUCKET - "GET /?encoding-type=url&max-keys=1000&prefix&delimiter=%2F HTTP/1.1" 200 - 687 - 25 24 "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - JuzjswSa8vXXXXXXXCliHy4DOddEHI+HGUKtQ2+vd9XXXXXXXiVWrit86V1J0TLC1THf4insZBA= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2
91de4a02d18b0c4axxxxxxxxxxxxxxxxxxxxb391cd54cea7680e05071f5ebd19 swx-k-ito-20210107 [08/Jan/2021:02:20:26 +0000] xxx.xxx.xxx.xxx arn:aws:iam::123456789012:user/testuser001 F3A4EXXXXXXXXB6B REST.GET.UPLOADS - "GET /?prefix&delimiter=%2F&uploads HTTP/1.1" 403 AccessDenied 243 - 3 - "-" "Cyberduck/7.7.2.33862 (Windows 10/10.0) (amd64)" - wmxPK4ox7AG2MeOfEwbmXfFXXXXXXXNvZWw6w8+OgmgO3RAXXXXXXX1U4lTVnBt2jGIOZL1I1PE= SigV4 ECDHE-RSA-AES128-SHA AuthHeader swx-k-ito-20210107.s3.dualstack.ap-northeast-1.amazonaws.com TLSv1.2

"Cyberduck/7.7.2.33862" がログに載ってきてますね。
権限を絞っているせいか、"403 AccessDenied" がけっこう入ります。

最後に

アクセスキー、シークレットアクセスキーの漏洩には、気を付けましょう・・・
それでは、楽しいAWSライフを! f:id:swx-kenichi-ito:20210108135211p:plain

伊藤K (記事一覧)

おっさんエンジニア。

甘いお菓子が大好きですが、体重にDirect Connectなので控えています。

「エンジョイ AWS」を合言葉に、AWSを楽しむことを心がけています。