gpt4 book ai didi

amazon-web-services - CodePipeline 的 Cloudformation 模板

转载 作者:行者123 更新时间:2023-12-03 07:21:08 25 4
gpt4 key购买 nike

我们有一个 AWS 设置,其中有一个测试帐户和一个生产帐户。我们的代码提交(java lambda)位于我们的测试帐户中,我们希望使用 CodePipeline 将代码从此处部署到我们的测试帐户和生产帐户。

我想知道是否有人知道任何可以执行此工作的现成的 cloudformation(或 cdk)模板?

谢谢达米安

最佳答案

几天前我已经使用 CDK 实现了这一点,其想法是在目标环境上创建一个 IAM 角色,并在运行代码构建(作为代码管道的一部分运行)时承担此角色。

就我而言,由于代码构建创建了 CDK 堆栈,因此我为该角色提供了 AdministratorAccess 策略。

稍后,创建新的 codebuild 并将权限附加到 codebuild 项目角色。

    // create the codebuild project used by the codepipeline
const codeBuildProject = new codebuild.PipelineProject(scope, `${props.environment}-${props.pipelineNamePrefix}-codebuild`, {
projectName: `${props.environment}-${props.pipelineNamePrefix}`,
buildSpec: codebuild.BuildSpec.fromSourceFilename('buildspec.yml'),
environment: {
buildImage: codebuild.LinuxBuildImage.AMAZON_LINUX_2,
privileged: true,
environmentVariables: buildEnvVariables,
computeType: props.computeType
},
})

// attach permissions to codebuild project role
codeBuildProject.addToRolePolicy(new PolicyStatement({
effect: Effect.ALLOW,
resources: [props.deploymentRoleArn],
actions: ['sts:AssumeRole']
}));

请注意,props.deploymentRoleArn 是您在目标环境中创建的角色的 ARN。

然后,创建一个新管道并将 codeBuildProject 添加到 codepipelineActions.CodeBuildAction 作为 project:

// create codepipeline to deploy cdk changes
const codePipeline = new codepipeline.Pipeline(scope, `${props.environment}-${props.pipelineNamePrefix}-codepipeline`, {
restartExecutionOnUpdate: false,
pipelineName: `${props.environment}-${props.pipelineNamePrefix}`,
stages: [
{
stageName: 'Source',
actions: [
new codepipelineActions.GitHubSourceAction({
branch: props.targetBranch,
oauthToken: gitHubToken,
owner: props.githubRepositoryOwner,
repo: props.githubRepositoryName,
actionName: 'get-sources',
output: pipelineSourceArtifact,
})]
},
{
stageName: 'Deploy',
actions: [
new codepipelineActions.CodeBuildAction({
actionName: 'deploy-cdk',
input: pipelineSourceArtifact,
type: codepipelineActions.CodeBuildActionType.BUILD,
project: codeBuildProject
}),
]
}
]
});

上面代码片段的相关部分是Deploy阶段。仅当您想从github获取源代码时才需要另一个阶段 - 更多信息here .

这是完整的解决方案,如果您想实现其他功能,请阅读有关代码管道操作的更多信息 here .

关于amazon-web-services - CodePipeline 的 Cloudformation 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60059486/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com