@fy-stack/storage-construct 0.0.125 → 0.0.126
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 +11 -4
- package/dist/lib/storage-cdn-stack.d.ts +2 -1
- package/dist/lib/storage-cdn-stack.d.ts.map +1 -1
- package/dist/lib/storage-cdn-stack.js +17 -0
- package/dist/lib/storage-construct.d.ts +5 -0
- package/dist/lib/storage-construct.d.ts.map +1 -1
- package/dist/lib/storage-construct.js +6 -0
- package/dist/lib/types.d.ts +8 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Storage Construct Documentation
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## `StorageConstruct`
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
The `StorageConstruct` class is a specialized construct in the AWS CDK that sets up an S3 bucket. This construct implements the `Attachable`, `Grantable`, and `CDNResource` interfaces.
|
|
6
|
+
|
|
7
|
+
- **Properties**
|
|
8
|
+
- `bucket: s3.IBucket`
|
|
9
|
+
- The S3 bucket managed by this construct.
|
|
10
|
+
|
|
11
|
+
- **Constructor**
|
|
12
|
+
- `constructor(scope: Construct, id: string, props: StorageConstructProps)`
|
|
13
|
+
- Initializes the storage construct with a unique identifier and configuration options defined by `StorageConstructProps`.
|
|
6
14
|
|
|
7
|
-
Run `nx build storage-construct` to build the library.
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { NestedStack } from
|
|
1
|
+
import { NestedStack } from 'aws-cdk-lib';
|
|
2
2
|
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
3
3
|
import { Construct } from 'constructs';
|
|
4
4
|
import { StorageCdkStackProps } from './types';
|
|
5
5
|
export declare class StorageCdnStack extends NestedStack {
|
|
6
6
|
storageOrigin: cloudfront.IOrigin;
|
|
7
|
+
policyStatement: string;
|
|
7
8
|
constructor(scope: Construct, id: string, props: StorageCdkStackProps);
|
|
8
9
|
}
|
|
9
10
|
//# sourceMappingURL=storage-cdn-stack.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-cdn-stack.d.ts","sourceRoot":"","sources":["../../src/lib/storage-cdn-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"storage-cdn-stack.d.ts","sourceRoot":"","sources":["../../src/lib/storage-cdn-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,4BAA4B,CAAC;AAIzD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,qBAAa,eAAgB,SAAQ,WAAW;IAC9C,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;gBAEZ,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB;CAqCtE"}
|
|
@@ -6,16 +6,33 @@ const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
|
6
6
|
const cloudfront = tslib_1.__importStar(require("aws-cdk-lib/aws-cloudfront"));
|
|
7
7
|
const cloudfrontOrigin = tslib_1.__importStar(require("aws-cdk-lib/aws-cloudfront-origins"));
|
|
8
8
|
const s3 = tslib_1.__importStar(require("aws-cdk-lib/aws-s3"));
|
|
9
|
+
const iam = tslib_1.__importStar(require("aws-cdk-lib/aws-iam"));
|
|
9
10
|
class StorageCdnStack extends aws_cdk_lib_1.NestedStack {
|
|
10
11
|
storageOrigin;
|
|
12
|
+
policyStatement;
|
|
11
13
|
constructor(scope, id, props) {
|
|
12
14
|
super(scope, id, props);
|
|
15
|
+
const account = aws_cdk_lib_1.Stack.of(this).account;
|
|
13
16
|
const bucket = s3.Bucket.fromBucketArn(this, 'StorageBucket', props.bucketArn);
|
|
14
17
|
const storageAccessControl = new cloudfront.S3OriginAccessControl(this, 'StorageOriginAccessControl');
|
|
15
18
|
this.storageOrigin =
|
|
16
19
|
cloudfrontOrigin.S3BucketOrigin.withOriginAccessControl(bucket, {
|
|
17
20
|
originAccessControl: storageAccessControl,
|
|
18
21
|
});
|
|
22
|
+
this.policyStatement = new iam.PolicyStatement({
|
|
23
|
+
effect: iam.Effect.ALLOW,
|
|
24
|
+
actions: ['s3:GetObject'],
|
|
25
|
+
principals: [new iam.ServicePrincipal('cloudfront.amazonaws.com')],
|
|
26
|
+
resources: ['arn:aws:s3:::' + bucket.bucketName + '/!*'],
|
|
27
|
+
conditions: {
|
|
28
|
+
StringEquals: {
|
|
29
|
+
'AWS:SourceArn': 'arn:aws:cloudfront::' +
|
|
30
|
+
account +
|
|
31
|
+
':distribution/' +
|
|
32
|
+
'<DISTRIBUTION_ID>',
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
}).toStatementJson();
|
|
19
36
|
}
|
|
20
37
|
}
|
|
21
38
|
exports.StorageCdnStack = StorageCdnStack;
|
|
@@ -4,8 +4,13 @@ import * as iam from 'aws-cdk-lib/aws-iam';
|
|
|
4
4
|
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
5
5
|
import { Construct } from 'constructs';
|
|
6
6
|
import type { StorageConstructProps } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* The StorageConstruct class is a specialized Construct in the AWS CDK that sets up an S3 bucket
|
|
9
|
+
* This construct implements the {@link Attachable `Attachable`}, {@link Grantable `Grantable`} and {@link CDNResource `CDNResource`} interfaces.
|
|
10
|
+
*/
|
|
7
11
|
export declare class StorageConstruct extends Construct implements Attachable, Grantable, CDNResource {
|
|
8
12
|
bucket: s3.IBucket;
|
|
13
|
+
cloudfrontPolicy?: string;
|
|
9
14
|
constructor(scope: Construct, id: string, props: StorageConstructProps);
|
|
10
15
|
cloudfront(path: string): {
|
|
11
16
|
[x: string]: cdk.aws_cloudfront.BehaviorOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-construct.d.ts","sourceRoot":"","sources":["../../src/lib/storage-construct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,qBAAa,gBACX,SAAQ,SACR,YAAW,UAAU,EAAE,SAAS,EAAE,WAAW;IAEtC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-construct.d.ts","sourceRoot":"","sources":["../../src/lib/storage-construct.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,KAAK,GAAG,MAAM,aAAa,CAAC;AAEnC,OAAO,KAAK,GAAG,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD;;;GAGG;AACH,qBAAa,gBACX,SAAQ,SACR,YAAW,UAAU,EAAE,SAAS,EAAE,WAAW;IAEtC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAA;gBAEpB,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB;IAiBtE,UAAU,CAAC,IAAI,EAAE,MAAM;;;IAmBvB,UAAU;;;;IAOV,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU;CAShC"}
|
|
@@ -8,8 +8,13 @@ const iam = tslib_1.__importStar(require("aws-cdk-lib/aws-iam"));
|
|
|
8
8
|
const s3 = tslib_1.__importStar(require("aws-cdk-lib/aws-s3"));
|
|
9
9
|
const constructs_1 = require("constructs");
|
|
10
10
|
const storage_cdn_stack_1 = require("./storage-cdn-stack");
|
|
11
|
+
/**
|
|
12
|
+
* The StorageConstruct class is a specialized Construct in the AWS CDK that sets up an S3 bucket
|
|
13
|
+
* This construct implements the {@link Attachable `Attachable`}, {@link Grantable `Grantable`} and {@link CDNResource `CDNResource`} interfaces.
|
|
14
|
+
*/
|
|
11
15
|
class StorageConstruct extends constructs_1.Construct {
|
|
12
16
|
bucket;
|
|
17
|
+
cloudfrontPolicy;
|
|
13
18
|
constructor(scope, id, props) {
|
|
14
19
|
super(scope, id);
|
|
15
20
|
const bucketProps = {
|
|
@@ -24,6 +29,7 @@ class StorageConstruct extends constructs_1.Construct {
|
|
|
24
29
|
const storageOriginStack = new storage_cdn_stack_1.StorageCdnStack(this, 'StorageCDNStack', {
|
|
25
30
|
bucketArn: this.bucket.bucketArn,
|
|
26
31
|
});
|
|
32
|
+
this.cloudfrontPolicy = storageOriginStack.policyStatement;
|
|
27
33
|
const storageBehavior = {
|
|
28
34
|
compress: true,
|
|
29
35
|
origin: storageOriginStack.storageOrigin,
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
import { NestedStackProps } from 'aws-cdk-lib';
|
|
2
|
+
/**
|
|
3
|
+
* Interface representing the properties required for constructing a StorageConstruct.
|
|
4
|
+
*/
|
|
2
5
|
export interface StorageConstructProps {
|
|
3
6
|
/** Retain bucket when stack is deleted */
|
|
4
7
|
retainOnDelete?: boolean;
|
|
5
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Interface representing the properties required for configuring a storage stack in CDK.
|
|
11
|
+
* Extends from {@link NestedStackProps `NestedStackProps`}.
|
|
12
|
+
*/
|
|
6
13
|
export interface StorageCdkStackProps extends NestedStackProps {
|
|
14
|
+
/** S3 Bucket Arn */
|
|
7
15
|
bucketArn: string;
|
|
8
16
|
}
|
|
9
17
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fy-stack/storage-construct",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.126",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"tslib": "^2.3.0",
|
|
6
|
-
"@fy-stack/types": "0.0.
|
|
6
|
+
"@fy-stack/types": "0.0.126"
|
|
7
7
|
},
|
|
8
8
|
"peerDependencies": {
|
|
9
|
-
"aws-cdk-lib": "2.
|
|
9
|
+
"aws-cdk-lib": "2.166.0",
|
|
10
10
|
"constructs": "10.4.2"
|
|
11
11
|
},
|
|
12
12
|
"type": "commonjs",
|