Да, вы можете добавить действие 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