AWS CLI S3とローカルフォルダとのファイル同期

ローカルでAWS CLIのインストール

S3への編集権限を持ったIAM USERの作成

  • AmazonS3FullAccessポリシーのアタッチ
  • ※インラインポリシーの作成
インラインポリシー内容
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Stmt1446117060000",
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:ListAllMyBuckets",
                "s3:ListBucket",
                "s3:PutObject"
            ],
            "Resource": [
                "arn:aws:s3:::*"
            ]
        }
    ]
}

ローカルAWS CLIの設定

aws configure
例
AWS Access Key ID [None]: (上IAMユーザーのアクセスキー)
AWS Secret Access Key [None]:(上IAMユーザーのシークレットキー)
Default region name [None]: ap-northeast-1(デフォルトで接続させたいリージョン)
Default output format [None]: json(AWS CLI上で出力されるデータの形式)

フォルダをS3へアップロード

aws s3 sync [ローカルファイルのディレクトリ] s3://[バケット名]/[ディレクトリ名
クラウドフロントのキャッシュ設定がうまくいかない場合、アップロード時にキャッシュ時間を指定するオプションをつける
 --cache-control "max-age=2" 
--aclオプションで公開設定も可能
aws s3 sync test  s3://hoge/videos  --acl public-read

S3内のファイル全てを削除

aws s3 rm s3://hoge/ --exclude '*' --include '*' --recursive --dryrun

複数アカウントを使用する場合

aws configure --profile profile名 でプロファイルを作成 aws cli コマンド末尾に --profile profile名 でプロファイルを指定
プロファイル情報は以下で確認

cat ~/.aws/credentials   

異なるawsアカウント間でアクセスする場合

バケットのアクセスコントロールリスト (ACL)に外部アカウントを追加する

//参考URL

https://qiita.com/fkana/items/6b241fd3432570c2cd33 https://qiita.com/notakaos/items/4a7774ee6e1d11bb55d2 https://okisanjp.hatenablog.jp/entry/2016/07/04/130042 https://qiita.com/sakai00kou/items/b3284b93145967d25c86#%E8%A8%AD%E5%AE%9A%E6%83%85%E5%A0%B1%E3%81%AE%E5%A0%B4%E6%89%80