Retrieve AWS SSM Parameters

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

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

Description

Retreive AWS SSM parameter values so that their configurations can be used by other template actions

Input Schema

PropertyTypeDescriptionRequired
paramKeysarray-
envProvidersarray-

Output Schema

PropertyTypeDescriptionRequired
paramsobject-

Usage Examples

Fetch dev and prod SSM parameters and render config files

Retrieve a fixed set of SSM parameters for dev and prod accounts, then pass them to a later step to render config files with fetch:template.

Copy
steps:
  - id: fetchBase
    action: fetch:template
    input:
      url: ./skeleton
      targetPath: .
      values:
        serviceId: ${{ parameters.serviceId }}
        owner: ${{ parameters.owner }}

  - id: getSsmParams
    action: harmonix:get-ssm-parameters
    input:
      paramKeys:
        - /acme/payments/DB_HOST
        - /acme/payments/DB_PORT
        - /acme/payments/DB_NAME
        - /acme/payments/DB_PASSWORD
      envProviders:
        - name: dev
          region: us-east-1
          roleArn: arn:aws:iam::111111111111:role/ssm-parameter-read
        - name: prod
          region: us-west-2
          roleArn: arn:aws:iam::222222222222:role/ssm-parameter-read

  - id: renderConfig
    action: fetch:template
    input:
      url: ./templates/config
      targetPath: ./config
      values:
        serviceId: ${{ parameters.serviceId }}
        # Pass through the full params object so templates can select values as needed
        ssmParams: ${{ steps.getSsmParams.output.params }}

Parameterized SSM paths across selected environments

Use template parameters to build SSM paths per service and environment, and accept the list of environment providers from user input. The retrieved params are then made available to a templating step with fetch:template.

Copy
steps:
  - id: scaffoldSkeleton
    action: fetch:template
    input:
      url: ./service-skeleton
      targetPath: .
      values:
        name: ${{ parameters.name }}
        description: ${{ parameters.description }}

  - id: getRuntimeConfig
    action: harmonix:get-ssm-parameters
    input:
      paramKeys:
        - /acme/${{ parameters.envPrefix }}/services/${{ parameters.serviceId }}/API_BASE_URL
        - /acme/${{ parameters.envPrefix }}/services/${{ parameters.serviceId }}/SENTRY_DSN
        - /acme/${{ parameters.envPrefix }}/services/${{ parameters.serviceId }}/FEATURE_FLAGS
      envProviders: ${{ parameters.envProviders }}

  - id: renderManifests
    action: fetch:template
    input:
      url: ./templates/k8s
      targetPath: ./deploy
      values:
        serviceId: ${{ parameters.serviceId }}
        environments: ${{ parameters.envProviders }}
        ssmParams: ${{ steps.getRuntimeConfig.output.params }}