はじめに
実際に業務の時にとったAWSCLIのメモを整理して記事にしました。
S3
オブジェクト削除
aws s3 rm s3://{バケット名}/{削除するファイルパス}
例: aws s3 rm s3://test-bucket/test1/test.txt
ファイル一覧取得
aws ls s3://{バケット名}/{フォルダパス}
例: aws ls s3 s3://test-bucket/test1 --recursive
ファイルをコピー
aws s3 cp {コピー元パス} {コピー先パス}
例: aws s3 cp s3://test-bucket/test1/test.txt ./local
オプションの--include --excludeは業務でよく使ってた。
指定する時にワイルドカードが使用できる。
ファイルの絞り込みの時に--excludeで一度全ファイル除外してから--include使わないと絞り込めないので注意。
aws s3 cp s3://test-bucket/test1/ ./local --recursive --exclude "*" --include "test*"
ファイル移動
aws s3 mv {コピー元パス} {コピー先パス}
aws s3 mv s3://test-bucket/test1/test.txt ./local
オプション
オプション | 説明 |
---|---|
--dryrun | 実際にコマンドを実行した時の結果を確認できる |
--recursive | 指定フォルダ内のオブジェクトを全て指定 |
--exclude | 指定したファイルのパターンを含むファイルを除外 |
--include | 指定したファイルのパターンを含むファイルを許可 |
--quiet | コマンドの実行ログを非表示にする |
--human-readable | ファイルサイズを人が読める形式で表示 |
--summarize | 最低限のデータのみ取得(ファイルサイズ, ファイル名) |
使用できるオプション一覧
rm | ls | cp | mv | |
---|---|---|---|---|
--dryrun | ○ | ✖︎ | ○ | ○ |
--recursive | ○ | ○ | ○ | ○ |
--exclude | ○ | ✖︎ | ○ | ○ |
--include | ○ | ✖︎ | ○ | ○ |
--quiet | ○ | ✖︎ | ○ | ○ |
--human-readable | ✖︎ | ○ | ✖︎ | ✖︎ |
--summarize | ✖︎ | ○ | ✖︎ | ✖︎ |
SQS
キューの作成
aws sqs create-queue --queue-name {キューの名前}
例: aws sqs create-queue --queue-name test-queue
キューの削除
aws sqs delete-queue --queue-url {キューのURL}
例: aws sqs delete-queue --queue-url https://...
キューの情報確認
# キューのURL一覧
aws sqs list-queues
# 指定したキューのURL取得
aws sqs get-queue-url --queue-name {キューの名前}
例: aws sqs get-queue-url --queue-name test-queue
# キューの属性を取得
# Allじゃなくて属性名指定したら指定した属性のみ取得できる
aws sqs get-queue-attributes --queue-url {キューのURL} --attribute-names All
キューにメッセージ送信
aws sqs send-message --queue-url {キューのURL} --message-body "{メッセージ}"
例: aws sqs send-message --queue-url https://... --message-body "Hello!"
メッセージの取得
順番とか関係なしで1メッセージ取得される
aws sqs receive-message --queue-url {キューのURL}
例: aws sqs receive-message --queue-url https://...
ReceiptHandleの取得
メッセージの取得で取得したデータをjq使って抽出するだけ
aws sqs receive-message --queue-url {キューのURL}
例: aws sqs receive-message --queue-url https://... | jq -r 'Messages[].ReceiptHandle'
jqを使用して取得
それ以外の方法しらない、ご存知の方教えて欲しい
メッセージの削除
aws sqs delete-message --queue-url {キューのURL} --receipt-handle {ReceiptHandle}
SQSにあるメッセージをCLIで全削除
全削除のコマンド見つからなかったからシェル作った
BIN_PROFILE=$1
SQS_URL=$2
while [ true ]
do
RECEPT_HUNDLE=`aws --profile ${BIN_PROFILE} sqs receive-message --queue-url ${SQS_URL} | jq -r '.Messages[].ReceiptHandle'`
if [ "$RECEPT_HUNDLE" = "" ]
then
echo "全てのキューを削除しました"
break
fi
aws --profile ${BIN_PROFILE} sqs delete-message --queue-url ${SQS_URL} --receipt-handle "$RECEPT_HUNDLE"
done
SNS
メッセージ送信
aws sns publish --topic-arn {トピックのarn} --messeage "{メッセージ}"
例: aws sns publish --topic-arn arn:aws:sns... --messeage "helllllllllllllllo!!!!"
Athena
Athenaの実行状況を確認
aws athena get-query-execution --query-execution-id {execution-id}
おわり
閲覧いただきありがとうございました。