1
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?

EC2からS3へのアップロードやダウンロードの方法

Last updated at Posted at 2024-10-30

はじめに

S3を経由してEC2から別のEC2へファイルを移動する機会がありましたので、自分の備忘録を兼ねて記載します。
※本記事は2024年10月ごろの情報を基に作成しています。

実施したいこと

「EC2_A」のファイルをS3経由して「EC2_B」にコピーします。
構成は以下のようになります
EC2-S3_2.drawio.png

前提

・AWSアカウントがあること
・EC2、S3のリソースが既にあること
・EC2、S3の操作権限があること
・EC2にSSHで接続できると
・EC2にAWS CLIがインストールされていること
・ターミナルはTeraTarmを使用

作業内容

①EC2_AとEC2_BにS3のアクセス権限を付与(IAMロールのアタッチ)
②EC2_AらS3へアップロード
③S3からEC2_Bへダウンロード
④EC2_AとEC2_BにS3のアクセス権限を削除(IAMロールのデタッチ)

①EC2_AとEC2_BにS3のアクセス権限を付与(IAMロールのアタッチ)

EC2がS3に対して操作(アップロード/ダウンロード)するための権限をロールを作成し付与します。
本作業はEC2_AとEC2_Bに対して行います。
AWSマネジメントコンソールの検索窓で「IAM」と検索します。
左のメニューから「ロール」を選択して「ロールを作成」を押下します。
信頼されたエンティティタイプでは「AWSサービス」を選択します。
「ユースケース」では「EC2」を選択し次へを押下します。
スクリーンショット 2024-10-30 141127.png
許可ポリシーで追加したいポリシーを選択します。
※手順ではS3FullAccessを選択していますが、ポリシーを作成して追加することも可能です。
「許可を追加」を押下します。
スクリーンショット 2024-10-30 131152.png
任意のロール名を記入し、ロールの作成を押下します。

これでロールの作成は完了です。
続いて作成したロールをEC2に付与(アタッチ)を行います。
AWSマネジメントコンソールでEC2と検索します。
対象のEC2を選択し右上の「アクション」→「セキュリティ」→「IAMロールを変更」を押下します。
IAMロール変更.png
対象のロールを選択し「IAMロールの更新」を押下するとロールが付与されます。
ロールを変更(アタッチ).png
EC2の詳細画面でもIAMロールが付与(アタッチ)されていることを確認できます。
スクリーンショット 2024-10-30 140517.png

これでEC2へのアクセス権限の付与作業は完了です。
続いてEC2_AからS3にファイルのアップロードを行います。

②EC2_AからS3へのアップロード

TeraTarmでSSHでEC2_Aにログインします
EC2_Aでアップロードコマンドを入力します。

aws s3 cp ローカルのファイル名 s3://バケット名/フォルダ名 

以下はカレントディレクトリからTest.txtをS3のHogeFuga_bucketのTempにコピーした出力サンプルです。
※ローカルのファイルをフルパスで指定することも可能です

コマンド・出力例
aws s3 cp ./Test.txt s3://HogeFuga_bucket/Temp/
upload: ./Test.txt to s3://HogeFuga_bucket/Temp/Test.txt

Test.txtがアップロードできているのが分かります。

カレントディレクトリのすべてのオブジェクトをS3のにコピーする方法は以下になります。

aws s3 cp ローカルのディレクトリ名 s3://バケット名/フォルダ名 --recursive

※--recursiveオプション:フォルダ階層を含むすべてのファイルやサブディレクトリに対してコピーコマンドを適用します。
ここではフォルダ構造をそのままS3にコピーしています。出力サンプルは以下になります。

コマンド・出力例
aws s3 cp ./ s3://HogeFuga_bucket/Temp/ --recursive
upload: ./Test.txt to s3://HogeFuga_bucket/Temp/Test.txt
upload: ./Test_2.txt to s3://HogeFuga_bucket/Temp/Test_2.txt
upload: ./Test_3.txt to s3://HogeFuga_bucket/Temp/Test_3.txt
upload: ./Test_4.txt to s3://HogeFuga_bucket/Temp/Test_4.txt
upload: ./Test_5.txt to s3://HogeFuga_bucket/Temp/Test_5.txt

S3へのアップロード手順はこれで完了です。
続いてS3からEC2_Bにファイルをダウンロードするやり方ります。

③S3からEC2_Bへのダウンロード

TeraTarmでSSHでEC2_Bにログインします
EC2_Bでダウンロードコマンドを入力

aws s3 cp s3://バケット名/フォルダ名/ファイル名 ローカルのディレクトリ名

以下はTest.txtをカレントディレクトリにダウンロードしている出力サンプルです。

コマンド・出力例
aws s3 cp s3://HogeFuga_bucket/Temp/Test.txt ./
download: s3://HogeFuga_bucket/Temp/Test.txt to ./Test.txt

ダウンロードができていることが分かります。
ダウンロード時にも--recursiveオプションをつけることでディレクトリ内のすべてのファイルやサブディレクトリをダウンロードすることも可能です。

すべての作業が完了したら、EC2に付与したロールを削除します。

④EC2_AとEC2_BのS3のアクセス権限を削除(IAMロールのデタッチ)

対象のEC2を選択し、右上のアクション→セキュリティ→IAMロールを変更を押下します。
IAMロール変更.png

IAMロールの変更画面で「IAMロールがありません」を選択し「IAMロールの更新」を押下します。
IAMロールのデタッチ.png
IAMロールをデタッチするか確認されますので入力フィールドに「デタッチ」と入力して
デタッチを押下するとIAMロールがデタッチされます。

デタッチ確認.png
EC2の詳細画面でもIAMロールがデタッチされたことを確認できます。
EC2詳細デタッチ確認.png

おわりに

使う状況はあまりないかもしれませんが、AWS環境からファイルをローカルに移す必要がないため、使いやすい手順だと思いました。

1
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
1
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?