@rock-js/provider-s3 0.11.12 → 0.11.13
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
CHANGED
|
@@ -46,6 +46,14 @@ type ProviderConfig = {
|
|
|
46
46
|
* The time in seconds for the presigned URL to expire. By default, it is 24 hours.
|
|
47
47
|
*/
|
|
48
48
|
linkExpirationTime?: number;
|
|
49
|
+
/**
|
|
50
|
+
* If true, the provider will not sign requests and will try to access the S3 bucket without authentication.
|
|
51
|
+
*/
|
|
52
|
+
publicAccess?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* ACL (Access Control List) to use for uploaded objects
|
|
55
|
+
*/
|
|
56
|
+
acl?: clientS3.ObjectCannedACL;
|
|
49
57
|
};
|
|
50
58
|
```
|
|
51
59
|
|
|
@@ -87,6 +95,22 @@ export default {
|
|
|
87
95
|
};
|
|
88
96
|
```
|
|
89
97
|
|
|
98
|
+
### Public S3 Bucket
|
|
99
|
+
|
|
100
|
+
```ts
|
|
101
|
+
// rock.config.mjs
|
|
102
|
+
import { providerS3 } from '@rock-js/provider-s3';
|
|
103
|
+
|
|
104
|
+
export default {
|
|
105
|
+
// ...
|
|
106
|
+
remoteCacheProvider: providerS3({
|
|
107
|
+
bucket: 'your-public-bucket',
|
|
108
|
+
region: 'your-region',
|
|
109
|
+
publicAccess: true, // Access public bucket without authentication
|
|
110
|
+
}),
|
|
111
|
+
};
|
|
112
|
+
```
|
|
113
|
+
|
|
90
114
|
## Documentation
|
|
91
115
|
|
|
92
116
|
For detailed documentation about Rock and its tools, visit [Rock Documentation](https://rockjs.dev)
|
|
@@ -49,6 +49,14 @@ type ProviderConfig = {
|
|
|
49
49
|
* External ID when assuming a role (for additional security).
|
|
50
50
|
*/
|
|
51
51
|
externalId?: string;
|
|
52
|
+
/**
|
|
53
|
+
* If true, the provider will not sign requests and will try to access the S3 bucket without authentication.
|
|
54
|
+
*/
|
|
55
|
+
publicAccess?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* ACL to use for the S3 server.
|
|
58
|
+
*/
|
|
59
|
+
acl?: clientS3.ObjectCannedACL;
|
|
52
60
|
};
|
|
53
61
|
export declare class S3BuildCache implements RemoteBuildCache {
|
|
54
62
|
name: string;
|
|
@@ -49,6 +49,16 @@ export class S3BuildCache {
|
|
|
49
49
|
// Use shared config file (e.g. ~/.aws/credentials) with a profile
|
|
50
50
|
s3Config.credentials = fromIni({ profile: config.profile });
|
|
51
51
|
}
|
|
52
|
+
else if (config.publicAccess) {
|
|
53
|
+
// Workaround to access the S3 bucket without authentication (https://carriagereturn.nl/aws/iam/s3/anonymous/2024/07/31/anonymous-access.html)
|
|
54
|
+
s3Config.signer = {
|
|
55
|
+
sign: async (request) => request,
|
|
56
|
+
};
|
|
57
|
+
s3Config.credentials = {
|
|
58
|
+
accessKeyId: '',
|
|
59
|
+
secretAccessKey: '',
|
|
60
|
+
};
|
|
61
|
+
}
|
|
52
62
|
this.s3 = new clientS3.S3Client(s3Config);
|
|
53
63
|
const awsBucket = config.bucket ?? '';
|
|
54
64
|
const bucketTokens = awsBucket.split('/');
|
|
@@ -65,6 +75,7 @@ export class S3BuildCache {
|
|
|
65
75
|
Key: key,
|
|
66
76
|
Body: buffer,
|
|
67
77
|
ContentType: contentType || 'application/octet-stream',
|
|
78
|
+
...(this.config.acl && { ACL: this.config.acl }),
|
|
68
79
|
Metadata: {
|
|
69
80
|
createdAt: new Date().toISOString(),
|
|
70
81
|
},
|
|
@@ -98,15 +109,24 @@ export class S3BuildCache {
|
|
|
98
109
|
return results;
|
|
99
110
|
}
|
|
100
111
|
async download({ artifactName, }) {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
112
|
+
try {
|
|
113
|
+
const res = await this.s3.send(new clientS3.GetObjectCommand({
|
|
114
|
+
Bucket: this.bucket,
|
|
115
|
+
Key: `${this.directory}/${artifactName}.zip`,
|
|
116
|
+
}));
|
|
117
|
+
return new Response(toWebStream(res.Body), {
|
|
118
|
+
headers: {
|
|
119
|
+
'content-length': String(res.ContentLength),
|
|
120
|
+
},
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
if (this.config.publicAccess) {
|
|
125
|
+
const err = error;
|
|
126
|
+
err.message = `${err.message}\n\nNote: Public access mode is enabled. Build not found or not accessible to the public`;
|
|
127
|
+
}
|
|
128
|
+
throw error;
|
|
129
|
+
}
|
|
110
130
|
}
|
|
111
131
|
async delete({ artifactName, skipLatest, }) {
|
|
112
132
|
if (skipLatest) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerS3.js","sourceRoot":"","sources":["../../../src/lib/providerS3.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAG7D,SAAS,WAAW,CAAC,MAAgB;IACnC,OAAO,IAAI,cAAc,CAAC;QACxB,KAAK,CAAC,UAAU;YACd,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;YAC3C,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;KACF,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"providerS3.js","sourceRoot":"","sources":["../../../src/lib/providerS3.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rock-js/provider-s3",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.13",
|
|
4
4
|
"description": "AWS S3 (and Cloudflare R2) provider for Rock Remote Build Cache",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/src/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"@aws-sdk/credential-providers": "^3.830.0",
|
|
24
24
|
"@aws-sdk/lib-storage": "^3.830.0",
|
|
25
25
|
"@aws-sdk/s3-request-presigner": "^3.830.0",
|
|
26
|
-
"@rock-js/tools": "^0.11.
|
|
26
|
+
"@rock-js/tools": "^0.11.13",
|
|
27
27
|
"tslib": "^2.3.0"
|
|
28
28
|
},
|
|
29
29
|
"publishConfig": {
|