创建含DynamoDB与S3的Lambda函数时遇IamRoleLambdaExecution错误
问题解决:Lambda部署时IAM策略文档格式错误
错误原因
你的IAM角色策略里的Action字段存在格式问题:s3*不符合AWS IAM策略规范,正确的服务操作格式必须是「服务前缀:操作」的形式,通配符需放在冒号之后,比如s3:*。
修正后的serverless.yaml配置
将原配置中Action列表里的s3*替换为具体需要的S3操作(遵循最小权限原则),或者使用正确的通配符写法:
service: serverless-gpt-app frameworkVersion: "3" provider: name: aws stage: prod region: eu-central-1 runtime: nodejs14.x memorySize: 256 iam: role: statements: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem # 替换错误的s3*为实际需要的S3操作,示例为常用读写删权限 - s3:GetObject - s3:PutObject - s3:DeleteObject Resource: - arn:aws:s3:::user-text-bucket/* - arn:aws:dynamodb:eu-central-1:183747912409:table/user-text functions: hello: handler: app.server events: # events trigger lambda functions - http: # this is an API Gateway HTTP event trigger path: / method: ANY cors: true - http: # all routes get proxied to the Express router path: /{proxy+} method: ANY cors: true
补充说明
如果确实需要授予该S3桶的全量操作权限,可写成s3:*,但从安全角度建议只添加Lambda实际用到的操作,避免过度授权。
内容的提问来源于stack exchange,提问作者Ayush Kumar
相关产品推荐
相关产品推荐

