@webda/aws 4.0.0-beta.2 → 4.0.0-beta.3

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 (151) hide show
  1. package/README.md +64 -7
  2. package/lib/index.d.ts.map +1 -1
  3. package/lib/index.js.map +1 -1
  4. package/lib/services/aws-parameters.d.ts +33 -0
  5. package/lib/services/aws-parameters.d.ts.map +1 -0
  6. package/lib/services/aws-parameters.js +18 -0
  7. package/lib/services/aws-parameters.js.map +1 -0
  8. package/lib/services/awscommands.service.d.ts +39 -0
  9. package/lib/services/awscommands.service.d.ts.map +1 -0
  10. package/lib/services/awscommands.service.js +127 -0
  11. package/lib/services/awscommands.service.js.map +1 -0
  12. package/lib/services/cloudwatchlogger.service.d.ts +131 -0
  13. package/lib/services/cloudwatchlogger.service.d.ts.map +1 -0
  14. package/lib/services/{cloudwatchlogger.js → cloudwatchlogger.service.js} +60 -28
  15. package/lib/services/cloudwatchlogger.service.js.map +1 -0
  16. package/lib/services/contributors.d.ts +37 -0
  17. package/lib/services/contributors.d.ts.map +1 -0
  18. package/lib/services/contributors.js +2 -0
  19. package/lib/services/contributors.js.map +1 -0
  20. package/lib/services/dynamodb.service.d.ts +297 -0
  21. package/lib/services/dynamodb.service.d.ts.map +1 -0
  22. package/lib/services/dynamodb.service.js +985 -0
  23. package/lib/services/dynamodb.service.js.map +1 -0
  24. package/lib/services/index.d.ts +11 -31
  25. package/lib/services/index.d.ts.map +1 -1
  26. package/lib/services/index.js +11 -8
  27. package/lib/services/index.js.map +1 -1
  28. package/lib/services/lambdacaller.service.d.ts +81 -0
  29. package/lib/services/lambdacaller.service.d.ts.map +1 -0
  30. package/lib/services/lambdacaller.service.js +75 -0
  31. package/lib/services/lambdacaller.service.js.map +1 -0
  32. package/lib/services/lambdaserver.service.d.ts +127 -0
  33. package/lib/services/lambdaserver.service.d.ts.map +1 -0
  34. package/lib/services/lambdaserver.service.js +294 -0
  35. package/lib/services/lambdaserver.service.js.map +1 -0
  36. package/lib/services/{route53.d.ts → route53.service.d.ts} +21 -12
  37. package/lib/services/route53.service.d.ts.map +1 -0
  38. package/lib/services/{route53.js → route53.service.js} +25 -28
  39. package/lib/services/route53.service.js.map +1 -0
  40. package/lib/services/s3binary.service.d.ts +215 -0
  41. package/lib/services/s3binary.service.d.ts.map +1 -0
  42. package/lib/services/{s3binary.js → s3binary.service.js} +93 -55
  43. package/lib/services/s3binary.service.js.map +1 -0
  44. package/lib/services/secretsmanager.service.d.ts +102 -0
  45. package/lib/services/secretsmanager.service.d.ts.map +1 -0
  46. package/lib/services/{secretsmanager.js → secretsmanager.service.js} +40 -22
  47. package/lib/services/secretsmanager.service.js.map +1 -0
  48. package/lib/services/{sqsqueue.d.ts → sqsqueue.service.d.ts} +60 -35
  49. package/lib/services/sqsqueue.service.d.ts.map +1 -0
  50. package/lib/services/{sqsqueue.js → sqsqueue.service.js} +53 -28
  51. package/lib/services/sqsqueue.service.js.map +1 -0
  52. package/package.json +58 -63
  53. package/webda.module.json +743 -280
  54. package/lib/deployers/cloudformation.d.ts +0 -317
  55. package/lib/deployers/cloudformation.d.ts.map +0 -1
  56. package/lib/deployers/cloudformation.js +0 -837
  57. package/lib/deployers/cloudformation.js.map +0 -1
  58. package/lib/deployers/cloudformation.spec.d.ts +0 -2
  59. package/lib/deployers/cloudformation.spec.d.ts.map +0 -1
  60. package/lib/deployers/cloudformation.spec.js +0 -530
  61. package/lib/deployers/cloudformation.spec.js.map +0 -1
  62. package/lib/deployers/index.d.ts +0 -255
  63. package/lib/deployers/index.d.ts.map +0 -1
  64. package/lib/deployers/index.js +0 -543
  65. package/lib/deployers/index.js.map +0 -1
  66. package/lib/deployers/index.spec.d.ts +0 -9
  67. package/lib/deployers/index.spec.d.ts.map +0 -1
  68. package/lib/deployers/index.spec.js +0 -595
  69. package/lib/deployers/index.spec.js.map +0 -1
  70. package/lib/deployers/lambda-entrypoint.d.ts +0 -2
  71. package/lib/deployers/lambda-entrypoint.d.ts.map +0 -1
  72. package/lib/deployers/lambda-entrypoint.js +0 -13
  73. package/lib/deployers/lambda-entrypoint.js.map +0 -1
  74. package/lib/deployers/lambdapackager.d.ts +0 -28
  75. package/lib/deployers/lambdapackager.d.ts.map +0 -1
  76. package/lib/deployers/lambdapackager.js +0 -26
  77. package/lib/deployers/lambdapackager.js.map +0 -1
  78. package/lib/deployers/lambdapackager.spec.d.ts +0 -2
  79. package/lib/deployers/lambdapackager.spec.d.ts.map +0 -1
  80. package/lib/deployers/lambdapackager.spec.js +0 -44
  81. package/lib/deployers/lambdapackager.spec.js.map +0 -1
  82. package/lib/index.spec.d.ts +0 -11
  83. package/lib/index.spec.d.ts.map +0 -1
  84. package/lib/index.spec.js +0 -42
  85. package/lib/index.spec.js.map +0 -1
  86. package/lib/services/aws-mixin.d.ts +0 -25
  87. package/lib/services/aws-mixin.d.ts.map +0 -1
  88. package/lib/services/aws-mixin.js +0 -18
  89. package/lib/services/aws-mixin.js.map +0 -1
  90. package/lib/services/cloudwatchlogger.d.ts +0 -82
  91. package/lib/services/cloudwatchlogger.d.ts.map +0 -1
  92. package/lib/services/cloudwatchlogger.js.map +0 -1
  93. package/lib/services/cloudwatchlogger.spec.d.ts +0 -2
  94. package/lib/services/cloudwatchlogger.spec.d.ts.map +0 -1
  95. package/lib/services/cloudwatchlogger.spec.js +0 -104
  96. package/lib/services/cloudwatchlogger.spec.js.map +0 -1
  97. package/lib/services/dynamodb.d.ts +0 -174
  98. package/lib/services/dynamodb.d.ts.map +0 -1
  99. package/lib/services/dynamodb.js +0 -711
  100. package/lib/services/dynamodb.js.map +0 -1
  101. package/lib/services/dynamodb.spec.d.ts +0 -24
  102. package/lib/services/dynamodb.spec.d.ts.map +0 -1
  103. package/lib/services/dynamodb.spec.js +0 -344
  104. package/lib/services/dynamodb.spec.js.map +0 -1
  105. package/lib/services/lambdacaller.d.ts +0 -69
  106. package/lib/services/lambdacaller.d.ts.map +0 -1
  107. package/lib/services/lambdacaller.js +0 -63
  108. package/lib/services/lambdacaller.js.map +0 -1
  109. package/lib/services/lambdacaller.spec.d.ts +0 -2
  110. package/lib/services/lambdacaller.spec.d.ts.map +0 -1
  111. package/lib/services/lambdacaller.spec.js +0 -70
  112. package/lib/services/lambdacaller.spec.js.map +0 -1
  113. package/lib/services/lambdaserver.d.ts +0 -87
  114. package/lib/services/lambdaserver.d.ts.map +0 -1
  115. package/lib/services/lambdaserver.js +0 -263
  116. package/lib/services/lambdaserver.js.map +0 -1
  117. package/lib/services/lambdaserver.spec.d.ts +0 -2
  118. package/lib/services/lambdaserver.spec.d.ts.map +0 -1
  119. package/lib/services/lambdaserver.spec.js +0 -417
  120. package/lib/services/lambdaserver.spec.js.map +0 -1
  121. package/lib/services/route53.d.ts.map +0 -1
  122. package/lib/services/route53.js.map +0 -1
  123. package/lib/services/route53.spec.d.ts +0 -2
  124. package/lib/services/route53.spec.d.ts.map +0 -1
  125. package/lib/services/route53.spec.js +0 -102
  126. package/lib/services/route53.spec.js.map +0 -1
  127. package/lib/services/s3binary.d.ts +0 -163
  128. package/lib/services/s3binary.d.ts.map +0 -1
  129. package/lib/services/s3binary.js.map +0 -1
  130. package/lib/services/s3binary.spec.d.ts +0 -2
  131. package/lib/services/s3binary.spec.d.ts.map +0 -1
  132. package/lib/services/s3binary.spec.js +0 -284
  133. package/lib/services/s3binary.spec.js.map +0 -1
  134. package/lib/services/secretsmanager.d.ts +0 -81
  135. package/lib/services/secretsmanager.d.ts.map +0 -1
  136. package/lib/services/secretsmanager.js.map +0 -1
  137. package/lib/services/secretsmanager.spec.d.ts +0 -2
  138. package/lib/services/secretsmanager.spec.d.ts.map +0 -1
  139. package/lib/services/secretsmanager.spec.js +0 -66
  140. package/lib/services/secretsmanager.spec.js.map +0 -1
  141. package/lib/services/sqsqueue.d.ts.map +0 -1
  142. package/lib/services/sqsqueue.js.map +0 -1
  143. package/lib/services/sqsqueue.spec.d.ts +0 -2
  144. package/lib/services/sqsqueue.spec.d.ts.map +0 -1
  145. package/lib/services/sqsqueue.spec.js +0 -157
  146. package/lib/services/sqsqueue.spec.js.map +0 -1
  147. package/lib/shell.d.ts +0 -13
  148. package/lib/shell.d.ts.map +0 -1
  149. package/lib/shell.js +0 -42
  150. package/lib/shell.js.map +0 -1
  151. package/webda.shell.json +0 -11
