Skip to content

AWS.ServiceCatalog reference

Source: src/AWS/ServiceCatalog/DescribeProduct.ts

Runtime binding for servicecatalog:DescribeProduct.

Gets information about a product the caller has access to, including its provisioning artifacts (versions) and launch paths.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.DescribeProductHttp).

// init — account-level binding, no resource argument
const describeProduct = yield* AWS.ServiceCatalog.DescribeProduct();
// runtime
const { ProductViewSummary, ProvisioningArtifacts } =
yield* describeProduct({ Id: "prod-abc123" });

Source: src/AWS/ServiceCatalog/DescribeProvisionedProduct.ts

Runtime binding for servicecatalog:DescribeProvisionedProduct.

Gets information about a provisioned product by ID or name — its status (AVAILABLE, UNDER_CHANGE, ERROR, …) and the record of its last operation.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.DescribeProvisionedProductHttp).

DescribeProvisionedProduct: Tracking Provisioned Products

Section titled “DescribeProvisionedProduct: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const describeProvisionedProduct = yield* AWS.ServiceCatalog.DescribeProvisionedProduct();
// runtime
const { ProvisionedProductDetail } =
yield* describeProvisionedProduct({ Name: "my-vpc" });

Source: src/AWS/ServiceCatalog/DescribeProvisioningParameters.ts

Runtime binding for servicecatalog:DescribeProvisioningParameters.

Gets the template parameters, constraints, and usage instructions needed to provision a product — call it before ProvisionProduct to build the parameter form.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.DescribeProvisioningParametersHttp).

DescribeProvisioningParameters: Browsing the Catalog

Section titled “DescribeProvisioningParameters: Browsing the Catalog”
// init — account-level binding, no resource argument
const describeProvisioningParameters = yield* AWS.ServiceCatalog.DescribeProvisioningParameters();
// runtime
const { ProvisioningArtifactParameters } =
yield* describeProvisioningParameters({
ProductId: "prod-abc123",
ProvisioningArtifactId: "pa-abc123",
});

Source: src/AWS/ServiceCatalog/DescribeRecord.ts

Runtime binding for servicecatalog:DescribeRecord.

Gets a provisioning record — the result of a provision, update, or terminate request. Poll it until the record status is SUCCEEDED or FAILED.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.DescribeRecordHttp).

DescribeRecord: Tracking Provisioned Products

Section titled “DescribeRecord: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const describeRecord = yield* AWS.ServiceCatalog.DescribeRecord();
// runtime
const { RecordDetail } = yield* describeRecord({
Id: "rec-abc123",
});

Source: src/AWS/ServiceCatalog/DescribeServiceActionExecutionParameters.ts

Runtime binding for servicecatalog:DescribeServiceActionExecutionParameters.

Gets the parameters required to execute a self-service action on a provisioned product — call it before ExecuteProvisionedProductServiceAction to build the parameter form.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.DescribeServiceActionExecutionParametersHttp).

DescribeServiceActionExecutionParameters: Service Actions

Section titled “DescribeServiceActionExecutionParameters: Service Actions”
// init — account-level binding, no resource argument
const describeServiceActionExecutionParameters = yield* AWS.ServiceCatalog.DescribeServiceActionExecutionParameters();
// runtime
const { ServiceActionParameters } =
yield* describeServiceActionExecutionParameters({
ProvisionedProductId: "pp-abc123",
ServiceActionId: "act-abc123",
});

Source: src/AWS/ServiceCatalog/ExecuteProvisionedProductServiceAction.ts

Runtime binding for servicecatalog:ExecuteProvisionedProductServiceAction.

Executes a self-service action (e.g. restart, snapshot — an SSM-document-backed operation the administrator attached to the product) on a provisioned product.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.ExecuteProvisionedProductServiceActionHttp).

ExecuteProvisionedProductServiceAction: Service Actions

Section titled “ExecuteProvisionedProductServiceAction: Service Actions”
// init — account-level binding, no resource argument
const executeProvisionedProductServiceAction = yield* AWS.ServiceCatalog.ExecuteProvisionedProductServiceAction();
// runtime
const { RecordDetail } =
yield* executeProvisionedProductServiceAction({
ProvisionedProductId: "pp-abc123",
ServiceActionId: "act-abc123",
ExecuteToken: crypto.randomUUID(),
});

Source: src/AWS/ServiceCatalog/GetProvisionedProductOutputs.ts

Runtime binding for servicecatalog:GetProvisionedProductOutputs.

Gets the CloudFormation stack outputs of a provisioned product — how downstream code discovers the endpoints and IDs a launched product created.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.GetProvisionedProductOutputsHttp).

GetProvisionedProductOutputs: Tracking Provisioned Products

