Amazon web services CloudFormation lambda函数给出本地代码
我正在尝试使用CloudFormation将lambda函数部署到AWS。我的问题是,对于代码部分,我想给出一个本地文件,而不是一个s3存储桶。这就是我现在拥有的Amazon web services CloudFormation lambda函数给出本地代码,amazon-web-services,aws-lambda,amazon-cloudformation,Amazon Web Services,Aws Lambda,Amazon Cloudformation,我正在尝试使用CloudFormation将lambda函数部署到AWS。我的问题是,对于代码部分,我想给出一个本地文件,而不是一个s3存储桶。这就是我现在拥有的 getStores: Type: AWS::Lambda::Function Properties: Handler: index.get Role: !GetAtt SyncGalaxyLambdaRole.Arn Code: ZipFile:
getStores:
Type: AWS::Lambda::Function
Properties:
Handler: index.get
Role: !GetAtt SyncGalaxyLambdaRole.Arn
Code:
ZipFile:
Fn::Join:
- "\n"
- - exports.get = function(event, context) {
- " console.log('hello world!');"
- "};"
Runtime: nodejs6.10
现在对于代码部分,我想给出通过webpack生成的本地文件的内容。如何做到这一点?您可以避免将Javascript代码与cloudformation内联。这在未来将很难维持。您还可以使用AWS SAM将代码压缩到s3 bucket并用于lambda函数。这是AWS推荐的方法 执行以下步骤以创建堆栈
aws s3 mb s3://[STACK_NAME]-应用程序工件--区域[region]
aws cloudformation包--模板文件samTemplate.yaml--s3 bucket[STACK_NAME]-应用程序工件--输出模板文件NewSamTemplate.yaml
aws——区域[region]云信息部署——模板文件NewSamTemplate.yaml——堆栈名称[stack\u name]——功能IAM
更新代码后,您只需重新运行上述步骤即可创建堆栈。谢谢您的帮助,我想问一个简单的问题,如果我重新运行要部署的命令,AWS如何判断哪些已更改?当您运行package命令时,AWS每次都会以不同的名称将zip上载到s3 bucket,类似于时间戳。此S3URI将反映NewSamTemplate.yaml中的更改
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: Hello World
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs4.3
CodeUri: ./