From a513ea4b417fff80658983a2050985f3635dee43 Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Thu, 29 Dec 2022 19:15:59 +0000 Subject: [PATCH] You can pass a different AWS profile when using the CLI --- packages/internal-cli/README.md | 6 +++ packages/internal-cli/package.json | 1 + packages/internal-cli/src/index.ts | 13 +++-- pnpm-lock.yaml | 81 ++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+), 5 deletions(-) diff --git a/packages/internal-cli/README.md b/packages/internal-cli/README.md index cf85f3dfe..d18b1eb86 100644 --- a/packages/internal-cli/README.md +++ b/packages/internal-cli/README.md @@ -59,3 +59,9 @@ Pass the base url for Pizzly, defaults to `http://localhost:3004`. `-s` or `--pizzlysecretkey` Pass the secret key for Pizzly, defaults to undefined which will work locally in the default configuration. + +## AWS profile + +`-a` or `--awsprofile` + +Pass the AWS profile to use, defaults to `default`. diff --git a/packages/internal-cli/package.json b/packages/internal-cli/package.json index d698b6398..068d596b0 100644 --- a/packages/internal-cli/package.json +++ b/packages/internal-cli/package.json @@ -5,6 +5,7 @@ "description": "An internal CLI, used to run scripts", "devDependencies": { "@aws-sdk/client-secrets-manager": "^3.238.0", + "@aws-sdk/credential-providers": "^3.238.0", "@trigger.dev/tsconfig": "workspace:*", "@types/node": "^18.11.9", "commander": "^9.4.1", diff --git a/packages/internal-cli/src/index.ts b/packages/internal-cli/src/index.ts index e507f302b..b10e794bb 100644 --- a/packages/internal-cli/src/index.ts +++ b/packages/internal-cli/src/index.ts @@ -3,15 +3,11 @@ import * as fs from "node:fs"; import { z } from "zod"; import invariant from "tiny-invariant"; import { getCatalog } from "internal-catalog"; +import { fromIni } from "@aws-sdk/credential-providers"; import { SecretsManagerClient, GetSecretValueCommand, } from "@aws-sdk/client-secrets-manager"; -import { stringify } from "node:querystring"; - -const client = new SecretsManagerClient({ - region: "us-east-1", -}); const program = new Command(); @@ -25,6 +21,7 @@ program .option("-e, --environment ", "The environment to update") .option("-p, --pizzlyhost ", "Pizzly host") .option("-s, --pizzlysecretkey ", "Pizzly secret key") + .option("-a, --awsprofile ", "AWS profile name") .action( async ( integration_file_path: string, @@ -32,6 +29,7 @@ program environment?: string; pizzly_host?: string; pizzly_secret_key?: string; + aws_profile?: string; } ) => { if (!integration_file_path) { @@ -48,6 +46,11 @@ program const file = fs.readFileSync(integration_file_path, "utf8"); const catalog = getCatalog(file); + const client = new SecretsManagerClient({ + region: "us-east-1", + credentials: fromIni({ profile: options.aws_profile ?? "default" }), + }); + const promises = catalog.map(async (integration) => { const environmentClientId = integration.environments[environment!].oauth.client_id; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 42b4b0e5e..62bad27c6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -511,6 +511,7 @@ importers: packages/internal-cli: specifiers: '@aws-sdk/client-secrets-manager': ^3.238.0 + '@aws-sdk/credential-providers': ^3.238.0 '@trigger.dev/tsconfig': workspace:* '@types/node': ^18.11.9 commander: ^9.4.1 @@ -520,6 +521,7 @@ importers: zod: ^3.20.2 devDependencies: '@aws-sdk/client-secrets-manager': 3.238.0 + '@aws-sdk/credential-providers': 3.238.0 '@trigger.dev/tsconfig': link:../../config-packages/tsconfig '@types/node': 18.11.15 commander: 9.4.1 @@ -717,6 +719,50 @@ packages: tslib: 2.4.1 dev: false + /@aws-sdk/client-cognito-identity/3.238.0: + resolution: {integrity: sha512-vjIVFzlkcUX9YT7pqg9NrvOTuqqsdYSesFgMLTCSWXBE5rPjWEK5ljIVOZtGn8MJQgwqS+Lqc8oB1vIfE+EaSA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-crypto/sha256-browser': 2.0.0 + '@aws-crypto/sha256-js': 2.0.0 + '@aws-sdk/client-sts': 3.238.0 + '@aws-sdk/config-resolver': 3.234.0 + '@aws-sdk/credential-provider-node': 3.238.0 + '@aws-sdk/fetch-http-handler': 3.226.0 + '@aws-sdk/hash-node': 3.226.0 + '@aws-sdk/invalid-dependency': 3.226.0 + '@aws-sdk/middleware-content-length': 3.226.0 + '@aws-sdk/middleware-endpoint': 3.226.0 + '@aws-sdk/middleware-host-header': 3.226.0 + '@aws-sdk/middleware-logger': 3.226.0 + '@aws-sdk/middleware-recursion-detection': 3.226.0 + '@aws-sdk/middleware-retry': 3.235.0 + '@aws-sdk/middleware-serde': 3.226.0 + '@aws-sdk/middleware-signing': 3.226.0 + '@aws-sdk/middleware-stack': 3.226.0 + '@aws-sdk/middleware-user-agent': 3.226.0 + '@aws-sdk/node-config-provider': 3.226.0 + '@aws-sdk/node-http-handler': 3.226.0 + '@aws-sdk/protocol-http': 3.226.0 + '@aws-sdk/smithy-client': 3.234.0 + '@aws-sdk/types': 3.226.0 + '@aws-sdk/url-parser': 3.226.0 + '@aws-sdk/util-base64': 3.208.0 + '@aws-sdk/util-body-length-browser': 3.188.0 + '@aws-sdk/util-body-length-node': 3.208.0 + '@aws-sdk/util-defaults-mode-browser': 3.234.0 + '@aws-sdk/util-defaults-mode-node': 3.234.0 + '@aws-sdk/util-endpoints': 3.226.0 + '@aws-sdk/util-retry': 3.229.0 + '@aws-sdk/util-user-agent-browser': 3.226.0 + '@aws-sdk/util-user-agent-node': 3.226.0 + '@aws-sdk/util-utf8-browser': 3.188.0 + '@aws-sdk/util-utf8-node': 3.208.0 + tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt + dev: true + /@aws-sdk/client-s3/3.226.0: resolution: {integrity: sha512-N8S0i5txBqlTY30IHaWgi15HUPzdWpQVX01zfYoHU80HmxKBRhqrefIrmCbn/121br0B+MysgpgdfiSfhyHkLw==} engines: {node: '>=14.0.0'} @@ -1098,6 +1144,18 @@ packages: tslib: 2.4.1 dev: true + /@aws-sdk/credential-provider-cognito-identity/3.238.0: + resolution: {integrity: sha512-FGVXGtGn7t/XacBdCKgqzxJNvorjCIar+F0oRsGq8aH09L/H8uGZ7qXvYvi9I94Qv7ay0Dy/KpGcMB53zt41UA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-cognito-identity': 3.238.0 + '@aws-sdk/property-provider': 3.226.0 + '@aws-sdk/types': 3.226.0 + tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt + dev: true + /@aws-sdk/credential-provider-env/3.226.0: resolution: {integrity: sha512-sd8uK1ojbXxaZXlthzw/VXZwCPUtU3PjObOfr3Evj7MPIM2IH8h29foOlggx939MdLQGboJf9gKvLlvKDWtJRA==} engines: {node: '>=14.0.0'} @@ -1230,6 +1288,29 @@ packages: '@aws-sdk/types': 3.226.0 tslib: 2.4.1 + /@aws-sdk/credential-providers/3.238.0: + resolution: {integrity: sha512-wqj88z9UCbqxnd9XoaKrI+7oSN/13f1AP7cZWYKrzdvb3Ae5QmXmgMKXJdsQlWtPijchpPOQNGhd1rVogycgiA==} + engines: {node: '>=14.0.0'} + dependencies: + '@aws-sdk/client-cognito-identity': 3.238.0 + '@aws-sdk/client-sso': 3.238.0 + '@aws-sdk/client-sts': 3.238.0 + '@aws-sdk/credential-provider-cognito-identity': 3.238.0 + '@aws-sdk/credential-provider-env': 3.226.0 + '@aws-sdk/credential-provider-imds': 3.226.0 + '@aws-sdk/credential-provider-ini': 3.238.0 + '@aws-sdk/credential-provider-node': 3.238.0 + '@aws-sdk/credential-provider-process': 3.226.0 + '@aws-sdk/credential-provider-sso': 3.238.0 + '@aws-sdk/credential-provider-web-identity': 3.226.0 + '@aws-sdk/property-provider': 3.226.0 + '@aws-sdk/shared-ini-file-loader': 3.226.0 + '@aws-sdk/types': 3.226.0 + tslib: 2.4.1 + transitivePeerDependencies: + - aws-crt + dev: true + /@aws-sdk/eventstream-codec/3.226.0: resolution: {integrity: sha512-6uPtR8vSwz3fqoZk9hrb6qBYdp3PJ22+JxV5Wimdesvow4kJXSgDQXIxEkxbv6SxB9tNRB4uJHD84RetHEi15Q==} dependencies: