@gugananuvem/aws-local-simulator 1.0.33 → 1.0.34

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.
Files changed (79) hide show
  1. package/README.md +834 -834
  2. package/aws-config +153 -153
  3. package/bin/aws-local-simulator.js +63 -63
  4. package/package.json +3 -2
  5. package/src/config/config-loader.js +114 -114
  6. package/src/config/default-config.js +79 -79
  7. package/src/config/env-loader.js +68 -68
  8. package/src/index.js +146 -146
  9. package/src/index.mjs +123 -123
  10. package/src/server.js +463 -463
  11. package/src/services/apigateway/index.js +75 -75
  12. package/src/services/apigateway/server.js +607 -607
  13. package/src/services/apigateway/simulator.js +1405 -1405
  14. package/src/services/athena/index.js +75 -75
  15. package/src/services/athena/server.js +101 -101
  16. package/src/services/athena/simulador.js +998 -998
  17. package/src/services/athena/simulator.js +346 -346
  18. package/src/services/cloudformation/index.js +106 -106
  19. package/src/services/cloudformation/server.js +417 -417
  20. package/src/services/cloudformation/simulador.js +1020 -1020
  21. package/src/services/cloudtrail/index.js +84 -84
  22. package/src/services/cloudtrail/server.js +235 -235
  23. package/src/services/cloudtrail/simulador.js +719 -719
  24. package/src/services/cloudwatch/index.js +84 -84
  25. package/src/services/cloudwatch/server.js +366 -366
  26. package/src/services/cloudwatch/simulador.js +1173 -1173
  27. package/src/services/cognito/index.js +79 -79
  28. package/src/services/cognito/server.js +297 -297
  29. package/src/services/cognito/simulator.js +1992 -1761
  30. package/src/services/config/index.js +96 -96
  31. package/src/services/config/server.js +215 -215
  32. package/src/services/config/simulador.js +1260 -1260
  33. package/src/services/dynamodb/index.js +74 -74
  34. package/src/services/dynamodb/server.js +139 -139
  35. package/src/services/dynamodb/simulator.js +1005 -994
  36. package/src/services/dynamodb/sqlite-store.js +722 -0
  37. package/src/services/ecs/index.js +65 -65
  38. package/src/services/ecs/server.js +235 -235
  39. package/src/services/ecs/simulator.js +844 -844
  40. package/src/services/eventbridge/index.js +89 -89
  41. package/src/services/eventbridge/server.js +209 -209
  42. package/src/services/eventbridge/simulator.js +684 -684
  43. package/src/services/index.js +45 -45
  44. package/src/services/kms/index.js +75 -75
  45. package/src/services/kms/server.js +81 -81
  46. package/src/services/kms/simulator.js +344 -344
  47. package/src/services/lambda/handler-loader.js +183 -183
  48. package/src/services/lambda/index.js +81 -81
  49. package/src/services/lambda/route-registry.js +274 -274
  50. package/src/services/lambda/server.js +191 -191
  51. package/src/services/lambda/simulator.js +364 -364
  52. package/src/services/parameter-store/index.js +80 -80
  53. package/src/services/parameter-store/server.js +50 -50
  54. package/src/services/parameter-store/simulator.js +201 -201
  55. package/src/services/s3/index.js +73 -73
  56. package/src/services/s3/server.js +350 -350
  57. package/src/services/s3/simulator.js +568 -568
  58. package/src/services/secret-manager/index.js +80 -80
  59. package/src/services/secret-manager/server.js +51 -51
  60. package/src/services/secret-manager/simulator.js +182 -182
  61. package/src/services/sns/index.js +89 -89
  62. package/src/services/sns/server.js +607 -607
  63. package/src/services/sns/simulator.js +1482 -1482
  64. package/src/services/sqs/index.js +98 -98
  65. package/src/services/sqs/server.js +360 -360
  66. package/src/services/sqs/simulator.js +509 -509
  67. package/src/services/sts/index.js +37 -37
  68. package/src/services/sts/server.js +144 -144
  69. package/src/services/sts/simulator.js +69 -69
  70. package/src/services/xray/index.js +83 -83
  71. package/src/services/xray/server.js +308 -308
  72. package/src/services/xray/simulador.js +994 -994
  73. package/src/template/aws-config-template.js +87 -87
  74. package/src/template/aws-config-template.mjs +90 -90
  75. package/src/template/config-template.json +203 -203
  76. package/src/utils/aws-config.js +91 -91
  77. package/src/utils/cloudtrail-audit.js +129 -129
  78. package/src/utils/local-store.js +83 -83
  79. package/src/utils/logger.js +59 -59
