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 была предоставлена ​​определенному ресурсу.

Другие вопросы по тегам