Как использовать уже существующую корзину Amazon S3 для артефактов в cdk python?

#python #amazon-web-services #amazon-s3 #aws-cdk #aws-codepipeline

Вопрос:

Как использовать уже существующую корзину Amazon S3 для артефактов source_artifact и cloud_assembly_artifact документы здесь мой код ниже

 source_artifact = codepipeline.Artifact()
cloud_assembly_artifact = codepipeline.Artifact()   

pipeline = pipelines.CdkPipeline(self, 'Pipeline',
  cloud_assembly_artifact=cloud_assembly_artifact,
  pipeline_name='testPipeline',
  source_action = cpactions.CodeCommitSourceAction(
            repository=codecommit.Repository.from_repository_name(
              self, 
              id="cicd_pipeline",
              repository_name="repo-name"
            ),
            branch='master',
            action_name='CodeCommit',
            trigger=cpactions.CodeCommitTrigger.POLL,
            output=source_artifact,
        ),
  synth_action=pipelines.SimpleSynthAction(
    source_artifact=source_artifact,
    cloud_assembly_artifact=cloud_assembly_artifact,
    install_command='npm install -g aws-cdk amp;amp; pip install -r requirements.txt',
    build_command='pytest unittests',
    synth_command='cdk synth'))
 

Ответ №1:

Вы должны создать конвейер codepipeline и прикрепить к нему корзину артефактов.

Вы можете указать кодовую линию в конструкции CdkPipeline после создания конвейера. (Машинописный текст, но должен быть похож на python)

 this._artifactsS3Bucket = Bucket.fromBucketArn(this, 'S3ArtifactsBucket', this._props.s3ArtifactBucketARN);
new Pipeline(this, 'Pipeline', {
      artifactBucket: this._artifactsS3Bucket,
      pipelineName: this._pipelineName,
      restartExecutionOnUpdate: true
});
 

Прикрепите этот кодовый канал к конструкции cdkPipeline

Комментарии:

1. pipeline = pipelines.CdkPipeline(self, 'Pipeline', cloud_assembly_artifact=cloud_assembly_artifact, code_pipeline = codepipeline.Pipeline(self, 'Pipeline1', artifact_bucket=s3.Bucket.from_bucket_name(self, id="test", bucket_name="bucket-name"), restart_execution_on_update=None), pipeline_name='testPipeline',

2. Я получил ошибку после его использования. ` ‘Файл «/home/sameed/.local/lib/python3.8/site-packages/jsii/_kernel/providers/process.py», строка 326, в отправить вызов JSIIError(отв.ошибка) из JavaScriptError(отв.стек) jsii.ошибки. JSIIError: Не удается установить «Имя конвейера», если существующая кодовая линия задана с помощью «Кодовая линия».

3. вы не можете использовать имя трубопровода в конструкции трубопровода cdk, если вы уже используете ранее созданный трубопровод.

4. @SameedUsmani у тебя получилось? Если видите, пожалуйста, примите этот ответ, чтобы помочь будущим пользователям.

5. cdcp = кодовая линия. Конвейер(сам, ‘codepipeline’, artifact_bucket=ведро, restart_execution_on_update=Нет, имя конвейера=»cdktestpipeline»)