LoginSignup
0
0

StepFunctions Map実行時の権限設定について

Posted at

はじめに

StepFunctionsのMapフローを使って、csvやS3オブジェクトを並列でいてレートすることができます。その際のStepFunctionsの権限設定がやや独特に感じたのでメモしておきます。

結論

Mapフローを使う場合は、ステートマシンのロールにstates:StartExecutionの権限を付ける必要がある。

経緯

まず、下記のようなステートマシンを用意します。
S3バケット内にあるcsvファイルをMapでイテレートします。

今回はcsvに対する処理は関係ないので、Mapの中身はPassとします。

image.png

CSVの中身は↓を用意しました。

id,name
1,Alice
2,Bob
3,Charlie
4,David
5,Eva
6,Fiona
7,George
8,Hannah
9,Ian
10,Julia

csvファイルをS3から取得するための権限が必要なので、ステートマシンへのロールにはAmazonS3FullAccessを付与しました。FullAccessである必要は別にないですが、検証なのでね。

image.png

直感的にはこれで処理はうまくいきそうです。

しかしステートマシンを実際に実行すると処理は失敗してしまいます。

image.png

原因のメッセージを見ると下記が表示されていました。(アカウントIDは変更してあります。)

Error contacting AWS Service. | Message from Service: User: arn:aws:sts::0123456789012:assumed-role/StepFunctions-MyStateMachine-role-bcb29a25/mgCIjMOxLHclkIkSWmwZkPCBaQSEOcvn is not authorized to perform: states:StartExecution on resource: arn:aws:states:ap-northeast-1:0123456789012:stateMachine:MyStateMachine-i2lr7s9t4 because no identity-based policy allows the states:StartExecution action (Service: Sfn, Status Code: 400, Request ID: f5158edf-c257-4e60-8196-f162b95f4959)

is not authorized to perform: states:StartExecution on resource とあるのを見るに、states:StartExecution の権限が足りていないようです。

インラインポリシーで権限を追加します。
image.png

再度実行すると、今度は処理に成功しました。

image.png

このように、Mapフローを使う場合は、ステートマシンのロールにstates:StartExecutionの権限を付けないと、権限不足で処理に失敗してしまうようです。
ステートマシンにStepFunctionsの実行権限をつけるのはあまり直感的ではないので注意したいですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0