Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions cloud/aws/deploy/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,21 @@ func (a *NitricAwsPulumiProvider) resourcesStore(ctx *pulumi.Context) error {
return string(indexJson), nil
}).(pulumi.StringOutput)

// Auto-select SSM parameter tier based on value size.
// Standard tier supports up to 4,096 chars; Advanced supports up to 8,192.
ssmTier := resourceIndexJson.ApplyT(func(val string) string {
if len(val) > 4096 {
return "Advanced"
}
return "Standard"
}).(pulumi.StringOutput)

_, err := ssm.NewParameter(ctx, "nitric-resource-index", &ssm.ParameterArgs{
// Create a deterministic name for the resource index
Name: pulumi.Sprintf("/nitric/%s/resource-index", a.StackId),
DataType: pulumi.String("text"),
Type: pulumi.String("String"),
Tier: ssmTier,
// Store the nitric resource index serialized as a JSON string
Value: resourceIndexJson,
})
Expand Down
1 change: 1 addition & 0 deletions cloud/aws/deploytf/.nitric/modules/parameter/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ resource "aws_ssm_parameter" "text_parameter" {
type = "String"
value = var.parameter_value
data_type = "text"
tier = var.parameter_tier
}

# Create the access policy
Expand Down
11 changes: 11 additions & 0 deletions cloud/aws/deploytf/.nitric/modules/parameter/variables.tf
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,14 @@ variable "parameter_value" {
description = "The text value of the parameter"
type = string
}

variable "parameter_tier" {
description = "The tier of the SSM parameter (Standard or Advanced). Standard supports up to 4,096 characters; Advanced supports up to 8,192 characters."
type = string
default = "Standard"

validation {
condition = contains(["Standard", "Advanced"], var.parameter_tier)
error_message = "parameter_tier must be one of: Standard, Advanced."
}
}
20 changes: 20 additions & 0 deletions cloud/aws/deploytf/generated/parameter/Parameter.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ type Parameter interface {
Node() constructs.Node
ParameterName() *string
SetParameterName(val *string)
ParameterTier() *string
SetParameterTier(val *string)
ParameterValue() *string
SetParameterValue(val *string)
// Experimental.
Expand Down Expand Up @@ -169,6 +171,16 @@ func (j *jsiiProxy_Parameter) ParameterName() *string {
return returns
}

func (j *jsiiProxy_Parameter) ParameterTier() *string {
var returns *string
_jsii_.Get(
j,
"parameterTier",
&returns,
)
return returns
}

func (j *jsiiProxy_Parameter) ParameterValue() *string {
var returns *string
_jsii_.Get(
Expand Down Expand Up @@ -295,6 +307,14 @@ func (j *jsiiProxy_Parameter)SetParameterName(val *string) {
)
}

func (j *jsiiProxy_Parameter)SetParameterTier(val *string) {
_jsii_.Set(
j,
"parameterTier",
val,
)
}

func (j *jsiiProxy_Parameter)SetParameterValue(val *string) {
if err := j.validateSetParameterValueParameters(val); err != nil {
panic(err)
Expand Down
3 changes: 3 additions & 0 deletions cloud/aws/deploytf/generated/parameter/ParameterConfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,8 @@ type ParameterConfig struct {
ParameterName *string `field:"required" json:"parameterName" yaml:"parameterName"`
// The text value of the parameter.
ParameterValue *string `field:"required" json:"parameterValue" yaml:"parameterValue"`
// The tier of the SSM parameter (Standard or Advanced).
// Docs: https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ssm_parameter#tier
ParameterTier *string `field:"optional" json:"parameterTier" yaml:"parameterTier"`
}

8 changes: 8 additions & 0 deletions cloud/aws/deploytf/resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,18 @@ func (a *NitricAwsTerraformProvider) ResourcesStore(stack cdktf.TerraformStack,
return fmt.Errorf("failed to marshal resource index: %w", err)
}

// Auto-select SSM parameter tier based on value size.
// Standard tier supports up to 4,096 chars; Advanced supports up to 8,192.
parameterTier := "Standard"
if len(indexJson) > 4096 {
parameterTier = "Advanced"
}

parameter.NewParameter(stack, jsii.String("nitric_resources"), &parameter.ParameterConfig{
ParameterName: jsii.Sprintf("/nitric/%s/resource-index", *a.Stack.StackIdOutput()),
ParameterValue: jsii.String(string(indexJson)),
AccessRoleNames: jsii.Strings(accessRoleNames...),
ParameterTier: jsii.String(parameterTier),
})

return nil
Expand Down