AWS StepFunctions: ошибка при создании конечного автомата с использованием AWS-SDK через лямбду
Я пытаюсь создать конечный автомат в пошаговых функциях AWS, используя AWS SDK, например,
stepfunctions.createStateMachine(params, function(err, data)...
Я создал лямбду в консоли AWS и добавил код для создания конечного автомата. Также я предоставил разрешения для роли для выполнения этой лямбды и создания конечного автомата. Я проверил Role Permissions с помощью Simulator, и это нормально (разрешено). Но когда я выполняю лямбду, я получаю AcccessDeniedException.
errorMessage": "User: arn:aws:sts::555555555:assumed-role/SFN_API_role/SFAPITest is not authorized to perform: states:CreateStateMachine on resource: arn:aws:states:us-east-1:555555555:stateMachine:*",
"errorType": "AccessDeniedException
"SFN_API_role" - это роль, а "SFAPITest" - это лямбда-выражение. Вот определенная политика:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:ListStateMachines",
"states:ListActivities",
"states:CreateStateMachine",
"states:CreateActivity"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"iam:PassRole"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"lambda:*"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"states:DescribeStateMachine",
"states:StartExecution",
"states:DeleteStateMachine",
"states:ListExecutions"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"states:DescribeExecution",
"states:GetExecutionHistory",
"states:StopExecution"
],
"Resource": [
"*"
]
},
{
"Effect": "Allow",
"Action": [
"states:DescribeActivity",
"states:DeleteActivity",
"states:GetActivityTask",
"states:SendTaskSuccess",
"states:SendTaskFailure",
"states:SendTaskHeartbeat"
],
"Resource": [
"*"
]
}
]
}
Любые указатели приветствуются!
2 ответа
Ты используешь
"Resource": ["*"]
вместо
"Resource": "*"
. Просто измените первую часть своей политики на следующую:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:ListStateMachines",
"states:ListActivities",
"states:CreateStateMachine",
"states:CreateActivity"
],
"Resource": "*"
},
...
В моем случае у меня была такая ситуация, когда приходилось немного подождать около 1 минуты, чтобы увидеть, работает ли его разрешение на нем, когда авторизованная роль IAM была предоставлена определенному ресурсу.