@gradientedge/cdk-utils-aws 1.0.0
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/LICENSE +21 -0
- package/dist/src/common/construct.d.ts +85 -0
- package/dist/src/common/construct.js +125 -0
- package/dist/src/common/index.d.ts +4 -0
- package/dist/src/common/index.js +4 -0
- package/dist/src/common/resource-name-formatter.d.ts +13 -0
- package/dist/src/common/resource-name-formatter.js +30 -0
- package/dist/src/common/stack.d.ts +62 -0
- package/dist/src/common/stack.js +139 -0
- package/dist/src/common/types.d.ts +30 -0
- package/dist/src/common/types.js +1 -0
- package/dist/src/construct/api-to-any-target/index.d.ts +3 -0
- package/dist/src/construct/api-to-any-target/index.js +3 -0
- package/dist/src/construct/api-to-any-target/main.d.ts +47 -0
- package/dist/src/construct/api-to-any-target/main.js +154 -0
- package/dist/src/construct/api-to-any-target/target.d.ts +23 -0
- package/dist/src/construct/api-to-any-target/target.js +14 -0
- package/dist/src/construct/api-to-any-target/types.d.ts +60 -0
- package/dist/src/construct/api-to-any-target/types.js +1 -0
- package/dist/src/construct/api-to-eventbridge-target/api.d.ts +34 -0
- package/dist/src/construct/api-to-eventbridge-target/api.js +23 -0
- package/dist/src/construct/api-to-eventbridge-target/event.d.ts +15 -0
- package/dist/src/construct/api-to-eventbridge-target/event.js +12 -0
- package/dist/src/construct/api-to-eventbridge-target/index.d.ts +4 -0
- package/dist/src/construct/api-to-eventbridge-target/index.js +4 -0
- package/dist/src/construct/api-to-eventbridge-target/main.d.ts +121 -0
- package/dist/src/construct/api-to-eventbridge-target/main.js +442 -0
- package/dist/src/construct/api-to-eventbridge-target/types.d.ts +100 -0
- package/dist/src/construct/api-to-eventbridge-target/types.js +1 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.d.ts +16 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/api-destined-lambda.js +12 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/index.d.ts +3 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/index.js +3 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/main.d.ts +159 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/main.js +547 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/types.d.ts +22 -0
- package/dist/src/construct/api-to-eventbridge-target-with-sns/types.js +1 -0
- package/dist/src/construct/api-to-lambda-target/api.d.ts +35 -0
- package/dist/src/construct/api-to-lambda-target/api.js +24 -0
- package/dist/src/construct/api-to-lambda-target/index.d.ts +3 -0
- package/dist/src/construct/api-to-lambda-target/index.js +3 -0
- package/dist/src/construct/api-to-lambda-target/main.d.ts +70 -0
- package/dist/src/construct/api-to-lambda-target/main.js +218 -0
- package/dist/src/construct/api-to-lambda-target/types.d.ts +62 -0
- package/dist/src/construct/api-to-lambda-target/types.js +1 -0
- package/dist/src/construct/application-configuration/index.d.ts +2 -0
- package/dist/src/construct/application-configuration/index.js +2 -0
- package/dist/src/construct/application-configuration/main.d.ts +23 -0
- package/dist/src/construct/application-configuration/main.js +79 -0
- package/dist/src/construct/application-configuration/types.d.ts +6 -0
- package/dist/src/construct/application-configuration/types.js +1 -0
- package/dist/src/construct/event-handler/handler.d.ts +29 -0
- package/dist/src/construct/event-handler/handler.js +21 -0
- package/dist/src/construct/event-handler/index.d.ts +3 -0
- package/dist/src/construct/event-handler/index.js +3 -0
- package/dist/src/construct/event-handler/main.d.ts +91 -0
- package/dist/src/construct/event-handler/main.js +196 -0
- package/dist/src/construct/event-handler/types.d.ts +41 -0
- package/dist/src/construct/event-handler/types.js +1 -0
- package/dist/src/construct/index.d.ts +14 -0
- package/dist/src/construct/index.js +14 -0
- package/dist/src/construct/lambda-with-iam-access/index.d.ts +2 -0
- package/dist/src/construct/lambda-with-iam-access/index.js +2 -0
- package/dist/src/construct/lambda-with-iam-access/main.d.ts +78 -0
- package/dist/src/construct/lambda-with-iam-access/main.js +182 -0
- package/dist/src/construct/lambda-with-iam-access/types.d.ts +20 -0
- package/dist/src/construct/lambda-with-iam-access/types.js +1 -0
- package/dist/src/construct/piped-event-handler/index.d.ts +2 -0
- package/dist/src/construct/piped-event-handler/index.js +2 -0
- package/dist/src/construct/piped-event-handler/main.d.ts +38 -0
- package/dist/src/construct/piped-event-handler/main.js +62 -0
- package/dist/src/construct/piped-event-handler/types.d.ts +9 -0
- package/dist/src/construct/piped-event-handler/types.js +1 -0
- package/dist/src/construct/rest-api-lambda/index.d.ts +2 -0
- package/dist/src/construct/rest-api-lambda/index.js +2 -0
- package/dist/src/construct/rest-api-lambda/main.d.ts +96 -0
- package/dist/src/construct/rest-api-lambda/main.js +170 -0
- package/dist/src/construct/rest-api-lambda/types.d.ts +23 -0
- package/dist/src/construct/rest-api-lambda/types.js +1 -0
- package/dist/src/construct/rest-api-lambda-with-cache/index.d.ts +2 -0
- package/dist/src/construct/rest-api-lambda-with-cache/index.js +2 -0
- package/dist/src/construct/rest-api-lambda-with-cache/main.d.ts +56 -0
- package/dist/src/construct/rest-api-lambda-with-cache/main.js +118 -0
- package/dist/src/construct/rest-api-lambda-with-cache/types.d.ts +11 -0
- package/dist/src/construct/rest-api-lambda-with-cache/types.js +1 -0
- package/dist/src/construct/site-with-ecs-backend/constants.d.ts +4 -0
- package/dist/src/construct/site-with-ecs-backend/constants.js +5 -0
- package/dist/src/construct/site-with-ecs-backend/index.d.ts +3 -0
- package/dist/src/construct/site-with-ecs-backend/index.js +3 -0
- package/dist/src/construct/site-with-ecs-backend/main.d.ts +154 -0
- package/dist/src/construct/site-with-ecs-backend/main.js +437 -0
- package/dist/src/construct/site-with-ecs-backend/types.d.ts +49 -0
- package/dist/src/construct/site-with-ecs-backend/types.js +1 -0
- package/dist/src/construct/site-with-lambda-backend/constants.d.ts +5 -0
- package/dist/src/construct/site-with-lambda-backend/constants.js +6 -0
- package/dist/src/construct/site-with-lambda-backend/index.d.ts +3 -0
- package/dist/src/construct/site-with-lambda-backend/index.js +3 -0
- package/dist/src/construct/site-with-lambda-backend/main.d.ts +116 -0
- package/dist/src/construct/site-with-lambda-backend/main.js +316 -0
- package/dist/src/construct/site-with-lambda-backend/types.d.ts +45 -0
- package/dist/src/construct/site-with-lambda-backend/types.js +1 -0
- package/dist/src/construct/static-asset-deployment/index.d.ts +2 -0
- package/dist/src/construct/static-asset-deployment/index.js +2 -0
- package/dist/src/construct/static-asset-deployment/main.d.ts +41 -0
- package/dist/src/construct/static-asset-deployment/main.js +113 -0
- package/dist/src/construct/static-asset-deployment/types.d.ts +41 -0
- package/dist/src/construct/static-asset-deployment/types.js +1 -0
- package/dist/src/construct/static-site/index.d.ts +2 -0
- package/dist/src/construct/static-site/index.js +2 -0
- package/dist/src/construct/static-site/main.d.ts +84 -0
- package/dist/src/construct/static-site/main.js +136 -0
- package/dist/src/construct/static-site/types.d.ts +30 -0
- package/dist/src/construct/static-site/types.js +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +5 -0
- package/dist/src/services/api-gateway/index.d.ts +2 -0
- package/dist/src/services/api-gateway/index.js +2 -0
- package/dist/src/services/api-gateway/main.d.ts +68 -0
- package/dist/src/services/api-gateway/main.js +173 -0
- package/dist/src/services/api-gateway/types.d.ts +10 -0
- package/dist/src/services/api-gateway/types.js +1 -0
- package/dist/src/services/appconfig/constants.d.ts +12 -0
- package/dist/src/services/appconfig/constants.js +51 -0
- package/dist/src/services/appconfig/index.d.ts +3 -0
- package/dist/src/services/appconfig/index.js +3 -0
- package/dist/src/services/appconfig/main.d.ts +63 -0
- package/dist/src/services/appconfig/main.js +119 -0
- package/dist/src/services/appconfig/types.d.ts +17 -0
- package/dist/src/services/appconfig/types.js +1 -0
- package/dist/src/services/certificate-manager/index.d.ts +2 -0
- package/dist/src/services/certificate-manager/index.js +2 -0
- package/dist/src/services/certificate-manager/main.d.ts +41 -0
- package/dist/src/services/certificate-manager/main.js +62 -0
- package/dist/src/services/certificate-manager/types.d.ts +11 -0
- package/dist/src/services/certificate-manager/types.js +1 -0
- package/dist/src/services/cloudfront/index.d.ts +2 -0
- package/dist/src/services/cloudfront/index.js +2 -0
- package/dist/src/services/cloudfront/main.d.ts +96 -0
- package/dist/src/services/cloudfront/main.js +233 -0
- package/dist/src/services/cloudfront/types.d.ts +13 -0
- package/dist/src/services/cloudfront/types.js +1 -0
- package/dist/src/services/cloudtrail/index.d.ts +2 -0
- package/dist/src/services/cloudtrail/index.js +2 -0
- package/dist/src/services/cloudtrail/main.d.ts +44 -0
- package/dist/src/services/cloudtrail/main.js +71 -0
- package/dist/src/services/cloudtrail/types.d.ts +5 -0
- package/dist/src/services/cloudtrail/types.js +1 -0
- package/dist/src/services/cloudwatch/index.d.ts +3 -0
- package/dist/src/services/cloudwatch/index.js +3 -0
- package/dist/src/services/cloudwatch/logs.d.ts +47 -0
- package/dist/src/services/cloudwatch/logs.js +98 -0
- package/dist/src/services/cloudwatch/main.d.ts +207 -0
- package/dist/src/services/cloudwatch/main.js +552 -0
- package/dist/src/services/cloudwatch/types.d.ts +89 -0
- package/dist/src/services/cloudwatch/types.js +1 -0
- package/dist/src/services/codebuild/index.d.ts +1 -0
- package/dist/src/services/codebuild/index.js +1 -0
- package/dist/src/services/codebuild/main.d.ts +36 -0
- package/dist/src/services/codebuild/main.js +67 -0
- package/dist/src/services/constants.d.ts +4 -0
- package/dist/src/services/constants.js +5 -0
- package/dist/src/services/dynamodb/index.d.ts +2 -0
- package/dist/src/services/dynamodb/index.js +2 -0
- package/dist/src/services/dynamodb/main.d.ts +35 -0
- package/dist/src/services/dynamodb/main.js +72 -0
- package/dist/src/services/dynamodb/types.d.ts +10 -0
- package/dist/src/services/dynamodb/types.js +1 -0
- package/dist/src/services/elastic-container-registry/index.d.ts +1 -0
- package/dist/src/services/elastic-container-registry/index.js +1 -0
- package/dist/src/services/elastic-container-registry/main.d.ts +27 -0
- package/dist/src/services/elastic-container-registry/main.js +33 -0
- package/dist/src/services/elastic-container-service/index.d.ts +2 -0
- package/dist/src/services/elastic-container-service/index.js +2 -0
- package/dist/src/services/elastic-container-service/main.d.ts +56 -0
- package/dist/src/services/elastic-container-service/main.js +149 -0
- package/dist/src/services/elastic-container-service/types.d.ts +45 -0
- package/dist/src/services/elastic-container-service/types.js +1 -0
- package/dist/src/services/elastic-file-system/index.d.ts +2 -0
- package/dist/src/services/elastic-file-system/index.js +2 -0
- package/dist/src/services/elastic-file-system/main.d.ts +42 -0
- package/dist/src/services/elastic-file-system/main.js +76 -0
- package/dist/src/services/elastic-file-system/types.d.ts +15 -0
- package/dist/src/services/elastic-file-system/types.js +1 -0
- package/dist/src/services/elastic-kubernetes-service/index.d.ts +2 -0
- package/dist/src/services/elastic-kubernetes-service/index.js +2 -0
- package/dist/src/services/elastic-kubernetes-service/main.d.ts +32 -0
- package/dist/src/services/elastic-kubernetes-service/main.js +85 -0
- package/dist/src/services/elastic-kubernetes-service/types.d.ts +7 -0
- package/dist/src/services/elastic-kubernetes-service/types.js +1 -0
- package/dist/src/services/elasticache/index.d.ts +2 -0
- package/dist/src/services/elasticache/index.js +2 -0
- package/dist/src/services/elasticache/main.d.ts +47 -0
- package/dist/src/services/elasticache/main.js +90 -0
- package/dist/src/services/elasticache/types.d.ts +9 -0
- package/dist/src/services/elasticache/types.js +1 -0
- package/dist/src/services/eventbridge/index.d.ts +3 -0
- package/dist/src/services/eventbridge/index.js +3 -0
- package/dist/src/services/eventbridge/main.d.ts +93 -0
- package/dist/src/services/eventbridge/main.js +295 -0
- package/dist/src/services/eventbridge/target.d.ts +57 -0
- package/dist/src/services/eventbridge/target.js +61 -0
- package/dist/src/services/eventbridge/types.d.ts +43 -0
- package/dist/src/services/eventbridge/types.js +1 -0
- package/dist/src/services/evidently/index.d.ts +2 -0
- package/dist/src/services/evidently/index.js +2 -0
- package/dist/src/services/evidently/main.d.ts +56 -0
- package/dist/src/services/evidently/main.js +114 -0
- package/dist/src/services/evidently/types.d.ts +21 -0
- package/dist/src/services/evidently/types.js +1 -0
- package/dist/src/services/identity-access-management/index.d.ts +1 -0
- package/dist/src/services/identity-access-management/index.js +1 -0
- package/dist/src/services/identity-access-management/main.d.ts +263 -0
- package/dist/src/services/identity-access-management/main.js +609 -0
- package/dist/src/services/index.d.ts +28 -0
- package/dist/src/services/index.js +28 -0
- package/dist/src/services/key-management-service/index.d.ts +2 -0
- package/dist/src/services/key-management-service/index.js +2 -0
- package/dist/src/services/key-management-service/main.d.ts +28 -0
- package/dist/src/services/key-management-service/main.js +39 -0
- package/dist/src/services/key-management-service/types.d.ts +5 -0
- package/dist/src/services/key-management-service/types.js +1 -0
- package/dist/src/services/lambda/index.d.ts +2 -0
- package/dist/src/services/lambda/index.js +2 -0
- package/dist/src/services/lambda/main.d.ts +89 -0
- package/dist/src/services/lambda/main.js +232 -0
- package/dist/src/services/lambda/types.d.ts +54 -0
- package/dist/src/services/lambda/types.js +1 -0
- package/dist/src/services/route53/index.d.ts +2 -0
- package/dist/src/services/route53/index.js +2 -0
- package/dist/src/services/route53/main.d.ts +66 -0
- package/dist/src/services/route53/main.js +136 -0
- package/dist/src/services/route53/types.d.ts +6 -0
- package/dist/src/services/route53/types.js +1 -0
- package/dist/src/services/secrets-manager/index.d.ts +2 -0
- package/dist/src/services/secrets-manager/index.js +2 -0
- package/dist/src/services/secrets-manager/main.d.ts +43 -0
- package/dist/src/services/secrets-manager/main.js +71 -0
- package/dist/src/services/secrets-manager/types.d.ts +3 -0
- package/dist/src/services/secrets-manager/types.js +1 -0
- package/dist/src/services/simple-notification-service/index.d.ts +2 -0
- package/dist/src/services/simple-notification-service/index.js +2 -0
- package/dist/src/services/simple-notification-service/main.d.ts +38 -0
- package/dist/src/services/simple-notification-service/main.js +68 -0
- package/dist/src/services/simple-notification-service/types.d.ts +5 -0
- package/dist/src/services/simple-notification-service/types.js +1 -0
- package/dist/src/services/simple-queue-service/index.d.ts +2 -0
- package/dist/src/services/simple-queue-service/index.js +2 -0
- package/dist/src/services/simple-queue-service/main.d.ts +45 -0
- package/dist/src/services/simple-queue-service/main.js +101 -0
- package/dist/src/services/simple-queue-service/types.d.ts +15 -0
- package/dist/src/services/simple-queue-service/types.js +1 -0
- package/dist/src/services/simple-storage-service/index.d.ts +2 -0
- package/dist/src/services/simple-storage-service/index.js +2 -0
- package/dist/src/services/simple-storage-service/main.d.ts +79 -0
- package/dist/src/services/simple-storage-service/main.js +191 -0
- package/dist/src/services/simple-storage-service/types.d.ts +25 -0
- package/dist/src/services/simple-storage-service/types.js +1 -0
- package/dist/src/services/step-function/index.d.ts +2 -0
- package/dist/src/services/step-function/index.js +2 -0
- package/dist/src/services/step-function/main.d.ts +161 -0
- package/dist/src/services/step-function/main.js +380 -0
- package/dist/src/services/step-function/types.d.ts +88 -0
- package/dist/src/services/step-function/types.js +1 -0
- package/dist/src/services/systems-manager/index.d.ts +2 -0
- package/dist/src/services/systems-manager/index.js +2 -0
- package/dist/src/services/systems-manager/main.d.ts +55 -0
- package/dist/src/services/systems-manager/main.js +97 -0
- package/dist/src/services/systems-manager/types.d.ts +9 -0
- package/dist/src/services/systems-manager/types.js +1 -0
- package/dist/src/services/virtual-private-cloud/index.d.ts +2 -0
- package/dist/src/services/virtual-private-cloud/index.js +2 -0
- package/dist/src/services/virtual-private-cloud/ipv6.d.ts +7 -0
- package/dist/src/services/virtual-private-cloud/ipv6.js +38 -0
- package/dist/src/services/virtual-private-cloud/main.d.ts +43 -0
- package/dist/src/services/virtual-private-cloud/main.js +87 -0
- package/dist/src/services/virtual-private-cloud/types.d.ts +4 -0
- package/dist/src/services/virtual-private-cloud/types.js +1 -0
- package/dist/src/services/web-application-firewall/index.d.ts +2 -0
- package/dist/src/services/web-application-firewall/index.js +2 -0
- package/dist/src/services/web-application-firewall/main.d.ts +35 -0
- package/dist/src/services/web-application-firewall/main.js +61 -0
- package/dist/src/services/web-application-firewall/types.d.ts +9 -0
- package/dist/src/services/web-application-firewall/types.js +1 -0
- package/dist/src/types/index.d.ts +6 -0
- package/dist/src/types/index.js +1 -0
- package/dist/src/utils/index.d.ts +45 -0
- package/dist/src/utils/index.js +61 -0
- package/package.json +44 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
import { Stack } from 'aws-cdk-lib';
|
|
2
|
+
import { CfnRole, Effect, ManagedPolicy, PolicyDocument, PolicyStatement, Role, ServicePrincipal, } from 'aws-cdk-lib/aws-iam';
|
|
3
|
+
import { createCfnOutput } from '../../utils/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @classdesc Provides operations on AWS
|
|
6
|
+
* - A new instance of this class is injected into {@link CommonConstruct} constructor.
|
|
7
|
+
* - If a custom construct extends {@link CommonConstruct}, an instance is available within the context.
|
|
8
|
+
* @example
|
|
9
|
+
* import { CommonConstruct } from '@gradientedge/cdk-utils'
|
|
10
|
+
*
|
|
11
|
+
* class CustomConstruct extends CommonConstruct {
|
|
12
|
+
* constructor(parent: Construct, id: string, props: common.CommonStackProps) {
|
|
13
|
+
* super(parent, id, props)
|
|
14
|
+
* this.props = props
|
|
15
|
+
* this.iamManager.createRoleForEcsEvent('MyEcsRole', this, cluster, task)
|
|
16
|
+
* }
|
|
17
|
+
* }
|
|
18
|
+
* @see [CDK IAM Module]{@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_iam-readme.html}
|
|
19
|
+
*/
|
|
20
|
+
export class IamManager {
|
|
21
|
+
/**
|
|
22
|
+
* @summary Method to create iam statement to read secrets
|
|
23
|
+
* @param scope scope in which this resource is defined
|
|
24
|
+
* @param resourceArns list of ARNs to allow access to
|
|
25
|
+
*/
|
|
26
|
+
statementForReadSecrets(scope, resourceArns) {
|
|
27
|
+
return new PolicyStatement({
|
|
28
|
+
actions: ['secretsmanager:GetSecretValue'],
|
|
29
|
+
effect: Effect.ALLOW,
|
|
30
|
+
resources: resourceArns ?? [
|
|
31
|
+
`arn:aws:secretsmanager:${Stack.of(scope).region}:${Stack.of(scope).account}:secret:*`,
|
|
32
|
+
],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @summary Method to create iam statement to put events
|
|
37
|
+
* @param resourceArns list of ARNs to allow access to
|
|
38
|
+
*/
|
|
39
|
+
statementForPutEvents(resourceArns) {
|
|
40
|
+
return new PolicyStatement({
|
|
41
|
+
actions: ['events:PutEvents'],
|
|
42
|
+
effect: Effect.ALLOW,
|
|
43
|
+
resources: resourceArns ?? ['*'],
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* @summary Method to create iam statement to start step function execution
|
|
48
|
+
* @param resourceArns list of ARNs to allow access to
|
|
49
|
+
*/
|
|
50
|
+
statementForStartExecution(resourceArns) {
|
|
51
|
+
return new PolicyStatement({
|
|
52
|
+
actions: ['states:StartExecution'],
|
|
53
|
+
effect: Effect.ALLOW,
|
|
54
|
+
resources: resourceArns ?? ['*'],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @summary Method to create iam statement to poll queue
|
|
59
|
+
* @param resourceArns list of ARNs to allow access to
|
|
60
|
+
*/
|
|
61
|
+
statementForPollQueue(resourceArns) {
|
|
62
|
+
return new PolicyStatement({
|
|
63
|
+
actions: ['sqs:ReceiveMessage', 'sqs:DeleteMessage', 'sqs:GetQueueAttributes'],
|
|
64
|
+
effect: Effect.ALLOW,
|
|
65
|
+
resources: resourceArns ?? ['*'],
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* @summary Method to create iam statement to invoke lambda function
|
|
70
|
+
* @param resourceArns list of ARNs to allow access to
|
|
71
|
+
*/
|
|
72
|
+
statementForInvokeLambda(resourceArns) {
|
|
73
|
+
return new PolicyStatement({
|
|
74
|
+
actions: ['lambda:InvokeFunction'],
|
|
75
|
+
effect: Effect.ALLOW,
|
|
76
|
+
resources: resourceArns ?? ['*'],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* @summary Method to create iam statement to read app config
|
|
81
|
+
* @param resourceArns list of ARNs to allow access to
|
|
82
|
+
*/
|
|
83
|
+
statementForReadAnyAppConfig(resourceArns) {
|
|
84
|
+
return new PolicyStatement({
|
|
85
|
+
actions: [
|
|
86
|
+
'ssm:GetDocument',
|
|
87
|
+
'ssm:ListDocuments',
|
|
88
|
+
'appconfig:ListApplications',
|
|
89
|
+
'appconfig:GetApplication',
|
|
90
|
+
'appconfig:ListEnvironments',
|
|
91
|
+
'appconfig:GetEnvironment',
|
|
92
|
+
'appconfig:ListConfigurationProfiles',
|
|
93
|
+
'appconfig:GetConfigurationProfile',
|
|
94
|
+
'appconfig:ListDeploymentStrategies',
|
|
95
|
+
'appconfig:GetDeploymentStrategy',
|
|
96
|
+
'appconfig:GetConfiguration',
|
|
97
|
+
'appconfig:ListDeployments',
|
|
98
|
+
],
|
|
99
|
+
effect: Effect.ALLOW,
|
|
100
|
+
resources: resourceArns ?? ['*'],
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* @summary Method to create iam statement to access app config
|
|
105
|
+
* @param resourceArns list of ARNs to allow access to
|
|
106
|
+
*/
|
|
107
|
+
statementForAppConfigExecution(resourceArns) {
|
|
108
|
+
return new PolicyStatement({
|
|
109
|
+
actions: ['appconfig:GetLatestConfiguration', 'appconfig:StartConfigurationSession'],
|
|
110
|
+
effect: Effect.ALLOW,
|
|
111
|
+
resources: resourceArns ?? ['*'],
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* @summary Method to create iam statement to put xray telemetry
|
|
116
|
+
* @param resourceArns list of ARNs to allow access to
|
|
117
|
+
*/
|
|
118
|
+
statementForPutXrayTelemetry(resourceArns) {
|
|
119
|
+
return new PolicyStatement({
|
|
120
|
+
actions: ['xray:PutTraceSegments', 'xray:PutTelemetryRecords'],
|
|
121
|
+
effect: Effect.ALLOW,
|
|
122
|
+
resources: resourceArns ?? ['*'],
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* @summary Method to create iam statement to decrypt kms
|
|
127
|
+
* @param resourceArns list of ARNs to allow access to
|
|
128
|
+
*/
|
|
129
|
+
statementForDecryptKms(resourceArns) {
|
|
130
|
+
return new PolicyStatement({
|
|
131
|
+
actions: ['kms:Decrypt'],
|
|
132
|
+
effect: Effect.ALLOW,
|
|
133
|
+
resources: resourceArns ?? ['*'],
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* @summary Method to create iam statement to list s3 buckets
|
|
138
|
+
* @param scope scope in which this resource is defined
|
|
139
|
+
* @param bucket
|
|
140
|
+
*/
|
|
141
|
+
statementForListBucket(scope, bucket) {
|
|
142
|
+
return new PolicyStatement({
|
|
143
|
+
actions: ['s3:ListBucket'],
|
|
144
|
+
effect: Effect.ALLOW,
|
|
145
|
+
resources: [bucket.bucketArn],
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* @summary Method to create iam statement to list all s3 buckets
|
|
150
|
+
* @param resourceArns list of ARNs to allow access to
|
|
151
|
+
*/
|
|
152
|
+
statementForListAllMyBuckets(resourceArns) {
|
|
153
|
+
return new PolicyStatement({
|
|
154
|
+
actions: ['s3:ListAllMyBuckets'],
|
|
155
|
+
effect: Effect.ALLOW,
|
|
156
|
+
resources: resourceArns ?? ['*'],
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* @summary Method to create iam statement to get s3 objects in buckets
|
|
161
|
+
* @param scope scope in which this resource is defined
|
|
162
|
+
* @param bucket
|
|
163
|
+
* @param resourceArns list of ARNs to allow access to
|
|
164
|
+
*/
|
|
165
|
+
statementForGetAnyS3Objects(scope, bucket, resourceArns) {
|
|
166
|
+
return new PolicyStatement({
|
|
167
|
+
actions: ['s3:GetObject', 's3:GetObjectAcl'],
|
|
168
|
+
effect: Effect.ALLOW,
|
|
169
|
+
resources: resourceArns ?? [bucket.arnForObjects(`*`)],
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* @summary Method to create iam statement to delete s3 objects in buckets
|
|
174
|
+
* @param scope scope in which this resource is defined
|
|
175
|
+
* @param bucket
|
|
176
|
+
* @param resourceArns list of ARNs to allow access to
|
|
177
|
+
*/
|
|
178
|
+
statementForDeleteAnyS3Objects(scope, bucket, resourceArns) {
|
|
179
|
+
return new PolicyStatement({
|
|
180
|
+
actions: ['s3:DeleteObject'],
|
|
181
|
+
effect: Effect.ALLOW,
|
|
182
|
+
resources: resourceArns ?? [bucket.arnForObjects(`*`)],
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* @summary Method to create iam statement to write s3 objects in buckets
|
|
187
|
+
* @param scope scope in which this resource is defined
|
|
188
|
+
* @param bucket
|
|
189
|
+
* @param resourceArns list of ARNs to allow access to
|
|
190
|
+
*/
|
|
191
|
+
statementForPutAnyS3Objects(scope, bucket, resourceArns) {
|
|
192
|
+
return new PolicyStatement({
|
|
193
|
+
actions: ['s3:PutObject', 's3:PutObjectAcl'],
|
|
194
|
+
effect: Effect.ALLOW,
|
|
195
|
+
resources: resourceArns ?? [bucket.arnForObjects(`*`)],
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* @summary Method to create iam statement to pass iam role
|
|
200
|
+
* @param resourceArns list of ARNs to allow access to
|
|
201
|
+
*/
|
|
202
|
+
statementForPassRole(resourceArns) {
|
|
203
|
+
return new PolicyStatement({
|
|
204
|
+
actions: ['iam:PassRole'],
|
|
205
|
+
effect: Effect.ALLOW,
|
|
206
|
+
resources: resourceArns ?? ['*'],
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @summary Method to create iam statement to invalidate cloudfront cache
|
|
211
|
+
* @param resourceArns list of ARNs to allow access to
|
|
212
|
+
*/
|
|
213
|
+
statementForCloudfrontInvalidation(resourceArns) {
|
|
214
|
+
return new PolicyStatement({
|
|
215
|
+
actions: ['cloudfront:GetInvalidation', 'cloudfront:CreateInvalidation'],
|
|
216
|
+
effect: Effect.ALLOW,
|
|
217
|
+
resources: resourceArns ?? ['*'],
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* @summary Method to create iam statement to access efs
|
|
222
|
+
* @param resourceArns list of ARNs to allow access to
|
|
223
|
+
*/
|
|
224
|
+
statementForWriteEfs(resourceArns) {
|
|
225
|
+
return new PolicyStatement({
|
|
226
|
+
actions: ['elasticfilesystem:*'],
|
|
227
|
+
effect: Effect.ALLOW,
|
|
228
|
+
resources: resourceArns ?? ['*'],
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* @summary Method to create iam statement to assume iam role
|
|
233
|
+
* @param scope scope in which this resource is defined
|
|
234
|
+
* @param servicePrincipals
|
|
235
|
+
*/
|
|
236
|
+
statementForAssumeRole(scope, servicePrincipals) {
|
|
237
|
+
return new PolicyStatement({
|
|
238
|
+
actions: ['sts:AssumeRole'],
|
|
239
|
+
effect: Effect.ALLOW,
|
|
240
|
+
principals: servicePrincipals,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* @summary Method to create iam statement to pass ecs role
|
|
245
|
+
* @param resourceArns list of ARNs to allow access to
|
|
246
|
+
*/
|
|
247
|
+
statementForEcsPassRole(resourceArns) {
|
|
248
|
+
return new PolicyStatement({
|
|
249
|
+
actions: ['iam:PassRole'],
|
|
250
|
+
conditions: { StringLike: { 'iam:PassedToService': 'ecs-tasks.amazonaws.com' } },
|
|
251
|
+
effect: Effect.ALLOW,
|
|
252
|
+
resources: resourceArns ?? ['*'],
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* @summary Method to create iam statement to run ecs task
|
|
257
|
+
* @param scope scope in which this resource is defined
|
|
258
|
+
* @param cluster
|
|
259
|
+
* @param task
|
|
260
|
+
*/
|
|
261
|
+
statementForRunEcsTask(scope, cluster, task) {
|
|
262
|
+
return new PolicyStatement({
|
|
263
|
+
actions: ['ecs:RunTask'],
|
|
264
|
+
conditions: { ArnLike: { 'ecs:cluster': cluster.clusterArn } },
|
|
265
|
+
effect: Effect.ALLOW,
|
|
266
|
+
resources: [task.taskDefinitionArn],
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* @summary Method to create iam statement to create log stream
|
|
271
|
+
* @param scope scope in which this resource is defined
|
|
272
|
+
* @param logGroup
|
|
273
|
+
*/
|
|
274
|
+
statementForCreateLogStream(scope, logGroup) {
|
|
275
|
+
return new PolicyStatement({
|
|
276
|
+
actions: ['logs:CreateLogStream'],
|
|
277
|
+
effect: Effect.ALLOW,
|
|
278
|
+
resources: [
|
|
279
|
+
`arn:aws:logs:${Stack.of(scope).region}:${Stack.of(scope).account}:log-group:${logGroup.logGroupName}:log-stream:${Stack.of(scope).account}_CloudTrail_eu-west-1*`,
|
|
280
|
+
],
|
|
281
|
+
sid: 'AWSCloudTrailCreateLogStream2014110',
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* @summary Method to create iam statement to create any log stream
|
|
286
|
+
* @param resourceArns list of ARNs to allow access to
|
|
287
|
+
*/
|
|
288
|
+
statementForCreateAnyLogStream(resourceArns) {
|
|
289
|
+
return new PolicyStatement({
|
|
290
|
+
actions: ['logs:CreateLogStream'],
|
|
291
|
+
effect: Effect.ALLOW,
|
|
292
|
+
resources: resourceArns ?? ['*'],
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* @summary Method to create iam statement to write log events
|
|
297
|
+
* @param scope scope in which this resource is defined
|
|
298
|
+
* @param logGroup
|
|
299
|
+
*/
|
|
300
|
+
statementForPutLogEvent(scope, logGroup) {
|
|
301
|
+
return new PolicyStatement({
|
|
302
|
+
actions: ['logs:PutLogEvents'],
|
|
303
|
+
effect: Effect.ALLOW,
|
|
304
|
+
resources: [
|
|
305
|
+
`arn:aws:logs:${Stack.of(scope).region}:${Stack.of(scope).account}:log-group:${logGroup.logGroupName}:log-stream:${Stack.of(scope).account}_CloudTrail_eu-west-1*`,
|
|
306
|
+
],
|
|
307
|
+
sid: 'AWSCloudTrailPutLogEvents20141101',
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* @summary Method to create iam statement to write any log events
|
|
312
|
+
* @param resourceArns list of ARNs to allow access to
|
|
313
|
+
*/
|
|
314
|
+
statementForPutAnyLogEvent(resourceArns) {
|
|
315
|
+
return new PolicyStatement({
|
|
316
|
+
actions: ['logs:PutLogEvents'],
|
|
317
|
+
effect: Effect.ALLOW,
|
|
318
|
+
resources: resourceArns ?? ['*'],
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* @summary Method to create iam statement to read items from dynamodb table
|
|
323
|
+
* @param resourceArns list of ARNs to allow access to
|
|
324
|
+
*/
|
|
325
|
+
statementForReadTableItems(resourceArns) {
|
|
326
|
+
return new PolicyStatement({
|
|
327
|
+
actions: [
|
|
328
|
+
'dynamodb:PartiQLSelect',
|
|
329
|
+
'dynamodb:DescribeTable',
|
|
330
|
+
'dynamodb:ListTables',
|
|
331
|
+
'dynamodb:GetItem',
|
|
332
|
+
'dynamodb:Scan',
|
|
333
|
+
'dynamodb:Query',
|
|
334
|
+
'dynamodb:GetRecords',
|
|
335
|
+
'dynamodb:BatchGetItem',
|
|
336
|
+
],
|
|
337
|
+
effect: Effect.ALLOW,
|
|
338
|
+
resources: resourceArns ?? ['*'],
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* @summary Method to create iam statement to write items from dynamodb table
|
|
343
|
+
* @param resourceArns list of ARNs to allow access to
|
|
344
|
+
*/
|
|
345
|
+
statementForWriteTableItems(resourceArns) {
|
|
346
|
+
return new PolicyStatement({
|
|
347
|
+
actions: ['dynamodb:BatchWriteItem', 'dynamodb:DeleteItem', 'dynamodb:PutItem', 'dynamodb:UpdateItem'],
|
|
348
|
+
effect: Effect.ALLOW,
|
|
349
|
+
resources: resourceArns ?? ['*'],
|
|
350
|
+
});
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* @summary Method to create iam statement to poll from dynamodb table
|
|
354
|
+
* @param resourceArns list of ARNs to allow access to
|
|
355
|
+
*/
|
|
356
|
+
statementFordynamoDbStream(resourceArns) {
|
|
357
|
+
return new PolicyStatement({
|
|
358
|
+
actions: ['dynamodb:DescribeStream', 'dynamodb:GetRecords', 'dynamodb:GetShardIterator', 'dynamodb:ListStreams'],
|
|
359
|
+
effect: Effect.ALLOW,
|
|
360
|
+
resources: resourceArns ?? ['*'],
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* @summary Method to create iam policy to invalidate cloudfront cache
|
|
365
|
+
* @param resourceArns list of ARNs to allow access to
|
|
366
|
+
*/
|
|
367
|
+
createPolicyForCloudfrontInvalidation(resourceArns) {
|
|
368
|
+
return new PolicyDocument({
|
|
369
|
+
statements: [
|
|
370
|
+
this.statementForCreateAnyLogStream(),
|
|
371
|
+
this.statementForPutAnyLogEvent(),
|
|
372
|
+
this.statementForCloudfrontInvalidation(),
|
|
373
|
+
new PolicyStatement({
|
|
374
|
+
actions: [
|
|
375
|
+
'ecr:GetDownloadUrlForLayer',
|
|
376
|
+
'ecr:BatchGetImage',
|
|
377
|
+
'ecr:BatchCheckLayerAvailability',
|
|
378
|
+
'ecr:GetAuthorizationToken',
|
|
379
|
+
],
|
|
380
|
+
effect: Effect.ALLOW,
|
|
381
|
+
resources: resourceArns ?? ['*'],
|
|
382
|
+
}),
|
|
383
|
+
],
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* @summary Method to create iam policy for sqs
|
|
388
|
+
* @param id scoped id of the resource
|
|
389
|
+
* @param scope scope in which this resource is defined
|
|
390
|
+
* @param sqsQueue
|
|
391
|
+
* @param eventBridgeRule
|
|
392
|
+
* @param servicePrincipals
|
|
393
|
+
*/
|
|
394
|
+
createPolicyForSqsEvent(id, scope, sqsQueue, eventBridgeRule, servicePrincipals) {
|
|
395
|
+
return new PolicyDocument({
|
|
396
|
+
statements: [
|
|
397
|
+
new PolicyStatement({
|
|
398
|
+
actions: ['sqs:*'],
|
|
399
|
+
conditions: {
|
|
400
|
+
ArnEquals: {
|
|
401
|
+
'aws:SourceArn': eventBridgeRule,
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
effect: Effect.ALLOW,
|
|
405
|
+
principals: servicePrincipals ?? [new ServicePrincipal('events.amazonaws.com')],
|
|
406
|
+
resources: [sqsQueue.queueArn],
|
|
407
|
+
}),
|
|
408
|
+
],
|
|
409
|
+
});
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* @summary Method to create iam role to invalidate cloudfront cache
|
|
413
|
+
* @param id scoped id of the resource
|
|
414
|
+
* @param scope scope in which this resource is defined
|
|
415
|
+
*/
|
|
416
|
+
createRoleForCloudfrontInvalidation(id, scope) {
|
|
417
|
+
return new Role(scope, `${id}-install-deps-project-role`, {
|
|
418
|
+
assumedBy: new ServicePrincipal('codebuild.amazonaws.com'),
|
|
419
|
+
inlinePolicies: {
|
|
420
|
+
codeBuildPolicy: this.createPolicyForCloudfrontInvalidation(),
|
|
421
|
+
},
|
|
422
|
+
roleName: scope.resourceNameFormatter.format(`${id}-cf-invalidation`, scope.props.resourceNameOptions?.iam),
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
/**
|
|
426
|
+
* @summary Method to create iam statement for cloud trail
|
|
427
|
+
* @param id scoped id of the resource
|
|
428
|
+
* @param scope scope in which this resource is defined
|
|
429
|
+
* @param logGroup
|
|
430
|
+
*/
|
|
431
|
+
createRoleForCloudTrail(id, scope, logGroup) {
|
|
432
|
+
const policy = new PolicyDocument({
|
|
433
|
+
statements: [this.statementForCreateLogStream(scope, logGroup), this.statementForPutLogEvent(scope, logGroup)],
|
|
434
|
+
});
|
|
435
|
+
const role = new CfnRole(scope, `${id}`, {
|
|
436
|
+
assumeRolePolicyDocument: new PolicyDocument({
|
|
437
|
+
statements: [this.statementForAssumeRole(scope, [new ServicePrincipal('cloudtrail.amazonaws.com')])],
|
|
438
|
+
}),
|
|
439
|
+
policies: [
|
|
440
|
+
{
|
|
441
|
+
policyDocument: policy,
|
|
442
|
+
policyName: scope.resourceNameFormatter.format(`${id}-policy`),
|
|
443
|
+
},
|
|
444
|
+
],
|
|
445
|
+
roleName: scope.resourceNameFormatter.format(`${id}-trail`, scope.props.resourceNameOptions?.iam),
|
|
446
|
+
});
|
|
447
|
+
createCfnOutput(`${id}Arn`, scope, role.attrArn);
|
|
448
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
449
|
+
return role;
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* @summary Method to create iam statement for ecs event
|
|
453
|
+
* @param id scoped id of the resource
|
|
454
|
+
* @param scope scope in which this resource is defined
|
|
455
|
+
* @param cluster
|
|
456
|
+
* @param task
|
|
457
|
+
*/
|
|
458
|
+
createRoleForEcsEvent(id, scope, cluster, task) {
|
|
459
|
+
const policy = new PolicyDocument({
|
|
460
|
+
statements: [this.statementForRunEcsTask(scope, cluster, task), this.statementForEcsPassRole()],
|
|
461
|
+
});
|
|
462
|
+
const role = new Role(scope, `${id}`, {
|
|
463
|
+
assumedBy: new ServicePrincipal('events.amazonaws.com'),
|
|
464
|
+
description: `Role for ${id} ECS Task execution from EventBridge`,
|
|
465
|
+
inlinePolicies: { policy },
|
|
466
|
+
roleName: scope.resourceNameFormatter.format(`${id}-ecs-event`, scope.props.resourceNameOptions?.iam),
|
|
467
|
+
});
|
|
468
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
469
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
470
|
+
return role;
|
|
471
|
+
}
|
|
472
|
+
/**
|
|
473
|
+
* @summary Method to create iam statement for ecs execution
|
|
474
|
+
* @param id scoped id of the resource
|
|
475
|
+
* @param scope scope in which this resource is defined
|
|
476
|
+
* @param policy
|
|
477
|
+
*/
|
|
478
|
+
createRoleForEcsExecution(id, scope, policy) {
|
|
479
|
+
const role = new Role(scope, `${id}`, {
|
|
480
|
+
assumedBy: new ServicePrincipal('ecs-tasks.amazonaws.com'),
|
|
481
|
+
description: `Role for ${id} ECS Task execution`,
|
|
482
|
+
inlinePolicies: { policy },
|
|
483
|
+
managedPolicies: [
|
|
484
|
+
ManagedPolicy.fromManagedPolicyArn(scope, `${id}-AmazonECSTaskExecutionRolePolicy`, 'arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy'),
|
|
485
|
+
],
|
|
486
|
+
roleName: scope.resourceNameFormatter.format(`${id}-ecs-exec`, scope.props.resourceNameOptions?.iam),
|
|
487
|
+
});
|
|
488
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
489
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
490
|
+
return role;
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* @summary Method to create iam statement for lambda execution
|
|
494
|
+
* @param id scoped id of the resource
|
|
495
|
+
* @param scope scope in which this resource is defined
|
|
496
|
+
* @param policy
|
|
497
|
+
* @param servicePrincipal
|
|
498
|
+
*/
|
|
499
|
+
createRoleForLambda(id, scope, policy, servicePrincipal) {
|
|
500
|
+
const role = new Role(scope, `${id}`, {
|
|
501
|
+
assumedBy: servicePrincipal ?? new ServicePrincipal('lambda.amazonaws.com'),
|
|
502
|
+
description: `Role for ${id} Lambda function`,
|
|
503
|
+
inlinePolicies: { policy },
|
|
504
|
+
managedPolicies: [
|
|
505
|
+
ManagedPolicy.fromManagedPolicyArn(scope, `${id}-AWSLambdaBasicExecutionRole`, 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'),
|
|
506
|
+
],
|
|
507
|
+
roleName: scope.resourceNameFormatter.format(`${id}-lambda`, scope.props.resourceNameOptions?.iam),
|
|
508
|
+
});
|
|
509
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
510
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
511
|
+
return role;
|
|
512
|
+
}
|
|
513
|
+
/**
|
|
514
|
+
* @summary Method to create iam statement for appconfig secrets manager integration
|
|
515
|
+
* @param id scoped id of the resource
|
|
516
|
+
* @param scope scope in which this resource is defined
|
|
517
|
+
* @param policy
|
|
518
|
+
* @param servicePrincipal
|
|
519
|
+
*/
|
|
520
|
+
createRoleForAppConfigSecrets(id, scope, policy, servicePrincipal) {
|
|
521
|
+
const role = new Role(scope, `${id}`, {
|
|
522
|
+
assumedBy: servicePrincipal ?? new ServicePrincipal('appconfig.amazonaws.com'),
|
|
523
|
+
description: `Role for ${id} AppConfig Secrets`,
|
|
524
|
+
inlinePolicies: { policy },
|
|
525
|
+
roleName: scope.resourceNameFormatter.format(`${id}-config`, scope.props.resourceNameOptions?.iam),
|
|
526
|
+
});
|
|
527
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
528
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
529
|
+
return role;
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* @summary Method to create iam statement for step function execution
|
|
533
|
+
* @param id scoped id of the resource
|
|
534
|
+
* @param scope scope in which this resource is defined
|
|
535
|
+
* @param policy
|
|
536
|
+
* @param servicePrincipal
|
|
537
|
+
*/
|
|
538
|
+
createRoleForStepFunction(id, scope, policy, servicePrincipal) {
|
|
539
|
+
const role = new Role(scope, `${id}`, {
|
|
540
|
+
assumedBy: servicePrincipal ?? new ServicePrincipal('states.amazonaws.com'),
|
|
541
|
+
description: `Role for ${id} Lambda function`,
|
|
542
|
+
inlinePolicies: { policy },
|
|
543
|
+
managedPolicies: [
|
|
544
|
+
ManagedPolicy.fromManagedPolicyArn(scope, `${id}-AWSLambdaBasicExecutionRole`, 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'),
|
|
545
|
+
],
|
|
546
|
+
roleName: scope.resourceNameFormatter.format(`${id}-sfn-exec`, scope.props.resourceNameOptions?.iam),
|
|
547
|
+
});
|
|
548
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
549
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
550
|
+
return role;
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* @summary Method to create iam statement for sqs to step function pipe
|
|
554
|
+
* @param id scoped id of the resource
|
|
555
|
+
* @param scope scope in which this resource is defined
|
|
556
|
+
* @param queueArn the arn of the sqs queue
|
|
557
|
+
* @param stepFunctionArn the arn of the step function
|
|
558
|
+
*/
|
|
559
|
+
createRoleForSqsToSfnPipe(id, scope, queueArn, stepFunctionArn) {
|
|
560
|
+
const role = new Role(scope, `${id}`, {
|
|
561
|
+
assumedBy: new ServicePrincipal('pipes.amazonaws.com'),
|
|
562
|
+
description: `Role for ${id} Pipe`,
|
|
563
|
+
roleName: scope.resourceNameFormatter.format(`${id}-pipe`, scope.props.resourceNameOptions?.iam),
|
|
564
|
+
});
|
|
565
|
+
role.addToPolicy(this.statementForPollQueue([queueArn]));
|
|
566
|
+
role.addToPolicy(this.statementForStartExecution([stepFunctionArn]));
|
|
567
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
568
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
569
|
+
return role;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* @summary Method to create iam statement for sqs to lambda pipe
|
|
573
|
+
* @param id scoped id of the resource
|
|
574
|
+
* @param scope scope in which this resource is defined
|
|
575
|
+
* @param queueArn the arn of the sqs queue
|
|
576
|
+
* @param lambdaArn the arn of the lambda function
|
|
577
|
+
*/
|
|
578
|
+
createRoleForSqsToLambdaPipe(id, scope, queueArn, lambdaArn) {
|
|
579
|
+
const role = new Role(scope, `${id}`, {
|
|
580
|
+
assumedBy: new ServicePrincipal('pipes.amazonaws.com'),
|
|
581
|
+
description: `Role for ${id} Pipe`,
|
|
582
|
+
roleName: scope.resourceNameFormatter.format(`${id}-pipe`, scope.props.resourceNameOptions?.iam),
|
|
583
|
+
});
|
|
584
|
+
role.addToPolicy(this.statementForPollQueue([queueArn]));
|
|
585
|
+
role.addToPolicy(this.statementForInvokeLambda([lambdaArn]));
|
|
586
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
587
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
588
|
+
return role;
|
|
589
|
+
}
|
|
590
|
+
/**
|
|
591
|
+
* @summary Method to create iam statement for dynamoDb to lambda function pipe
|
|
592
|
+
* @param id scoped id of the resource
|
|
593
|
+
* @param scope scope in which this resource is defined
|
|
594
|
+
* @param dynamoDbStreamArn the arn of the dynamoDb Stream queue
|
|
595
|
+
* @param lambdaFunctionArn the arn of the lambda function
|
|
596
|
+
*/
|
|
597
|
+
createRoleForDynamoDbToLambdaPipe(id, scope, dynamoDbStreamArn, lambdaFunctionArn) {
|
|
598
|
+
const role = new Role(scope, `${id}`, {
|
|
599
|
+
assumedBy: new ServicePrincipal('pipes.amazonaws.com'),
|
|
600
|
+
description: `Role for ${id} Pipe`,
|
|
601
|
+
roleName: scope.resourceNameFormatter.format(`${id}-pipe`, scope.props.resourceNameOptions?.iam),
|
|
602
|
+
});
|
|
603
|
+
role.addToPolicy(this.statementFordynamoDbStream([dynamoDbStreamArn]));
|
|
604
|
+
role.addToPolicy(this.statementForInvokeLambda([lambdaFunctionArn]));
|
|
605
|
+
createCfnOutput(`${id}Arn`, scope, role.roleArn);
|
|
606
|
+
createCfnOutput(`${id}Name`, scope, role.roleName);
|
|
607
|
+
return role;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export * from './api-gateway/index.js';
|
|
2
|
+
export * from './appconfig/index.js';
|
|
3
|
+
export * from './certificate-manager/index.js';
|
|
4
|
+
export * from './cloudfront/index.js';
|
|
5
|
+
export * from './cloudtrail/index.js';
|
|
6
|
+
export * from './cloudwatch/index.js';
|
|
7
|
+
export * from './codebuild/index.js';
|
|
8
|
+
export * from './constants.js';
|
|
9
|
+
export * from './dynamodb/index.js';
|
|
10
|
+
export * from './elastic-container-registry/index.js';
|
|
11
|
+
export * from './elastic-container-service/index.js';
|
|
12
|
+
export * from './elastic-file-system/index.js';
|
|
13
|
+
export * from './elastic-kubernetes-service/index.js';
|
|
14
|
+
export * from './elasticache/index.js';
|
|
15
|
+
export * from './eventbridge/index.js';
|
|
16
|
+
export * from './evidently/index.js';
|
|
17
|
+
export * from './identity-access-management/index.js';
|
|
18
|
+
export * from './key-management-service/index.js';
|
|
19
|
+
export * from './lambda/index.js';
|
|
20
|
+
export * from './route53/index.js';
|
|
21
|
+
export * from './secrets-manager/index.js';
|
|
22
|
+
export * from './simple-notification-service/index.js';
|
|
23
|
+
export * from './simple-queue-service/index.js';
|
|
24
|
+
export * from './simple-storage-service/index.js';
|
|
25
|
+
export * from './step-function/index.js';
|
|
26
|
+
export * from './systems-manager/index.js';
|
|
27
|
+
export * from './virtual-private-cloud/index.js';
|
|
28
|
+
export * from './web-application-firewall/index.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export * from './api-gateway/index.js';
|
|
2
|
+
export * from './appconfig/index.js';
|
|
3
|
+
export * from './certificate-manager/index.js';
|
|
4
|
+
export * from './cloudfront/index.js';
|
|
5
|
+
export * from './cloudtrail/index.js';
|
|
6
|
+
export * from './cloudwatch/index.js';
|
|
7
|
+
export * from './codebuild/index.js';
|
|
8
|
+
export * from './constants.js';
|
|
9
|
+
export * from './dynamodb/index.js';
|
|
10
|
+
export * from './elastic-container-registry/index.js';
|
|
11
|
+
export * from './elastic-container-service/index.js';
|
|
12
|
+
export * from './elastic-file-system/index.js';
|
|
13
|
+
export * from './elastic-kubernetes-service/index.js';
|
|
14
|
+
export * from './elasticache/index.js';
|
|
15
|
+
export * from './eventbridge/index.js';
|
|
16
|
+
export * from './evidently/index.js';
|
|
17
|
+
export * from './identity-access-management/index.js';
|
|
18
|
+
export * from './key-management-service/index.js';
|
|
19
|
+
export * from './lambda/index.js';
|
|
20
|
+
export * from './route53/index.js';
|
|
21
|
+
export * from './secrets-manager/index.js';
|
|
22
|
+
export * from './simple-notification-service/index.js';
|
|
23
|
+
export * from './simple-queue-service/index.js';
|
|
24
|
+
export * from './simple-storage-service/index.js';
|
|
25
|
+
export * from './step-function/index.js';
|
|
26
|
+
export * from './systems-manager/index.js';
|
|
27
|
+
export * from './virtual-private-cloud/index.js';
|
|
28
|
+
export * from './web-application-firewall/index.js';
|