Amazon S3からファイルを効率的にダウンロードする方法

awsアプリケーション開発

こんにちは、ITエンジニアのz_a_k_iです!^^

今回はAmazon S3から一括でファイルをダウンロードする方法を記載します。

Amazon S3は、データのバックアップやアーカイブ、ウェブサイトのコンテンツ配信など、多岐にわたる用途で利用されています。しかし、多くのファイルを一度にダウンロードする必要がある場合、マネジメントコンソールだと1ファイルずつしかダウンロードできないため不便です。

今回は、AWS CLIを使用してS3バケットから複数のファイルをダウンロードする方法と、AWS CLIの設定方法、さらにMFAを設定している場合のコマンド実行方法をご紹介します。

AWS CLIとは

AWS CLIは、Amazon Web Services(AWS)のサービスをコマンドラインから操作するためのツールです。

これを使用することで、GUIを介さずに迅速にAWSのリソース管理が可能になります。

S3からファイルをダウンロードするコマンド

S3バケットからファイルをダウンロードする基本的なコマンドは次のとおりです。

aws s3 cp s3://バケット名/ファイルパス ./ローカルディレクトリ --recursive

このコマンドは、指定したバケット内のすべてのファイルを再帰的にダウンロードします。--recursiveオプションを付けることで、サブディレクトリ内のファイルも含めてダウンロードすることができます。

特定のファイルタイプのみをダウンロードしたい場合は、--includeオプションを使用してファイルタイプを指定することができます。例えば、テキストファイルのみをダウンロードするには、次のようにします。

aws s3 cp s3://バケット名/ファイルパス ./ローカルディレクトリ --exclude "*" --include "*.txt" --recursive

AWS CLIの設定方法

AWS CLIを使用する前に、aws configureコマンドを実行して、アクセスキー、シークレットキー、リージョン、出力形式の設定が必要です。

この設定により、AWSのリソースに安全にアクセスするための認証情報が設定されます。

$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json

上記のコマンド例の各項目に利用者毎の情報を入力します。AWSのIAMコンソールで作成したIAMユーザーの認証情報から取得できます。

MFAを設定している場合のAWS CLIコマンドの実行方法

認証でMFAを設定している場合、AWS CLIを使用してリソースとやり取りするには、一時セッションを作成する必要があります。

以下は、MFAデバイスを使用して一時セッションを作成するための手順です。

aws sts get-session-tokenコマンドを実行して、一時認証情報を取得します。

$ aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

返ってきたJSONの中に含まれるAccessKeyIdSecretAccessKeySessionTokenを使用して、環境変数をセットします。

$ export AWS_ACCESS_KEY_ID=example-access-key-id
$ export AWS_SECRET_ACCESS_KEY=example-secret-access-key
$ export AWS_SESSION_TOKEN=example-session-token

この一時認証情報を使用することで、AWS CLIコマンドを実行してAWSのサービスにアクセスすることができます。

一時認証情報の有効期限はデフォルトで12時間ですが、--duration-secondsオプションを使用して、有効期間を指定することもできます。

まとめ

AWS CLIは、S3バケットからのファイルダウンロードを簡単かつ効率的に行うための強力なツールです。

また、MFAを設定している場合でも、一時セッションを作成することで安全にAWSリソースを操作できます。

本記事が皆様の参考となりましたら幸いです。

コメント

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