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

如何在GitHub Actions中自动使用AWS Elastic Beanstalk最新平台版本?

解决AWS Elastic Beanstalk平台版本自动更新的GitHub Actions部署问题

问题背景

当前部署Node.js应用到AWS Elastic Beanstalk的GitHub Actions工作流中,硬编码了平台版本(如v6.2.2),但该版本每1-2个月就会更新,导致工作流因版本过时执行失败。尝试省略版本号或使用通用平台名称初始化均失败,必须指定精确版本。

解决方案

方案1:通过AWS CLI查询最新平台版本并动态传入

在eb init前调用AWS API获取目标平台的最新版本,将其作为变量传入命令,实现自动使用最新版本:

  1. 配置AWS凭证(确保CLI可用)

    - name: Configure AWS Credentials
      uses: aws-actions/configure-aws-credentials@v4
      with:
        aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
        aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
        aws-region: eu-west-2
    
  2. 查询最新版本并执行部署
    修改部署步骤,先获取最新版本再初始化:

    - name: Beanstalk Deploy for app
      run: |
        # 查询符合条件的最新平台版本
        LATEST_PLATFORM=$(aws elasticbeanstalk list-platform-versions \
          --filters "Name=PlatformName,Values=Node.js" "Name=PlatformVersion,Values=64bit Amazon Linux 2023 running Node.js 20*" \
          --query 'sort_by(PlatformSummaryList, &PlatformVersion)[-1].PlatformVersion' \
          --output text)
        
        # 使用最新版本初始化并部署
        eb init --platform "$LATEST_PLATFORM" backend
        eb deploy --modules titan --env-group-suffix=stg
      working-directory: ./app
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_KEY }}
        AWS_DEFAULT_REGION: eu-west-2
    

    说明:

    • list-platform-versions命令通过过滤条件匹配目标平台系列,按版本号排序后取最后一个(即最新版本)
    • 若偏好使用平台ARN而非版本字符串,可将--query部分改为sort_by(PlatformSummaryList, &PlatformVersion)[-1].PlatformArn,eb init同样支持ARN作为--platform参数

方案2:尝试EB CLI平台短别名(部分场景适用)

若AWS对目标平台提供了官方短别名,可尝试直接使用别名替代精确版本,例如:

eb init --platform "Node.js 20" backend

注意:部分地区或平台系列可能不支持该方式自动匹配最新版本,建议先在本地测试该命令是否能正确识别目标平台的最新版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:56:10