@webda/aws 4.0.0-beta.2 → 4.0.0-beta.4
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.
- package/README.md +64 -7
- package/lib/deployers/awsdeployer.d.ts +340 -0
- package/lib/deployers/awsdeployer.d.ts.map +1 -0
- package/lib/deployers/awsdeployer.js +673 -0
- package/lib/deployers/awsdeployer.js.map +1 -0
- package/lib/deployers/cloudformation.service.d.ts +438 -0
- package/lib/deployers/cloudformation.service.d.ts.map +1 -0
- package/lib/deployers/cloudformation.service.js +889 -0
- package/lib/deployers/cloudformation.service.js.map +1 -0
- package/lib/deployers/index.d.ts +4 -254
- package/lib/deployers/index.d.ts.map +1 -1
- package/lib/deployers/index.js +4 -542
- package/lib/deployers/index.js.map +1 -1
- package/lib/deployers/lambda-entrypoint.d.ts +33 -1
- package/lib/deployers/lambda-entrypoint.d.ts.map +1 -1
- package/lib/deployers/lambda-entrypoint.js +44 -10
- package/lib/deployers/lambda-entrypoint.js.map +1 -1
- package/lib/deployers/lambdapackager.service.d.ts +123 -0
- package/lib/deployers/lambdapackager.service.d.ts.map +1 -0
- package/lib/deployers/lambdapackager.service.js +149 -0
- package/lib/deployers/lambdapackager.service.js.map +1 -0
- package/lib/deployers/zip.d.ts +42 -0
- package/lib/deployers/zip.d.ts.map +1 -0
- package/lib/deployers/zip.js +129 -0
- package/lib/deployers/zip.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/services/aws-parameters.d.ts +33 -0
- package/lib/services/aws-parameters.d.ts.map +1 -0
- package/lib/services/aws-parameters.js +18 -0
- package/lib/services/aws-parameters.js.map +1 -0
- package/lib/services/awscommands.service.d.ts +39 -0
- package/lib/services/awscommands.service.d.ts.map +1 -0
- package/lib/services/awscommands.service.js +127 -0
- package/lib/services/awscommands.service.js.map +1 -0
- package/lib/services/cloudwatchlogger.service.d.ts +131 -0
- package/lib/services/cloudwatchlogger.service.d.ts.map +1 -0
- package/lib/services/{cloudwatchlogger.js → cloudwatchlogger.service.js} +60 -28
- package/lib/services/cloudwatchlogger.service.js.map +1 -0
- package/lib/services/contributors.d.ts +36 -0
- package/lib/services/contributors.d.ts.map +1 -0
- package/lib/services/contributors.js +2 -0
- package/lib/services/contributors.js.map +1 -0
- package/lib/services/dynamodb.service.d.ts +298 -0
- package/lib/services/dynamodb.service.d.ts.map +1 -0
- package/lib/services/dynamodb.service.js +986 -0
- package/lib/services/dynamodb.service.js.map +1 -0
- package/lib/services/index.d.ts +11 -31
- package/lib/services/index.d.ts.map +1 -1
- package/lib/services/index.js +11 -8
- package/lib/services/index.js.map +1 -1
- package/lib/services/lambdacaller.service.d.ts +81 -0
- package/lib/services/lambdacaller.service.d.ts.map +1 -0
- package/lib/services/lambdacaller.service.js +75 -0
- package/lib/services/lambdacaller.service.js.map +1 -0
- package/lib/services/lambdaserver.service.d.ts +127 -0
- package/lib/services/lambdaserver.service.d.ts.map +1 -0
- package/lib/services/lambdaserver.service.js +294 -0
- package/lib/services/lambdaserver.service.js.map +1 -0
- package/lib/services/{route53.d.ts → route53.service.d.ts} +21 -12
- package/lib/services/route53.service.d.ts.map +1 -0
- package/lib/services/{route53.js → route53.service.js} +25 -28
- package/lib/services/route53.service.js.map +1 -0
- package/lib/services/s3binary.service.d.ts +215 -0
- package/lib/services/s3binary.service.d.ts.map +1 -0
- package/lib/services/{s3binary.js → s3binary.service.js} +93 -55
- package/lib/services/s3binary.service.js.map +1 -0
- package/lib/services/secretsmanager.service.d.ts +102 -0
- package/lib/services/secretsmanager.service.d.ts.map +1 -0
- package/lib/services/{secretsmanager.js → secretsmanager.service.js} +40 -22
- package/lib/services/secretsmanager.service.js.map +1 -0
- package/lib/services/{sqsqueue.d.ts → sqsqueue.service.d.ts} +60 -35
- package/lib/services/sqsqueue.service.d.ts.map +1 -0
- package/lib/services/{sqsqueue.js → sqsqueue.service.js} +53 -28
- package/lib/services/sqsqueue.service.js.map +1 -0
- package/package.json +56 -64
- package/webda.module.json +1425 -264
- package/lib/deployers/cloudformation.d.ts +0 -317
- package/lib/deployers/cloudformation.d.ts.map +0 -1
- package/lib/deployers/cloudformation.js +0 -837
- package/lib/deployers/cloudformation.js.map +0 -1
- package/lib/deployers/cloudformation.spec.d.ts +0 -2
- package/lib/deployers/cloudformation.spec.d.ts.map +0 -1
- package/lib/deployers/cloudformation.spec.js +0 -530
- package/lib/deployers/cloudformation.spec.js.map +0 -1
- package/lib/deployers/index.spec.d.ts +0 -9
- package/lib/deployers/index.spec.d.ts.map +0 -1
- package/lib/deployers/index.spec.js +0 -595
- package/lib/deployers/index.spec.js.map +0 -1
- package/lib/deployers/lambdapackager.d.ts +0 -28
- package/lib/deployers/lambdapackager.d.ts.map +0 -1
- package/lib/deployers/lambdapackager.js +0 -26
- package/lib/deployers/lambdapackager.js.map +0 -1
- package/lib/deployers/lambdapackager.spec.d.ts +0 -2
- package/lib/deployers/lambdapackager.spec.d.ts.map +0 -1
- package/lib/deployers/lambdapackager.spec.js +0 -44
- package/lib/deployers/lambdapackager.spec.js.map +0 -1
- package/lib/index.spec.d.ts +0 -11
- package/lib/index.spec.d.ts.map +0 -1
- package/lib/index.spec.js +0 -42
- package/lib/index.spec.js.map +0 -1
- package/lib/services/aws-mixin.d.ts +0 -25
- package/lib/services/aws-mixin.d.ts.map +0 -1
- package/lib/services/aws-mixin.js +0 -18
- package/lib/services/aws-mixin.js.map +0 -1
- package/lib/services/cloudwatchlogger.d.ts +0 -82
- package/lib/services/cloudwatchlogger.d.ts.map +0 -1
- package/lib/services/cloudwatchlogger.js.map +0 -1
- package/lib/services/cloudwatchlogger.spec.d.ts +0 -2
- package/lib/services/cloudwatchlogger.spec.d.ts.map +0 -1
- package/lib/services/cloudwatchlogger.spec.js +0 -104
- package/lib/services/cloudwatchlogger.spec.js.map +0 -1
- package/lib/services/dynamodb.d.ts +0 -174
- package/lib/services/dynamodb.d.ts.map +0 -1
- package/lib/services/dynamodb.js +0 -711
- package/lib/services/dynamodb.js.map +0 -1
- package/lib/services/dynamodb.spec.d.ts +0 -24
- package/lib/services/dynamodb.spec.d.ts.map +0 -1
- package/lib/services/dynamodb.spec.js +0 -344
- package/lib/services/dynamodb.spec.js.map +0 -1
- package/lib/services/lambdacaller.d.ts +0 -69
- package/lib/services/lambdacaller.d.ts.map +0 -1
- package/lib/services/lambdacaller.js +0 -63
- package/lib/services/lambdacaller.js.map +0 -1
- package/lib/services/lambdacaller.spec.d.ts +0 -2
- package/lib/services/lambdacaller.spec.d.ts.map +0 -1
- package/lib/services/lambdacaller.spec.js +0 -70
- package/lib/services/lambdacaller.spec.js.map +0 -1
- package/lib/services/lambdaserver.d.ts +0 -87
- package/lib/services/lambdaserver.d.ts.map +0 -1
- package/lib/services/lambdaserver.js +0 -263
- package/lib/services/lambdaserver.js.map +0 -1
- package/lib/services/lambdaserver.spec.d.ts +0 -2
- package/lib/services/lambdaserver.spec.d.ts.map +0 -1
- package/lib/services/lambdaserver.spec.js +0 -417
- package/lib/services/lambdaserver.spec.js.map +0 -1
- package/lib/services/route53.d.ts.map +0 -1
- package/lib/services/route53.js.map +0 -1
- package/lib/services/route53.spec.d.ts +0 -2
- package/lib/services/route53.spec.d.ts.map +0 -1
- package/lib/services/route53.spec.js +0 -102
- package/lib/services/route53.spec.js.map +0 -1
- package/lib/services/s3binary.d.ts +0 -163
- package/lib/services/s3binary.d.ts.map +0 -1
- package/lib/services/s3binary.js.map +0 -1
- package/lib/services/s3binary.spec.d.ts +0 -2
- package/lib/services/s3binary.spec.d.ts.map +0 -1
- package/lib/services/s3binary.spec.js +0 -284
- package/lib/services/s3binary.spec.js.map +0 -1
- package/lib/services/secretsmanager.d.ts +0 -81
- package/lib/services/secretsmanager.d.ts.map +0 -1
- package/lib/services/secretsmanager.js.map +0 -1
- package/lib/services/secretsmanager.spec.d.ts +0 -2
- package/lib/services/secretsmanager.spec.d.ts.map +0 -1
- package/lib/services/secretsmanager.spec.js +0 -66
- package/lib/services/secretsmanager.spec.js.map +0 -1
- package/lib/services/sqsqueue.d.ts.map +0 -1
- package/lib/services/sqsqueue.js.map +0 -1
- package/lib/services/sqsqueue.spec.d.ts +0 -2
- package/lib/services/sqsqueue.spec.d.ts.map +0 -1
- package/lib/services/sqsqueue.spec.js +0 -157
- package/lib/services/sqsqueue.spec.js.map +0 -1
- package/lib/shell.d.ts +0 -13
- package/lib/shell.d.ts.map +0 -1
- package/lib/shell.js +0 -42
- package/lib/shell.js.map +0 -1
- 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 {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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(
|
|
56
|
-
|
|
57
|
-
const
|
|
58
|
-
const
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
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
|
-
*
|
|
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 =
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
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
|
-
* @
|
|
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
|
-
*
|
|
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
|
-
* @
|
|
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.
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
*
|
|
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.
|
|
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
|
|
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"}
|