Agregando una etapa de aprobación manual en los CDK CodePipelines.
He estado trabajando con AWS CDK y creo que es una excelente manera de trabajar con AWS. Recientemente he tenido un problema que no he podido resolver. He revisado la documentación y los recursos, pero ninguno ha explicado cómo hacerlo en CDK. Tengo dos tuberías de código y cada tubería implementa en preparación o producción. Ahora quiero agregar una etapa de aprobación manual antes de que el código se implemente en producción. Mostraré mi código simple a continuación como referencia:
“`import * as cdk from ‘@aws-cdk/core’;
import { AppsPluginsCdkStack } from './apps-plugins-services/stack';
import {
CodePipeline,
ShellStep,
CodePipelineSource
} from '@aws-cdk/pipelines';
class ApplicationStage extends cdk.Stage {
constructor(scope: cdk.Construct, id: string) {
super(scope, id);
new CdkStack(this, 'cdkStack');
}
}
class ProductionPipelineStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
super(scope, id, props);
//Cree la tubería de producción de CDK
const prodPipeline = new CodePipeline(this, 'ProductionPipeline', {
pipelineName: 'ProdPipeline',
synth: new ShellStep('ProdSynth', {
// Use una conexión creada usando la consola de AWS para autenticarse en GitHub
input: CodePipelineSource.connection(
'fahigm/cdk-repo',
'desarrollar',
{
connectionArn:
'AWS-CONNECTION-ARN' // Creada usando la consola de AWS
}
),
commands: ['npm ci', 'npm run build', 'npx cdk synth']
})
});
prodPipeline.addStage(new ApplicationStage(this, 'Produccion'));
}
}
class StagingPipelineStack extends cdk.Stack {
constructor(scope: cdk.Construct, id: string, props: cdk.StackProps) {
super(scope, id, props);
//Cree la tubería de preparación de CDK
const stagePipeline = new CodePipeline(this, 'StagingPipeline', {
pipelineName: 'StagePipeline',
synth: new ShellStep('StageSynth', {
// Use una conexión creada usando la consola de AWS para autenticarse en GitHub
input: CodePipelineSource.connection(
'fahigm/cdk-repo',
'maestro',
{
connectionArn:
'AWS-CONNECTION-ARN' // Creada usando la consola de AWS
}
),
commands: ['npm ci', 'npm run build', 'npx cdk synth']
})
});
stagePipeline.addStage(new ApplicationStage(this, 'Preparacion'));
}
}
const app = new cdk.App();
new ProductionPipelineStack(app, 'ProduccionCDKPipeline', {
env: { account: 'CUENTA', region: 'REGION' }
});
new StagingPipelineStack(app, 'PreparacionCDKPipeline', {
env: { account: 'CUENTA', region: 'REGION' }
});
app.synth();“`
Ahora no sé qué hacer a continuación. La documentación solo habla sobre cómo hacerlo desde la consola, pero quiero agregarlo en el código. ¡Realmente apreciaría cualquier ayuda!
davy.ai
Para agregar una etapa de aprobación manual antes de implementar en producción en AWS CDK, puede utilizar la clase
ManualApprovalStep
del paquete@aws-cdk/pipelines
. Esta clase le permite agregar una acción de aprobación manual a su CodePipeline.Aquí está el código actualizado con la etapa de aprobación manual agregada:
En este código actualizado, se importa la clase
ManualApprovalStep
de@aws-cdk/pipelines
. Luego, en la claseProductionPipelineStack
, se agrega una nueva etapa llamada “ManualApproval” al pipeline usando el métodoaddStage
. Como acción en esta etapa, se crea un nuevo objetoManualApprovalStep
con el nombre “Approval”.Ahora, cuando el pipeline llega a la etapa de “ManualApproval”, se detendrá y esperará la aprobación manual antes de pasar a la siguiente etapa (es decir, implementar en producción).
¡Espero que esto ayude!