tech-memo

AWS CLI

configure

~/.awsにconfigcredentialsができる.

aws configure

で生成できる.

profile

configファイルはプロファイルごとに設定し、CLIをプロファイルごとに実行できる。

```text: config [default] region = ap-northeast-1 output = json

[profile cf] region = auto output = json


```text: credentials
[default]
aws_access_key_id = AKIxxx
aws_secret_access_key = iB/xxx

[cf]
aws_access_key_id = xxx
aws_secret_access_key = xxx

cfの部分がプロファイル名。awsコマンドでは以下のように指定。

aws s3 cp [from] [to]  --profile [プロファイル名]

boto3では以下のように指定。

import boto3
aws_session = boto3.Session(profile_name="[プロファイル名]")
s3 = aws_session.client('s3')

S3

list

/media/image/300で始まるファイルの取得

aws s3 ls s3://s3-url/media/image/300

upload

カレントフォルダのファイルを全てs3://s3-url/media/imageにアップロード

aws s3 cp . s3://s3-url/media/image --recursive

– recursive: フォルダの中の全ファイルの指定

mv

s3-url/media/streamにあるファイルをすべてs3-url/media/movieに移動

aws s3 mv s3://s3-url/media/stream s3://s3-url/media/movie/ --recursive

rm: フォルダを丸ごと削除する

aws s3 rm s3://bucket/image/venv/ --recursive 

–dryrun: 削除対象を確認する

aws s3 rm s3://bucket/image/venv/ --recursive --dryrun

特定拡張子以外を削除

ex. jpegファイル以外を削除

aws s3 rm s3://bucket/media/image/ --recursive \
  --exclude "*.jpg" --exclude "*.jpeg" --exclude "*.JPG" --exclude "*.JPEG" \

cloudflare R2の場合

  1. regionはautoとする。
  2. エンドポイントを指定する。 例: aws CLIでの指定
aws s3 cp . s3://dir  --recursive  --endpoint-url  https://[cloudflareアカウントID].r2.cloudflarestorage.com  --profile [プロファイル名]

例: boto3の場合

import boto3
aws_session = boto3.Session(profile_name="[プロファイル名]")
s3 = aws_session.client('s3', endpoint_url="https://[cloudflareアカウントID].r2.cloudflarestorage.com")