@friggframework/devtools 2.0.0--canary.461.ab0a628.0 → 2.0.0--canary.461.b8d8dfd.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,6 +59,38 @@ class MigrationBuilder extends InfrastructureBuilder {
59
59
  environment: {},
60
60
  };
61
61
 
62
+ // Create S3 bucket for migration status tracking
63
+ result.resources.FriggMigrationStatusBucket = {
64
+ Type: 'AWS::S3::Bucket',
65
+ Properties: {
66
+ BucketName: '${self:service}-${self:provider.stage}-migration-status',
67
+ VersioningConfiguration: {
68
+ Status: 'Enabled', // Enable versioning for audit trail
69
+ },
70
+ LifecycleConfiguration: {
71
+ Rules: [
72
+ {
73
+ Id: 'DeleteOldMigrations',
74
+ Status: 'Enabled',
75
+ ExpirationInDays: 90, // Keep migration history for 90 days
76
+ },
77
+ ],
78
+ },
79
+ PublicAccessBlockConfiguration: {
80
+ BlockPublicAcls: true,
81
+ BlockPublicPolicy: true,
82
+ IgnorePublicAcls: true,
83
+ RestrictPublicBuckets: true,
84
+ },
85
+ Tags: [
86
+ { Key: 'ManagedBy', Value: 'Frigg' },
87
+ { Key: 'Purpose', Value: 'MigrationStatusTracking' },
88
+ ],
89
+ },
90
+ };
91
+
92
+ console.log(' ✓ Created FriggMigrationStatusBucket resource');
93
+
62
94
  // Create SQS queue for migration jobs
63
95
  result.resources.DbMigrationQueue = {
64
96
  Type: 'AWS::SQS::Queue',
@@ -176,6 +208,10 @@ class MigrationBuilder extends InfrastructureBuilder {
176
208
 
177
209
  console.log(' ✓ Created dbMigrationRouter function');
178
210
 
211
+ // Add S3 bucket name to environment (for migration status tracking)
212
+ result.environment.S3_BUCKET_NAME = { Ref: 'FriggMigrationStatusBucket' };
213
+ result.environment.MIGRATION_STATUS_BUCKET = { Ref: 'FriggMigrationStatusBucket' };
214
+
179
215
  // Add queue URL to environment
180
216
  result.environment.DB_MIGRATION_QUEUE_URL = { Ref: 'DbMigrationQueue' };
181
217
 
@@ -183,7 +219,7 @@ class MigrationBuilder extends InfrastructureBuilder {
183
219
  // Avoids Prisma needing to load app definition to determine database type
184
220
  result.environment.DB_TYPE = 'postgresql';
185
221
 
186
- console.log(' ✓ Added DB_MIGRATION_QUEUE_URL and DB_TYPE environment variables');
222
+ console.log(' ✓ Added S3_BUCKET_NAME, DB_MIGRATION_QUEUE_URL, and DB_TYPE environment variables');
187
223
 
188
224
  // Add IAM permissions for SQS
189
225
  result.iamStatements.push({
@@ -201,7 +237,6 @@ class MigrationBuilder extends InfrastructureBuilder {
201
237
  // Add IAM permissions for S3 (migration status storage)
202
238
  // Migration functions need to read/write migration status in S3
203
239
  // to avoid chicken-and-egg dependency on User/Process tables
204
- // Note: Uses wildcard for bucket as S3_BUCKET_NAME is set at runtime via environment
205
240
  result.iamStatements.push({
206
241
  Effect: 'Allow',
207
242
  Action: [
@@ -209,7 +244,15 @@ class MigrationBuilder extends InfrastructureBuilder {
209
244
  's3:GetObject',
210
245
  's3:DeleteObject',
211
246
  ],
212
- Resource: 'arn:aws:s3:::*/migrations/*', // Wildcard allows any S3 bucket
247
+ Resource: {
248
+ 'Fn::Join': [
249
+ '',
250
+ [
251
+ { 'Fn::GetAtt': ['FriggMigrationStatusBucket', 'Arn'] },
252
+ '/migrations/*',
253
+ ],
254
+ ],
255
+ },
213
256
  });
214
257
 
215
258
  console.log(' ✓ Added S3 IAM permissions for migration status tracking');
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@friggframework/devtools",
3
3
  "prettier": "@friggframework/prettier-config",
4
- "version": "2.0.0--canary.461.ab0a628.0",
4
+ "version": "2.0.0--canary.461.b8d8dfd.0",
5
5
  "dependencies": {
6
6
  "@aws-sdk/client-ec2": "^3.835.0",
7
7
  "@aws-sdk/client-kms": "^3.835.0",
@@ -11,8 +11,8 @@
11
11
  "@babel/eslint-parser": "^7.18.9",
12
12
  "@babel/parser": "^7.25.3",
13
13
  "@babel/traverse": "^7.25.3",
14
- "@friggframework/schemas": "2.0.0--canary.461.ab0a628.0",
15
- "@friggframework/test": "2.0.0--canary.461.ab0a628.0",
14
+ "@friggframework/schemas": "2.0.0--canary.461.b8d8dfd.0",
15
+ "@friggframework/test": "2.0.0--canary.461.b8d8dfd.0",
16
16
  "@hapi/boom": "^10.0.1",
17
17
  "@inquirer/prompts": "^5.3.8",
18
18
  "axios": "^1.7.2",
@@ -34,8 +34,8 @@
34
34
  "serverless-http": "^2.7.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@friggframework/eslint-config": "2.0.0--canary.461.ab0a628.0",
38
- "@friggframework/prettier-config": "2.0.0--canary.461.ab0a628.0",
37
+ "@friggframework/eslint-config": "2.0.0--canary.461.b8d8dfd.0",
38
+ "@friggframework/prettier-config": "2.0.0--canary.461.b8d8dfd.0",
39
39
  "aws-sdk-client-mock": "^4.1.0",
40
40
  "aws-sdk-client-mock-jest": "^4.1.0",
41
41
  "jest": "^30.1.3",
@@ -70,5 +70,5 @@
70
70
  "publishConfig": {
71
71
  "access": "public"
72
72
  },
73
- "gitHead": "ab0a628208fba30774e2d6b3a797e379bc28b89b"
73
+ "gitHead": "b8d8dfde09edee96392f40cf86093afd4cbc1216"
74
74
  }