首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS中,应该如何使用CodeStarConnectionsSourceAction作为CodePipeline的输入?

在AWS中,应该如何使用CodeStarConnectionsSourceAction作为CodePipeline的输入?
EN

Stack Overflow用户
提问于 2022-01-08 12:40:48
回答 1查看 621关注 0票数 1

我正在尝试创建一个管道,从Github获取代码并部署它(Lambda、DynamoDB等,使用CDK)。目前,我正试图使它与CodeStarConnectionsSourceAction一起工作,而我的代码在这个错误中失败了:

代码语言:javascript
复制
  [Example4BePipeline/Example4BePipeline/Pipeline] Action Synth in stage Build: first stage may only contain Source actions
  [Example4BePipeline/Example4BePipeline/Pipeline] Action 'Synth' is using input Artifact 'Sources', which is not being produced in this pipeline

生成该错误的代码是:

代码语言:javascript
复制
import * as cdk from "aws-cdk-lib"
import {Construct} from "constructs"
import {Example4BeDeployStage} from "./example4-be-deploy-stage"
import {CodeBuildStep, CodePipeline, CodePipelineFileSet} from "aws-cdk-lib/pipelines"
import {CodeStarConnectionsSourceAction} from "aws-cdk-lib/aws-codepipeline-actions";
import {Artifact} from "aws-cdk-lib/aws-codepipeline";

export class PipelineStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props)

        const sourceOutput = new Artifact("Sources");
        const sourceAction = new CodeStarConnectionsSourceAction({
            actionName: "Github",
            owner: "username",
            repo: "example4-be",
            output: sourceOutput,
            connectionArn: "arn:aws:codestar-connections:us-east-1:....:connection/...."
        })
        const pipeline = new CodePipeline(this, "Example4BePipeline", {
            pipelineName: "Example4BePipeline",
            synth: new CodeBuildStep("Synth", {
                    input: CodePipelineFileSet.fromArtifact(sourceOutput),
                    installCommands: [
                        "npm install -g aws-cdk"
                    ],
                    commands: [
                        "npm ci",
                        "npm run build",
                        "npx cdk synth"
                    ]
                }
            ),
            selfMutation: false // TODO: remove before committing.
        })
    }
}

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-08 12:50:11

我想出来了,这是工作代码,短得多,简洁得多:

代码语言:javascript
复制
import * as cdk from "aws-cdk-lib"
import {Construct} from "constructs"
import {Example4BeDeployStage} from "./example4-be-deploy-stage"
import {CodeBuildStep, CodePipeline, CodePipelineSource} from "aws-cdk-lib/pipelines"

export class PipelineStack extends cdk.Stack {
    constructor(scope: Construct, id: string, props?: cdk.StackProps) {
        super(scope, id, props)

        const pipeline = new CodePipeline(this, "Example4BePipeline", {
            pipelineName: "Example4BePipeline",
            synth: new CodeBuildStep("Synth", {
                    input: CodePipelineSource.connection("username/example4-be", "main", {
                        connectionArn: "arn:aws:codestar-connections:us-east-1:....:connection/....",
                    }),
                    installCommands: [
                        "npm install -g aws-cdk"
                    ],
                    commands: [
                        "npm ci",
                        "npm run build",
                        "npx cdk synth"
                    ]
                }
            ),
            selfMutation: false // TODO: remove before committing.
        })
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70632389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档