エンジョイ 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を起動します。
「新規接続」をクリックします。
新規接続設定画面の最上部、プロトコル選択のプルダウンで「Amazon S3」を選択します。
以下の各項目を入力します。
サーバ | s3.amazonaws.com |
アクセスキーID | IAMユーザーのアクセスキーID |
シークレットアクセスキー | IAMユーザーのシークレットアクセスキー |
詳細設定 - Path | swx-k-ito-20210107 (※1) |
※1:S3の全バケットを一覧表示させる「s3:ListAllMyBuckets」の権限が付与されていれば、ここは未入力でも大丈夫です。
今回は、上記IAMポリシーの通り、権限を付与していないため、ここにバケット名を入力しないとエラーとなり、接続できません。
バケットの中身が表示され、ドラッグアンドドロップでアップロードが可能です。
メニューから、ダウンロード、削除等もできます。
アップロードされたファイルは、S3のマネジメントコンソールからも確認できます。
アップロードできるしくみ
ソフトの機能で、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ライフを!