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

Bitbucket-S3部署遇Access Denied错误,请求协助排查

解决Bitbucket Pipeline部署S3时的AccessDenied错误

我来帮你排查这个部署权限问题,虽然你的IAM策略看起来授予了全S3权限,但还是有几个常见的坑会触发AccessDenied错误,咱们一步步来排查:

1. 确认Bitbucket中的AWS凭证配置正确

首先要确保你在Bitbucket仓库的Settings > Repository variables中配置的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY完全匹配IAM用户的凭证:

  • 检查有没有多余的空格或特殊字符(复制粘贴时很容易出现这类问题)
  • 可以尝试重新生成IAM用户的访问密钥,然后更新Bitbucket的变量,避免旧密钥失效

2. 检查S3桶的桶策略与访问控制

S3的权限是IAM策略和桶策略共同作用的,即使IAM用户有全权限,如果桶策略存在Deny规则,会优先生效:

  • 登录AWS控制台,进入目标S3桶的Permissions > Bucket Policy页面,检查是否有拒绝写入的语句
  • 同时确认桶的ACL没有设置为完全私有,不过你的IAM策略是s3:*,这个概率较低,但可以快速排查排除

3. 验证LOCAL_PATH的有效性

虽然这不会直接导致权限错误,但可以确认构建产物路径是否正确:

  • 查看Pipeline中ls -ltr的输出,确认dist/portalfrontend目录下存在构建后的文件
  • 你当前用$(pwd)作为LOCAL_PATH是正确的,但也可以尝试直接写dist/portalfrontend(从项目根目录出发的相对路径),避免cd后的路径识别问题

4. 确认AWS区域与桶的区域匹配

你的配置中指定了AWS_DEFAULT_REGION: 'ap-south-1',要确保目标S3桶确实创建在这个区域。区域不匹配可能会引发权限类的错误提示,虽然报错信息不一定完全一致,但可以快速排除这个问题。

5. 本地测试IAM用户权限

用这个IAM用户的凭证在本地执行AWS CLI命令,验证是否能正常上传文件:

# 先创建一个测试文件
echo "test content" > test.txt
# 上传到目标桶
aws s3 cp test.txt s3://bitbucket-s3-deployment-xxxxxxxx/test.txt --acl public-read --region ap-south-1
  • 如果本地也报错,说明问题出在IAM用户或S3桶的权限配置上
  • 如果本地成功,那大概率是Bitbucket Pipeline中的配置问题(比如变量没生效)

6. 排查IAM用户的权限边界与账号SCP

有些AWS账号会通过权限边界或**组织服务控制策略(SCP)**限制用户权限:

  • 进入IAM控制台,查看该用户的Permissions > Permissions boundary,确认没有限制S3写入的规则
  • 如果你的账号属于AWS组织,检查组织的SCP是否禁止了S3的PutObject操作

额外建议:升级Bitbucket Pipe版本

你当前使用的atlassian/aws-s3-deploy:0.2.4版本比较老旧,建议升级到最新稳定版(比如atlassian/aws-s3-deploy:3.0.0),新版本可能修复了一些权限相关的兼容性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:48:12