@@ -0,0 +1,215 @@
1
+ import { HeadObjectCommandOutput, S3 } from "@aws-sdk/client-s3";
2
+ import { BinaryFile, BinaryFileInfo, BinaryMap, CloudBinary, CloudBinaryParameters, CoreModel, OperationContext } from "@webda/core";
3
+ import { Readable } from "node:stream";
4
+ import { AWSServiceParameters } from "./aws-parameters.js";
5
+ import type { CloudFormationContributor, CloudFormationDeployerInfo } from "./contributors.js";
6
+ /**
7
+ * S3Binary parameters
8
+ */
9
+ export declare class S3BinaryParameters extends CloudBinaryParameters implements AWSServiceParameters {
10
+ /**
11
+ * Custom endpoint (localstack, minio, ...)
12
+ */
13
+ endpoint?: string;
14
+ /**
15
+ * Static credentials, default to the AWS environment variables
16
+ */
17
+ credentials?: {
18
+ accessKeyId: string;
19
+ secretAccessKey: string;
20
+ sessionToken?: string;
21
+ };
22
+ /**
23
+ * AWS region
24
+ * @default "us-east-1"
25
+ */
26
+ region?: string;
27
+ /**
28
+ * Use path style url (required by localstack/minio)
29
+ * @default false
30
+ */
31
+ forcePathStyle?: boolean;
32
+ /**
33
+ * Bucket to store the binaries in
34
+ */
35
+ bucket: string;
36
+ /**
37
+ * CloudFormation customization
38
+ */
39
+ CloudFormation?: any;
40
+ /**
41
+ * Skip CloudFormation on deploy
42
+ */
43
+ CloudFormationSkip?: boolean;
44
+ /**
45
+ * @override
46
+ * @param params - raw parameters
47
+ * @returns this
48
+ */
49
+ load(params?: any): this;
50
+ }
51
+ /**
52
+ * S3Binary handles the storage of binary on a S3 bucket
53
+ *
54
+ * The structure used for now is
55
+ * /{hash}/data
56
+ * /{hash}/{targetStore}_{uuid}
57
+ * The challenge is stored on the metadata of the data object
58
+ *
59
+ * It takes parameters
60
+ * bucket: "bucketName"
61
+ * accessKeyId: ""
62
+ * secretAccessKey: ""
63
+ * region: ""
64
+ *
65
+ * See Binary the general interface
66
+ *
67
+ * We can register on S3 Event to get info when /data is pushed
68
+ *
69
+ * @WebdaModda
70
+ */
71
+ export declare class S3Binary<T extends S3BinaryParameters = S3BinaryParameters> extends CloudBinary<T> implements CloudFormationContributor {
72
+ _s3: S3;
73
+ /**
74
+ * Create the S3 client
75
+ * @override
76
+ */
77
+ computeParameters(): void;
78
+ /**
79
+ * Return a signed PUT url if the binary is not yet stored
80
+ *
81
+ * @param object - the model owning the binary
82
+ * @param property - the binary attribute
83
+ * @param body - the binary information (hash and challenge)
84
+ * @param context - the operation context
85
+ * @returns the url to upload to, or undefined if the binary is already stored
86
+ */
87
+ putRedirectUrl(object: CoreModel, property: string, body?: BinaryFileInfo, context?: OperationContext<BinaryFileInfo>): Promise<{
88
+ url: string;
89
+ method: string;
90
+ headers: {
91
+ [key: string]: string;
92
+ };
93
+ }>;
94
+ /**
95
+ * Put an empty marker object next to the binary data
96
+ * @param hash - the binary hash
97
+ * @param suffix - the marker name
98
+ * @param storeName - the model identifier using the binary
99
+ * @returns the putObject result
100
+ */
101
+ putMarker(hash: string, suffix: string, storeName: string): Promise<import("@aws-sdk/client-s3").PutObjectCommandOutput>;
102
+ /**
103
+ * Return a signed url to an object
104
+ *
105
+ * @param key to the object
106
+ * @param action to perform
107
+ * @param params - additional command parameters
108
+ * @returns the signed url
109
+ */
110
+ getSignedUrl(key: string, action?: "getObject" | "putObject", params?: any): Promise<string>;
111
+ /**
112
+ * @override
113
+ * @param binaryMap - the binary to download
114
+ * @param expire - url validity in seconds
115
+ * @param _context - the operation context
116
+ * @returns the signed url
117
+ */
118
+ getSignedUrlFromMap(binaryMap: BinaryMap, expire: number, _context: OperationContext): Promise<string>;
119
+ /**
120
+ * @override
121
+ * @param info - the binary to retrieve
122
+ * @returns the binary content stream
123
+ */
124
+ _get(info: BinaryMap): Promise<Readable>;
125
+ /**
126
+ * Check if an object exists on S3
127
+ * @param Key - the object key
128
+ * @param Bucket - the bucket, default to the configured one
129
+ * @returns the head result or null if not found
130
+ */
131
+ exists(Key: string, Bucket?: string): Promise<HeadObjectCommandOutput | null>;
132
+ /**
133
+ * @override
134
+ * @param hash - the binary hash
135
+ * @returns the number of objects using the binary
136
+ */
137
+ getUsageCount(hash: string): Promise<number>;
138
+ /**
139
+ * Delete the binary data and all its markers
140
+ * @param hash - the binary hash
141
+ */
142
+ _cleanHash(hash: string): Promise<void>;
143
+ /**
144
+ * @override
145
+ * @param hash - the binary hash
146
+ * @param uuid - the object uuid
147
+ * @param attribute - the binary attribute, if undefined clean the whole binary
148
+ */
149
+ _cleanUsage(hash: string, uuid: string, attribute?: string): Promise<void>;
150
+ /**
151
+ * Check if the binary data exists
152
+ * @param hash - the binary hash
153
+ * @returns true if it exists
154
+ */
155
+ _exists(hash: string): Promise<boolean>;
156
+ /**
157
+ * Get a head object
158
+ * @param hash - the binary hash
159
+ * @returns the head result or undefined if not found
160
+ */
161
+ _getS3(hash: string): Promise<HeadObjectCommandOutput>;
162
+ /**
163
+ * Get an object from s3 bucket
164
+ *
165
+ * @param key to get
166
+ * @param bucket to retrieve from or default bucket
167
+ * @returns the object content stream
168
+ */
169
+ getObject(key: string, bucket?: string): Promise<Readable>;
170
+ /**
171
+ *
172
+ * Iterate over the files of a bucket
173
+ *
174
+ * @param Bucket to iterate on
175
+ * @param callback to execute with each key
176
+ * @param Prefix to use
177
+ * @param filter regexp to execute on the key
178
+ */
179
+ forEachFile(Bucket: string, callback: (Key: string, page: number) => Promise<void>, Prefix?: string, filter?: RegExp): Promise<void>;
180
+ /**
181
+ * Add an object to S3 bucket
182
+ *
183
+ * @param key to add to
184
+ * @param body content of the object
185
+ * @param metadatas to put along the object
186
+ * @param bucket to use
187
+ */
188
+ putObject(key: string, body: Buffer | Blob | string | ReadableStream, metadatas?: {}, bucket?: string): Promise<void>;
189
+ /**
190
+ * @override
191
+ * @param object - the model owning the binary
192
+ * @param property - the binary attribute
193
+ * @param file - the binary to store
194
+ */
195
+ store(object: CoreModel, property: string, file: BinaryFile): Promise<void>;
196
+ /**
197
+ * IAM policy required by the service
198
+ * @param _accountId - AWS account id
199
+ * @returns the policy statement
200
+ */
201
+ getARNPolicy(_accountId: string): {
202
+ Sid: string;
203
+ Effect: string;
204
+ Action: string[];
205
+ Resource: string[];
206
+ };
207
+ /**
208
+ * CloudFormation resources for the bucket
209
+ * @param deployer - the deployer requesting the resources
210
+ * @returns the resources
211
+ */
212
+ getCloudFormation(deployer: CloudFormationDeployerInfo): {};
213
+ }
214
+ export default S3Binary;
215
+ //# sourceMappingURL=s3binary.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3binary.service.d.ts","sourceRoot":"","sources":["../../src/services/s3binary.service.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,25 @@
1
1
  // Load the AWS SDK for Node.js
