@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:
|
|
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.
|
|
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.
|
|
15
|
-
"@friggframework/test": "2.0.0--canary.461.
|
|
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.
|
|
38
|
-
"@friggframework/prettier-config": "2.0.0--canary.461.
|
|
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": "
|
|
73
|
+
"gitHead": "b8d8dfde09edee96392f40cf86093afd4cbc1216"
|
|
74
74
|
}
|