はじめに
少し前から、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/
からcredentials
とconfig
の設定を行いましょう。
※ファイルがない場合は作成。
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:ListBucket
とs3:PutObject
の権限だけでも問題ありません。しかし、双方向のやり取りをスムーズにするために、s3:GetObject
やs3:DeleteObject
も含めた4つの権限を設定しておくことをおすすめします。
- S3syncの実行
# aws s3 sync nayanaya s3://tfstate-basket-tokyo
以下の画像のように、あくまでストレージの同期というところなので、直接ファイルのみを指定しても同期はできないです。
# aws s3 sync naya_dir/ s3://tfstate-basket-tokyo
- コンソールの画像
ファイルが同期されていますね。
まとめ
AWSに限った話ではありませんが、アウトプットとインプットのバランスは非常に重要だと感じました。
AWSについては、資格の勉強(ハンズオンなし)や書籍を読むだけで学習していたのですが、実際に手を動かしてみると「ナニコレ?」と思うことが多くあります。
また、要件を整理するときに構成図がないとイメージしづらいことがありますが、作図ツールを使って視覚化すると、理解が深まり非常にわかりやすくなるなと感じました。
個人的におすすめなのはCacooです。
参考までにリンクを貼っておきます。
さらに、3/15にKubernetesについてLTをすることになったので、良かったら遊びに来てください~