You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何批量移除所有AWS Lambda函数的Lambda Basic Execution Role并禁止用户选择该角色?

批量移除所有Lambda函数的Lambda Basic Execution Role

针对大量Lambda函数,可通过AWS CLI或Python SDK批量操作,以下是具体实现:

AWS CLI 脚本

通过bash脚本批量识别并移除使用Basic Execution Role的Lambda函数:

# 获取所有Lambda函数名称(以空格分隔)
FUNCTIONS=$(aws lambda list-functions --query 'Functions[*].FunctionName' --output text)

# 循环处理每个函数
for FUNCTION in $FUNCTIONS; do
  # 获取当前函数绑定的执行角色
  CURRENT_ROLE=$(aws lambda get-function --function-name $FUNCTION --query 'Configuration.Role' --output text)
  # 仅处理使用Basic Execution Role的函数
  if [[ $CURRENT_ROLE == *"lambda_basic_execution"* ]]; then
    echo "移除函数 $FUNCTION 的Basic Execution Role"
    aws lambda update-function-configuration --function-name $FUNCTION --role ""
  fi
done

注意事项:

  • 确保执行脚本的身份拥有lambda:ListFunctions、lambda:GetFunction、lambda:UpdateFunctionConfiguration权限
  • 若函数依赖该角色运行,移除后会触发权限错误,需提前确认这些函数已无需该角色或已配置替代权限方案

Python Boto3 脚本

适合跨区域、分页处理大量函数的场景:

import boto3

# 初始化Lambda客户端(如需跨区域,可指定region_name参数)
lambda_client = boto3.client('lambda')

def get_all_lambda_functions():
    functions = []
    response = lambda_client.list_functions()
    functions.extend(response['Functions'])
    # 处理分页结果(单次list最多返回100个函数)
    while 'NextMarker' in response:
        response = lambda_client.list_functions(Marker=response['NextMarker'])
        functions.extend(response['Functions'])
    return functions

# 获取所有函数并批量更新
for func in get_all_lambda_functions():
    func_name = func['FunctionName']
    current_role = func.get('Role', '')
    if 'lambda_basic_execution' in current_role.lower():
        print(f"更新函数 {func_name}:移除Basic Execution Role")
        lambda_client.update_function_configuration(
            FunctionName=func_name,
            Role=''
        )
阻止用户选择Lambda Basic Execution Role

可通过IAM权限策略或组织SCP实现,从权限层面限制该角色的使用:

IAM 权限策略

创建拒绝策略并附加到目标IAM用户/组/角色,阻止创建或更新Lambda函数时指定该角色:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "lambda:Role": "*lambda_basic_execution*"
                }
            }
        }
    ]
}

当用户尝试选择Basic Execution Role时,操作会被直接拒绝。

AWS Organizations 服务控制策略(SCP)

若管理多账户环境,可通过SCP在组织层面批量限制:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "lambda:CreateFunction",
                "lambda:UpdateFunctionConfiguration"
            ],
            "Resource": "*",
            "Condition": {
                "StringLike": {
                    "lambda:Role": "*lambda_basic_execution*"
                }
            }
        }
    ]
}

将该SCP附加到目标组织单元(OU)或账户,即可限制整个范围内的用户使用该角色。

额外:禁用角色的Lambda信任关系

若要彻底让该角色无法被Lambda使用,可修改其信任策略,拒绝Lambda服务的角色假设请求:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

即使有人绕过权限限制指定该角色,Lambda也无法正常使用它。

内容的提问来源于stack exchange,提问作者user20723032

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:20:40