AWSコンソールを操作していると「You are not authorized to perform this operation. Encoded authorization failure message:…..」とエラーが出る場合があります。
当該ユーザーの権限で見せてはいけない情報があったりするので、暗号化されており以下AWS CLIコマンドでデコードする必要があります。
### jqコマンドで説明に必要な情報だけに絞ってます
% aws sts decode-authorization-message --encoded-message エンコードされたメッセージ \
--query DecodedMessage --output text | jq '.matchedStatements.items[] | .statementId , .effect'
"DenyRunInstanceWithNoProjectTag"
"DENY"
"DenyRunInstanceWithNoCostCenterTag"
"DENY"
%
上記例はマルチアカウントでSCPを設定しているアカウントでEC2を作成しようとして出たエラーのデコード内容になり、以下SCPの設定のSidがエラーメッセージに含まれています。
// SCPの設定JSON抜粋
{
"Version": "2012-10-17",
"Statement": [
〜〜〜
{
"Sid": "DenyRunInstanceWithNoProjectTag",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
},
〜〜〜
{
"Sid": "DenyRunInstanceWithNoCostCenterTag",
"Effect": "Deny",
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:*:*:instance/*",
"arn:aws:ec2:*:*:volume/*"
}
最初、aws stsコマンドオプションで、–query DecodedMessage.matchedStatements とかやってあれ?でない?となってしまったんですが、JSONキーDecodedMessageの値が(また別の)JSONなのでそれは jq で処理しましょう。
今回は以上です〜ノシ
参考
(´・ω・`)ゞアリガトゴザイマス.。.・゚
EC2 インスタンスの起動時の UnauthorizedOperation エラーを解決する
aws — AWS CLI 2.0.44 Command Reference
decode-authorization-message — AWS CLI 2.0.44 Command Reference
リンク
リンク