es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de eliminar la duplicación de código al usar secretos en AWS CDK?

Tengo el siguiente código en mi stack de pipeline de CDK:

const githubSecretId = "token"
const secret = new secretsmanager.Secret(this, githubSecretId)

const pipeline = new CodePipeline(this, "Example4BePipeline", {
    synth: new CodeBuildStep("Synth", {
        input: CodePipelineSource.gitHub("username/example4-be", "main", {
            authentication: cdk.SecretValue.secretsManager(githubSecretId)
        }),
        // other stuff
    })
})

pipeline.node.addDependency(secret)

¿Es posible obtener el ID de secret o pasarlo de alguna manera a CodePipelineSource.gitHub para evitar tener una variable adicional githubSecretId? ¿Existen otras APIs que podrían hacer este código más corto y conciso que me esté perdiendo?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible pasar el secreto directamente a CodePipelineSource.gitHub sin crear una variable separada githubSecretId. En lugar de crear un nuevo objeto secretsmanager.Secret y pasar su referencia al método pipeline.node.addDependency(), puedes encadenar el método secretsmanager.Secret.fromSecretsManager directamente a la clase cdk.SecretValue, de la siguiente manera:

    const pipeline = new CodePipeline(this, "Example4BePipeline", {
        synth: new CodeBuildStep("Synth", {
            input: CodePipelineSource.gitHub(
                "nombre_de_usuario/ejemplo4-be",
                "principal",
                {
                    authentication: cdk.SecretValue.secretsManager
                        .fromSecretsManager(
                            secretsmanager.Secret.fromSecretNameV2(
                                this,
                                "GitHubTokenSecret",
                                "NombreDelSecretoGitHub"
                            )
                        )
                }
            ),
            // otras cosas
        })
    });
    

    De esta manera, no necesitas crear una variable separada githubSecretId y el ID del secreto se obtiene directamente de secretsmanager.Secret.fromSecretNameV2. Esto puede hacer que el código sea más corto y conciso.

    Alternativamente, si no necesitas realizar ninguna operación adicional en el objeto Secret, puedes pasar directamente el nombre del secreto a cdk.SecretValue.secretsManager.fromSecretsManager:

    const pipeline = new CodePipeline(this, "Example4BePipeline", {
        synth: new CodeBuildStep("Synth", {
            input: CodePipelineSource.gitHub(
                "nombre_de_usuario/ejemplo4-be",
                "principal",
                {
                    authentication: cdk.SecretValue.secretsManager
                        .fromSecretsManager("NombreDelSecretoGitHub")
                }
            ),
            // otras cosas
        })
    });
    

    De esta manera, el secreto se obtiene directamente por su nombre, sin necesidad de crear un objeto Secret o una referencia separada.

Comments are closed.