🐝

AWS CLIについて

2021/06/03に公開

インストール方法

公式ドキュメントからpkgファイルをダウンロード
「macOS ユーザーインターフェイスを使用した AWS CLI バージョン 2 のインストールと更新」を参照

アクセスする

IAMにポリシーをアタッチ、認証情報でアクセスキーの作成を行う
aws configure --profile ユーザー名を実行、アクセスキー、シークレットアクセスキー、リージョン、出力形式(jsonが一般的)を記述し作成
👉--profile ユーザー名を指定しないとデフォルトユーザーが作成されるが、基本使わない
👉コマンドが使えるようになる・・・aws helpで確認
JMESPassで便利なコマンドを色々使えるようになる

ディレクトリ構成

/Users/.awsが作成されている

  • config・・・AWSCLIコマンドの出力形式とリージョンが書かれている
  • credentials・・・IAM権限のアクセスキーについて書かれている

MFA

IAMの認証情報でMFAデバイスを割り当てていることが前提
IAM,RDSについて
IAMのロールを作成、信頼関係の編集でConditionのBoolでMultifactorAuthPresentをtureに
👉MFAデバイスを使用してログインしたユーザーのみがこのIAMロールを使用できる
aws configure --profile ユーザー名でユーザー追加
configファイルに以下を追記

source_profile = "どのユーザーのcrededentialsを使うのか"
role_arn = "作成したロールのロールARN"
mfa_serial = "IAMのMFAデバイスを割り当てに書かれている文字列"

このユーザーでロールを使用するとMFAの番号を聞かれるように設定完了

S3でよく使うAWS CLIコマンド

異なるサーバー間でならどこでも行える

# バケットの作成
$ aws s3 mb s3://"バケット名"

# ファイルをコピー(s3からローカルへ、ローカルからs3へ)
$ aws s3 cp "コピー元" "コピー先"

# コピー元のディレクトリ以下のファイル、ディレクトリを全てコピー(s3からローカルへ、ローカルからs3へ)
$ aws s3 cp "コピー元" "コピー先" --recursive

# ファイル名変更、ファイル移動
$ aws s3 mv "変更前" "変更後"

# ファイル削除
$ aws s3  rm "削除"

# ディレクトリ以下のファイル全削除
$ aws s3  rm "削除" --recursive

# バケット削除
$ aws s3  rb "削除"

# ディレクトリ直下を同期する(s3からローカルへ、ローカルからs3へ)
# 使用条件:同期元の方が最終更新日付が新しく、ファイルサイズが異なること、もしくは同期先に存在しないファイルがあること
$ aws s3 sync "同期元" "同期先"

# 条件をつけて同期する、条件は"正規表現"(*.txtなど)
#excludeは除外、includeは条件を含むもの
$ aws s3 sync "同期元" "同期先" --exclude "条件" --include "条件"

# 実際には実行されないが、どのファイルが同期されるのかを確認したい場合 --dryrunをつける
$ aws s3 sync "同期元" "同期先" --exclude "条件" --include "条件" --dryrun

# 同期先を同期元と同じファイル構成にするために同期先の不要なファイル(同期元にないファイル)を削除したい場合 --deleteをつける
$ aws s3 sync "同期元" "同期先" --delete
GitHubで編集を提案

Discussion