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

咨询:能否通过CloudFormation启动AWS Marketplace实例及解决方案

如何用CloudFormation从AWS Marketplace启动实例?

当然可以用CloudFormation从AWS Marketplace启动实例!你提到的AMI无法直接通过CloudFormation自动获取的问题确实是常见的小卡点,不过有几个靠谱的解决办法,我给你梳理一下:

前提:先完成Marketplace产品订阅

必须先在AWS Marketplace订阅你要使用的产品并接受其条款,否则不管用什么方式启动实例都会失败。这一步在AWS Marketplace控制台操作即可,订阅后你的账户就有权限使用对应的AMI了。

解决办法1:用SSM Parameter Store动态获取AMI ID(推荐)

很多AWS Marketplace的AMI都会在SSM Parameter Store中提供预定义的参数,这些参数会自动同步不同区域的最新AMI ID,非常适合跨区域部署的CloudFormation模板。

查找对应的SSM参数

你可以通过AWS CLI命令查找目标产品的SSM参数:

aws ssm get-parameters --names /aws/service/marketplace/ami-id/<你的产品ID> --region <目标区域>

或者直接在AWS控制台的SSM Parameter Store中搜索/aws/service/marketplace/前缀的参数,找到对应产品的条目。

在CloudFormation模板中引用

用动态引用的方式直接获取AMI ID:

Resources:
  MyMarketplaceInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/marketplace/ami-id/<你的产品ID>:1}}'
      InstanceType: t2.micro
      # 补充其他必要属性:密钥对名称、安全组ID等

也可以用!GetParameter函数:

Resources:
  MyMarketplaceInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !GetParameter '/aws/service/marketplace/ami-id/<你的产品ID>'
      InstanceType: t2.micro

解决办法2:用CloudFormation映射(Mappings)硬编码区域对应的AMI ID

如果目标Marketplace AMI没有对应的SSM参数,你可以手动收集各区域的AMI ID,然后在模板中用Mappings来根据部署区域自动匹配:

Mappings:
  MarketplaceAMIMap:
    us-east-1:
      AMI: ami-1234567890abcdef0
    us-west-2:
      AMI: ami-0987654321fedcba0
    eu-west-1:
      AMI: ami-abcdef1234567890
    # 按需添加更多区域

Resources:
  MyMarketplaceInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: !FindInMap [MarketplaceAMIMap, !Ref 'AWS::Region', AMI]
      InstanceType: t2.micro

这种方式需要你自己维护各区域的AMI ID,当AMI更新时要记得同步修改模板。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:03:23