package/aws-config CHANGED
@@ -1,154 +1,154 @@
1
- // lambda/layer/utils/aws-config.js
2
- const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
3
- const { DynamoDBDocumentClient } = require('@aws-sdk/lib-dynamodb');
4
- const { S3Client } = require('@aws-sdk/client-s3');
5
- const { SQSClient } = require('@aws-sdk/client-sqs');
6
- const { LambdaClient } = require('@aws-sdk/client-lambda');
7
- const { CognitoIdentityProviderClient } = require("@aws-sdk/client-cognito-identity-provider");
8
-
9
- // Detecta ambiente local
10
- const isLocal = process.env.IS_LOCAL === 'true' ||
11
- process.env.NODE_ENV === 'development' ||
12
- process.env.AWS_SAM_LOCAL === 'true';
13
-
14
- const isLocalS3 = process.env.IS_LOCAL_S3 === 'true'
15
- const isLocalSQS = process.env.IS_LOCAL_SQS === 'true'
16
- const isLocalDynamoDB = process.env.IS_LOCAL_DYNAMODB === 'true'
17
- const isLocalLambda = process.env.IS_LOCAL_LAMBDA === 'true'
18
- const isLocalCognito = process.env.IS_LOCAL_COGNITO === 'true'
19
-
20
- // Endpoints locais (configuráveis via variáveis de ambiente)
21
- const localEndpoints = {
22
- dynamodb: process.env.DYNAMODB_ENDPOINT || 'http://localhost:8000',
23
- s3: process.env.S3_ENDPOINT || 'http://localhost:4566',
24
- sqs: process.env.SQS_ENDPOINT || 'http://localhost:9324',
25
- lambda: process.env.LAMBDA_ENDPOINT || 'http://localhost:3001',
26
- cognito: process.env.LOCAL_COGNITO || 'http://localhost:9229'
27
- };
28
-
29
- // Credenciais para ambiente local (não são validadas)
30
- const localCredentials = {
31
- accessKeyId: process.env.AWS_ACCESS_KEY_ID || 'local',
32
- secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || 'local',
33
- sessionToken: process.env.AWS_SESSION_TOKEN || undefined
34
- };
35
-
36
- // Configuração base para todos os clients
37
- const baseConfig = {
38
- region: process.env.AWS_REGION || 'us-east-1',
39
- credentials: isLocal ? localCredentials : undefined
40
- };
41
-
42
- // ============ DynamoDB Client ============
43
- const dynamoDBClient = new DynamoDBClient({
44
- ...baseConfig,
45
- endpoint: isLocalDynamoDB ? localEndpoints.dynamodb : undefined,
46
- region: process.env.AWS_REGION || "us-east-1"
47
- });
48
-
49
- const dynamoDBDocClient = DynamoDBDocumentClient.from(dynamoDBClient, {
50
- marshallOptions: {
51
- removeUndefinedValues: true,
52
- convertEmptyValues: false
53
- },
54
- unmarshallOptions: {
55
- wrapNumbers: false
56
- }
57
- });
58
-
59
- const cognitoClient = new CognitoIdentityProviderClient({
60
- ...baseConfig,
61
- endpoint: isLocalCognito ? localEndpoints.cognito : undefined,
62
- region: process.env.AWS_REGION || 'us-east-1'
63
- });
64
-
65
- // ============ S3 Client ============
66
- const s3Client = new S3Client({
67
- ...baseConfig,
68
- endpoint: isLocalS3 ? localEndpoints.s3 : undefined,
69
- forcePathStyle: true, // Necessário para S3 local (LocalStack, MinIO, etc)
70
- // Para S3 real, não usar forcePathStyle
71
- ...(isLocalS3 ? {} : { forcePathStyle: false })
72
- });
73
-
74
- // ============ SQS Client ============
75
- const sqsClient = new SQSClient({
76
- ...baseConfig,
77
- endpoint: isLocalSQS ? localEndpoints.sqs : undefined
78
- });
79
-
80
- // ============ Lambda Client ============
81
- const lambdaClient = new LambdaClient({
82
- ...baseConfig,
83
- endpoint: isLocalLambda ? localEndpoints.lambda : undefined
84
- });
85
-
86
- // Log de configuração (apenas em desenvolvimento)
87
- if (isLocalDynamoDB || isLocalS3 || isLocalSQS || isLocalLambda) {
88
- console.log('🔧 Ambiente LOCAL detectado:');
89
- console.log(` DynamoDB: ${localEndpoints.dynamodb}`);
90
- console.log(` S3: ${localEndpoints.s3} (forcePathStyle: true)`);
91
- console.log(` SQS: ${localEndpoints.sqs}`);
92
- console.log(` Lambda: ${localEndpoints.lambda}`);
93
- console.log(` Region: ${baseConfig.region}`);
94
- }
95
- if (isLocalDynamoDB || isLocalS3 || isLocalSQS || isLocalLambda) {
96
- console.log('🔧 Ambiente LOCAL detectado:');
97
- console.log(` Region: ${baseConfig.region}`);
98
- }
99
-
100
- if (isLocalDynamoDB) {
101
- console.log(` DynamoDB: ${localEndpoints.dynamodb}`);
102
- }
103
- if (isLocalS3) {
104
- console.log(` S3: ${localEndpoints.s3} (forcePathStyle: true)`);
105
- }
106
-
107
- if (isLocalSQS) {
108
- console.log(` SQS: ${localEndpoints.sqs}`);
109
- }
110
-
111
- if (isLocalLambda) {
112
- console.log(` Lambda: ${localEndpoints.lambda}`);
113
- }
114
-
115
- if (isLocalCognito){
116
- console.log(` Cognito: ${localEndpoints.cognito}`);
117
- }
118
-
119
- module.exports = {
120
- // Clients
121
- dynamoDB: dynamoDBDocClient,
122
- cognitoClient,
123
- dynamoDBClient,
124
- s3: s3Client,
125
- sqs: sqsClient,
126
- lambda: lambdaClient,
127
-
128
- // Utilitários
129
- isLocal,
130
- localEndpoints,
131
-
132
- // Configuração
133
- config: {
134
- region: baseConfig.region,
135
- isLocal,
136
- endpoints: localEndpoints
137
- },
138
-
139
- // Função para criar clients customizados (útil para testes)
140
- createS3Client: (customEndpoint) => {
141
- return new S3Client({
142
- ...baseConfig,
143
- endpoint: customEndpoint || localEndpoints.s3,
144
- forcePathStyle: true
145
- });
146
- },
147
-
148
- createDynamoDBClient: (customEndpoint) => {
149
- return new DynamoDBClient({
150
- ...baseConfig,
151
- endpoint: customEndpoint || localEndpoints.dynamodb
152
- });
153
- }
1
+ // lambda/layer/utils/aws-config.js
2
+ const { DynamoDBClient } = require('@aws-sdk/client-dynamodb');
3
+ const { DynamoDBDocumentClient } = require('@aws-sdk/lib-dynamodb');
4
+ const { S3Client } = require('@aws-sdk/client-s3');
5
+ const { SQSClient } = require('@aws-sdk/client-sqs');
6
+ const { LambdaClient } = require('@aws-sdk/client-lambda');
7
+ const { CognitoIdentityProviderClient } = require("@aws-sdk/client-cognito-identity-provider");
8
+
9
+ // Detecta ambiente local
10
+ const isLocal = process.env.IS_LOCAL === 'true' ||
11
+ process.env.NODE_ENV === 'development' ||
12
+ process.env.AWS_SAM_LOCAL === 'true';
13
+
14
+ const isLocalS3 = process.env.IS_LOCAL_S3 === 'true'
15
+ const isLocalSQS = process.env.IS_LOCAL_SQS === 'true'
16
+ const isLocalDynamoDB = process.env.IS_LOCAL_DYNAMODB === 'true'
17
+ const isLocalLambda = process.env.IS_LOCAL_LAMBDA === 'true'
18
+ const isLocalCognito = process.env.IS_LOCAL_COGNITO === 'true'
19
+
20
+ // Endpoints locais (configuráveis via variáveis de ambiente)
21
+ const localEndpoints = {
22
+ dynamodb: process.env.DYNAMODB_ENDPOINT || 'http://localhost:8000',
23
+ s3: process.env.S3_ENDPOINT || 'http://localhost:4566',
24
+ sqs: process.env.SQS_ENDPOINT || 'http://localhost:9324',
25
+ lambda: process.env.LAMBDA_ENDPOINT || 'http://localhost:3001',
26
+ cognito: process.env.LOCAL_COGNITO || 'http://localhost:9229'
27
+ };
28
+
29
+ // Credenciais para ambiente local (não são validadas)
30
+ const localCredentials = {
31
+ accessKeyId: process.env.AWS_ACCESS_KEY_ID || 'local',
32
+ secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || 'local',
33
+ sessionToken: process.env.AWS_SESSION_TOKEN || undefined
34
+ };
35
+
36
+ // Configuração base para todos os clients
37
+ const baseConfig = {
38
+ region: process.env.AWS_REGION || 'us-east-1',
39
+ credentials: isLocal ? localCredentials : undefined
40
+ };
41
+
42
+ // ============ DynamoDB Client ============
43
+ const dynamoDBClient = new DynamoDBClient({
44
+ ...baseConfig,
45
+ endpoint: isLocalDynamoDB ? localEndpoints.dynamodb : undefined,
46
+ region: process.env.AWS_REGION || "us-east-1"
47
+ });
48
+
49
+ const dynamoDBDocClient = DynamoDBDocumentClient.from(dynamoDBClient, {
50
+ marshallOptions: {
51
+ removeUndefinedValues: true,
52
+ convertEmptyValues: false
53
+ },
54
+ unmarshallOptions: {
55
+ wrapNumbers: false
56
+ }
57
+ });
58
+
59
+ const cognitoClient = new CognitoIdentityProviderClient({
60
+ ...baseConfig,
61
+ endpoint: isLocalCognito ? localEndpoints.cognito : undefined,
62
+ region: process.env.AWS_REGION || 'us-east-1'
63
+ });
64
+
65
+ // ============ S3 Client ============
66
+ const s3Client = new S3Client({
67
+ ...baseConfig,
68
+ endpoint: isLocalS3 ? localEndpoints.s3 : undefined,
69
+ forcePathStyle: true, // Necessário para S3 local (LocalStack, MinIO, etc)
70
+ // Para S3 real, não usar forcePathStyle
71
+ ...(isLocalS3 ? {} : { forcePathStyle: false })
72
+ });
73
+
74
+ // ============ SQS Client ============
75
+ const sqsClient = new SQSClient({
76
+ ...baseConfig,
77
+ endpoint: isLocalSQS ? localEndpoints.sqs : undefined
78
+ });
79
+
80
+ // ============ Lambda Client ============
81
+ const lambdaClient = new LambdaClient({
82
+ ...baseConfig,
83
+ endpoint: isLocalLambda ? localEndpoints.lambda : undefined
84
+ });
85
+
86
+ // Log de configuração (apenas em desenvolvimento)
87
+ if (isLocalDynamoDB || isLocalS3 || isLocalSQS || isLocalLambda) {
88
+ console.log('🔧 Ambiente LOCAL detectado:');
89
+ console.log(` DynamoDB: ${localEndpoints.dynamodb}`);
90
+ console.log(` S3: ${localEndpoints.s3} (forcePathStyle: true)`);
91
+ console.log(` SQS: ${localEndpoints.sqs}`);
92
+ console.log(` Lambda: ${localEndpoints.lambda}`);
93
+ console.log(` Region: ${baseConfig.region}`);
94
+ }
95
+ if (isLocalDynamoDB || isLocalS3 || isLocalSQS || isLocalLambda) {
96
+ console.log('🔧 Ambiente LOCAL detectado:');
97
+ console.log(` Region: ${baseConfig.region}`);
98
+ }
99
+
100
+ if (isLocalDynamoDB) {
101
+ console.log(` DynamoDB: ${localEndpoints.dynamodb}`);
102
+ }
103
+ if (isLocalS3) {
104
+ console.log(` S3: ${localEndpoints.s3} (forcePathStyle: true)`);
105
+ }
106
+
107
+ if (isLocalSQS) {
108
+ console.log(` SQS: ${localEndpoints.sqs}`);
109
+ }
110
+
111
+ if (isLocalLambda) {
112
+ console.log(` Lambda: ${localEndpoints.lambda}`);
113
+ }
114
+
115
+ if (isLocalCognito){
116
+ console.log(` Cognito: ${localEndpoints.cognito}`);
117
+ }
118
+
119
+ module.exports = {
120
+ // Clients
121
+ dynamoDB: dynamoDBDocClient,
122
+ cognitoClient,
123
+ dynamoDBClient,
124
+ s3: s3Client,
125
+ sqs: sqsClient,
126
+ lambda: lambdaClient,
127
+
128
+ // Utilitários
129
+ isLocal,
130
+ localEndpoints,
131
+
132
+ // Configuração
133
+ config: {
134
+ region: baseConfig.region,
135
+ isLocal,
136
+ endpoints: localEndpoints
137
+ },
138
+
139
+ // Função para criar clients customizados (útil para testes)
140
+ createS3Client: (customEndpoint) => {
141
+ return new S3Client({
142
+ ...baseConfig,
143
+ endpoint: customEndpoint || localEndpoints.s3,
144
+ forcePathStyle: true
145
+ });
146
+ },
147
+
148
+ createDynamoDBClient: (customEndpoint) => {
149
+ return new DynamoDBClient({
150
+ ...baseConfig,
151
+ endpoint: customEndpoint || localEndpoints.dynamodb
152
+ });
153
+ }
154
154
  };
@@ -1,64 +1,64 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * CLI para AWS Local Simulator
5
- */
6
-
7
- const { AWSLocalSimulator } = require('../src/index');
8
- const logger = require('../src/utils/logger');
9
- const path = require('path');
10
-
11
- const command = process.argv[2];
12
- const configPath = process.argv[3];
13
-
14
- const simulator = new AWSLocalSimulator({
15
- configPath: configPath ? path.resolve(process.cwd(), configPath) : undefined
16
- });
17
-
18
- async function main() {
19
- switch (command) {
20
- case 'start':
21
- await simulator.start();
22
- break;
23
-
24
- case 'stop':
25
- await simulator.stop();
26
- break;
27
-
28
- case 'restart':
29
- await simulator.restart();
30
- break;
31
-
32
- case 'reset':
33
- await simulator.reset();
34
- break;
35
-
36
- case 'status':
37
- const status = simulator.getStatus();
38
- console.log(JSON.stringify(status, null, 2));
39
- break;
40
-
41
- case 'help':
42
- default:
43
- console.log(`
44
- AWS Local Simulator - CLI Commands:
45
- start [configPath] - Inicia o simulador
46
- stop - Para o simulador
47
- restart - Reinicia o simulador
48
- reset - Reseta todos os dados
49
- status - Mostra status dos serviços
50
- help - Mostra esta ajuda
51
-
52
- Exemplos:
53
- npx aws-local-simulator start
54
- npx aws-local-simulator start ./my-config.json
55
- AWS_LOCAL_SIMULATOR_LOG=verboso npx aws-local-simulator start
56
- `);
57
- break;
58
- }
59
- }
60
-
61
- main().catch(error => {
62
- logger.error('Erro:', error);
63
- process.exit(1);
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CLI para AWS Local Simulator
5
+ */
6
+
7
+ const { AWSLocalSimulator } = require('../src/index');
8
+ const logger = require('../src/utils/logger');
9
+ const path = require('path');
10
+
11
+ const command = process.argv[2];
12
+ const configPath = process.argv[3];
13
+
14
+ const simulator = new AWSLocalSimulator({
15
+ configPath: configPath ? path.resolve(process.cwd(), configPath) : undefined
16
+ });
17
+
18
+ async function main() {
19
+ switch (command) {
20
+ case 'start':
21
+ await simulator.start();
22
+ break;
23
+
24
+ case 'stop':
25
+ await simulator.stop();
26
+ break;
27
+
28
+ case 'restart':
29
+ await simulator.restart();
30
+ break;
31
+
32
+ case 'reset':
33
+ await simulator.reset();
34
+ break;
35
+
36
+ case 'status':
37
+ const status = simulator.getStatus();
38
+ console.log(JSON.stringify(status, null, 2));
39
+ break;
40
+
41
+ case 'help':
42
+ default:
43
+ console.log(`
44
+ AWS Local Simulator - CLI Commands:
45
+ start [configPath] - Inicia o simulador
46
+ stop - Para o simulador
47
+ restart - Reinicia o simulador
48
+ reset - Reseta todos os dados
49
+ status - Mostra status dos serviços
50
+ help - Mostra esta ajuda
51
+
52
+ Exemplos:
53
+ npx aws-local-simulator start
54
+ npx aws-local-simulator start ./my-config.json
55
+ AWS_LOCAL_SIMULATOR_LOG=verboso npx aws-local-simulator start
56
+ `);
57
+ break;
58
+ }
59
+ }
60
+
61
+ main().catch(error => {
62
+ logger.error('Erro:', error);
63
+ process.exit(1);
64
64
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gugananuvem/aws-local-simulator",
3
- "version": "1.0.33",
3
+ "version": "1.0.34",
4
4
  "description": "Simulador local completo para serviços AWS",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -10,6 +10,7 @@
10
10
  "start": "node bin/aws-local-simulator.js start"
11
11
  },
12
12
  "dependencies": {
13
+ "better-sqlite3": "^11.0.0",
13
14
  "@aws-sdk/client-api-gateway": "^3.0.0",
14
15
  "@aws-sdk/client-cognito-identity-provider": "^3.0.0",
15
16
  "@aws-sdk/client-dynamodb": "^3.0.0",
@@ -66,6 +67,6 @@
66
67
  "publishConfig": {
67
68
  "directory": "dist"
68
69
  },
69
- "buildDate": "2026-05-07T01:08:47.293Z",
70
+ "buildDate": "2026-06-23T12:54:20.022Z",
70
71
  "published": true
71
72
  }