AWS Native

Pulumi Official
Package maintained by Pulumi
v0.16.1 published on Saturday, Apr 30, 2022 by Pulumi

Component

Resource schema for AWS::ImageBuilder::Component

Example Usage

Example

using Pulumi;
using AwsNative = Pulumi.AwsNative;

class MyStack : Stack
{
    public MyStack()
    {
        var componentAllParameters = new AwsNative.ImageBuilder.Component("componentAllParameters", new AwsNative.ImageBuilder.ComponentArgs
        {
            Name = "component-name",
            Platform = AwsNative.ImageBuilder.ComponentPlatform.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
 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.""
",
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws-native/sdk/go/aws/imagebuilder"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := imagebuilder.NewComponent(ctx, "componentAllParameters", &imagebuilder.ComponentArgs{
			Name:              pulumi.String("component-name"),
			Platform:          imagebuilder.ComponentPlatformLinux,
			Version:           pulumi.String("1.0.0"),
			Description:       pulumi.String("description"),
			ChangeDescription: pulumi.String("change-description"),
			KmsKeyId:          pulumi.String("customer-kms-key-id"),
			SupportedOsVersions: pulumi.StringArray{
				pulumi.String("Amazon Linux 2"),
			},
			Tags: pulumi.Any{
				CustomerComponentTagKey1: "CustomerComponentTagValue1",
				CustomerComponentTagKey2: "CustomerComponentTagValue2",
			},
			Data: pulumi.String("name: HelloWorldTestingLinuxDoc - InlineData\n description: 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"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

Coming soon!

import pulumi
import pulumi_aws_native as aws_native

component_all_parameters = aws_native.imagebuilder.Component("componentAllParameters",
    name="component-name",
    platform=aws_native.imagebuilder.ComponentPlatform.LINUX,
    version="1.0.0",
    description="description",
    change_description="change-description",
    kms_key_id="customer-kms-key-id",
    supported_os_versions=["Amazon Linux 2"],
    tags={
        "customerComponentTagKey1": "CustomerComponentTagValue1",
        "customerComponentTagKey2": "CustomerComponentTagValue2",
    },
    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."
""")
import * as pulumi from "@pulumi/pulumi";
import * as aws_native from "@pulumi/aws-native";

const componentAllParameters = new aws_native.imagebuilder.Component("componentAllParameters", {
    name: "component-name",
    platform: aws_native.imagebuilder.ComponentPlatform.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
 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."
`,
});

Coming soon!

Example

using Pulumi;
using AwsNative = Pulumi.AwsNative;

class MyStack : Stack
{
    public MyStack()
    {
        var componentAllParameters = new AwsNative.ImageBuilder.Component("componentAllParameters", new AwsNative.ImageBuilder.ComponentArgs
        {
            Name = "component-name",
            Platform = AwsNative.ImageBuilder.ComponentPlatform.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
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.""
",
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws-native/sdk/go/aws/imagebuilder"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := imagebuilder.NewComponent(ctx, "componentAllParameters", &imagebuilder.ComponentArgs{
			Name:              pulumi.String("component-name"),
			Platform:          imagebuilder.ComponentPlatformLinux,
			Version:           pulumi.String("1.0.0"),
			Description:       pulumi.String("description"),
			ChangeDescription: pulumi.String("change-description"),
			KmsKeyId:          pulumi.String("customer-kms-key-id"),
			SupportedOsVersions: pulumi.StringArray{
				pulumi.String("Amazon Linux 2"),
			},
			Tags: pulumi.Any{
				CustomerComponentTagKey1: "CustomerComponentTagValue1",
				CustomerComponentTagKey2: "CustomerComponentTagValue2",
			},
			Data: pulumi.String("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"),
		})
		if err != nil {
			return err
		}
		return nil
	})
}

Coming soon!

import pulumi
import pulumi_aws_native as aws_native

component_all_parameters = aws_native.imagebuilder.Component("componentAllParameters",
    name="component-name",
    platform=aws_native.imagebuilder.ComponentPlatform.LINUX,
    version="1.0.0",
    description="description",
    change_description="change-description",
    kms_key_id="customer-kms-key-id",
    supported_os_versions=["Amazon Linux 2"],
    tags={
        "customerComponentTagKey1": "CustomerComponentTagValue1",
        "customerComponentTagKey2": "CustomerComponentTagValue2",
    },
    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."
""")
import * as pulumi from "@pulumi/pulumi";
import * as aws_native from "@pulumi/aws-native";

const componentAllParameters = new aws_native.imagebuilder.Component("componentAllParameters", {
    name: "component-name",
    platform: aws_native.imagebuilder.ComponentPlatform.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
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."
`,
});

Coming soon!

Example

using Pulumi;
using AwsNative = Pulumi.AwsNative;

class MyStack : Stack
{
    public MyStack()
    {
        var componentAllParameters = new AwsNative.ImageBuilder.Component("componentAllParameters", new AwsNative.ImageBuilder.ComponentArgs
        {
            Name = "component-name",
            Platform = AwsNative.ImageBuilder.ComponentPlatform.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" },
            },
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws-native/sdk/go/aws/imagebuilder"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := imagebuilder.NewComponent(ctx, "componentAllParameters", &imagebuilder.ComponentArgs{
			Name:              pulumi.String("component-name"),
			Platform:          imagebuilder.ComponentPlatformLinux,
			Version:           pulumi.String("1.0.0"),
			Uri:               pulumi.String("s3://imagebuilder/component_document.yml"),
			Description:       pulumi.String("description"),
			ChangeDescription: pulumi.String("change-description"),
			KmsKeyId:          pulumi.String("customer-kms-key-id"),
			SupportedOsVersions: pulumi.StringArray{
				pulumi.String("CentOS"),
				pulumi.String("Red Hat Enterprise Linux"),
			},
			Tags: pulumi.Any{
				CustomerComponentTagKey1: "CustomerComponentTagValue1",
				CustomerComponentTagKey2: "CustomerComponentTagValue2",
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

Coming soon!

import pulumi
import pulumi_aws_native as aws_native

component_all_parameters = aws_native.imagebuilder.Component("componentAllParameters",
    name="component-name",
    platform=aws_native.imagebuilder.ComponentPlatform.LINUX,
    version="1.0.0",
    uri="s3://imagebuilder/component_document.yml",
    description="description",
    change_description="change-description",
    kms_key_id="customer-kms-key-id",
    supported_os_versions=[
        "CentOS",
        "Red Hat Enterprise Linux",
    ],
    tags={
        "customerComponentTagKey1": "CustomerComponentTagValue1",
        "customerComponentTagKey2": "CustomerComponentTagValue2",
    })
import * as pulumi from "@pulumi/pulumi";
import * as aws_native from "@pulumi/aws-native";

const componentAllParameters = new aws_native.imagebuilder.Component("componentAllParameters", {
    name: "component-name",
    platform: aws_native.imagebuilder.ComponentPlatform.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",
    },
});

Coming soon!

Example

using Pulumi;
using AwsNative = Pulumi.AwsNative;

class MyStack : Stack
{
    public MyStack()
    {
        var componentAllParameters = new AwsNative.ImageBuilder.Component("componentAllParameters", new AwsNative.ImageBuilder.ComponentArgs
        {
            Name = "component-name",
            Platform = AwsNative.ImageBuilder.ComponentPlatform.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" },
            },
        });
    }

}
package main

import (
	"github.com/pulumi/pulumi-aws-native/sdk/go/aws/imagebuilder"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := imagebuilder.NewComponent(ctx, "componentAllParameters", &imagebuilder.ComponentArgs{
			Name:              pulumi.String("component-name"),
			Platform:          imagebuilder.ComponentPlatformLinux,
			Version:           pulumi.String("1.0.0"),
			Uri:               pulumi.String("s3://imagebuilder/component_document.yml"),
			Description:       pulumi.String("description"),
			ChangeDescription: pulumi.String("change-description"),
			KmsKeyId:          pulumi.String("customer-kms-key-id"),
			SupportedOsVersions: pulumi.StringArray{
				pulumi.String("CentOS"),
				pulumi.String("Red Hat Enterprise Linux"),
			},
			Tags: pulumi.Any{
				CustomerComponentTagKey1: "CustomerComponentTagValue1",
				CustomerComponentTagKey2: "CustomerComponentTagValue2",
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}

Coming soon!

import pulumi
import pulumi_aws_native as aws_native

component_all_parameters = aws_native.imagebuilder.Component("componentAllParameters",
    name="component-name",
    platform=aws_native.imagebuilder.ComponentPlatform.LINUX,
    version="1.0.0",
    uri="s3://imagebuilder/component_document.yml",
    description="description",
    change_description="change-description",
    kms_key_id="customer-kms-key-id",
    supported_os_versions=[
        "CentOS",
        "Red Hat Enterprise Linux",
    ],
    tags={
        "customerComponentTagKey1": "CustomerComponentTagValue1",
        "customerComponentTagKey2": "CustomerComponentTagValue2",
    })
import * as pulumi from "@pulumi/pulumi";
import * as aws_native from "@pulumi/aws-native";

const componentAllParameters = new aws_native.imagebuilder.Component("componentAllParameters", {
    name: "component-name",
    platform: aws_native.imagebuilder.ComponentPlatform.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",
    },
});

Coming soon!

Create a Component Resource

new Component(name: string, args: ComponentArgs, opts?: CustomResourceOptions);
@overload
def Component(resource_name: str,
              opts: Optional[ResourceOptions] = None,
              change_description: Optional[str] = None,
              data: Optional[str] = None,
              description: Optional[str] = None,
              kms_key_id: Optional[str] = None,
              name: Optional[str] = None,
              platform: Optional[ComponentPlatform] = None,
              supported_os_versions: Optional[Sequence[str]] = None,
              tags: Optional[Any] = None,
              uri: Optional[str] = None,
              version: Optional[str] = None)
@overload
def Component(resource_name: str,
              args: ComponentArgs,
              opts: Optional[ResourceOptions] = None)
func NewComponent(ctx *Context, name string, args ComponentArgs, opts ...ResourceOption) (*Component, error)
public Component(string name, ComponentArgs args, CustomResourceOptions? opts = null)
public Component(String name, ComponentArgs args)
public Component(String name, ComponentArgs args, CustomResourceOptions options)
type: aws-native:imagebuilder:Component
properties: # The arguments to resource properties.
options: # Bag of options to control resource's behavior.

name string
The unique name of the resource.
args ComponentArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
resource_name str
The unique name of the resource.
args ComponentArgs
The arguments to resource properties.
opts ResourceOptions
Bag of options to control resource's behavior.
ctx Context
Context object for the current deployment.
name string
The unique name of the resource.
args ComponentArgs
The arguments to resource properties.
opts ResourceOption
Bag of options to control resource's behavior.
name string
The unique name of the resource.
args ComponentArgs
The arguments to resource properties.
opts CustomResourceOptions
Bag of options to control resource's behavior.
name String
The unique name of the resource.
args ComponentArgs
The arguments to resource properties.
options CustomResourceOptions
Bag of options to control resource's behavior.

Component Resource Properties

To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

Inputs

The Component resource accepts the following input properties:

Platform Pulumi.AwsNative.ImageBuilder.ComponentPlatform

The platform of the component.

Version string

The version of the component.

ChangeDescription string

The change description of the component.

Data string

The data of the component.

Description string

The description of the component.

KmsKeyId string

The KMS key identifier used to encrypt the component.

Name string

The name of the component.

SupportedOsVersions List<string>

The operating system (OS) version supported by the component.

Tags object

The tags associated with the component.

Uri string

The uri of the component.

Platform ComponentPlatform

The platform of the component.

Version string

The version of the component.

ChangeDescription string

The change description of the component.

Data string

The data of the component.

Description string

The description of the component.

KmsKeyId string

The KMS key identifier used to encrypt the component.

Name string

The name of the component.

SupportedOsVersions []string

The operating system (OS) version supported by the component.

Tags interface{}

The tags associated with the component.

Uri string

The uri of the component.

platform ComponentPlatform

The platform of the component.

version String

The version of the component.

changeDescription String

The change description of the component.

data String

The data of the component.

description String

The description of the component.

kmsKeyId String

The KMS key identifier used to encrypt the component.

name String

The name of the component.

supportedOsVersions List

The operating system (OS) version supported by the component.

tags Object

The tags associated with the component.

uri String

The uri of the component.

platform ComponentPlatform

The platform of the component.

version string

The version of the component.

changeDescription string

The change description of the component.

data string

The data of the component.

description string

The description of the component.

kmsKeyId string

The KMS key identifier used to encrypt the component.

name string

The name of the component.

supportedOsVersions string[]

The operating system (OS) version supported by the component.

tags any

The tags associated with the component.

uri string

The uri of the component.

platform ComponentPlatform

The platform of the component.

version str

The version of the component.

change_description str

The change description of the component.

data str

The data of the component.

description str

The description of the component.

kms_key_id str

The KMS key identifier used to encrypt the component.

name str

The name of the component.

supported_os_versions Sequence[str]

The operating system (OS) version supported by the component.

tags Any

The tags associated with the component.

uri str

The uri of the component.

platform "Windows" | "Linux"

The platform of the component.

version String

The version of the component.

changeDescription String

The change description of the component.

data String

The data of the component.

description String

The description of the component.

kmsKeyId String

The KMS key identifier used to encrypt the component.

name String

The name of the component.

supportedOsVersions List

The operating system (OS) version supported by the component.

tags Any

The tags associated with the component.

uri String

The uri of the component.

Outputs

All input properties are implicitly available as output properties. Additionally, the Component resource produces the following output properties:

Arn string

The Amazon Resource Name (ARN) of the component.

Encrypted bool

The encryption status of the component.

Id string

The provider-assigned unique ID for this managed resource.

Type Pulumi.AwsNative.ImageBuilder.ComponentType

The type of the component denotes whether the component is used to build the image or only to test it.

Arn string

The Amazon Resource Name (ARN) of the component.

Encrypted bool

The encryption status of the component.

Id string

The provider-assigned unique ID for this managed resource.

Type ComponentType

The type of the component denotes whether the component is used to build the image or only to test it.

arn String

The Amazon Resource Name (ARN) of the component.

encrypted Boolean

The encryption status of the component.

id String

The provider-assigned unique ID for this managed resource.

type ComponentType

The type of the component denotes whether the component is used to build the image or only to test it.

arn string

The Amazon Resource Name (ARN) of the component.

encrypted boolean

The encryption status of the component.

id string

The provider-assigned unique ID for this managed resource.

type ComponentType

The type of the component denotes whether the component is used to build the image or only to test it.

arn str

The Amazon Resource Name (ARN) of the component.

encrypted bool

The encryption status of the component.

id str

The provider-assigned unique ID for this managed resource.

type ComponentType

The type of the component denotes whether the component is used to build the image or only to test it.

arn String

The Amazon Resource Name (ARN) of the component.

encrypted Boolean

The encryption status of the component.

id String

The provider-assigned unique ID for this managed resource.

type "BUILD" | "TEST"

The type of the component denotes whether the component is used to build the image or only to test it.

Supporting Types

ComponentPlatform

Windows
Windows
Linux
Linux
ComponentPlatformWindows
Windows
ComponentPlatformLinux
Linux
Windows
Windows
Linux
Linux
Windows
Windows
Linux
Linux
WINDOWS
Windows
LINUX
Linux
"Windows"
Windows
"Linux"
Linux

ComponentType

Build
BUILD
Test
TEST
ComponentTypeBuild
BUILD
ComponentTypeTest
TEST
Build
BUILD
Test
TEST
Build
BUILD
Test
TEST
BUILD
BUILD
TEST
TEST
"BUILD"
BUILD
"TEST"
TEST

Package Details

Repository
https://github.com/pulumi/pulumi-aws-native
License
Apache-2.0