From b57294b3b293f8815297fa1888857a1b953c64c5 Mon Sep 17 00:00:00 2001 From: Brandon Kimberly Date: Thu, 13 Jun 2024 14:31:49 -0700 Subject: [PATCH 1/2] Add tagging AMP workspaces to EKS sol --- .../index.ts | 25 +++++++++++++++---- .../oss/eks-infra/v2.0.0/iac/package.json | 1 + 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts b/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts index 078c732e..81d79faa 100644 --- a/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts +++ b/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts @@ -7,6 +7,7 @@ import { ObservabilityBuilder } from '@aws-quickstart/eks-blueprints'; import * as cdk from "aws-cdk-lib"; import * as eks from 'aws-cdk-lib/aws-eks'; import * as iam from 'aws-cdk-lib/aws-iam'; +import { AmpClient, TagResourceCommand } from "@aws-sdk/client-amp"; export default class ExistingEksOpenSourceobservabilityPattern { async buildAsync(scope: cdk.App, _id: string) { @@ -81,12 +82,14 @@ export default class ExistingEksOpenSourceobservabilityPattern { .resourceProvider(blueprints.GlobalResources.Vpc, new blueprints.VpcProvider(vpcId)) // this is required with import cluster provider .build(scope, stackId); - new iam.OpenIdConnectProvider(obs.getClusterInfo().cluster.stack, 'OIDCProvider', { + const stack = obs.getClusterInfo().cluster.stack; + + new iam.OpenIdConnectProvider(stack, 'OIDCProvider', { url: sdkCluster.identity!.oidc!.issuer!, clientIds: ['sts.amazonaws.com'], }); - const clusterRole = new iam.Role(obs.getClusterInfo().cluster.stack, 'ClusterAdminRole', { + const clusterRole = new iam.Role(stack, 'ClusterAdminRole', { assumedBy: new iam.CompositePrincipal( new iam.ServicePrincipal("eks.amazonaws.com"), new iam.AccountPrincipal(account).withConditions( @@ -97,7 +100,7 @@ export default class ExistingEksOpenSourceobservabilityPattern { description: 'Deployed by AWS Managed OSS EKS Infrastructure Observability Solution' }); - new eks.CfnAccessEntry(obs.getClusterInfo().cluster.stack, 'MyCfnAccessEntry', { + new eks.CfnAccessEntry(stack, 'MyCfnAccessEntry', { clusterName: clusterName, principalArn: clusterRole.roleArn, accessPolicies: [{ @@ -134,8 +137,20 @@ export default class ExistingEksOpenSourceobservabilityPattern { scraper.node.addDependency(obs) - cdk.Tags.of(obs.getClusterInfo().cluster.stack) - .add('o11y', "eks-infra-v" + utils.valueFromContext(scope, "solutionVersion", "2.0.0")); + const versionNumber = utils.valueFromContext(scope, "solutionVersion", "2.0.0") + + cdk.Tags.of(stack) + .add('o11y', "eks-infra-v" + versionNumber); + + // Tag existing AMP workspace with version number + const ampClient = new AmpClient(); + const tagInput = { + resourceArn: ampWorkspaceArn, + tags: { + "o11y": "eks-infra-v" + versionNumber, + }, + }; + await ampClient.send(new TagResourceCommand(tagInput)); } } diff --git a/solutions/oss/eks-infra/v2.0.0/iac/package.json b/solutions/oss/eks-infra/v2.0.0/iac/package.json index 9848c0b1..d47e8b24 100644 --- a/solutions/oss/eks-infra/v2.0.0/iac/package.json +++ b/solutions/oss/eks-infra/v2.0.0/iac/package.json @@ -30,6 +30,7 @@ "aws-cdk": "2.133.0", "aws-cdk-lib": "^2.135.0", "aws-sdk": "^2.1455.0", + "@aws-sdk/client-amp": "^3.596.0", "constructs": "^10.3.0", "eks-blueprints-cdk-kubeflow-ext": "0.1.9", "source-map-support": "^0.5.21" From f8fcc6b0f118a10507423a7db5c89c24bd6fb72a Mon Sep 17 00:00:00 2001 From: Brandon Kimberly Date: Fri, 14 Jun 2024 09:27:11 -0700 Subject: [PATCH 2/2] Add sol name to tag key --- .../existing-eks-opensource-observability-pattern/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts b/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts index 81d79faa..c1489bfc 100644 --- a/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts +++ b/solutions/oss/eks-infra/v2.0.0/iac/lib/existing-eks-opensource-observability-pattern/index.ts @@ -140,14 +140,14 @@ export default class ExistingEksOpenSourceobservabilityPattern { const versionNumber = utils.valueFromContext(scope, "solutionVersion", "2.0.0") cdk.Tags.of(stack) - .add('o11y', "eks-infra-v" + versionNumber); + .add('o11y-eks-infra', "v-" + versionNumber); // Tag existing AMP workspace with version number const ampClient = new AmpClient(); const tagInput = { resourceArn: ampWorkspaceArn, tags: { - "o11y": "eks-infra-v" + versionNumber, + "o11y-eks-infra":"v-" + versionNumber, }, }; await ampClient.send(new TagResourceCommand(tagInput));