AWS Step Functions ステートマシンを実行しようとすると、エラーが発生します。 「グローバルサービスプリンシパル states.amazonaws.com もリージョナルサービスプリンシパルのどちらも、指定されたロールを引き受けることが許可されていません。」
解決策
ステートマシンが引き受ける IAM ロールに必要な信頼関係を設定済みであることを確認します。
以下のエンドポイントのいずれかが、AWS Identity and Access Management (IAM) ロールの信頼ポリシーに信頼されたエンティティとしてリストされている必要があります。
- AWS リージョナルエンドポイント: **states.region.amazonaws.com **
- AWS グローバルエンドポイント: states.amazonaws.com
IAM コンソールを使用して IAM ロールの信頼ポリシーを更新し、ポリシーに上記のエンドポイントのいずれかが含まれるようにします。
注: StartExecution API アクションを呼び出すと、Step Functions は API アクションの実行中にステートマシンに関連付けられた IAM ロールを使用します。アクションの実行中に IAM ロールを変更した場合、Step Functions は API アクションの IAM ロールを使用しません。
ステートマシンが引き受ける IAM ロールがまだ存在することを確認する
次の手順を実行します。
- Step Functions コンソール を開きます。
- ナビゲーションペインで [ステートマネージャー] を選択します。
- [名前] でステートマシンの名前を選択します。
- [詳細] セクションの [IAM ロール ARN] でリンクを選択します。IAM ロールがある場合、そのロールが IAM コンソールで開きます。IAM ロールがしない場合、IAM コンソールにより、「エンティティが見つかりません」と表示されたページが開きます。
ステートマシンが引き受ける IAM ロールがない場合は、必要なアクセス許可を含む新しい IAM ロールを作成します。次に、その新しい IAM ロールを引き継ぐようにステートマシンを設定します。
重要: 新しい IAM ロールには、以前の IAM ロールとは異なる名前を付ける必要があります。
詳細については、「AWS Step Functions と IAM が連携するしくみ」を参照してください。
関連情報
AWS Step Functions と AWS Lambda を使用してサーバーレスワークフローを作成する