cdk/lib/policies.ts (46 lines of code) (raw):
import {GuPolicy} from "@guardian/cdk/lib/constructs/iam";
import {GuStack} from "@guardian/cdk/lib/constructs/core";
import {Effect, PolicyStatement} from "aws-cdk-lib/aws-iam";
export function Policies(scope:GuStack) {
return [
new GuPolicy(scope, "PrivateBucketAccess", {
statements: [
new PolicyStatement({
effect: Effect.ALLOW,
resources: [
"arn:aws:s3::*:content-api-sanity-tests-dist/*",
"arn:aws:s3::*:content-api-es-snapshots/*",
`arn:aws:s3::*:content-api-config/content-api-sanity-tests/${scope.stage}/sanity-tests/*`
],
actions: ["s3:GetObject", "s3:ListBucket"]
})
]
}),
new GuPolicy(scope, "CloudwatchPolicy", {
statements: [
new PolicyStatement({
effect: Effect.ALLOW,
resources: [
"*"
],
actions: [
"cloudwatch:PutMetricData"
]
})
]
}),
new GuPolicy(scope, "EC2Access", {
statements: [
new PolicyStatement({
effect: Effect.ALLOW,
actions: [
"ec2:DescribeInstances",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeAutoScalingInstances",
],
resources: ["*"]
})
]
})
]
}