Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Pulumi Support, Closes #187 #1752

Open
wants to merge 131 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
131 commits
Select commit Hold shift + click to select a range
84d531d
Adding initial pulumi copy of items
rshade May 24, 2022
8ccd1a3
updating items with new structs
rshade May 25, 2022
e7bff10
adding samples
rshade May 25, 2022
4642984
Updating Parser
rshade May 25, 2022
d539b35
Adding types and getting cost working
rshade May 26, 2022
b28d779
adding new items
rshade May 26, 2022
16c127e
adding more resources in
rshade May 27, 2022
b3b77ab
adding in dependencies
rshade May 31, 2022
4269f76
Updating to 1 types file, adding in more resources
rshade Jun 6, 2022
d879326
Merge branch 'master' into feat/pulumi
rshade Jun 6, 2022
57529a3
cleanup and making it look closer to tf
rshade Jun 7, 2022
c839c79
adding new type
rshade Jun 7, 2022
4e083f8
adding initial set of cost items
rshade Jun 7, 2022
5a719d2
Adding top resource and cleaning up resource map
rshade Jun 7, 2022
28a5daf
Adding in rds and additional types
rshade Jun 7, 2022
377bba8
more updates
rshade Jun 7, 2022
f5e52e7
adding additional natgateway for cost
rshade Jun 7, 2022
b05a2a9
adding more items
rshade Jun 7, 2022
6fd4e76
Merge branch 'master' into feat/pulumi
rshade Jun 7, 2022
2d16331
Adding in eks items
rshade Jun 8, 2022
afea8b3
formatting plan.json
rshade Jun 8, 2022
a4e6b86
Merge branch 'master' into feat/pulumi
rshade Jun 8, 2022
5b80e24
Merge branch 'master' into feat/pulumi
rshade Jun 8, 2022
37c95bf
updating contributing.md
rshade Jun 8, 2022
c4b7c91
Resource data
rshade Jun 9, 2022
857980b
Merge branch 'master' into feat/pulumi
rshade Jun 9, 2022
a65d28b
references
rshade Jun 9, 2022
fa87010
Adding in more notes for contributing, and fixing the parsing
rshade Jun 9, 2022
e734d53
Updating to remove logging
rshade Jun 9, 2022
31da511
Adding in 4 additional items
rshade Jun 9, 2022
9915a1f
updating contributing
rshade Jun 10, 2022
2c9304f
Merging Master
rshade Jun 14, 2022
a42d1a9
Merge branch 'master' into feat/pulumi
rshade Jun 14, 2022
eae587f
Cleaning up golanglint
rshade Jun 14, 2022
5c96980
Other golint items
rshade Jun 14, 2022
8f232f5
fixing ebs_snapshot_copy
rshade Jun 15, 2022
e25d0bd
Update CONTRIBUTING.md
rshade Jun 15, 2022
65af44f
Update contributing/pulumi.md
rshade Jun 15, 2022
cc48a4e
Update internal/providers/detect.go
rshade Jun 15, 2022
3981e10
Update internal/providers/detect.go
rshade Jun 15, 2022
80ad942
Update internal/providers/pulumi/preview_json_provider.go
rshade Jun 15, 2022
d2e052b
Apply suggestions from code review
rshade Jun 15, 2022
1f37060
Fixing up panics
rshade Jun 15, 2022
3f62232
Merge branch 'master' into feat/pulumi
rshade Jun 16, 2022
bb430ee
upstream merge
rshade Jun 17, 2022
84e0102
Using Pulumi SDK instead
rshade Jun 27, 2022
e146d01
Merge branch 'master' into feat/pulumi
rshade Jun 29, 2022
bdf1ca3
Merge branch 'infracost:master' into feat/pulumi
rshade Jun 30, 2022
4ed4a2f
Merge branch 'infracost:master' into feat/pulumi
rshade Jul 6, 2022
f84d71b
updates
rshade Jul 7, 2022
8f7475c
merged go.mod
rshade Jul 7, 2022
29788ba
Merge branch 'infracost:master' into feat/pulumi
rshade Jul 8, 2022
b12476f
feat: add monthly_hrs usage field for aws/azure/gcp VMs (#1812)
jessecureton Jul 11, 2022
fc6b760
Fix/use root path for file functions (#1849)
tim775 Jul 13, 2022
c90fe89
feat(azure): Add Azure IoT Hub resources (#1850)
sawyerward Jul 13, 2022
4a257ee
enhance: format stacktraces so we can match them when reported (#1854)
aliscott Jul 13, 2022
d7742c9
Updated Items
rshade Jul 18, 2022
c1d10b5
chore: add message clarifying debug log can be ignored (#1859)
aliscott Jul 14, 2022
8e61e34
fix: parser index panic (#1861)
aliscott Jul 15, 2022
067a78d
feat(azure): Add Virtual Network peering resource (#1852)
sawyerward Jul 15, 2022
e9c7c8e
fix: fix Azure VM scale set panic when resource has no `storage_profi…
aliscott Jul 15, 2022
a5a3441
fix: fix entry in nil map panic (#1865)
aliscott Jul 17, 2022
0db0786
fix(google): Update product filters for Google Storage Bucket resourc…
vdmgolub Jul 18, 2022
7a82f90
fix: using unsafe As methods in `go-cty` lib (#1866)
hugorut Jul 18, 2022
1f21bb0
chore: upgrade github.com/Masterminds/goutils (#1862)
aliscott Jul 18, 2022
a2cac9f
fix: passing cty.Nil value to hcl expressions when in an partial eval…
hugorut Jul 18, 2022
a549a99
Updating from release
rshade Jul 20, 2022
4002b4d
Merge branch 'master' into feat/pulumi
rshade Jul 22, 2022
39fe18a
Merge branch 'master' into feat/pulumi
rshade Aug 20, 2022
9201c39
fix: don't assume role when parsing Terragrunt (#1977)
aliscott Aug 24, 2022
71fa2ec
chore: update go-git to use the latest master hash (#1989)
hugorut Aug 24, 2022
cc4368f
fix(azure): fix azurerm_function_app product filters following Azure …
aliscott Aug 25, 2022
9ad67d7
fix(azure): fix azurerm_mysql_flexible_server product filters followi…
aliscott Aug 25, 2022
7324935
feat(azure): Add support for case-insensitive VM sizes to linux_virtu…
mnaghavi Aug 26, 2022
6bf7e7f
enhance: add Run ID to event properties (#1998)
aliscott Aug 29, 2022
d2db3cf
feat: additional VCS env vars (#1990)
hugorut Aug 29, 2022
5be2fb2
feat: Add upload command (#1997)
tim775 Aug 29, 2022
5df4050
fix: use context method for cloud enabled telemetry value (#1999)
hugorut Aug 29, 2022
c30dc09
fix: break help text into multiple lines (#2000)
alikhajeh1 Aug 30, 2022
f9d1246
feat: add support for me-central-1, Middle East (UAE) region (#2001)
aliscott Aug 30, 2022
a78904c
fix: detect vcs provider from remote if not provided (#2002)
hugorut Aug 30, 2022
2dbd91e
docs: update screenshots
alikhajeh1 Sep 1, 2022
c70568e
test(aws): Fix price hashes for China data transfer tests
vdmgolub Sep 2, 2022
c0cfd19
chore: Remove unused code for deprecated registration method
vdmgolub Sep 2, 2022
d9f152a
chore: update supported security patch versions
aliscott Sep 2, 2022
7a5c07d
chore: add debug line on client requests (#2018)
hugorut Sep 5, 2022
51605eb
fix: Fix project name generation from complex URLs (#2016)
vdmgolub Sep 5, 2022
d5f7c4e
fix: filter repoMetadata from telemetry (#2020)
hugorut Sep 6, 2022
ba73743
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/autoscaling (#…
dependabot[bot] Sep 6, 2022
9c42c48
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 (#2027)
dependabot[bot] Sep 6, 2022
50492eb
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/cloudwatch (#2…
dependabot[bot] Sep 6, 2022
6d4800d
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/ec2 (#2026)
dependabot[bot] Sep 6, 2022
48fe3a6
chore(deps): bump github.com/maruel/panicparse/v2 from 2.3.0 to 2.3.1…
dependabot[bot] Sep 6, 2022
8358599
chore(deps): bump github.com/Rhymond/go-money from 1.0.8 to 1.0.9 (#2…
dependabot[bot] Sep 6, 2022
575410a
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/dynamodb (#2023)
dependabot[bot] Sep 7, 2022
7e2e9ab
chore(deps): bump github.com/hashicorp/hcl/v2 from 2.13.0 to 2.14.0 (…
dependabot[bot] Sep 7, 2022
5611cda
chore(deps): bump github.com/tidwall/gjson from 1.14.1 to 1.14.3 (#2007)
dependabot[bot] Sep 7, 2022
beff596
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/eks (#2024)
dependabot[bot] Sep 7, 2022
8990f02
chore(deps): bump github.com/zclconf/go-cty from 1.10.0 to 1.11.0 (#2…
dependabot[bot] Sep 7, 2022
c2bac4a
feat: add resource type default usage data (#1979)
balazs-marjan Sep 15, 2022
5212765
feat: add HCL warnings to project metadata (#2037)
hugorut Sep 16, 2022
6d48bf7
chore: update dependabot config
aliscott Sep 19, 2022
63c940d
feat: Add support for Infracost Cloud based usage estimates (#2050)
tim775 Sep 21, 2022
89db0b5
Enhance/actual costs output (#2054)
tim775 Sep 26, 2022
ff241a2
feat: custom currency format option is provided to for cost formattin…
fatihtokus Sep 26, 2022
094e5ba
refactor: CI_PLATFORM env var to allow override for the ci platform (…
hugorut Sep 28, 2022
26083fc
fix: add linuxbrew to release path (#2062)
hugorut Sep 28, 2022
efc19a3
fix: use correct parse function for JSON files (#2067)
aliscott Sep 30, 2022
820fbf9
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 (#2073)
dependabot[bot] Oct 2, 2022
42843fa
chore(deps): bump github.com/slack-go/slack from 0.11.2 to 0.11.3 (#2…
dependabot[bot] Oct 2, 2022
1949bcc
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/autoscaling (#…
dependabot[bot] Oct 2, 2022
dd1b338
chore(deps): bump github.com/google/go-cmp from 0.5.8 to 0.5.9 (#2047)
dependabot[bot] Oct 2, 2022
8ffb13d
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/eks (#2070)
dependabot[bot] Oct 2, 2022
5e04ed2
chore(deps): bump github.com/open-policy-agent/opa from 0.43.0 to 0.4…
dependabot[bot] Oct 2, 2022
1656141
chore(deps): bump github.com/aws/aws-sdk-go-v2/service/dynamodb (#2071)
dependabot[bot] Oct 2, 2022
9fa84fe
merges and rebase
rshade Oct 3, 2022
eb3a571
Merge branch 'master' into feat/pulumi
rshade Oct 3, 2022
98d1e88
Go Mod Tidy
rshade Oct 3, 2022
cac8171
Fixing GenerateProjectName
rshade Oct 10, 2022
2703942
Updated from merge
rshade Dec 8, 2022
83f5d15
Upstream Merge
rshade Jan 30, 2023
c561c5b
Upstream Merge, Broken
rshade Mar 23, 2023
ff4322b
upstream merge:
rshade Jun 28, 2023
b3eaf6a
build
rshade Jun 28, 2023
5b69cc9
refactor: use PartialResources for Pulumi provider
aliscott Jun 29, 2023
8577b8e
fixing lint check
rshade Jun 29, 2023
4b5dee6
Merge branch 'master' into feat/pulumi
rshade Jul 3, 2023
8a5520d
Merge branch 'master' into feat/pulumi
rshade Jul 6, 2023
1fed65a
Merge branch 'master' into feat/pulumi
rshade Aug 28, 2023
0331667
Update internal/providers/pulumi/parser.go
rshade Sep 18, 2023
affd0b7
Upstream merge and pulumi upgrade
rshade Dec 18, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
15 changes: 13 additions & 2 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,15 @@ This guide assumes you are familiar with Terraform, if not you can take an hour
### Install

Assuming you have already [installed go](https://golang.org/doc/install), install the go dependencies

```sh
make deps
```

### Run

Run the code:

```sh
make run ARGS="breakdown --path examples/terraform --usage-file=examples/terraform/infracost-usage.yml"
```
Expand All @@ -55,31 +57,37 @@ This will use your existing Infracost API key; register for a [free API key](htt
#### Unit tests

To run only the unit tests:

```sh
make test
```

#### Integration tests

You should run tests with the `-v` flag and warn log level so you can see and fix any warnings:

```sh
INFRACOST_LOG_LEVEL=warn go test -v -cover ./internal/providers/terraform/aws/ebs_volume_test.go

time="2021-04-05T15:24:16Z" level=warning msg="Multiple prices found for aws_ebs_volume.gp3 Provisioned throughput, using the first price"
```

To run all the tests for a specific cloud vendor:

```sh
make test_aws
make test_google
make test_azure
```

To run all the tests, you can use:

```sh
make test_all
```

Test golden files may be updated for all test or for a specific cloud vendor:

```sh
make test_update
make test_update_aws
Expand All @@ -96,13 +104,16 @@ make build
## Adding new resources

Checkout **[our dedicated guide](contributing/add_new_resource_guide.md)** to add resources!
Checkout **[Pulumi Contributing](contributing/pulumi.md)** also to add Pulumi resources!
rshade marked this conversation as resolved.
Show resolved Hide resolved

### Azure credentials

Working on Azure resources requires Azure creds as the Azure Terraform provider requires real credentials to be able to run `terraform plan`. This means you must have Azure credentials for running the Infracost commands and integration tests for Azure. We recommend creating read-only Azure credentials for this purpose. If you have an Azure subscription, you can do this by running the `az` command line:

```sh
az ad sp create-for-rbac --name http://InfracostReadOnly --role Reader --scope=/subscriptions/<SUBSCRIPTION ID> --years=10
```

If you do not have an Azure subscription, then please ask on the contributors channel on the Infracost Slack and we can provide you with credentials.

To run the Azure integration tests in the GitHub action in pull requests, these credentials also need to be added to your fork's secrets. To do this:
Expand All @@ -113,9 +124,9 @@ Working on Azure resources requires Azure creds as the Azure Terraform provider
### Querying the GraphQL API

1. Use a browser extension like [modheader](https://bewisse.com/modheader/help/) to allow you to specify additional headers in your browser.
2. Go to https://pricing.api.infracost.io/graphql
2. Go to <https://pricing.api.infracost.io/graphql>
3. Set your `X-API-Key` using the browser extension
4. Run GraphQL queries to find the correct products. Examples can be found here: https://github.com/infracost/cloud-pricing-api/tree/master/examples/queries
4. Run GraphQL queries to find the correct products. Examples can be found here: <https://github.com/infracost/cloud-pricing-api/tree/master/examples/queries>

The GraphQL pricing API limits the number of results returned to 1000, which can limit its usefulness for exploring the data. AWS use many acronyms so be sure to search for those too, e.g. "ES" returns "AmazonES" for ElasticSearch.

Expand Down
14 changes: 14 additions & 0 deletions contributing/pulumi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# Contributing to the pulumi provider
rshade marked this conversation as resolved.
Show resolved Hide resolved

## notes

1. The current pulumi provider uses the json preview digest, it is generated by `pulumi preview --show-sames -j > preview.json`
2. `parsePreviewDigest` in parser.go is where all of the parsing code exists.
3. We currently skip `stacks` and `awsx` components.
4. The `localInputs` map gets turned into a `gjson.Result` to enable all of the following code to execute `.Get("key")` on it.
5. `parseRegion` and `parseTags` both have provider based switches that call functions in the provider library
6. `Step.Op` determines whether the resource currently exists or not.
7. To keep the existing names in all of the registryItems we use a function `deriveTfResourceTypes` which derives the library name from the pulumi name.
8. If it is a free resource do not add it to the function above, just duplicate the name in `(aws|azure|google)/registry.go` in type: `FreeResources`
9. For an understanding of how references work checkout `// Parsing Block Device References` in `aws/instance.go`
10. The `urn` is the defaultID for all resources, since its unique.
2 changes: 2 additions & 0 deletions examples/pulumi/aws-ts-ebs/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/bin/
/node_modules/
2 changes: 2 additions & 0 deletions examples/pulumi/aws-ts-ebs/Pulumi.dev.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
config:
aws:region: us-west-2
3 changes: 3 additions & 0 deletions examples/pulumi/aws-ts-ebs/Pulumi.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
name: aws-ts-ebs
runtime: nodejs
description: A minimal AWS TypeScript Pulumi program
196 changes: 196 additions & 0 deletions examples/pulumi/aws-ts-ebs/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
import * as awsx from "@pulumi/awsx";

const bucket = new aws.s3.Bucket("mybucket");
const namePrefix = 'example'

const vpc = new awsx.ec2.Vpc(`${namePrefix}-vpc`, {
cidrBlock: '10.0.0.0/22',
numberOfAvailabilityZones: 3,
numberOfNatGateways: 2,
});

const ebsVolume = new aws.ebs.Volume(`${namePrefix}-ebs-volume`, {
availabilityZone: "us-west-2a",
size: 40,
tags: {
Name: "HelloWorld",
},
});

const ebsVolume1 = new aws.ebs.Volume(`${namePrefix}-ebs-volume-1`, {
availabilityZone: "us-west-2a",
size: 40,
tags: {
Name: "HelloWorld",
},
});

const ubuntu = aws.ec2.getAmi({
mostRecent: true,
filters: [
{
name: "name",
values: ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"],
},
{
name: "virtualization-type",
values: ["hvm"],
},
],
owners: ["099720109477"],
});

const eip = new aws.ec2.Eip(`${namePrefix}-elastic-ip`, {
vpc: true,
});

const web = new aws.ec2.Instance(`${namePrefix}-ec2-instance`, {
ami: ubuntu.then(ubuntu => ubuntu.id),
instanceType: "t3.micro",
tags: {
Name: "HelloWorld",
},
rootBlockDevice: {
volumeSize: 40,
volumeType: "gp3"
},
creditSpecification: {
cpuCredits: "unlimited",
},
ebsBlockDevices: [
{ deviceName: '/dev/xvde', volumeId: ebsVolume.id},
{ deviceName: '/dev/xvdf', volumeId: ebsVolume1.id}
]
});

const eipAssoc = new aws.ec2.EipAssociation(`${namePrefix}-eipAssoc`, {
instanceId: web.id,
allocationId: eip.id,
});


const dbAppSecurityGroup = new aws.ec2.SecurityGroup(`${namePrefix}-dbAppAccessGroup`, {
vpcId: vpc.id
})

const rdsInstance = new aws.rds.Instance(`${namePrefix}-rds`, {
allocatedStorage: 40,
dbSubnetGroupName: dbAppSecurityGroup.name,
engine: "mysql",
engineVersion: "8.0.28",
instanceClass: "db.t3.small",
iops: 0,
backupRetentionPeriod: 7,
backupWindow: "00:00-01:00",
maintenanceWindow: "Mon:02:00-Mon:04:00",
monitoringInterval: 0,
monitoringRoleArn: "",
optionGroupName: "",
parameterGroupName:"",
password: "example1234!",
username: "dbAdmin",
dbName: "example",
storageType: "gp2",
skipFinalSnapshot: true,
vpcSecurityGroupIds: [],
}, );

var azs = pulumi.output(vpc.privateSubnets).apply((subnets) => subnets.map((s) => s.subnet.availabilityZone))

const rdsCluster = new aws.rds.Cluster(`${namePrefix}-rds-cluster`, {
availabilityZones: azs,
backupRetentionPeriod: 5,
clusterIdentifier: "aurora-cluster-demo",
databaseName: "mydb",
engine: "aurora-mysql",
engineVersion: "5.7.mysql_aurora.2.03.2",
masterPassword: "example1234!",
masterUsername: "foo",
preferredBackupWindow: "07:00-09:00",
dbClusterInstanceClass: "db.r6gd.xlarge",
iops: 1000,
allocatedStorage: 1000
});

const clusterInstances: aws.rds.ClusterInstance[] = [];
for (const range = {value: 0}; range.value < 2; range.value++) {
clusterInstances.push(new aws.rds.ClusterInstance(`${namePrefix}-rds-clusterInstances-${range.value}`, {
identifier: `aurora-cluster-demo-${range.value}`,
clusterIdentifier: rdsCluster.id,
instanceClass: "db.r4.large",
engine: "aurora-mysql",
engineVersion: rdsCluster.engineVersion,
}));
}

const exampleRole = new aws.iam.Role(`${namePrefix}-iam-role`, {assumeRolePolicy: `{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "eks.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
`});
const example_AmazonEKSClusterPolicy = new aws.iam.RolePolicyAttachment(`${namePrefix}-AmazonEKSClusterPolicy`, {
policyArn: "arn:aws:iam::aws:policy/AmazonEKSClusterPolicy",
role: exampleRole.name,
});
// Optionally, enable Security Groups for Pods
// Reference: https://docs.aws.amazon.com/eks/latest/userguide/security-groups-for-pods.html
const example_AmazonEKSVPCResourceController = new aws.iam.RolePolicyAttachment(`${namePrefix}AmazonEKSVPCResourceController`, {
policyArn: "arn:aws:iam::aws:policy/AmazonEKSVPCResourceController",
role: exampleRole.name,
});

const eksCluster = new aws.eks.Cluster(`${namePrefix}-eks-cluster`, {
roleArn: exampleRole.arn,
vpcConfig: {
subnetIds: vpc.privateSubnetIds,
},
}, {
dependsOn: [
example_AmazonEKSClusterPolicy,
example_AmazonEKSVPCResourceController,
],
});

const example_AmazonEKSWorkerNodePolicy = new aws.iam.RolePolicyAttachment("example-AmazonEKSWorkerNodePolicy", {
policyArn: "arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy",
role: exampleRole.name,
});
const example_AmazonEKS_CNI_Policy = new aws.iam.RolePolicyAttachment("example-AmazonEKSCNIPolicy", {
policyArn: "arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy",
role: exampleRole.name,
});
const example_AmazonEC2ContainerRegistryReadOnly = new aws.iam.RolePolicyAttachment("example-AmazonEC2ContainerRegistryReadOnly", {
policyArn: "arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly",
role: exampleRole.name,
});

const eksNodeGroup = new aws.eks.NodeGroup("example", {
clusterName: eksCluster.name,
nodeRoleArn: exampleRole.arn,
subnetIds: vpc.privateSubnetIds,
scalingConfig: {
desiredSize: 1,
maxSize: 1,
minSize: 1,
},
updateConfig: {
maxUnavailable: 2,
},
instanceTypes: ["t3.large"]
}, {
dependsOn: [
example_AmazonEKSWorkerNodePolicy,
example_AmazonEKS_CNI_Policy,
example_AmazonEC2ContainerRegistryReadOnly,
],
});