AWS CloudFormation スタックを更新または削除する際に発生する「ロール [role_arn] が無効であるか、または引き受けることができません」というエラーを解決するにはどうすればよいですか?

最終更新日: 2021 年 2 月 11 日

AWS CloudFormation スタックを作成、更新、または削除する際に生じる「ロール [role_arn] が無効であるか、または引き受けることができません」というエラーを解決したいと考えています。

簡単な説明

このエラーは、AWS CloudFormation がお客様のためにスタック内のリソースを呼び出すために使用される AWS Identity and Access Management (IAM) サービスロールに問題がある場合に表示されます。

このエラーは、以下の事項を実行しようとする場合に発生することがあります。

  • AWS コマンドラインインターフェイス (AWS CLI) または API 呼び出しを使用してスタックを作成します。
  • AWS CloudFormation が変更セットを作成するときにスタックを更新します。
  • スタックを削除します。
  • IAM ロールを更新または削除します。更新された IAM ロールの信頼ポリシーを変更した場合、AWS CloudFormation はそのロールを引き受けることができません。

信頼ポリシーが変更された場合は、AWS CloudFormation に IAM ロールを引き受けることを許可することで、このエラーを解決できます。信頼ポリシーが削除された場合は、エラーメッセージに記載されているロールと同じ名前のロールを作成することで、このエラーを解決できます。最後に、AWS CLI の --role-arn パラメータを使用して、現在使用されているロールを上書きします。

注意: AWS CLI コマンドの実行時にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

解決方法

IAM ロールが存在することを確認し、ロールが存在しない場合は新しい IAM ロールを作成します。

1.    IAM コンソールを開きます。

2.    ナビゲーションペインで [Roles] を選択します。

3.    [Role name] (ロール名) 列で、受信したエラーメッセージに記載されている IAM ロールを選択します。

4.    ロールが存在する場合は、「ロールの信頼ポリシーによって AWS CloudFormation が IAM ロールを引き受けることを許可されていることを確認する」のセクションの手順を実行します。

5.    ロールが存在しない場合は、エラーに記載されているロールと同じ名前の新しい IAM ロールを作成します。

6.    新しい IAM ロールに、AWS CloudFormation がスタック内のリソースに対して作成、更新、または削除のオペレーションを実行するために必要なすべてのアクセス許可があることを確認します。

7.    ロールが作成されたら、スタックを再度作成、更新、または削除します。

注: 新しいロールに必要な IAM アクセス許可がない場合、スタックオペレーションが失敗する可能性があります。たとえば、IAM ロールに ec2:TerminateInstances アクションのアクセス許可がない Amazon Elastic Compute Cloud (Amazon EC2) インスタンスリソースを削除しようとすると、削除オペレーションは失敗します。

ロールの信頼ポリシーによって AWS CloudFormation が IAM ロールを引き受けることを許可されていることを確認する

1.    IAM コンソールを開きます。

2.    ナビゲーションペインで [Roles] を選択します。

3.    [Role name] (ロール名) 列で、受信したエラーメッセージに記載されている IAM ロールを選択します。

4.    [Trust relationships] タブを選択します。

5.    信頼関係に cloudformation.amazonaws.com が信頼できるエンティティとして表示されていることを確認します。

cloudformation.amazonaws.com が信頼できるエンティティとしてリストされていない場合は、[Edit trust relationship] (信頼関係の編集) を選択します。

6.    ポリシードキュメントエディタで、以下の AWS CloudFormation サービスロールの信頼ポリシーを入力します。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "cloudformation.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

7.    [Update Trust Policy] (信頼ポリシーの更新) を選択します。

更新された信頼ポリシーにより、AWS CloudFormation が IAM ロールを引き受けることができるようになりました。

8.    ロールが作成されたら、スタックを再度作成、更新、または削除します。

AWS CloudFormation で使用される現在の IAM ロールを上書きする

AWS CLI を使用して、AWS CloudFormation で使用される現在の IAM ロールを上書きできます。

1.    スタックを更新するには、次のコマンドを実行します。

aws cloudformation update-stack --stack-name my-stack --template-body file://my-stack-template.json --role-arn arn:aws:iam::123456789123:role/cloudformation-role

注: my-stackmy-stack-template.json123456789123 をお客様の値に置き換えてください。

2.    スタックを削除するには、次のコマンドを実行します。

aws cloudformation delete-stack --stack-name my-stack --role-arn arn:aws:iam::123456789123:role/cloudformation-role

注: my-stack123456789123 をお客様の値に置き換えてください。


この記事はお役に立ちましたか?


請求に関するサポートまたは技術サポートが必要ですか?