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

如何用CloudFormation创建新Elastic Beanstalk应用并部署Java示例

Elastic Beanstalk CloudFormation模板问题解决方案

问题1:在同一模板中创建新应用并关联环境

之前的错误是因为AWS::ElasticBeanstalk::Environment引用的customerApp未在模板中定义,CloudFormation无法找到对应资源。要同时创建应用和环境,需在模板中按顺序定义应用、应用版本,再关联到环境,确保资源依赖关系正确。

修正后的核心资源示例

Resources:
  # 1. 创建Elastic Beanstalk应用
  MyEBApplication:
    Type: AWS::ElasticBeanstalk::Application
    Properties:
      Description: 测试EB应用

  # 2. 创建应用版本(关联上述应用)
  MyEBAppVersion:
    Type: AWS::ElasticBeanstalk::ApplicationVersion
    Properties:
      ApplicationName: !Ref MyEBApplication  # 引用刚创建的应用,避免硬编码
      Description: 测试应用版本
      SourceBundle:
        # 后续替换为你自己的应用包存储路径
        S3Bucket: !Sub "${AWS::AccountId}-my-eb-packages"
        S3Key: my-java-app.zip

  # 3. 创建环境(关联应用和应用版本)
  MyEBEnvironment:
    Type: AWS::ElasticBeanstalk::Environment
    Properties:
      ApplicationName: !Ref MyEBApplication  # 关联创建的应用
      ApplicationVersion: !Ref MyEBAppVersion # 指定要部署的应用版本
      Description: Test
      PlatformArn: arn:aws:elasticbeanstalk:eu-west-1::platform/Tomcat 8.5 with Corretto 8 running on 64bit Amazon Linux 2/4.2.17
      EnvironmentName: iw-test3
      # 你的其他OptionSettings保持不变...

关键注意点

  • 必须用!Ref关联资源,不能硬编码应用名称,否则会再次出现"应用不存在"的错误
  • ApplicationVersion会自动依赖Application,CloudFormation会按顺序创建资源
  • 环境资源必须指定ApplicationVersion,否则EB会尝试使用默认版本,可能导致部署失败

问题2:S3权限禁止错误

你遇到的Forbidden错误是因为elasticbeanstalk-samples-${AWS::Region}桶中的corretto.zip文件要么不存在,要么EB服务角色没有权限读取该桶内容。官方elasticbeanstalk-samples桶并非所有区域都有相同文件,且部分资源不公开可访问。

解决方案

方案1:使用自己的S3桶存储应用包

  1. 将Java应用包(或AWS官方Java示例包)上传到你自己AWS账号下的S3桶
  2. 在模板中更新SourceBundle的S3Bucket和S3Key为自己的桶和文件路径
  3. 确保CloudFormation执行角色或EB服务角色拥有s3:GetObject权限,允许读取该桶内容

方案2:使用公开的AWS示例应用包

如果想测试标准Java示例,可使用AWS公开的示例包:

SourceBundle:
  S3Bucket: aws-elasticbeanstalk-samples
  S3Key: java-sample.zip

该包公开可访问,EB服务角色可直接读取。

权限配置补充

若使用自己的S3桶,需给EB服务角色添加以下IAM策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 22:54:20