Section titled “GetProvisionedProductOutputs: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const getProvisionedProductOutputs = yield* AWS.ServiceCatalog.GetProvisionedProductOutputs();
// runtime
const { Outputs } = yield* getProvisionedProductOutputs({
ProvisionedProductName: "my-vpc",
});

Source: src/AWS/ServiceCatalog/ListLaunchPaths.ts

Runtime binding for servicecatalog:ListLaunchPaths.

Lists the launch paths (the portfolio routes through which the caller can provision a product). The path ID is required by ProvisionProduct when the product is published to more than one portfolio.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.ListLaunchPathsHttp).

// init — account-level binding, no resource argument
const listLaunchPaths = yield* AWS.ServiceCatalog.ListLaunchPaths();
// runtime
const { LaunchPathSummaries } = yield* listLaunchPaths({
ProductId: "prod-abc123",
});

Source: src/AWS/ServiceCatalog/ListRecordHistory.ts

Runtime binding for servicecatalog:ListRecordHistory.

Lists the caller’s past provisioning records (provision, update, and terminate requests), newest first.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.ListRecordHistoryHttp).

ListRecordHistory: Tracking Provisioned Products

Section titled “ListRecordHistory: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const listRecordHistory = yield* AWS.ServiceCatalog.ListRecordHistory();
// runtime
const { RecordDetails } = yield* listRecordHistory();

Source: src/AWS/ServiceCatalog/ListStackInstancesForProvisionedProduct.ts

Runtime binding for servicecatalog:ListStackInstancesForProvisionedProduct.

Lists the CloudFormation stack instances (account/region pairs) of a StackSet-backed provisioned product.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.ListStackInstancesForProvisionedProductHttp).

ListStackInstancesForProvisionedProduct: Tracking Provisioned Products

Section titled “ListStackInstancesForProvisionedProduct: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const listStackInstancesForProvisionedProduct = yield* AWS.ServiceCatalog.ListStackInstancesForProvisionedProduct();
// runtime
const { StackInstances } =
yield* listStackInstancesForProvisionedProduct({
ProvisionedProductId: "pp-abc123",
});

Source: src/AWS/ServiceCatalog/Portfolio.ts

An AWS Service Catalog portfolio — a container that organizes products and grants access to them for a set of principals.

Basic Portfolio

import * as ServiceCatalog from "alchemy/AWS/ServiceCatalog";
const portfolio = yield* ServiceCatalog.Portfolio("Tools", {
providerName: "platform-team",
});

Portfolio with Description and Tags

const portfolio = yield* ServiceCatalog.Portfolio("Tools", {
displayName: "engineering-tools",
providerName: "platform-team",
description: "Self-service infrastructure for engineering",
tags: { team: "platform" },
});
yield* ServiceCatalog.PrincipalPortfolioAssociation("DevAccess", {
portfolioId: portfolio.portfolioId,
principalArn: role.roleArn,
});
yield* ServiceCatalog.PortfolioProductAssociation("ToolsVpcProduct", {
portfolioId: portfolio.portfolioId,
productId: product.productId,
});

Source: src/AWS/ServiceCatalog/PortfolioProductAssociation.ts

Associates a Service Catalog product with a portfolio, making the product launchable by the portfolio’s principals.

PortfolioProductAssociation: Associating a Product

Section titled “PortfolioProductAssociation: Associating a Product”
import * as ServiceCatalog from "alchemy/AWS/ServiceCatalog";
yield* ServiceCatalog.PortfolioProductAssociation("ToolsVpc", {
portfolioId: portfolio.portfolioId,
productId: product.productId,
});

Source: src/AWS/ServiceCatalog/PrincipalPortfolioAssociation.ts

Grants an IAM principal (user, group, or role) access to a Service Catalog portfolio, allowing it to browse and launch the portfolio’s products.

PrincipalPortfolioAssociation: Granting Access

Section titled “PrincipalPortfolioAssociation: Granting Access”

Associate an IAM role

import * as ServiceCatalog from "alchemy/AWS/ServiceCatalog";
yield* ServiceCatalog.PrincipalPortfolioAssociation("DevAccess", {
portfolioId: portfolio.portfolioId,
principalArn: role.roleArn,
});

Associate a wildcard principal pattern

yield* ServiceCatalog.PrincipalPortfolioAssociation("AllDevRoles", {
portfolioId: portfolio.portfolioId,
principalArn: "arn:aws:iam:::role/dev-*",
principalType: "IAM_PATTERN",
});

Source: src/AWS/ServiceCatalog/Product.ts

An AWS Service Catalog product — a CloudFormation-backed offering (or Terraform/external equivalent) with one or more provisioning artifacts (versions) that principals can launch from a portfolio.

CloudFormation Product

import * as ServiceCatalog from "alchemy/AWS/ServiceCatalog";
const product = yield* ServiceCatalog.Product("VpcProduct", {
owner: "platform-team",
description: "Standard VPC baseline",
provisioningArtifact: {
name: "v1",
templateUrl: "https://my-bucket.s3.us-west-2.amazonaws.com/vpc.json",
},
});

Product with Support Information

const product = yield* ServiceCatalog.Product("VpcProduct", {
owner: "platform-team",
supportEmail: "platform@example.com",
supportUrl: "https://wiki.example.com/vpc-product",
supportDescription: "Slack #platform for questions",
provisioningArtifact: {
templateUrl: "https://my-bucket.s3.us-west-2.amazonaws.com/vpc.json",
},
});
yield* ServiceCatalog.PortfolioProductAssociation("ToolsVpc", {
portfolioId: portfolio.portfolioId,
productId: product.productId,
});

Source: src/AWS/ServiceCatalog/ProvisionProduct.ts

Runtime binding for servicecatalog:ProvisionProduct.

Provisions (launches) a product, creating the underlying CloudFormation stack. Returns the in-flight provisioning record — poll it with DescribeRecord.

Also grants the CloudFormation stack-creation and template-fetch (s3:GetObject) actions Service Catalog performs with the caller’s credentials when the product has no launch-role constraint.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.ProvisionProductHttp).

// init — account-level binding, no resource argument
const provisionProduct = yield* AWS.ServiceCatalog.ProvisionProduct();
// runtime
const { RecordDetail } = yield* provisionProduct({
ProductId: "prod-abc123",
ProvisioningArtifactId: "pa-abc123",
ProvisionedProductName: "my-vpc",
ProvisionToken: crypto.randomUUID(),
});

Source: src/AWS/ServiceCatalog/SearchProducts.ts

Runtime binding for servicecatalog:SearchProducts.

Searches the products to which the caller has access — the end-user view of the catalog (products published to a portfolio the caller’s principal is associated with).

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.SearchProductsHttp).

// init — account-level binding, no resource argument
const searchProducts = yield* AWS.ServiceCatalog.SearchProducts();
// runtime
const { ProductViewSummaries } = yield* searchProducts();

Source: src/AWS/ServiceCatalog/SearchProvisionedProducts.ts

Runtime binding for servicecatalog:SearchProvisionedProducts.

Searches the provisioned products the caller has access to, with optional free-text filters and account-level access filters.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.SearchProvisionedProductsHttp).

SearchProvisionedProducts: Tracking Provisioned Products

Section titled “SearchProvisionedProducts: Tracking Provisioned Products”
// init — account-level binding, no resource argument
const searchProvisionedProducts = yield* AWS.ServiceCatalog.SearchProvisionedProducts();
// runtime
const { ProvisionedProducts } = yield* searchProvisionedProducts();

Source: src/AWS/ServiceCatalog/TerminateProvisionedProduct.ts

Runtime binding for servicecatalog:TerminateProvisionedProduct.

Terminates a provisioned product, deleting the underlying CloudFormation stack. Returns the in-flight record — poll it with DescribeRecord.

Also grants the CloudFormation stack-deletion actions Service Catalog performs with the caller’s credentials when the product has no launch-role constraint.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.TerminateProvisionedProductHttp).

TerminateProvisionedProduct: Provisioning Products

Section titled “TerminateProvisionedProduct: Provisioning Products”
// init — account-level binding, no resource argument
const terminateProvisionedProduct = yield* AWS.ServiceCatalog.TerminateProvisionedProduct();
// runtime
const { RecordDetail } = yield* terminateProvisionedProduct({
ProvisionedProductName: "my-vpc",
TerminateToken: crypto.randomUUID(),
});

Source: src/AWS/ServiceCatalog/UpdateProvisionedProduct.ts

Runtime binding for servicecatalog:UpdateProvisionedProduct.

Updates a provisioned product to a new provisioning artifact (version), parameters, or launch path — the self-service equivalent of a stack update. Returns the in-flight record.

Also grants the CloudFormation stack-update actions Service Catalog performs with the caller’s credentials when the product has no launch-role constraint.

Account-level operation — which products the caller can see and act on is governed by portfolio principal associations, so the binding takes no resource argument. Provide the implementation with Effect.provide(AWS.ServiceCatalog.UpdateProvisionedProductHttp).

UpdateProvisionedProduct: Provisioning Products

Section titled “UpdateProvisionedProduct: Provisioning Products”
// init — account-level binding, no resource argument
const updateProvisionedProduct = yield* AWS.ServiceCatalog.UpdateProvisionedProduct();
// runtime
const { RecordDetail } = yield* updateProvisionedProduct({
ProvisionedProductName: "my-vpc",
ProvisioningArtifactName: "v2",
UpdateToken: crypto.randomUUID(),
});