使用GitHub Action部署Beanstalk应用失败:AWS密钥未指定
解决Elastic Beanstalk部署报错"AWS Access Key not specified!"的方法
针对你遇到的问题,以下是几个可行的排查和解决步骤:
1. 修正参数命名格式
einaregilsson/beanstalk-deploy的凭证输入参数使用下划线命名而非连字符,将部署步骤里的参数名替换为下划线格式:
- name: Deploy to Elastic Beanstalk uses: einaregilsson/beanstalk-deploy@v21 id: deploy with: aws_access_key_id: ${{ steps.creds.outputs.aws-access-key-id }} aws_secret_access_key: ${{ steps.creds.outputs.aws-secret-access-key }} aws_session_token: ${{ steps.creds.outputs.aws-session-token }} application_name: Site environment_name: Site-Prod-env version_label: ${{ steps.readversion.outputs.content }} region: ${{ vars.AWS_REGION }} deployment_package: site-*.jar
2. 验证凭证变量是否有效传递
在部署步骤前添加调试步骤,确认凭证变量存在且非空:
- name: Debug AWS Credentials run: | echo "环境变量AWS_ACCESS_KEY_ID: $AWS_ACCESS_KEY_ID" echo "creds输出aws-access-key-id: ${{ steps.creds.outputs.aws-access-key-id }}" echo "环境变量AWS_SESSION_TOKEN: $AWS_SESSION_TOKEN"
如果输出为空,说明configure-aws-credentials的凭证生成或传递有问题,需要检查角色配置和OIDC信任关系。
3. 让Action自动读取环境变量
aws-actions/configure-aws-credentials已经自动设置了AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN三个环境变量,beanstalk-deploy会自动读取这些默认环境变量,无需手动传递参数。简化部署步骤:
- name: Deploy to Elastic Beanstalk uses: einaregilsson/beanstalk-deploy@v21 id: deploy with: application_name: Site environment_name: Site-Prod-env version_label: ${{ steps.readversion.outputs.content }} region: ${{ vars.AWS_REGION }} deployment_package: site-*.jar
4. 检查Action版本兼容性
尝试将einaregilsson/beanstalk-deploy升级到最新版本,或回退到v20等稳定版本,排查版本间的凭证读取逻辑差异。
内容的提问来源于stack exchange,提问作者Christian Demers
相关产品推荐
相关产品推荐

