S3からEC2にファイルをコピー

AWSのEC2インスタンスからS3にあるファイルを取得するには以下の方法・手順を利用できます。基本的にはAWS CLIやSDKを用いる方法が一般的ですが、どの方法でも事前に必要な権限設定が必要です。


STEP 1: 必要な権限を設定する

  • EC2インスタンスにIAMロールをアタッチして、S3へのアクセス権限を付与します。このIAMロールは、S3の操作に必要なポリシー(例: AmazonS3ReadOnlyAccess)を持つ必要があります。
    1. AWS Management Consoleで新しいIAMロールを作成。
    2. ロールにポリシー(例: AmazonS3ReadOnlyAccess)をアタッチ。
    3. 作成したIAMロールをEC2インスタンスにアタッチ。

STEP 2: EC2インスタンスでAWS CLIをインストール

Amazon Linux 2などの一部のAMIでは、AWS CLIがデフォルトでインストールされていますが、もしインストールされていない場合は以下のようにインストールしてください。

sudo yum update -y  # Amazon Linuxの場合
sudo yum install aws-cli -y

あるいは、他のOSでは以下のドキュメントに従います。
公式ドキュメント – AWS CLI のインストール方法


STEP 3: S3からファイルを取得する

IAMロールが正しく設定されている場合、EC2インスタンスから直接S3へアクセスできるようになります。

1. AWS CLIを使って取得する場合

例えば、S3にある mybucket/myfolder/myfile.txt をダウンロードするには以下のようにします。

aws s3 cp s3://mybucket/myfolder/myfile.txt /path/to/local/destination/

2. AWS SDKを使って取得する場合 (Python)

Pythonの場合、Boto3ライブラリを使うと簡単です。以下はS3からファイルをダウンロードする例です。

import boto3

# S3クライアントの作成
s3 = boto3.client('s3')

# ダウンロード
bucket_name = 'mybucket'
key = 'myfolder/myfile.txt'
local_file_path = '/path/to/local/destination/myfile.txt'

s3.download_file(bucket_name, key, local_file_path)
print("ファイルのダウンロードが完了しました")

Boto3は事前に以下のコマンドでインストールします。

pip install boto3

STEP 4: その他の注意点

  • S3バケットのリージョン: ダウンロード対象のS3バケットがEC2インスタンスと異なるリージョンにある場合、AWS CLIやSDKを利用するときにリージョンを明示的に指定してください。
  • ネットワークの接続: EC2インスタンスからS3への通信が可能なネットワーク設定が行われていることを確認してください(例: インターネットゲートウェイまたはVPCエンドポイント)。

もし追加のサポートが必要であれば教えてください!

コメント

タイトルとURLをコピーしました