当前位置: 首页 > 知识库问答 >
问题:

Lambda函数未被授权执行sts: AssumeRole

裴心水
2023-03-14

我在帐户a中有一个lambda函数,试图从帐户B访问资源。创建了一个新的lambda角色,该角色具有基本执行功能,可以将日志上载到cloud watch。

以下是我在Python 3.7中的函数代码:

import boto3

allProfiles = ['account2']

def lambda_handler(event, context):

    sts_connection = boto3.client('sts')
    acct_b = sts_connection.assume_role(
        RoleArn="arn:aws:iam::2222222222:role/role-on-source-account",
        RoleSessionName="account2"
    )

    for profiles in allProfiles:
        print("\nusing profile %s" % profiles)
        newMethod..
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

还修改了账户B中假定角色的信托政策,如文件中所述:https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-assume-iam-role/

错误:调用AssumeRole操作时出错(AccessDenied):用户:arn:aws:sts::11111111:未授权假定角色/lambda角色/lambda函数对资源执行:sts:AssumeRole:arn:aws:iam::2222:源帐户上的角色/role”

注意:我能够在本地成功运行此功能,但在lambda中无法。

共有2个答案

南宫勇军
2023-03-14

好的,我们得到的是:

>

会计烧烤

你提到你的lambda有基本的执行力,光是这一点是不够的。。。

解决方案:

>



{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:ListAllMyBuckets",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetBucketLocation"
       ],
      "Resource": "arn:aws:s3:::AccountBBucket"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject",
        "s3:PutObject",
        "s3:DeleteObject"
      ],
      "Resource": "arn:aws:s3:::AccountBBucket/*"
    }
  ]
}

授予访问权限:
我们现在将使用我们之前创建的角色,(UpdateBucket)角色
这需要添加到您的帐户B权限
我们现在在帐户B中:


{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::999:role/UpdateBucket"
  }
}

此处的更多信息:使用IAM角色跨AWS帐户委派访问权限

沈自珍
2023-03-14

创建了一个新的lambda角色,该角色具有基本执行权限,可以将日志上载到cloud watch

lambda的基本执行角色不够。您需要明确允许您的函数假定角色。执行角色中的以下语句应有帮助:

{
  "Effect": "Allow",
  "Action": [
    "sts:AssumeRole"
  ],
  "Resource": [
    "arn:aws:iam::2222222222:role/role-on-source-account"
  ]
}
 类似资料:
  • 此问题不是此请求的重复,未授权执行此操作。Azure blobClient 我想从Azure函数访问Azure数据湖。我使用托管标识,并在我的数据湖IAM选项卡中为该功能分配了一个“所有者”角色。一切工作,但只有当我允许“所有网络”在我的数据湖。当我切换到“选定的网络”时,我会得到“此请求未被授权执行此操作”,尽管我将我的Azure函数的所有出站IP地址添加到了我的数据湖的防火墙规则中。 我在Az

  • 我已经实现了一个lambda授权器,并将其与API网关上的lambda代理集成进行了集成。 当我从API网关测试authorizer时,它工作得很好,但是当我试图从Postman调用第二个lambda上的endpoint时,请求似乎跳过了authorizer并直接命中第二个lambda。

  • 我有一个受IAM授权保护的API,它是一个资源策略,允许IAM用户调用API。 现在我想写一个lambda函数来调用同一个API。假设我可以访问IAM访问密钥和密码(通过环境变量或AWS Secret Manager),我如何对用户进行IAM授权,以便它可以成功地调用API? 用于调用相同API的示例代码(未经IAM授权):

  • 我们正在使用AWS Lambda授权器和API网关来保护我们的下游API。 下面是我们基于Java的lambda授权程序的代码片段 我们需要401(“未经授权”)作为一个回应,有人能请帮助如何做这一点吗?我们有用Java编写的lambda授权器。

  • 我的经理在AWS中为我分配了一个IAM角色,我正在尝试建立一个Amazon数据管道。在尝试激活管道时,我反复遇到如下权限问题和授权问题。 警告:验证角色“DataPipelineDefaultRole”时出错。错误:状态代码:403,AWS服务:AmazonIdentityManagement,AWS请求ID:fbf1935a-bcf1-11e3-82d4-cd47aac2f228,AWS错误代码

  • 非常好的一天, 任何帮助都很感激。提前谢了。