1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#17.S3syncでファイルのアップロード

Last updated at Posted at 2025-02-15

はじめに

少し前から、AWSに少し触れており、今回はS3syncを使用してファイルのアップロードをしてみたので忘備録として記事にしました。

※動作環境はWSL2のubuntuを使用してます。

S3syncとは

S3Syncとは、AWSのS3にオンプレミスやクラウド上のデータを同期する機能です。
これにより、ファイルの削除ファイルのアップロード・ダウンロードが簡単に行えます。

今回は、ローカルのディレクトリ内のデータをAWSのS3アップロードしました。

初回セットアップ+設定

前回Terraformの記事を書いた際、一緒に書けばよかったのですが、
AWSのコンソールを操作する際にawscliを使用します。
導入方法は以下の通りです。

  • aws cliのインストール
# curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# unzip awscliv2.zip
# sudo ./aws/install
# aws cli install

AWSコンソールでアカウントを作成

以下の公式サイトを参考にアカウントを作成していきましょう。

AWSアカウントとの連携設定

AWSアカウントで IAMユーザー を作成し、アクセスキーシークレットキーを発行します。
IAMユーザーの作成方法については、以下の記事が分かりやすいです。

IAMユーザーを作成後、~/.aws/からcredentialsconfigの設定を行いましょう。
※ファイルがない場合は作成。

vi ~/.aws/credentials

[default]
aws_access_key_id = {コンソール上のアクセスキー}
aws_secret_access_key = {コンソール上のシークレットキー}
vi ~/.aws/config

[default]
region = {設定されてるregion}
output = json

outputは、CLIでAWSのデータを取得した際の出力フォーマットを指定する設定です。
IAMポリシーは基本的にjson形式で定義されているため、jsonを指定しておきましょう。

S3sync

  • S3バケットの作成+ポリシーの設定

以下のリンクからS3バケットの作成。

IAMポリシーの例だけこちらに載せておきます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": [
                "arn:aws:s3:::tfstate-backet-tokyo",
                "arn:aws:s3:::tfstate-backet-tokyo/*"
            ]
        }
    ]
}

s3:ListBucket バケット内のオブジェクト一覧を取得する
s3:GetObject バケット内のオブジェクトを取得(ダウンロード)する
s3:PutObject バケットにオブジェクトをアップロードする
s3:DeleteObject バケット内のオブジェクトを削除する
Resource 権限対象の指定

今回の例でいうと、ローカル→AWS(S3へのアップロード)なので、
s3:ListBuckets3:PutObjectの権限だけでも問題ありません。しかし、双方向のやり取りをスムーズにするために、s3:GetObjects3:DeleteObjectも含めた4つの権限を設定しておくことをおすすめします。

  • S3syncの実行
# aws s3 sync nayanaya s3://tfstate-basket-tokyo

以下の画像のように、あくまでストレージの同期というところなので、直接ファイルのみを指定しても同期はできないです。

image.png

# aws s3 sync naya_dir/ s3://tfstate-basket-tokyo

image.png

  • コンソールの画像

image.png

ファイルが同期されていますね。

まとめ

AWSに限った話ではありませんが、アウトプットとインプットのバランスは非常に重要だと感じました。
AWSについては、資格の勉強(ハンズオンなし)や書籍を読むだけで学習していたのですが、実際に手を動かしてみると「ナニコレ?」と思うことが多くあります。

また、要件を整理するときに構成図がないとイメージしづらいことがありますが、作図ツールを使って視覚化すると、理解が深まり非常にわかりやすくなるなと感じました。
個人的におすすめなのはCacooです。

参考までにリンクを貼っておきます。

さらに、3/15にKubernetesについてLTをすることになったので、良かったら遊びに来てください~

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?