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

如何在AWS CDK中获取ServiceCatalog产品的ProvisioningArtifactIds?

在AWS CDK中获取CloudFormation Product的ProvisioningArtifactId

问题描述

我在AWS CDK文档里找不到获取CloudFormation Product的ProvisioningArtifactIds(示例值:pa-4abcdjnxjj6ne)的方法。CloudFormation原生可以通过!GetAtt Product.ProvisioningArtifactIds返回该值,但CDK的高层API没有暴露对应的属性。我需要这个ID来完成同一堆栈内CloudFormation Product与CfnServiceActionAssociation的关联。

当前代码如下:

创建CloudFormation Product:

product = aws_servicecatalog.CloudFormationProduct(self, "Product",
    product_name="My Product",
    owner="Product Owner",
    product_versions=[servicecatalog.CloudFormationProductVersion(
        product_version_name="v1",
        cloud_formation_template=servicecatalog.CloudFormationTemplate.from_product_stack(S3BucketProduct(self, "S3BucketProduct"))
    )])

创建关联:

aws_servicecatalog.CfnServiceActionAssociation(
        self,
        "serviceId",
        product_id=product.product_id,
        provisioning_artifact_id="????", # 此处需填入获取到的ID
        service_action_id=myServiceAction.attr_id,
    )

解决方案

CDK的高层CloudFormationProduct封装了底层的CfnCloudFormationProduct资源,我们可以通过访问底层资源来获取ProvisioningArtifactIds:

  1. 从高层CloudFormationProduct实例中获取对应的底层Cfn资源
  2. 使用get_att方法获取ProvisioningArtifactIds属性,由于该属性返回的是列表,若只创建了一个产品版本,取第一个元素即可

修改后的关联代码示例:

# 获取底层CfnCloudFormationProduct资源
cfn_product = product.node.default_child as aws_servicecatalog.CfnCloudFormationProduct

# 创建服务动作关联,提取第一个ProvisioningArtifactId
aws_servicecatalog.CfnServiceActionAssociation(
    self,
    "serviceId",
    product_id=product.product_id,
    provisioning_artifact_id=cfn_product.get_att("ProvisioningArtifactIds").list_get(0),
    service_action_id=myServiceAction.attr_id,
)

说明

  • node.default_child会返回当前构造对象对应的底层CloudFormation资源,这里就是CfnCloudFormationProduct
  • get_att("ProvisioningArtifactIds")对应CloudFormation中的!GetAtt操作,返回所有产品版本的Artifact ID列表
  • list_get(0)用于提取列表中的第一个元素,适合仅创建单个产品版本的场景;若有多个版本,可根据版本名称或索引调整

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:45:41