在python中从Lambda调用AWS Step函数

时间:2017-08-21 06:30:24

标签: python aws-lambda amazon-iam aws-step-functions

所以我试图调用我在python中使用Lambda编写的简单步骤函数。我为此目的使用boto3

client = boto3.client('stepfunctions')
    response = client.start_execution(
        stateMachineArn='aws:states:.......',
        name='dev-hassan-pipeline-sf',
        input= json.dumps(returnVal)
    )

我已经创建了一个IAM角色,它具有" AWSStepFunctionsFullAccess"政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "states:*",
            "Resource": "*"
        }
    ]
}

我将此角色分配给我的Lambda,但是当我运行lambda时,我收到以下错误

An error occurred (AccessDeniedException) when calling the StartExecution operation: User: arn:aws:sts::xxxxxxxx:assumed-role/dev-hassan-role1/dev-hassan-pipeline-lambda is not authorized to access this resource: ClientError

dev-hassan-pipeline-lambda是我的Lambda的名字,dev-hassan-role1是我的角色名称

有人可以在这里帮助我,我做错了什么,为什么我不能从Lambda调用step函数,因为我已经给了它所需的权限

3 个答案:

答案 0 :(得分:3)

所以,我发现了错误,我使用了错误的ARN。我正在使用的ARN用于步骤函数的特定执行 正确使用的ARN是

arn:aws:states:us-east-1:xxxxxxxx:stateMachine:dev-hassan-pipeline-sf

实际上令人惊讶的是,我无法在网络上找到状态机的ARN。在查看一些示例代码时,我弄清楚了我的错误,并且我意识到我的ARN已经在其中执行而不是状态机。

我刚刚意识到,我甚至没有在这个问题中发布整个ARN

答案 1 :(得分:0)

您可以在AWS的IAM中修复权限。创建具有所需权限的角色,在创建lambda函数时,可以在提示时参考上面创建的IAM角色。

希望能解决您的权限问题:)

干杯!

答案 2 :(得分:0)

使用策略“ AWSStepFunctionsFullAccess”或您需要的任何内容更新您的IAM角色