AWS::ImageBuilder::Component - AWS CloudFormation (original) (raw)

Creates a new component that can be used to build, validate, test, and assess your image. The component is based on a YAML document that you specify using exactly one of the following methods:

Syntax

To declare this entity in your AWS CloudFormation template, use the following syntax:

JSON

{
  "Type" : "AWS::ImageBuilder::Component",
  "Properties" : {
      "ChangeDescription" : String,
      "Data" : String,
      "Description" : String,
      "KmsKeyId" : String,
      "Name" : String,
      "Platform" : String,
      "SupportedOsVersions" : [ String, ... ],
      "Tags" : {Key: Value, ...},
      "Uri" : String,
      "Version" : String
    }
}

YAML

Type: AWS::ImageBuilder::Component
Properties:
  ChangeDescription: String
  Data: String
  Description: String
  KmsKeyId: String
  Name: String
  Platform: String
  SupportedOsVersions: 
    - String
  Tags: 
    Key: Value
  Uri: String
  Version: String

Properties

ChangeDescription

The change description of the component. Describes what change has been made in this version, or what makes this version different from other versions of the component.

Required: No

Type: String

Minimum: 1

Maximum: 1024

Update requires: Replacement

Data

Component data contains inline YAML document content for the component. Alternatively, you can specify the uri of a YAML document file stored in Amazon S3. However, you cannot specify both properties.

Required: No

Type: String

Minimum: 1

Maximum: 16000

Update requires: Replacement

Description

Describes the contents of the component.

Required: No

Type: String

Minimum: 1

Maximum: 1024

Update requires: Replacement

KmsKeyId

The ID of the KMS key that is used to encrypt this component.

Required: No

Type: String

Minimum: 1

Maximum: 1024

Update requires: Replacement

Name

The name of the component.

Required: Yes

Type: String

Pattern: ^[-_A-Za-z-0-9][-_A-Za-z0-9 ]{1,126}[-_A-Za-z-0-9]$

Update requires: Replacement

Platform

The operating system platform of the component.

Required: Yes

Type: String

Allowed values: Windows | Linux | macOS

Update requires: Replacement

SupportedOsVersions

The operating system (OS) version supported by the component. If the OS information is available, a prefix match is performed against the base image OS version during image recipe creation.

Required: No

Type: Array of String

Minimum: 1

Maximum: 25

Update requires: Replacement

Tags

The tags that apply to the component.

Required: No

Type: Object of String

Pattern: .{1,}

Update requires: Replacement

Uri

The uri of a YAML component document file. This must be an S3 URL (s3://bucket/key), and the requester must have permission to access the S3 bucket it points to. If you use Amazon S3, you can specify component content up to your service quota.

Alternatively, you can specify the YAML document inline, using the componentdata property. You cannot specify both properties.

Required: No

Type: String

Update requires: Replacement

Version

The component version. For example, 1.0.0.

Required: Yes

Type: String

Update requires: Replacement

Return values

Ref

When you pass the logical ID of this resource to the intrinsic Ref function, Ref returns the resource ARN, such asarn:aws:imagebuilder:us-west-2:123456789012:component/examplecomponent/2019.12.02/1.

For more information about using the Ref function, see Ref.

Fn::GetAtt

The Fn::GetAtt intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.

For more information about using the Fn::GetAtt intrinsic function, see Fn::GetAtt.

Arn

Returns the Amazon Resource Name (ARN) of the component. The following pattern is applied:^arn:aws[^:]*:imagebuilder:[^:]+:(?:\d{12}|aws):(?:image-recipe|infrastructure-configuration|distribution-configuration|component|image|image-pipeline)/[a-z0-9-_]+(?:/(?:(?:x|\d+)\.(?:x|\d+)\.(?:x|\d+))(?:/\d+)?)?$.

Encrypted

Returns the encryption status of the component. For example true orfalse.

Name

Returns the name of the component.

Type

Image Builder determines the component type based on the phases that are defined in the component document. If there is only one phase, and its name is "test", then the type is TEST. For all other components, the type is BUILD.

Examples

Create a component using Data

The following example shows the schema for the Component resource document in both JSON and YAML format. This example includes details for the Data field . You can use either the Data or Uri fields to reference the component document.

JSON

{
    "Resources": {
        "ComponentAllParameters": {
            "Type": "AWS::ImageBuilder::Component",
            "Properties": {
                "Name": "component-name",
                "Platform": "Linux",
                "Version": "1.0.0",
                "Description": "description",
                "ChangeDescription": "change-description",
                "KmsKeyId": "customer-kms-key-id",
                "SupportedOsVersions": ["Amazon Linux 2"],
                "Tags": {
                    "CustomerComponentTagKey1": "CustomerComponentTagValue1",
                    "CustomerComponentTagKey2": "CustomerComponentTagValue2"
                },
                "Data": "name: HelloWorldTestingLinuxDoc - InlineData\ndescription: This is hello world testing doc\nschemaVersion: 1.0\n\nphases:\n  - name: build\n    steps:\n      - name: HelloWorldStep\n        action: ExecuteBash\n        inputs:\n          commands:\n            - echo \"Hello World! Build.\"\n  - name: validate\n    steps:\n      - name: HelloWorldStep\n        action: ExecuteBash\n        inputs:\n          commands:\n            - echo \"Hello World! Validate.\"\n  - name: test\n    steps:\n      - name: HelloWorldStep\n        action: ExecuteBash\n        inputs:\n          commands:\n            - echo \"Hello World! Test.\"\n"
            }
        }
    }
} 

YAML

Resources:
  ComponentAllParameters:
    Type: 'AWS::ImageBuilder::Component'
    Properties:
      Name: 'component-name'
      Platform: 'Linux'
      Version: '1.0.0'
      Description: 'description'
      ChangeDescription: 'change-description'
      KmsKeyId: 'customer-kms-key-id'
      SupportedOsVersions: 
        - 'Amazon Linux 2'
      Tags:
        CustomerComponentTagKey1: 'CustomerComponentTagValue1'
        CustomerComponentTagKey2: 'CustomerComponentTagValue2'
      # Require one of 'Data' or 'Uri' for Component template
      Data: |
        name: HelloWorldTestingLinuxDoc - InlineData
        description: This is hello world testing doc
        schemaVersion: 1.0

        phases:
          - name: build
            steps:
              - name: HelloWorldStep
                action: ExecuteBash
                inputs:
                  commands:
                    - echo "Hello World! Build."
          - name: validate
            steps:
              - name: HelloWorldStep
                action: ExecuteBash
                inputs:
                  commands:
                    - echo "Hello World! Validate."
          - name: test
            steps:
              - name: HelloWorldStep
                action: ExecuteBash
                inputs:
                  commands:
                    - echo "Hello World! Test."

Create a component using a Uri

The following example shows the schema for the Component resource document in both YAML and JSON format. This example includes details for the Uri field . You can use either the Data or Uri fields to reference the component document.

YAML

Resources:
  ComponentAllParameters:
    Type: 'AWS::ImageBuilder::Component'
    Properties:
      Name: 'component-name'
      Platform: 'Linux'
      Version: '1.0.0'
      # Require one of 'Data' or 'Uri' for Component template
      Uri: 's3://imagebuilder/component_document.yml'
      Description: 'description'
      ChangeDescription: 'change-description'
      KmsKeyId: 'customer-kms-key-id'
      SupportedOsVersions: 
      - 'CentOS'
      - 'Red Hat Enterprise Linux'
      Tags:
        CustomerComponentTagKey1: 'CustomerComponentTagValue1'
        CustomerComponentTagKey2: 'CustomerComponentTagValue2'

JSON

{
    "Resources": {
        "ComponentAllParameters": {
            "Type": "AWS::ImageBuilder::Component",
            "Properties": {
                "Name": "component-name",
                "Platform": "Linux",
                "Version": "1.0.0",
                "Uri": "s3://imagebuilder/component_document.yml",
                "Description": "description",
                "ChangeDescription": "change-description",
                "KmsKeyId": "customer-kms-key-id",
                "SupportedOsVersions": ["CentOS", "Red Hat Enterprise Linux"],
                "Tags": {
                    "CustomerComponentTagKey1": "CustomerComponentTagValue1",
                    "CustomerComponentTagKey2": "CustomerComponentTagValue2"
                }
            }
        }
    }
}