Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS代码生成默认环境变量。_Amazon Web Services_Amazon S3_Aws Codepipeline_Aws Codebuild_Aws Codecommit - Fatal编程技术网

Amazon web services AWS代码生成默认环境变量。

Amazon web services AWS代码生成默认环境变量。,amazon-web-services,amazon-s3,aws-codepipeline,aws-codebuild,aws-codecommit,Amazon Web Services,Amazon S3,Aws Codepipeline,Aws Codebuild,Aws Codecommit,我创建了一个管道,它从CodeCommit存储库获取代码,通过CodeBuild构建代码,并将代码推送到S3存储桶中 对于我的代码构建,我使用的是AWS管理的映像。aws/codebuild/nodejs:7.0.0 如果我通过CodeBuild控制台手动启动构建并指定存储库,则在buildspec中运行以下命令时会获得存储库URL - printf ${CODEBUILD_SOURCE_REPO_URL} 但是如果代码构建是通过推送到存储库自动触发的。CODEBUILD\u SOURCE\u

我创建了一个管道,它从CodeCommit存储库获取代码,通过CodeBuild构建代码,并将代码推送到S3存储桶中

对于我的代码构建,我使用的是AWS管理的映像。aws/codebuild/nodejs:7.0.0

如果我通过CodeBuild控制台手动启动构建并指定存储库,则在buildspec中运行以下命令时会获得存储库URL

- printf ${CODEBUILD_SOURCE_REPO_URL}

但是如果代码构建是通过推送到存储库自动触发的。CODEBUILD\u SOURCE\u REPO\u URL不返回任何内容

如果从codepipeline运行进程,则该进程将为空

看看这个:


CODEBUILD\u SOURCE\u REPO\u URL:输入工件或源代码存储库的URL。对于AmazonS3,这是S3://后跟bucket名称和输入工件的路径。对于AWS CodeCommit和GitHub,这是存储库的克隆URL如果生成源于AWS CodePipeline,则该生成可能为空。

如果通过CodeCommit进行连接,则可以使用以下方法拆分字符串以获取更有用的值,如帐户Id和回购名称:

echo "Region = ${AWS_REGION}"
echo "Account Id = $(echo $CODEBUILD_BUILD_ARN | cut -f5 -d ':')"
echo "Repo Name = $(echo $CODEBUILD_SOURCE_VERSION | cut -f2 -d '/')"
echo "Commit Id = ${CODEBUILD_RESOLVED_SOURCE_VERSION}"
哪些产出:

Region = us-west-2
Account Id = 0123456789
Repo Name = my-app
Commit Id = a46218c9160f932f2a91748a449b3f9818964642

那么这里的问题是什么?是否未成功生成?生成运行正常。但问题是我想使用CODEBUILD\u SOURCE\u REPO\u URL变量以编程方式设置要将文件复制到的S3 bucket。我的回购协议名称和我的桶名称相同。因此,这将是我最好的选择,为多个管道和源repo创建一个代码构建。我有4个不同的应用程序,都有一个暂存版本和一个需要上传到S3的生产版本。我可以使用设置了环境变量的不同代码构建项目,并使用我的自定义环境变量进行复制。但我宁愿维护1个codebuild项目,而不是4个,我相信现在您正在使用aws cli将工件复制到s3,并且您正在buildspec.yml文件中执行此操作。正确的方法是使用CodeBuild的Artifacts选项将工件上传到S3。如何将工件上传到S3?我在CodeBuild阶段没有看到任何允许将工件从CodeBuild上传到S3的选项。它是buildspec.yml文件的一部分。您还需要设置bucket和key,以指定在设置构建项目时上载这些文件的位置。请看下面的示例。