【问题标题】:Invoking AWS Step function from Lambda in python在 python 中从 Lambda 调用 AWS Step 函数
【发布时间】:2018-01-29 03:25:05
【问题描述】:

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

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

我创建了一个具有“AWSStepFunctionsFullAccess”策略的 IAM 角色

{
    "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 函数,因为我已经给了它所需的权限

【问题讨论】:

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


    【解决方案1】:

    所以,我发现了错误,我使用了错误的 ARN。我使用的 ARN 是针对 step 函数的特定执行 要使用的正确 ARN 是

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

    实际上令人惊讶的是,我在 web ui 上找不到状态机的 ARN。在查看一些示例代码时,我发现了我的错误,我意识到我的 ARN 在其中执行而不是状态机。

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

    【讨论】:

      【解决方案2】:

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

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

      干杯!

      【讨论】:

      • 我已经创建了具有所需权限的角色并分配了它。我在问题中提到了角色
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-22
        • 1970-01-01
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 2020-02-24
        相关资源
        最近更新 更多