Как вызвать команду CLI AWS из CodePipeline? - PullRequest
0 голосов
/ 20 октября 2018

Я хочу скопировать артефакты из корзины S3 в учетной записи 1 в корзину S3 в учетной записи 2. Хотя я смог настроить репликацию, но я хочу знать, есть ли способ вызвать команду CLI AWS из конвейера.

Можно ли вызвать его с помощью функции Lambda?Если да, будет полезен любой небольшой пример сценария.

1 Ответ

0 голосов
/ 27 октября 2018

Да, вы можете добавить действие Lambda Invoke в свой конвейер для вызова API объекта копирования.Основная часть лямбда-функции выглядит следующим образом.

exports.copyRepoToProdS3 = (event, context) => {
  const jobId = event['CodePipeline.job'].id
  const s3Location = event['CodePipeline.job'].data.inputArtifacts[0].location.s3Location
  const cpParams = JSON.parse(event['CodePipeline.job'].data.actionConfiguration.configuration.UserParameters)

  let promises = []
  for (let bucket of prodBuckets) {
    let params = {
      Bucket: bucket,
      CopySource: s3Location['bucketName'] + '/' + s3Location['objectKey'],
      Key: cpParams['S3ObjectKey']
    }

    promises.push(s3.copyObject(params).promise())
  }

  return Promise.all(promises)
    .then((data) => {
      console.log('Successfully copied repo to buckets!')
    }).catch((error) => {
      console.log('Failed to copy repo to buckets!', error)
    })
}

Более подробные инструкции по добавлению ролей и результатов обработки отчетов в CodePipeline можно найти по следующей ссылке.https://medium.com/@codershunshun/how-to-invoke-aws-lambda-in-codepipeline-d7c77457af95

...