生产环境ECS Fargate上传S3 bucket时出现Access denied 403错误(本地正常)
S3上传
AccessDenied错误排查方案 已确认IAM配置S3全权限、环境变量加载正常,且本地运行无问题,但线上出现403错误,可从以下方向排查:
- Bucket策略限制:IAM权限会被Bucket本身的拒绝策略覆盖,检查Bucket权限策略,确保没有针对当前执行角色/用户的拒绝语句(比如限制IP、VPC或写入操作)。
- KMS加密权限:若Bucket启用SSE-KMS加密,执行上传的角色需要对对应KMS密钥拥有
kms:GenerateDataKey和kms:Decrypt权限,确认该权限是否配置。 - VPC网络限制:如果在VPC环境中运行,检查S3 VPC端点的策略是否允许上传操作;同时确认安全组、防火墙是否限制了访问S3的网络出口。
- 路径级权限冲突:S3明确的拒绝策略优先级高于允许权限,检查是否存在针对上传路径的拒绝规则。
- 临时凭证有效性:若使用临时IAM凭证(如ECS任务角色、Lambda执行角色),确认凭证是否在有效期内,是否有自动刷新机制。
- Bucket所有权控制:检查Bucket的Object Ownership设置,若为“Bucket owner enforced”,需确保上传对象不会被其他账户拥有导致权限冲突。
错误日志
AccessDenied: Access Denied api at throwDefaultError (/app/node_modules/@aws-sdk/client-s3/node_modules/@smithy/smithy-client/dist-cjs/index.js:838:20) api at /app/node_modules/@aws-sdk/client-s3/node_modules/@smithy/smithy-client/dist-cjs/index.js:847:5 api at de_CommandError (/app/node_modules/@aws-sdk/client-s3/dist-cjs/index.js:4748:14) api at process.processTicksAndRejections (node:internal/process/task_queues:95:5) api at async /app/node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-serde/dist-cjs/index.js:35:20 api at async /app/node_modules/@aws-sdk/middleware-signing/dist-cjs/index.js:226:18 api at async /app/node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-retry/dist-cjs/index.js:320:38 api at async /app/node_modules/@aws-sdk/middleware-flexible-checksums/dist-cjs/index.js:174:18 api at async /app/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js:98:20 api at async /app/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/index.js:121:14 { api '$fault': 'client', api '$metadata': { api httpStatusCode: 403, api requestId: 'Y9W345675765774JW', api extendedRequestId: 'LW2UXs3455646hiFZs0b/mU0UNisiXAfsdff43fdsgHOUH8s51OJklhRNU=', api cfId: undefined, api attempts: 1, api totalRetryDelay: 0 api },
内容的提问来源于stack exchange,提问作者brohxa
相关产品推荐
相关产品推荐

