CreateEnvironment - AWS Proton

CreateEnvironment

Deploy a new environment. An AWS Proton environment is created from an environment template that defines infrastructure and resources that can be shared across services.

You can provision environments using the following methods:
  • AWS-managed provisioning: AWS Proton makes direct calls to provision your resources.

  • Self-managed provisioning: AWS Proton makes pull requests on your repository to provide compiled infrastructure as code (IaC) files that your IaC engine uses to provision resources.

For more information, see Environments and Provisioning methods in the AWS Proton User Guide.

Request Syntax

{ "codebuildRoleArn": "string", "componentRoleArn": "string", "description": "string", "environmentAccountConnectionId": "string", "name": "string", "protonServiceRoleArn": "string", "provisioningRepository": { "branch": "string", "name": "string", "provider": "string" }, "spec": "string", "tags": [ { "key": "string", "value": "string" } ], "templateMajorVersion": "string", "templateMinorVersion": "string", "templateName": "string" }

Request Parameters

For information about the parameters that are common to all actions, see Common Parameters.

The request accepts the following data in JSON format.

codebuildRoleArn

The Amazon Resource Name (ARN) of the IAM service role that allows AWS Proton to provision infrastructure using CodeBuild-based provisioning on your behalf.

To use CodeBuild-based provisioning for the environment or for any service instance running in the environment, specify either the environmentAccountConnectionId or codebuildRoleArn parameter.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 2048.

Pattern: ^arn:(aws|aws-cn|aws-us-gov):iam::\d{12}:role/([\w+=,.@-]{1,512}[/:])*([\w+=,.@-]{1,64})$

Required: No

componentRoleArn

The Amazon Resource Name (ARN) of the IAM service role that AWS Proton uses when provisioning directly defined components in this environment. It determines the scope of infrastructure that a component can provision.

You must specify componentRoleArn to allow directly defined components to be associated with this environment.

For more information about components, see AWS Proton components in the AWS Proton User Guide.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 2048.

Pattern: ^arn:(aws|aws-cn|aws-us-gov):iam::\d{12}:role/([\w+=,.@-]{1,512}[/:])*([\w+=,.@-]{1,64})$

Required: No

description

A description of the environment that's being created and deployed.

Type: String

Length Constraints: Minimum length of 0. Maximum length of 500.

Required: No

environmentAccountConnectionId

The ID of the environment account connection that you provide if you're provisioning your environment infrastructure resources to an environment account. For more information, see Environment account connections in the AWS Proton User guide.

To use AWS-managed provisioning for the environment, specify either the environmentAccountConnectionId or protonServiceRoleArn parameter and omit the provisioningRepository parameter.

Type: String

Pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$

Required: No

name

The name of the environment.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 100.

Pattern: ^[0-9A-Za-z]+[0-9A-Za-z_\-]*$

Required: Yes

protonServiceRoleArn

The Amazon Resource Name (ARN) of the AWS Proton service role that allows AWS Proton to make calls to other services on your behalf.

To use AWS-managed provisioning for the environment, specify either the environmentAccountConnectionId or protonServiceRoleArn parameter and omit the provisioningRepository parameter.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 200.

Pattern: ^arn:(aws|aws-cn|aws-us-gov):[a-zA-Z0-9-]+:[a-zA-Z0-9-]*:\d{12}:([\w+=,.@-]+[/:])*[\w+=,.@-]+$

Required: No

provisioningRepository

The linked repository that you use to host your rendered infrastructure templates for self-managed provisioning. A linked repository is a repository that has been registered with AWS Proton. For more information, see CreateRepository.

To use self-managed provisioning for the environment, specify this parameter and omit the environmentAccountConnectionId and protonServiceRoleArn parameters.

Type: RepositoryBranchInput object

Required: No

spec

A YAML formatted string that provides inputs as defined in the environment template bundle schema file. For more information, see Environments in the AWS Proton User Guide.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 51200.

Required: Yes

tags

An optional list of metadata items that you can associate with the AWS Proton environment. A tag is a key-value pair.

For more information, see AWS Proton resources and tagging in the AWS Proton User Guide.

Type: Array of Tag objects

Array Members: Minimum number of 0 items. Maximum number of 50 items.

Required: No

templateMajorVersion

The major version of the environment template.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 20.

Pattern: ^(0|([1-9]{1}\d*))$

Required: Yes

templateMinorVersion

The minor version of the environment template.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 20.

Pattern: ^(0|([1-9]{1}\d*))$

Required: No

templateName

The name of the environment template. For more information, see Environment Templates in the AWS Proton User Guide.

Type: String

Length Constraints: Minimum length of 1. Maximum length of 100.

Pattern: ^[0-9A-Za-z]+[0-9A-Za-z_\-]*$

Required: Yes

Response Syntax

{ "environment": { "arn": "string", "codebuildRoleArn": "string", "componentRoleArn": "string", "createdAt": number, "deploymentStatus": "string", "deploymentStatusMessage": "string", "description": "string", "environmentAccountConnectionId": "string", "environmentAccountId": "string", "lastAttemptedDeploymentId": "string", "lastDeploymentAttemptedAt": number, "lastDeploymentSucceededAt": number, "lastSucceededDeploymentId": "string", "name": "string", "protonServiceRoleArn": "string", "provisioning": "string", "provisioningRepository": { "arn": "string", "branch": "string", "name": "string", "provider": "string" }, "spec": "string", "templateMajorVersion": "string", "templateMinorVersion": "string", "templateName": "string" } }

Response Elements

If the action is successful, the service sends back an HTTP 200 response.

The following data is returned in JSON format by the service.

environment

The environment detail data that's returned by AWS Proton.

Type: Environment object

Errors

For information about the errors that are common to all actions, see Common Errors.

AccessDeniedException

There isn't sufficient access for performing this action.

HTTP Status Code: 400

ConflictException

The request couldn't be made due to a conflicting operation or resource.

HTTP Status Code: 400

InternalServerException

The request failed to register with the service.

HTTP Status Code: 500

ResourceNotFoundException

The requested resource wasn't found.

HTTP Status Code: 400

ServiceQuotaExceededException

A quota was exceeded. For more information, see AWS Proton Quotas in the AWS Proton User Guide.

HTTP Status Code: 400

ThrottlingException

The request was denied due to request throttling.

HTTP Status Code: 400

ValidationException

The input is invalid or an out-of-range value was supplied for the input parameter.

HTTP Status Code: 400

See Also

For more information about using this API in one of the language-specific AWS SDKs, see the following: