Skip to content

Commit 001dccf

Browse files
authored
Fix ServiceDeployer bundling properties propagation (#48)
1 parent 0bbdf3e commit 001dccf

7 files changed

+184
-1
lines changed

lib/restate-constructs/service-deployer.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ export class ServiceDeployer extends Construct {
122122
environment: {
123123
NODE_OPTIONS: "--enable-source-maps",
124124
},
125-
bundling: {
125+
bundling: props?.bundling ?? {
126126
minify: false,
127127
sourceMap: true,
128128
},

test/__snapshots__/restate-constructs.test.ts.snap

+120
Original file line numberDiff line numberDiff line change
@@ -1765,3 +1765,123 @@ Mappings:
17651765
value: nodejs20.x
17661766
"
17671767
`;
1768+
1769+
exports[`Restate constructs Service Deployer overrides 1`] = `
1770+
"Resources:
1771+
ServiceDeployerEventHandlerServiceRoleF133584F:
1772+
Type: 'AWS::IAM::Role'
1773+
Properties:
1774+
AssumeRolePolicyDocument:
1775+
Statement:
1776+
- Action: 'sts:AssumeRole'
1777+
Effect: Allow
1778+
Principal:
1779+
Service: lambda.amazonaws.com
1780+
Version: '2012-10-17'
1781+
ManagedPolicyArns:
1782+
- 'Fn::Join':
1783+
- ''
1784+
- - 'arn:'
1785+
- Ref: 'AWS::Partition'
1786+
- ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
1787+
ServiceDeployerEventHandler89EAD25F:
1788+
Type: 'AWS::Lambda::Function'
1789+
Properties:
1790+
Architectures:
1791+
- arm64
1792+
Code:
1793+
S3Bucket: cdk-hnb659fds-assets-account-id-region
1794+
S3Key: 306482e190035b7e874091243db3832ecc2693d3f1989445f3b7f5ffff2957fe.zip
1795+
Description: Restate custom registration handler
1796+
Environment:
1797+
Variables:
1798+
NODE_OPTIONS: '--enable-source-maps'
1799+
Handler: index.handler
1800+
MemorySize: 128
1801+
Role:
1802+
'Fn::GetAtt':
1803+
- ServiceDeployerEventHandlerServiceRoleF133584F
1804+
- Arn
1805+
Runtime: nodejs18.x
1806+
Timeout: 180
1807+
DependsOn:
1808+
- ServiceDeployerEventHandlerServiceRoleF133584F
1809+
ServiceDeployerDeploymentLogs5B8BE5D2:
1810+
Type: 'AWS::Logs::LogGroup'
1811+
Properties:
1812+
LogGroupName:
1813+
'Fn::Join':
1814+
- ''
1815+
- - /aws/lambda/
1816+
- Ref: ServiceDeployerEventHandler89EAD25F
1817+
RetentionInDays: 30
1818+
UpdateReplacePolicy: Retain
1819+
DeletionPolicy: RetainExceptOnCreate
1820+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRole865AFB0C:
1821+
Type: 'AWS::IAM::Role'
1822+
Properties:
1823+
AssumeRolePolicyDocument:
1824+
Statement:
1825+
- Action: 'sts:AssumeRole'
1826+
Effect: Allow
1827+
Principal:
1828+
Service: lambda.amazonaws.com
1829+
Version: '2012-10-17'
1830+
ManagedPolicyArns:
1831+
- 'Fn::Join':
1832+
- ''
1833+
- - 'arn:'
1834+
- Ref: 'AWS::Partition'
1835+
- ':iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
1836+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9:
1837+
Type: 'AWS::IAM::Policy'
1838+
Properties:
1839+
PolicyDocument:
1840+
Statement:
1841+
- Action: 'lambda:InvokeFunction'
1842+
Effect: Allow
1843+
Resource:
1844+
- 'Fn::GetAtt':
1845+
- ServiceDeployerEventHandler89EAD25F
1846+
- Arn
1847+
- 'Fn::Join':
1848+
- ''
1849+
- - 'Fn::GetAtt':
1850+
- ServiceDeployerEventHandler89EAD25F
1851+
- Arn
1852+
- ':*'
1853+
Version: '2012-10-17'
1854+
PolicyName: >-
1855+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
1856+
Roles:
1857+
- Ref: >-
1858+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRole865AFB0C
1859+
ServiceDeployerCustomResourceProviderframeworkonEvent528FE6C2:
1860+
Type: 'AWS::Lambda::Function'
1861+
Properties:
1862+
Code:
1863+
S3Bucket: cdk-hnb659fds-assets-account-id-region
1864+
S3Key: 4dc48ffba382f93077a1e6824599bbd4ceb6f91eb3d9442eca3b85bdb1a20b1e.zip
1865+
Description: >-
1866+
AWS CDK resource provider framework - onEvent
1867+
(RestateCloudStack/ServiceDeployer/CustomResourceProvider)
1868+
Environment:
1869+
Variables:
1870+
USER_ON_EVENT_FUNCTION_ARN:
1871+
'Fn::GetAtt':
1872+
- ServiceDeployerEventHandler89EAD25F
1873+
- Arn
1874+
Handler: framework.onEvent
1875+
Role:
1876+
'Fn::GetAtt':
1877+
- >-
1878+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRole865AFB0C
1879+
- Arn
1880+
Runtime: nodejs18.x
1881+
Timeout: 900
1882+
DependsOn:
1883+
- >-
1884+
ServiceDeployerCustomResourceProviderframeworkonEventServiceRoleDefaultPolicy740A65C9
1885+
- ServiceDeployerCustomResourceProviderframeworkonEventServiceRole865AFB0C
1886+
"
1887+
`;

test/e2e/deploy-ec2-alb.sh

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
set -euf -o pipefail
2+
3+
# need to run in dev so it can access the dev.restate.cloud hosted zone
4+
npx cdk --app 'npx tsx single-node-ec2-alb.e2e.ts' \
5+
--profile restate-cloud-dev-admin \
6+
deploy \
7+
--output cdk.ec2-alb.out \
8+
--context vpc_id=vpc-058ff0dc027b2df5a \
9+
--context domainName=dev.restate.cloud \
10+
--context hostname=single-node-ec2 #\
11+
# --require-approval never \
12+
# --no-rollback

test/e2e/deploy-ec2-direct.sh

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
set -euf -o pipefail
2+
3+
npx cdk --app 'npx tsx single-node-ec2.e2e.ts' \
4+
--profile restate-eng \
5+
deploy \
6+
--require-approval never
7+
# --no-rollback
8+
# --context vpc_id=vpc-0d2e373fed47934f3 \ # VPC in mgmt account 663487780041 with egress gw
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
set -euf -o pipefail
2+
3+
export AWS_PROFILE=restate-eng RESTATE_ENV_ID=env_201j8ncr31esdhxzkk8jzkkgffw RESTATE_API_KEY=key_10urPk2V8gxnLKo84E7RYum.EfiNa3UiVoXKXmRbGBTPhifFv6uMeRch68rKotZRLwLM
4+
export RESTATE_ENV_URL=https://$(echo $RESTATE_ENV_ID | cut -f2 -d_).env.us.restate.cloud/Greeter/greet
5+
6+
npx cdk --app 'npx tsx restate-cloud.e2e.ts' synth
7+
npx cdk --app 'npx tsx restate-cloud.e2e.ts' deploy --require-approval never --no-rollback
8+
9+
curl $RESTATE_ENV_URL -H "Authorization: Bearer $RESTATE_API_KEY" --json '"e2e-test"'
10+
11+
npx cdk --app 'npx tsx restate-cloud.e2e.ts' destroy --force

test/e2e/destroy-ec2-alb.sh

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
set -euf -o pipefail
2+
3+
# need to run in dev so it can access the dev.restate.cloud hosted zone
4+
npx cdk --app 'npx tsx single-node-ec2-alb.e2e.ts' \
5+
--profile restate-cloud-dev-admin \
6+
destroy \
7+
--output cdk.ec2-alb.out \
8+
--context vpc_id=vpc-058ff0dc027b2df5a \
9+
--context domainName=dev.restate.cloud \
10+
--context hostname=single-node-ec2 \
11+
--force

test/restate-constructs.test.ts

+21
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,27 @@ describe("Restate constructs", () => {
4444
});
4545
});
4646

47+
test("Service Deployer overrides", () => {
48+
const app = new cdk.App();
49+
const stack = new cdk.Stack(app, "RestateCloudStack", {
50+
env: { account: "account-id", region: "region" },
51+
});
52+
const serviceDeployer = new ServiceDeployer(stack, "ServiceDeployer", {
53+
// only needed in testing, where the relative path of the registration function is different from how customers would use it
54+
entry: "dist/register-service-handler/index.js",
55+
bundling: {
56+
minify: true,
57+
sourceMap: false,
58+
target: "node20",
59+
},
60+
});
61+
62+
expect(stack).toMatchCdkSnapshot({
63+
ignoreAssets: false,
64+
yaml: true,
65+
});
66+
});
67+
4768
test("Deploy a Lambda service handler to existing Restate environment", () => {
4869
const app = new cdk.App();
4970
const stack = new cdk.Stack(app, "LambdaServiceDeployment", {});

0 commit comments

Comments
 (0)