Skip to content

Instantly share code, notes, and snippets.

@filipeandre
Last active May 2, 2025 19:54
Show Gist options
  • Save filipeandre/687118ee0c5c52f37cfd4c61e38cd914 to your computer and use it in GitHub Desktop.
Save filipeandre/687118ee0c5c52f37cfd4c61e38cd914 to your computer and use it in GitHub Desktop.
Test substitution logic for IP construction with dummy resource (sub, select, ssm)
AWSTemplateFormatVersion: '2010-09-09'
Description: Test substitution logic for IP construction with dummy resource.
Resources:
DummyResource:
Type: AWS::CloudFormation::WaitConditionHandle
Outputs:
FabricComponentsStaticIP:
Value: !Sub
- "${Octet1}.${Octet2}.${Octet3}.10/${SubnetMask}"
- Octet1: !Select [0, !Split [".", "10.1.2.0"]]
Octet2: !Select [1, !Split [".", "10.1.2.0"]]
Octet3: !Select [2, !Split [".", "10.1.2.0"]]
SubnetMask: "{{resolve:ssm:/subnet_mask}}"
AWSTemplateFormatVersion: '2010-09-09'
Description: Test substitution logic for IP construction with dummy resource.
Resources:
DummyResource:
Type: AWS::CloudFormation::WaitConditionHandle
CouchDBInstanceStaticIPAZ1Config:
Type: Custom::JsCode
Properties:
ServiceToken: !Sub '{{resolve:ssm:/JsVmArn}}'
JSCode: !Sub |
( () => {
const cidr = "{{resolve:ssm:/Subnet1Cidr}}";
const subnetMask = "{{resolve:ssm:/subnet_mask}}";
const [octet1, octet2, octet3] = cidr.split("/")[0].split(".");
const staticIP = `${!octet1}.${!octet2}.${!octet3}.10/${!subnetMask}`;
return {
StaticIP: staticIP
};
})()
Outputs:
StaticIP:
Value: !GetAtt CouchDBInstanceStaticIPAZ1Config.StaticIP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment