mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-09-22 13:39:35 +00:00
feat: added support for tagging existing aws params
This commit is contained in:
@@ -27,6 +27,7 @@ import { z } from "zod";
|
|||||||
import { SecretType, TIntegrationAuths, TIntegrations, TSecrets } from "@app/db/schemas";
|
import { SecretType, TIntegrationAuths, TIntegrations, TSecrets } from "@app/db/schemas";
|
||||||
import { request } from "@app/lib/config/request";
|
import { request } from "@app/lib/config/request";
|
||||||
import { BadRequestError } from "@app/lib/errors";
|
import { BadRequestError } from "@app/lib/errors";
|
||||||
|
import { logger } from "@app/lib/logger";
|
||||||
import { TCreateManySecretsRawFn, TUpdateManySecretsRawFn } from "@app/services/secret/secret-types";
|
import { TCreateManySecretsRawFn, TUpdateManySecretsRawFn } from "@app/services/secret/secret-types";
|
||||||
|
|
||||||
import { TIntegrationDALFactory } from "../integration/integration-dal";
|
import { TIntegrationDALFactory } from "../integration/integration-dal";
|
||||||
@@ -521,18 +522,42 @@ const syncSecretsAWSParameterStore = async ({
|
|||||||
.promise();
|
.promise();
|
||||||
}
|
}
|
||||||
// case: secret exists in AWS parameter store
|
// case: secret exists in AWS parameter store
|
||||||
} else if (awsParameterStoreSecretsObj[key].Value !== secrets[key].value) {
|
} else {
|
||||||
// case: secret value doesn't match one in AWS parameter store
|
|
||||||
// -> update secret
|
// -> update secret
|
||||||
await ssm
|
if (awsParameterStoreSecretsObj[key].Value !== secrets[key].value) {
|
||||||
.putParameter({
|
await ssm
|
||||||
Name: `${integration.path}${key}`,
|
.putParameter({
|
||||||
Type: "SecureString",
|
Name: `${integration.path}${key}`,
|
||||||
Value: secrets[key].value,
|
Type: "SecureString",
|
||||||
Overwrite: true
|
Value: secrets[key].value,
|
||||||
// Tags: metadata.secretAWSTag ? [{ Key: metadata.secretAWSTag.key, Value: metadata.secretAWSTag.value }] : []
|
Overwrite: true
|
||||||
})
|
})
|
||||||
.promise();
|
.promise();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (awsParameterStoreSecretsObj[key].Name) {
|
||||||
|
try {
|
||||||
|
await ssm
|
||||||
|
.addTagsToResource({
|
||||||
|
ResourceType: "Parameter",
|
||||||
|
ResourceId: awsParameterStoreSecretsObj[key].Name as string,
|
||||||
|
Tags: metadata.secretAWSTag
|
||||||
|
? metadata.secretAWSTag.map((tag: { key: string; value: string }) => ({
|
||||||
|
Key: tag.key,
|
||||||
|
Value: tag.value
|
||||||
|
}))
|
||||||
|
: []
|
||||||
|
})
|
||||||
|
.promise();
|
||||||
|
} catch (err) {
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
|
if ((err as any).code === "AccessDeniedException") {
|
||||||
|
logger.error(
|
||||||
|
`AWS Parameter Store Error [integration=${integration.id}]: double check AWS account permissions (refer to the Infisical docs)`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await new Promise((resolve) => {
|
await new Promise((resolve) => {
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ Prerequisites:
|
|||||||
"Action": [
|
"Action": [
|
||||||
"ssm:PutParameter",
|
"ssm:PutParameter",
|
||||||
"ssm:DeleteParameter",
|
"ssm:DeleteParameter",
|
||||||
|
"ssm:GetParameters",
|
||||||
"ssm:GetParametersByPath",
|
"ssm:GetParametersByPath",
|
||||||
"ssm:DeleteParameters",
|
"ssm:DeleteParameters",
|
||||||
"ssm:AddTagsToResource", // if you need to add tags to secrets
|
"ssm:AddTagsToResource", // if you need to add tags to secrets
|
||||||
|
|||||||
Reference in New Issue
Block a user