2022年9月22日木曜日

AWS CLIで「An error occurred (AccessDenied) when (略) with an explicit deny in an identity-based policy」というエラーで失敗する

 MFAが有効になっていて、ユーザーに割り当てられたポリシーに「MFAの認証が行われていないリクエストを拒否する」という設定が行われていると発生する。

すべてがそうというわけではないけど。

aws sts get-session-tokenで取得したトークンを環境変数にセットするとエラーは起きなくなる。が面倒くさいのでスクリプト化がオススメ。

以下、そのスクリプト。jq必須。

#! /bin/bash
unset AWS_ACCESS_KEY_ID
unset AWS_SECRET_ACCESS_KEY
unset AWS_SESSION_TOKEN
USER_ARN=$(aws iam get-user --query "User.Arn" --output text)
MFA_SERI=$(aws iam list-virtual-mfa-devvices --query "VirtualMFADevices[?contains(User.Arn, '${USER_ARN}')].SerialNumber" --output text)
read -p 'input MFA code > ' CODE
CRED=$(aws sts get-session-token --serial-number ${MFA_SERI} --token-code ${CODE})
ID=$(echo ${CRED} | jq -r .Credentials.AccessKeyId)
KEY=$(echo ${CRED} | jq -r .Credentials.SecretAccessKey)
TOKEN=$(echo ${CRED} | jq -r .Credentials.SessionToken)
export AWS_ACCESS_KEY_ID="${ID}"
export AWS_SECRET_ACCESS_KEY="${KEY}"
export AWS_SESSION_TOKEN="${TOKEN}"

スクリプト実行時にsourceをつけること。

例> source getMfaToken.sh

2022年6月28日火曜日

AWS CLIでecrのlatestをひとつ前にもどす

 お試しでpushしたdockerイメージがうまく動かなかったときとか用。

pushしたlatestを削除して、そのひとつ前のものにlatestをつけなおすスクリプト


#!/bin/bash
REPO_NAME='myRepository'
# latestの削除
aws ecr batch-delete-image --repository-name ${REPO_NAME} --image-ids imageTag=latest
# 以降のコマンドでimage-ids指定のために、一番新しいイメージのdigestを取得
IMAGES=$(aws ecr describe-images --repository-name ${REPO_NAME})
TARGET=$(echo ${IMAGES} | jq -r '.imageDetails | sort_by(.imagePushedAt) | reverse | map(.imageDigest) | .[0]')
MANIFEST=$(aws ecr batch-get-image --repository-name ${REPO_NAME} --image-ids imageDigest=${TARGET} --query 'images[].imageManifest' --output text)
aws ecr put-image --repository-name ${REPO_NAME} --image-manifest "${MANIFEST}" --image-tag latest

2022年5月9日月曜日

逆引きLinuxコマンド base64

 base64をエンコード/デコードしたい

そのまんま、base64コマンドを使用する


例:ファイルの中身をエンコード

$ base64 ./file.bin

例:指定のbase64文字列をデコード

$ echo 44GC44GE44GGCg== | base64 -d

(このままだと文字化けした表示になるので、xxdと連結したり、リダイレクトでファイルに保存する)



2022年3月15日火曜日

逆引きLinuxコマンド ダンプが見たい

xxdを使う。

例: ファイルのダンプが見たい

$ xxd ./file.bin

00000000:  6162 6364 650a

例:ダンプを連結した文字列にしたい(ヘキサストリング) 

$ xxd -ps ./file.bin

61626364650a

例:ヘキサストリングをでコードしたい

$ echo 61626364650a | xxd -r -p

abcde




2022年2月24日木曜日

バトルテックBV計算機をつくりました

 バトルテックでBVを調整するときに、いちいち電卓で計算するの面倒ですよね。

ということで、BVを入力して、Gunnary/Pilittingを選ぶだけで計算するブラウザアプリを作ってみました。

バトルテックBV計算機

「Your BV」にベースとなるのBV(Gunnary=4、Pilotting=5がベース)を入力。表の「2.42」とか「2.11」の数字を押してください。「Caliculated」に計算結果が表示されます。数字が選択状態で「Your BV」の入力を変更すると、計算しなおす新設設計です。

計算結果は切り上げです。

スマホでも使えますが、表がはみ出るのはご容赦を。