2
2
  import { GetObjectCommand, PutObjectCommand, S3 } from "@aws-sdk/client-s3";
3
3
  import { getSignedUrl } from "@aws-sdk/s3-request-presigner";
4
- import { BinaryParameters, CloudBinary, WebdaError } from "@webda/core";
5
- import bluebird from "bluebird";
6
- import { AWSServiceParameters } from "./aws-mixin.js";
7
- export class S3BinaryParameters extends AWSServiceParameters(BinaryParameters) {
8
- constructor(params, service) {
9
- super(params, service);
4
+ import { CloudBinary, CloudBinaryParameters, useModelId, WebdaError } from "@webda/core";
5
+ import { loadAWSParameters } from "./aws-parameters.js";
6
+ /**
7
+ * S3Binary parameters
8
+ */
9
+ export class S3BinaryParameters extends CloudBinaryParameters {
10
+ /**
11
+ * @override
12
+ * @param params - raw parameters
13
+ * @returns this
14
+ */
15
+ load(params = {}) {
16
+ super.load(params);
17
+ loadAWSParameters(this);
10
18
  if (!this.bucket) {
11
19
  throw new WebdaError.CodeError("S3BUCKET_PARAMETER_REQUIRED", "Need to define a bucket at least");
12
20
  }
13
21
  this.forcePathStyle ?? (this.forcePathStyle = false);
14
- this.prefix = "";
22
+ return this;
15
23
  }
16
24
  }
17
25
  /**
@@ -34,29 +42,28 @@ export class S3BinaryParameters extends AWSServiceParameters(BinaryParameters) {
34
42
  *
35
43
  * @WebdaModda
36
44
  */
37
- export default class S3Binary extends CloudBinary {
38
- /**
39
- * Load the parameters
40
- *
41
- * @param params
42
- */
43
- loadParameters(params) {
44
- return new S3BinaryParameters(params, this);
45
- }
45
+ export class S3Binary extends CloudBinary {
46
46
  /**
47
- * @inheritdoc
47
+ * Create the S3 client
48
+ * @override
48
49
  */
49
50
  computeParameters() {
51
+ super.computeParameters();
50
52
  this._s3 = new S3(this.parameters);
51
53
  }
52
54
  /**
53
- * @inheritdoc
55
+ * Return a signed PUT url if the binary is not yet stored
56
+ *
57
+ * @param object - the model owning the binary
58
+ * @param property - the binary attribute
59
+ * @param body - the binary information (hash and challenge)
60
+ * @param context - the operation context
61
+ * @returns the url to upload to, or undefined if the binary is already stored
54
62
  */
55
- async putRedirectUrl(ctx) {
56
- const body = await ctx.getRequestBody();
57
- const { uuid, store, property } = ctx.getParameters();
58
- const targetStore = this.verifyMapAndStore(ctx);
59
- const object = await targetStore.get(uuid);
63
+ async putRedirectUrl(object, property, body, context) {
64
+ body ?? (body = await context.getInput());
65
+ const uuid = object.getUUID();
66
+ const store = useModelId(object.constructor);
60
67
  const base64String = Buffer.from(body.hash, "hex").toString("base64");
61
68
  const params = {
62
69
  Bucket: this.parameters.bucket,
@@ -116,7 +123,11 @@ export default class S3Binary extends CloudBinary {
116
123
  };
117
124
  }
118
125
  /**
119
- * @inheritdoc
126
+ * Put an empty marker object next to the binary data
127
+ * @param hash - the binary hash
128
+ * @param suffix - the marker name
129
+ * @param storeName - the model identifier using the binary
130
+ * @returns the putObject result
120
131
  */
121
132
  putMarker(hash, suffix, storeName) {
122
133
  const s3obj = new S3(this.parameters);
@@ -133,8 +144,8 @@ export default class S3Binary extends CloudBinary {
133
144
  *
134
145
  * @param key to the object
135
146
  * @param action to perform
136
- * @param params
137
- * @returns
147
+ * @param params - additional command parameters
148
+ * @returns the signed url
138
149
  */
139
150
  async getSignedUrl(key, action = "getObject", params = {}) {
140
151
  params.Bucket = params.Bucket || this.parameters.bucket;
@@ -151,6 +162,10 @@ export default class S3Binary extends CloudBinary {
151
162
  }
152
163
  /**
153
164
  * @override
165
+ * @param binaryMap - the binary to download
166
+ * @param expire - url validity in seconds
167
+ * @param _context - the operation context
168
+ * @returns the signed url
154
169
  */
155
170
  async getSignedUrlFromMap(binaryMap, expire, _context) {
156
171
  const params = {};
@@ -162,6 +177,8 @@ export default class S3Binary extends CloudBinary {
162
177
  }
163
178
  /**
164
179
  * @override
180
+ * @param info - the binary to retrieve
181
+ * @returns the binary content stream
165
182
  */
166
183
  async _get(info) {
167
184
  return (await this._s3.getObject({
@@ -171,8 +188,9 @@ export default class S3Binary extends CloudBinary {
171
188
  }
172
189
  /**
173
190
  * Check if an object exists on S3
174
- * @param key
175
- * @param bucket
191
+ * @param Key - the object key
192
+ * @param Bucket - the bucket, default to the configured one
193
+ * @returns the head result or null if not found
176
194
  */
177
195
  async exists(Key, Bucket = this.parameters.bucket) {
178
196
  try {
@@ -189,7 +207,9 @@ export default class S3Binary extends CloudBinary {
189
207
  }
190
208
  }
191
209
  /**
192
- * @inheritdoc
210
+ * @override
211
+ * @param hash - the binary hash
212
+ * @returns the number of objects using the binary
193
213
  */
194
214
  async getUsageCount(hash) {
195
215
  // Not efficient if more than 1000 docs
@@ -201,22 +221,29 @@ export default class S3Binary extends CloudBinary {
201
221
  return data.Contents.filter(k => !(k.Key.includes("data") || k.Key.includes("challenge"))).length;
202
222
  }
203
223
  /**
204
- * @inheritdoc
224
+ * Delete the binary data and all its markers
225
+ * @param hash - the binary hash
205
226
  */
206
227
  async _cleanHash(hash) {
207
- const files = (await this._s3.listObjectsV2({
208
- Bucket: this.parameters.bucket,
209
- Prefix: this._getKey(hash, "")
210
- })).Contents;
211
- await bluebird.map(files, file => this._s3.deleteObject({
212
- Bucket: this.parameters.bucket,
213
- Key: file.Key
214
- }), {
215
- concurrency: 5
216
- });
228
+ const files = [
229
+ ...((await this._s3.listObjectsV2({
230
+ Bucket: this.parameters.bucket,
231
+ Prefix: this._getKey(hash, "")
232
+ })).Contents ?? [])
233
+ ];
234
+ // Delete with a concurrency of 5
235
+ while (files.length) {
236
+ await Promise.all(files.splice(0, 5).map(file => this._s3.deleteObject({
237
+ Bucket: this.parameters.bucket,
238
+ Key: file.Key
239
+ })));
240
+ }
217
241
  }
218
242
  /**
219
- * @inheritdoc
243
+ * @override
244
+ * @param hash - the binary hash
245
+ * @param uuid - the object uuid
246
+ * @param attribute - the binary attribute, if undefined clean the whole binary
220
247
  */
221
248
  async _cleanUsage(hash, uuid, attribute) {
222
249
  if (!attribute) {
@@ -230,7 +257,9 @@ export default class S3Binary extends CloudBinary {
230
257
  await this._s3.deleteObject(params);
231
258
  }
232
259
  /**
233
- * @inheritdoc
260
+ * Check if the binary data exists
261
+ * @param hash - the binary hash
262
+ * @returns true if it exists
234
263
  */
235
264
  async _exists(hash) {
236
265
  try {
@@ -249,8 +278,8 @@ export default class S3Binary extends CloudBinary {
249
278
  }
250
279
  /**
251
280
  * Get a head object
252
- * @param hash
253
- * @returns
281
+ * @param hash - the binary hash
282
+ * @returns the head result or undefined if not found
254
283
  */
255
284
  async _getS3(hash) {
256
285
  try {
@@ -270,7 +299,7 @@ export default class S3Binary extends CloudBinary {
270
299
  *
271
300
  * @param key to get
272
301
  * @param bucket to retrieve from or default bucket
273
- * @returns
302
+ * @returns the object content stream
274
303
  */
275
304
  async getObject(key, bucket) {
276
305
  bucket = bucket || this.parameters.bucket;
@@ -281,10 +310,12 @@ export default class S3Binary extends CloudBinary {
281
310
  })).Body;
282
311
  }
283
312
  /**
313
+ *
314
+ * Iterate over the files of a bucket
284
315
  *
285
316
  * @param Bucket to iterate on
286
- * @param Prefix to use
287
317
  * @param callback to execute with each key
318
+ * @param Prefix to use
288
319
  * @param filter regexp to execute on the key
289
320
  */
290
321
  async forEachFile(Bucket, callback, Prefix = "", filter = undefined) {
@@ -323,7 +354,10 @@ export default class S3Binary extends CloudBinary {
323
354
  });
324
355
  }
325
356
  /**
326
- * @inheritdoc
357
+ * @override
358
+ * @param object - the model owning the binary
359
+ * @param property - the binary attribute
360
+ * @param file - the binary to store
327
361
  */
328
362
  async store(object, property, file) {
329
363
  this.checkMap(object, property);
@@ -343,15 +377,17 @@ export default class S3Binary extends CloudBinary {
343
377
  }
344
378
  // Set challenge aside for now
345
379
  await this.putMarker(file.hash, `challenge_${file.challenge}`, "challenge");
346
- await this.putMarker(file.hash, `${property}_${object.getUuid()}`, object.getStore().getName());
347
- await this.uploadSuccess(object, property, file);
380
+ await this.putMarker(file.hash, `${property}_${object.getUUID()}`, useModelId(object.constructor));
381
+ await this.uploadSuccess(object, property, file.toBinaryFileInfo());
348
382
  }
349
383
  /**
350
- * @inheritdoc
384
+ * IAM policy required by the service
385
+ * @param _accountId - AWS account id
386
+ * @returns the policy statement
351
387
  */
352
388
  getARNPolicy(_accountId) {
353
389
  return {
354
- Sid: this.constructor.name + this._name,
390
+ Sid: this.constructor.name + this.getName(),
355
391
  Effect: "Allow",
356
392
  Action: [
357
393
  "s3:AbortMultipartUpload",
@@ -378,7 +414,9 @@ export default class S3Binary extends CloudBinary {
378
414
  };
379
415
  }
380
416
  /**
381
- * @inheritdoc
417
+ * CloudFormation resources for the bucket
418
+ * @param deployer - the deployer requesting the resources
419
+ * @returns the resources
382
420
  */
383
421
  getCloudFormation(deployer) {
384
422
  if (this.parameters.CloudFormationSkip) {
@@ -387,7 +425,7 @@ export default class S3Binary extends CloudBinary {
387
425
  const resources = {};
388
426
  this.parameters.CloudFormation = this.parameters.CloudFormation || {};
389
427
  this.parameters.CloudFormation.Bucket = this.parameters.CloudFormation.Bucket || {};
390
- resources[this._name + "Bucket"] = {
428
+ resources[this.getName() + "Bucket"] = {
391
429
  Type: "AWS::S3::Bucket",
392
430
  Properties: {
393
431
  ...this.parameters.CloudFormation.Bucket,
@@ -399,5 +437,5 @@ export default class S3Binary extends CloudBinary {
399
437
  return resources;
400
438
  }
401
439
  }
402
- export { S3Binary };
403
- //# sourceMappingURL=s3binary.js.map
440
+ export default S3Binary;
441
+ //# sourceMappingURL=s3binary.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3binary.service.js","sourceRoot":"","sources":["../../src/services/s3binary.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ import { SecretsManager } from "@aws-sdk/client-secrets-manager";
2
+ import { ConfigurationProvider, Service, ServiceParameters } from "@webda/core";
3
+ import { AWSServiceParameters } from "./aws-parameters.js";
4
+ /**
5
+ * AWS SecretsManager parameters
6
+ */
7
+ export declare class AWSSecretsManagerParameters extends ServiceParameters implements AWSServiceParameters {
8
+ /**
9
+ * Custom endpoint (localstack, minio, ...)
10
+ */
11
+ endpoint?: string;
12
+ /**
13
+ * Static credentials, default to the AWS environment variables
14
+ */
15
+ credentials?: {
16
+ accessKeyId: string;
17
+ secretAccessKey: string;
18
+ sessionToken?: string;
19
+ };
20
+ /**
21
+ * AWS region
22
+ * @default "us-east-1"
23
+ */
24
+ region?: string;
25
+ /**
26
+ * @override
27
+ * @param params - raw parameters
28
+ * @returns this
29
+ */
30
+ load(params?: any): this;
31
+ }
32
+ /**
33
+ * Use AWS SecretsManager as a configuration provider and secret storage
34
+ *
35
+ * @WebdaModda
36
+ */
37
+ export default class AWSSecretsManager<T extends AWSSecretsManagerParameters = AWSSecretsManagerParameters> extends Service<T> implements ConfigurationProvider {
38
+ _client: SecretsManager;
39
+ /**
40
+ * Create the AWS client
41
+ * @override
42
+ */
43
+ computeParameters(): void;
44
+ /**
45
+ * SecretsManager cannot notify changes
46
+ * @param _id - configuration id
47
+ * @param _callback - change callback
48
+ * @returns false
49
+ */
50
+ canTriggerConfiguration(_id: string, _callback: () => void): boolean;
51
+ /**
52
+ * Retrieve the configuration stored in a secret
53
+ * @param id - secret id
54
+ * @returns the secret content
55
+ */
56
+ getConfiguration(id: string): Promise<{
57
+ [key: string]: any;
58
+ }>;
59
+ /**
60
+ * Create a new secret on AWS SecretsManager
61
+ *
62
+ * @param id - secret name
63
+ * @param values - secret content
64
+ * @param params - additional createSecret parameters
65
+ */
66
+ create(id: string, values?: any, params?: any): Promise<void>;
67
+ /**
68
+ * Delete a secret
69
+ *
70
+ * @param SecretId to delete
71
+ * @param RecoveryWindowInDays - days before the secret is deleted
72
+ * @param ForceDeleteWithoutRecovery - delete immediately
73
+ */
74
+ delete(SecretId: string, RecoveryWindowInDays?: number, ForceDeleteWithoutRecovery?: boolean): Promise<void>;
75
+ /**
76
+ * Store data in a AWS secret
77
+ *
78
+ * @param SecretId - secret id
79
+ * @param value - secret content
80
+ */
81
+ put(SecretId: string, value: any): Promise<void>;
82
+ /**
83
+ * Return SecretValue
84
+ *
85
+ * @param SecretId - secret id
86
+ * @returns JSON.parse of SecretString
87
+ */
88
+ get(SecretId: string): Promise<any>;
89
+ /**
90
+ * IAM policy required by the service
91
+ * @param accountId - AWS account id
92
+ * @returns the policy statement
93
+ */
94
+ getARNPolicy(accountId: string): {
95
+ Sid: string;
96
+ Effect: string;
97
+ Action: string[];
98
+ Resource: string[];
99
+ };
100
+ }
101
+ export { AWSSecretsManager };
102
+ //# sourceMappingURL=secretsmanager.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretsmanager.service.d.ts","sourceRoot":"","sources":["../../src/services/secretsmanager.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,qBAAqB,CAAC;AAE9E;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,iBAAkB,YAAW,oBAAoB;IAChG;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,WAAW,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtF;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,IAAI,CAAC,MAAM,GAAE,GAAQ,GAAG,IAAI,CAI3B;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,iBAAiB,CAAC,CAAC,SAAS,2BAA2B,GAAG,2BAA2B,CACxG,SAAQ,OAAO,CAAC,CAAC,CACjB,YAAW,qBAAqB;IAEhC,OAAO,EAAE,cAAc,CAAC;IAExB;;;OAGG;IACH,iBAAiB,SAGhB;IAED;;;;;OAKG;IACH,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,IAAI,WAEzD;IAED;;;;OAIG;IACG,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC,CAElE;IAED;;;;;;OAMG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,GAAE,GAAQ,EAAE,MAAM,GAAE,GAAQ,iBAI1D;IAED;;;;;;OAMG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,oBAAoB,GAAE,MAAU,EAAE,0BAA0B,GAAE,OAAe,iBAY3G;IAED;;;;;OAKG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,iBAKrC;IAED;;;;;OAKG;IACG,GAAG,CAAC,QAAQ,EAAE,MAAM,gBAKzB;IAED;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM;QAG1B,GAAG;QACH,MAAM;QACN,MAAM;QACN,QAAQ;MAEX;CACF;AAED,OAAO,EAAE,iBAAiB,EAAE,CAAC"}