DescribeStacks API を呼び出したときに発生するアクセス拒否エラーを解決したいです。
簡単な説明
DescribeStacks AWS コマンドラインインターフェイス (AWS CLI) コマンドを実行すると、次のエラーが発生する場合があります。
「DescribeStacks 操作の呼び出し中にエラーが発生しました (AccessDenied): ユーザー arn:aws:sts::#AccountId:assumed-role/#RoleName/xxx には次を実行するためのアクセス許可がありません。リソース arn:aws:cloudformation:us-east-1:#AccountId:stack/*/* に対する ListStacks。cloudformation:ListStacks アクションを許可する ID ベースのポリシーがありません。」このエラーは、ロール "#RoleName" に "cloudformation:ListStacks" アクションが含まれていない場合に発生します。
注: AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
AWS マネジメントコンソールを使用すると、対応する「スタックをロードできませんでした」というエラーが表示されることがあります。これがアクセス許可に関連する問題であることを確認するには、AWS CloudTrail イベントを確認してから、ListStacks API コールをフィルター処理します。
解決方法
前述のエラーは、cloudformation:ListStacks アクションを実行するために必要なアクセス許可がロールにない場合に発生します。
注: スタック名が指定されていない場合、DescribeStacks のアクセス許可には ListStacks へのアクセス許可も必要です。
ListStacks へのアクセスを許可するようにアクセス許可ポリシーを更新する
AWS マネジメントコンソールで以下のステップを実行して、ロールのアクセスアクセス許可ポリシーを変更します。
-
AWS マネジメントコンソールに管理者でログインします。
-
検索バーに IAM を入力します。[サービス] で、AWS マネジメントコンソールのサービスとして IAM を選択します。
-
左側のナビゲーションペインで、[ロール] タブを選択します。
-
検索バーにロール名を入力し、ロール名のハイパーリンク (青色で強調表示) を選択します。
-
[アクセス許可] タブで、カスタマーマネージドポリシータイプまたはカスタマーインラインポリシーのいずれかに関する + アイコンを選択します。次に、[編集] ボタンを選択します。詳細については、「IAM ポリシーを作成する」を参照してください。
-
#PolicyName ウェブページの変更アクセス許可を確認します。cloudformation:ListStacks が含まれていることを確認します。更新されたポリシーは次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor",
"Effect": "Allow",
"Action": [
"cloudformation:DescribeStacks",
"cloudformation:ListStacks"
],
"Resource": "*"
}
]
}
-
[次へ] を選択します。次に、[変更を保存] ボタンを選択してポリシーの変更を実装します。
-
aws cloudformation describe-stacks コマンドをテストして、正常に実行されることを確認します。
関連情報
DescribeStacks
describe-stacks
ListStacks