AWS CloudFormation スタックに障害が発生したときに発生する、タグ付けアクセス許可のエラーを解決したいです。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI のエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
適切なタグ付けアクセス許可を持たずに CloudFormation スタックのリソースを作成、更新、または削除すると、スタックの操作が失敗します。この問題を解決するには、必要なタグ付けアクセス許可を AWS Identity and Access Management (IAM) プリンシパルに付与する必要があります。
失敗したロールと API オペレーションを特定する
Amazon Elastic Compute Cloud (Amazon EC2) リソースでは、エンコードされた認証失敗メッセージをデコードします。失敗したロールと API オペレーションを特定するには、次の decode-authorization-message AWS CLI コマンドを実行します。
aws sts decode-authorization-message --encoded-message example-encoded-message --example-region
注: example-encoded-message をエンコードされたメッセージに、example-region を AWS リージョンに置き換えます。
Amazon EC2 に関連しない他のリソースでは、スタックイベントページを参照し、エラーが発生したロールと API を確認します。
不足しているアクセス許可を IAM プリンシパルに追加する
タグ付け操作に使用する IAM プリンシパルを見つけるには、次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [スタック] を選択します。
- スタック名を選択し、[概要] セクションで [スタック ID] をメモします。
リストに表示されている IAM ロールの Amazon リソースネーム (ARN) がある場合、CloudFormation はそのロールを使用してリソースを管理し、タグ付けします。
リストに表示されている IAM ロールの ARN がない場合は、CloudFormation スタックのイベント履歴を確認してください。次の手順を実行します。
- AWS CloudTrail コンソールを開きます。
- ナビゲーションペインで [イベント履歴] を選択します。
- [ルックアップ属性] で [リソース名] を選択し、検索ボックスにスタック ID を入力します。<br id=hardline_break/>
注: イベント履歴には、過去 90 日間のイベントが含まれます。スタック ID 検索でイベントが表示されない場合は、スタックを更新してください。
- [イベント履歴] リストで、最初のイベント名を選択します。
userIdentity タイプフィールドが IAMUser の場合、arn フィールドのプリンシパルがリソースを管理します。userIdentity タイプが Role の場合、CloudFormation は sessionIssuer の arn フィールドにあるプリンシパルを使用します。
IAM ポリシーでタグ付けアクセス許可を付与する
infrastructure as code (IaC) サービスが IAM プリンシパルを管理している場合、関連する IAM ポリシーを同じ IaC サービスで更新する必要があります。
IAM コンソールを使用してタグ付けアクセス許可を付与するには、新しいインラインポリシーを作成するか、既存のポリシーを更新します。
IAM プリンシパルのタグ付けアクセス許可を設定するには、次の put-role-policy AWS CLI コマンドを実行することもできます。
aws iam put-role-policy ---role-name example-role-name --policy-name example-policy --policy-document file://AdminPolicy.json
注: example-role-name をロール名に、example-policy をポリシー名に、AdminPolicy.json をポリシー JSON ドキュメントに置き換えます。ファイル名と拡張子は重要ではありません。
また、CloudFormation テンプレートタグとリソースタグを一致させることで、インフラストラクチャの整合性を維持することもできます。