Skip to content

Start an instance refresh.

POST
/v1/projects/{projectId}/asg/groups/{autoScalingGroupId}/instance-refreshes
Code sample: Shell / cURL
curl --request POST \
--url https://stratum.example.com/v1/projects/example/asg/groups/example/instance-refreshes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "minHealthyPercentage": 90, "maxBatchSize": 1, "instanceWarmupSeconds": 1, "targetLaunchTemplateVersion": "example" }'

Records the refresh and returns 202; the asg reconciler advances it one batch per tick (30 s): the oldest instances not at the target version are retired (draining from their target groups first) and relaunched at the target, never taking the group below minHealthyPercentage of desired size. One active refresh per group (409 otherwise). Cedar-gated on asg:StartInstanceRefresh.

projectId
required
string
/^p-[a-z0-9-]+$/
autoScalingGroupId
required
string
/^asg-[a-z0-9]+$/
Media typeapplication/json

All fields optional; an empty body starts a refresh toward what the group’s launch-template reference resolves to now.

object
minHealthyPercentage

The floor of InService, healthy, warmed-up instances kept during the refresh, as a percentage of desired size (rounded up). At 100 the controller launches a replacement first and retires an old instance once it is warm, which needs room under maxSize.

integer
default: 90 <= 100
maxBatchSize

How many instances may be replaced per reconciler pass, bounded by the floor.

integer
default: 1 >= 1
instanceWarmupSeconds

Defaults to the group’s health-check grace period.

integer
<= 7200
targetLaunchTemplateVersion

$LATEST, $DEFAULT or an ltv-… id; resolved now and snapshotted. Naming an ltv-… id also moves the group’s own reference to it. Omitted: the group’s reference as it resolves now.

string

The refresh, Pending.

Media typeapplication/json

One instance refresh: a rolling replacement of the group’s instances toward a launch-template version snapshotted when the refresh started, driven one batch per asg reconciler tick.

object
id
required

ir-…

string
autoScalingGroupId
required
string
status
required

Pending until the first reconciler pass; Cancelling issues no further batches and lands as Cancelled once the in-flight replacements are up; Failed pauses the refresh after three replacement instances were themselves replaced (see failureReason).

string
Allowed values: Pending InProgress Successful Failed Cancelling Cancelled
minHealthyPercentage
required

The InService-and-healthy floor, as a percentage of desired size, kept throughout.

integer
maxBatchSize
required
integer
instanceWarmupSeconds
required

How long a replacement must be InService before it counts toward the floor.

integer
targetLaunchTemplateVersion
required

ltv-… — resolved and snapshotted at start; a version created later is not chased.

string
instancesToUpdate
required
integer
instancesUpdated
required
integer
progressPercentage
required
integer
failedReplacements
required
integer
failureReason
string
createdBy
required
string
startedAt
required
string format: date-time
finishedAt
string format: date-time
updatedAt
required
string format: date-time

Example

{
"status": "Pending"
}

Bad request.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}

Authenticated but not authorized.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}

Conflicting state.

Media typeapplication/problem+json
object
type
required
string format: uri
title
required
string
status
required
integer
>= 400 <= 599
detail
string
instance
string format: uri-reference
requestId
required
string
code
required
string
issues

The findings of a rejected IAM policy document (custom and resource policies).

Array<object>

One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.

object
code
required

The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.

string
statement
required

Index of the statement at fault; -1 for the document as a whole.

integer
>= -1
detail
required
string
action

The offending action, where one is at fault (ACTION_NOT_APPLICABLE).

string
errors

Field errors, for codes that carry them: each problem at its field (see FieldError). Documented on the responses that set it, e.g. approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED. Absent otherwise.

Array<object>

One field’s problem, the stage-2 installer API’s shape. field is the field’s path, message what is wrong with it.

object
field
required

The field’s path, e.g. links[0].interface, disks[1].confirm, mgmt.address or role; empty for the whole request.

string
message
required
string
details

Structured facts about the refusal, for codes that carry them. The shape is fixed per code and documented on the response that answers it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and IMAGE_IN_USE. Absent for codes that carry none.

object
key
additional properties
any

Example

{
"issues": [
{
"code": "ACTION_NOT_APPLICABLE",
"action": "compute:CreateVpc"
}
]
}