mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 22:27:22 +00:00
Remove try-catch block
This commit is contained in:
@@ -442,99 +442,95 @@ const syncSecretsAWSParameterStore = async ({
|
|||||||
accessId: string | null;
|
accessId: string | null;
|
||||||
accessToken: string;
|
accessToken: string;
|
||||||
}) => {
|
}) => {
|
||||||
try {
|
if (!accessId) return;
|
||||||
if (!accessId) return;
|
|
||||||
|
|
||||||
const config = new AWS.Config({
|
const config = new AWS.Config({
|
||||||
region: integration.region as string,
|
region: integration.region as string,
|
||||||
credentials: {
|
credentials: {
|
||||||
accessKeyId: accessId,
|
accessKeyId: accessId,
|
||||||
secretAccessKey: accessToken
|
secretAccessKey: accessToken
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const ssm = new AWS.SSM({
|
const ssm = new AWS.SSM({
|
||||||
apiVersion: "2014-11-06",
|
apiVersion: "2014-11-06",
|
||||||
region: integration.region as string
|
region: integration.region as string
|
||||||
});
|
});
|
||||||
ssm.config.update(config);
|
ssm.config.update(config);
|
||||||
|
|
||||||
const metadata = z.record(z.any()).parse(integration.metadata || {});
|
const metadata = z.record(z.any()).parse(integration.metadata || {});
|
||||||
|
|
||||||
const params = {
|
const params = {
|
||||||
Path: integration.path as string,
|
Path: integration.path as string,
|
||||||
Recursive: false,
|
Recursive: false,
|
||||||
WithDecryption: true
|
WithDecryption: true
|
||||||
};
|
};
|
||||||
|
|
||||||
const parameterList = (await ssm.getParametersByPath(params).promise()).Parameters;
|
const parameterList = (await ssm.getParametersByPath(params).promise()).Parameters;
|
||||||
|
|
||||||
const awsParameterStoreSecretsObj = (parameterList || [])
|
const awsParameterStoreSecretsObj = (parameterList || [])
|
||||||
.filter(({ Name }) => Boolean(Name))
|
.filter(({ Name }) => Boolean(Name))
|
||||||
.reduce(
|
.reduce(
|
||||||
(obj, secret) => ({
|
(obj, secret) => ({
|
||||||
...obj,
|
...obj,
|
||||||
[(secret.Name as string).substring((integration.path as string).length)]: secret
|
[(secret.Name as string).substring((integration.path as string).length)]: secret
|
||||||
}),
|
}),
|
||||||
{} as Record<string, AWS.SSM.Parameter>
|
{} as Record<string, AWS.SSM.Parameter>
|
||||||
);
|
);
|
||||||
// Identify secrets to create
|
// Identify secrets to create
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
Object.keys(secrets).map(async (key) => {
|
Object.keys(secrets).map(async (key) => {
|
||||||
if (!(key in awsParameterStoreSecretsObj)) {
|
if (!(key in awsParameterStoreSecretsObj)) {
|
||||||
// case: secret does not exist in AWS parameter store
|
// case: secret does not exist in AWS parameter store
|
||||||
// -> create secret
|
// -> create secret
|
||||||
if (secrets[key].value) {
|
if (secrets[key].value) {
|
||||||
await ssm
|
|
||||||
.putParameter({
|
|
||||||
Name: `${integration.path}${key}`,
|
|
||||||
Type: "SecureString",
|
|
||||||
Value: secrets[key].value,
|
|
||||||
...(metadata.kmsKeyId && { KeyId: metadata.kmsKeyId }),
|
|
||||||
// Overwrite: true,
|
|
||||||
Tags: metadata.secretAWSTag
|
|
||||||
? metadata.secretAWSTag.map((tag: { key: string; value: string }) => ({
|
|
||||||
Key: tag.key,
|
|
||||||
Value: tag.value
|
|
||||||
}))
|
|
||||||
: []
|
|
||||||
})
|
|
||||||
.promise();
|
|
||||||
}
|
|
||||||
// case: secret exists in AWS parameter store
|
|
||||||
} else if (awsParameterStoreSecretsObj[key].Value !== secrets[key].value) {
|
|
||||||
// case: secret value doesn't match one in AWS parameter store
|
|
||||||
// -> update secret
|
|
||||||
await ssm
|
await ssm
|
||||||
.putParameter({
|
.putParameter({
|
||||||
Name: `${integration.path}${key}`,
|
Name: `${integration.path}${key}`,
|
||||||
Type: "SecureString",
|
Type: "SecureString",
|
||||||
Value: secrets[key].value,
|
Value: secrets[key].value,
|
||||||
Overwrite: true
|
...(metadata.kmsKeyId && { KeyId: metadata.kmsKeyId }),
|
||||||
// Tags: metadata.secretAWSTag ? [{ Key: metadata.secretAWSTag.key, Value: metadata.secretAWSTag.value }] : []
|
// Overwrite: true,
|
||||||
|
Tags: metadata.secretAWSTag
|
||||||
|
? metadata.secretAWSTag.map((tag: { key: string; value: string }) => ({
|
||||||
|
Key: tag.key,
|
||||||
|
Value: tag.value
|
||||||
|
}))
|
||||||
|
: []
|
||||||
})
|
})
|
||||||
.promise();
|
.promise();
|
||||||
}
|
}
|
||||||
})
|
// case: secret exists in AWS parameter store
|
||||||
);
|
} else if (awsParameterStoreSecretsObj[key].Value !== secrets[key].value) {
|
||||||
|
// case: secret value doesn't match one in AWS parameter store
|
||||||
|
// -> update secret
|
||||||
|
await ssm
|
||||||
|
.putParameter({
|
||||||
|
Name: `${integration.path}${key}`,
|
||||||
|
Type: "SecureString",
|
||||||
|
Value: secrets[key].value,
|
||||||
|
Overwrite: true
|
||||||
|
// Tags: metadata.secretAWSTag ? [{ Key: metadata.secretAWSTag.key, Value: metadata.secretAWSTag.value }] : []
|
||||||
|
})
|
||||||
|
.promise();
|
||||||
|
}
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
// Identify secrets to delete
|
// Identify secrets to delete
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
Object.keys(awsParameterStoreSecretsObj).map(async (key) => {
|
Object.keys(awsParameterStoreSecretsObj).map(async (key) => {
|
||||||
if (!(key in secrets)) {
|
if (!(key in secrets)) {
|
||||||
// case:
|
// case:
|
||||||
// -> delete secret
|
// -> delete secret
|
||||||
await ssm
|
await ssm
|
||||||
.deleteParameter({
|
.deleteParameter({
|
||||||
Name: awsParameterStoreSecretsObj[key].Name as string
|
Name: awsParameterStoreSecretsObj[key].Name as string
|
||||||
})
|
})
|
||||||
.promise();
|
.promise();
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} catch (err) {
|
|
||||||
console.error("syncSecretsAWSPS error: ", err);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user