Retrieve SSM Platform Parameters

Action ID: harmonix:get-platform-parameters
NPM Package:

@aws/plugin-scaffolder-backend-aws-apps-for-backstage

Description

Retrieve AWS SSM parameter values for platform configurations can be used by other template actions

Input Schema

PropertyTypeDescriptionRequired
regionstring-
paramKeysarray-

Output Schema

PropertyTypeDescriptionRequired
paramsobject-

Usage Examples

Inject global platform settings into a service template

Fetch shared platform parameters from AWS SSM in a specific region, then pass them into a service skeleton with fetch:template. Use this when your templates need registry, monitoring, or domain settings managed by the platform team.

Copy
steps:
  - id: platformParams
    action: harmonix:get-platform-parameters
    input:
      paramKeys:
        - /platform/registry/url
        - /platform/observability/grafana/url
        - /platform/network/base-domain
      region: eu-west-1

  - id: fetchBase
    action: fetch:template
    input:
      url: https://github.com/acme/platform-templates/node-service
      targetPath: ./
      values:
        name: ${{ parameters.name }}
        owner: ${{ parameters.owner }}
        containerRegistry: ${{ steps.platformParams.output.params['/platform/registry/url'] }}
        grafanaUrl: ${{ steps.platformParams.output.params['/platform/observability/grafana/url'] }}
        baseDomain: ${{ steps.platformParams.output.params['/platform/network/base-domain'] }}

Load account and environment specific config without setting region

Resolve dynamic SSM parameter keys based on template parameters, then flow them into the code generation step with fetch:template. Use this when values depend on AWS account and environment.

Copy
steps:
  - id: accountParams
    action: harmonix:get-platform-parameters
    input:
      paramKeys:
        - /platform/accounts/${{ parameters.awsAccountId }}/vpc/${{ parameters.env }}/id
        - /platform/accounts/${{ parameters.awsAccountId }}/kms/${{ parameters.env }}/key-arn
        - /platform/telemetry/otel/collector/endpoint

  - id: fetchInfraStack
    action: fetch:template
    input:
      url: https://github.com/acme/platform-templates/aws-infra-stack
      targetPath: ./
      values:
        project: ${{ parameters.project }}
        awsAccountId: ${{ parameters.awsAccountId }}
        environment: ${{ parameters.env }}
        vpcId: ${{ steps.accountParams.output.params['/platform/accounts/' ~ parameters.awsAccountId ~ '/vpc/' ~ parameters.env ~ '/id'] }}
        kmsKeyArn: ${{ steps.accountParams.output.params['/platform/accounts/' ~ parameters.awsAccountId ~ '/kms/' ~ parameters.env ~ '/key-arn'] }}
        otelCollectorEndpoint: ${{ steps.accountParams.output.params['/platform/telemetry/otel/collector/endpoint'] }}