所以我有一个相当简单的堆栈,我正在尝试设置它,由一个订阅SNS主题的Lambda函数组成。我想将代码管道分为三个阶段:源代码(GitHub)-
我设法拼凑了一个模板和buildspec文件,但我不知道应该如何引用CodeBuild在CloudFormation模板中生成的输出工件;现在我只有占位符内联代码。
基本上,我应该在Lambda函数的Code:
属性中放入什么来获取CodeBuild文件(这是我在CodePipeline中的输出工件)?
样板yml:
AWSTemplateFormatVersion: 2010-09-09
Resources:
SNSTopic:
Type: 'AWS::SNS::Topic'
Properties:
Subscription:
- Endpoint: !GetAtt
- LambdaFunction
- Arn
Protocol: lambda
LambdaFunction:
Type: 'AWS::Lambda::Function'
Properties:
Runtime: python3.6
Handler: main.lamda_handler
Timeout: '10'
Role: !GetAtt
- LambdaExecutionRole
- Arn
Code:
ZipFile: >
def lambda_handler(event, context):
print(event)
return 'Hello, world!'
LambdaExecutionRole:
Type: 'AWS::IAM::Role'
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:
- Effect: Allow
Principal:
Service:
- lambda.amazonaws.com
Action:
- 'sts:AssumeRole'
ManagedPolicyArns:
- 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole'
LambdaInvokePermission:
Type: 'AWS::Lambda::Permission'
Properties:
FunctionName: !GetAtt
- LambdaFunction
- Arn
Action: 'lambda:InvokeFunction'
Principal: sns.amazonaws.com
SourceArn: !Ref SNSTopic
buildspec.yml:
version: 0.2
phases:
install:
commands:
- pip install -r requirements.txt -t libs
artifacts:
type: zip
files:
- template.yml
- main.py
- lib/*
我知道这个问题很老了,但我想我会回答山姆的问题
project_root/
template.yaml
buildspec.yaml
my_lambda/
my_lambda.py
requirements.txt
样板亚马尔:
Transform: AWS::Serverless-2016-10-31
Resources:
MyLambda:
Type: AWS::Serverless::Function
Properties:
Handler: my_lambda.lambda_handler
CodeUri: my_lambda/
Runtime: python3.8
buildspec.yaml:
version: 0.2
phases:
install:
runtime-versions:
python: 3.8
commands:
- pip install aws-sam-cli
build:
commands:
- sam build
- sam package --s3-bucket mybucket --s3-prefix sam | sam deploy -t /dev/stdin --stack-name FOOSTACK --capabilities CAPABILITY_IAM
注意事项:
sam构建
将pip安装
您的lambda要求。txt
您的代码构建应该将zip文件放到S3存储桶中。因此,在lambdfunction资源的代码部分,您可以指向它。
Code:
S3Bucket: the_bucket_where_CodeBuild_dropped_your_zip
S3Key: the_name_of_the_zip_file_dropped
你不需要“ZipFile:”
由于AWS的支持,最终找到了解决方案。首先,我将此JSON放在CodePipeline中CloudFormation部署步骤的参数覆盖中:
{
"buildBucketName" : { "Fn::GetArtifactAtt" : ["MyAppBuild", "BucketName"]},
"buildObjectKey" : { "Fn::GetArtifactAtt" : ["MyAppBuild", "ObjectKey"]}
}
然后更改了我的CF模板,如下所示:
AWSTemplateFormatVersion: 2010-09-09
Parameters:
buildBucketName:
Type: String
buildObjectKey:
Type: String
Resources:
...
LambdaFunction:
...
Code:
S3Bucket: !Ref buildBucketName
S3Key: !Ref buildObjectKey
这将输出工件桶名称和对象键作为参数传递给CF,这样它就可以在S3中动态获取输出工件位置,而不必硬编码任何东西,使得模板方式更加便携。
我有一个Jenkins(我是新手)系统,它有一些限制: 主/从排列 从服务器是Windows 7 安装插件可能会遇到很大阻力 生成将存档到Windows共享 我正在使用构建后步骤将二进制文件推送到存档服务器,但我还没有找到一种方法来安排构建日志也在那里结束。我发现控制台输出可以在http://jenkins/job/$jobtitle/$buildnumber/consoletext上获得,但我不
我创建了一个AWS代码管道,它分四个阶段运行。1) 来自github的源代码,2)将后端部署到Elastic Beanstalk,3)使用Codebuild构建前端代码(使用下面的buildspec文件),以及4)将webpack的结果部署到S3。 到目前为止,除了第三阶段的结果外,一切都按预期进行。Codebuild似乎将工件设置为源文件,而不是webpack构建的结果。在bucket和文件夹中
我对webpack非常陌生,我发现在生产构建中我们可以减少整体代码的大小。目前,webpack构建了大约8MB的文件,main.js构建了大约5MB的文件。如何在生产构建中减少代码的大小?我从internet上找到了一个示例webpack配置文件,并为我的应用程序进行了配置,然后运行,它开始构建,它在目录中生成了一些文件。 null webpack.config.js webpack.produc
问题内容: 我正在寻找一种生成代码的解决方案。我已经用谷歌搜索,搜索了SO和一些博客,但没有找到一个好的解决方案。 我想在类上添加注释,并且在编译时,一些方法和属性会自动添加到类中。 我正在寻找的解决方案的要点: 生成的代码可定制(强制) 无需调用任何外部工具(强制性) 仅JDK,无第三方框架( 强制 选配) 注释名称可自定义(可选) 例如 : 编译后,我的课看起来像这样: 编辑: 最后,我将我的
我正在使用代码管道部署云形成模板。问题是这个Cloud形成模板有一些嵌套堆栈。嵌套堆栈模板需要在S3存储桶中。所以在触发主(父)CF模板之前,我需要将CF嵌套堆栈上传到S3。 我没有找到使用代码管道实现这一点的方法。 有什么建议吗?
我开始学习AWS的CI/CD功能。到目前为止,我一直在基于microsoft/windowsservercore映像在Windows Server 2016本地创建docker映像,并手动将其推送到ECR(amazon容器注册表)。 在这一点上,我没有试图在CodeBuild中编译应用程序。我只是想建造容器。在本地,二进制文件位于子目录中,并复制到容器中。 CodeBuild项目失败,出现错误:无