咨询使用Serverless Framework在AWS创建Lambda的最小IAM权限清单
Serverless Framework部署Lambda所需的最小IAM权限清单
以下是Serverless Framework部署Lambda函数时所需的最小必要IAM权限,按操作场景分类,可直接整合到IAM策略中:
核心CloudFormation权限
cloudformation:DescribeStackResource:解决你当前遇到的权限错误,Serverless需要查询CloudFormation栈资源状态以确认部署进度cloudformation:CreateStack、cloudformation:UpdateStack、cloudformation:DeleteStack:管理Serverless创建的CloudFormation栈cloudformation:DescribeStacks、cloudformation:ListStackResources:获取栈的基本信息和资源列表cloudformation:GetTemplate:读取CloudFormation模板内容
Lambda相关权限
lambda:CreateFunction、lambda:UpdateFunctionCode、lambda:UpdateFunctionConfiguration:创建/更新Lambda函数的代码与配置lambda:GetFunction、lambda:GetFunctionConfiguration:查询Lambda函数的基础信息lambda:AddPermission、lambda:RemovePermission:管理Lambda的触发权限(如API Gateway、SNS等触发规则)lambda:ListFunctions:列出账户内Lambda函数,用于部署前校验
S3限定权限(替代全量S3权限)
不要授予S3FullAccess,将权限限定到Serverless默认使用的S3桶(通常格式为serverless-${region}-${accountId}):
s3:CreateBucket:首次部署时创建存储代码包的S3桶s3:PutObject:上传Lambda代码包至S3桶s3:GetObject:从S3桶读取代码包用于部署s3:ListBucket:查看桶内代码包文件列表
辅助权限(按需添加)
若你的Serverless服务包含其他关联资源(如API Gateway、DynamoDB等),需额外添加对应资源的最小权限,例如:
- API Gateway:
apigateway:CreateRestApi、apigateway:UpdateRestApi、apigateway:CreateDeployment等 - DynamoDB:
dynamodb:CreateTable、dynamodb:DescribeTable等
示例IAM策略片段
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:DescribeStackResource", "cloudformation:CreateStack", "cloudformation:UpdateStack", "cloudformation:DeleteStack", "cloudformation:DescribeStacks", "cloudformation:ListStackResources", "cloudformation:GetTemplate" ], "Resource": "arn:aws:cloudformation:*:*:stack/serverless-*/*" }, { "Effect": "Allow", "Action": [ "lambda:CreateFunction", "lambda:UpdateFunctionCode", "lambda:UpdateFunctionConfiguration", "lambda:GetFunction", "lambda:GetFunctionConfiguration", "lambda:AddPermission", "lambda:RemovePermission", "lambda:ListFunctions" ], "Resource": "arn:aws:lambda:*:*:function:serverless-*" }, { "Effect": "Allow", "Action": [ "s3:CreateBucket", "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::serverless-*", "arn:aws:s3:::serverless-*/*" ] } ] }
说明:
- 所有资源通过
serverless-*通配符限定,确保权限仅作用于Serverless创建的资源,严格遵循最小权限原则 - 若自定义了Serverless的S3桶名或栈名,需替换对应通配符为实际名称
内容的提问来源于stack exchange,提问作者Alberto Siurob
相关产品推荐
相关产品推荐

