AWS部署JIRA遇S3权限及密钥不存在问题求助
解决AWS部署JIRA时的S3相关错误
1. 处理S3 Access Denied错误(无需公开存储桶)
公开存储桶是非常不安全的操作,咱们用IAM权限就能妥善解决这个问题,哪怕是全新堆栈也能搞定:
- 定位部署实体的IAM角色:不管你是用CloudFormation堆栈、EC2实例直接部署,还是AWS Marketplace的JIRA模板,都会有一个执行部署的IAM实体(比如CloudFormation的执行角色,或是EC2实例关联的IAM角色)。如果是全新堆栈,CloudFormation通常会自动创建带堆栈名称的角色,你可以在IAM控制台的「角色」页面找到它。
- 添加精准的S3权限策略:给这个角色附加一个自定义IAM策略,允许它访问目标S3桶的必要操作。比如仅需读取桶内文件的话,策略可以这么写:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::你的存储桶名称", "arn:aws:s3:::你的存储桶名称/*" ] } ] }
你可以根据JIRA的实际需求调整Action(比如需要上传配置的话再加s3:PutObject),这样部署进程就能合法访问S3桶,完全不需要开启公开权限。
- 验证权限关联:确认角色已经正确附加到部署实体上——比如EC2实例的「IAM角色」标签页能看到你配置的角色,CloudFormation堆栈的执行角色也已正确关联。
2. 处理"S3 error: The specified key does not exist"错误
这个错误说明JIRA部署进程尝试访问的S3对象(即具体的文件路径/Key)不存在,你可以按以下步骤排查:
- 核对S3 Key配置:检查部署时填写的S3路径参数,比如JIRA安装包的存储路径、自定义配置文件的Key,有没有拼写错误、大小写错误(S3的Key是大小写敏感的)。比如你填的是
jira/atlassian-jira.tar.gz,但实际桶里是JIRA/Atlassian-Jira.tar.gz,就会触发这个错误。 - 检查S3桶内文件:直接登录S3控制台,打开目标桶,确认你要访问的文件确实存在,路径和配置的完全一致。如果是部署脚本自动拉取文件,可能脚本指定的Key和实际上传的不符,或是文件还没上传完成。
- 排查部署模板/脚本逻辑:如果用CloudFormation或自动化脚本部署,查看模板里引用S3对象的部分(比如
AWS::CloudFormation::Init里的文件来源),有没有写错桶名或Key。有些模板会用参数传递S3信息,检查参数值是否正确。 - 查看部署日志:如果是EC2实例部署,查看系统日志或JIRA部署日志,里面会详细记录尝试访问的S3 Key,根据日志里的具体路径去桶里核对,能快速定位问题。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

