Aws lambda 我可以通过CloudFormation向lambda函数添加codecommit触发器吗
我在写一个lambda函数,我想由某人更新回购协议的主分支触发。该账户上已存在回购协议 在cloudformation中有没有一种方法可以将触发器添加到lambda函数中?我想在一个小插曲中,我可以使用一些cloudwatch规则来触发lambda,但我更愿意将其全部保存在lambda中 谢谢Aws lambda 我可以通过CloudFormation向lambda函数添加codecommit触发器吗,aws-lambda,amazon-cloudformation,aws-codecommit,Aws Lambda,Amazon Cloudformation,Aws Codecommit,我在写一个lambda函数,我想由某人更新回购协议的主分支触发。该账户上已存在回购协议 在cloudformation中有没有一种方法可以将触发器添加到lambda函数中?我想在一个小插曲中,我可以使用一些cloudwatch规则来触发lambda,但我更愿意将其全部保存在lambda中 谢谢 R如果您使用的是AWS无服务器转换,则可以在lambda中自行包含它。虽然转换生成了cloudwatch规则和lambda权限,但基本上与您提到的相同 然而,这里有一个例子,你想做什么就做什么 AWSTe
R如果您使用的是AWS无服务器转换,则可以在lambda中自行包含它。虽然转换生成了cloudwatch规则和lambda权限,但基本上与您提到的相同 然而,这里有一个例子,你想做什么就做什么
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Pipeline which triggers lambda for codecommit changes
Parameters:
BranchName:
Default: master
Description: The GIT branch
Type: String
RepositoryName:
Description: The GIT repository
Type: String
StackOwner:
Description: The stack owner
Type: String
Resources:
BasicLambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
Path: "/"
Policies:
- PolicyName: root
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action: logs:*
Resource: arn:aws:logs:*:*:*
- Effect: Allow
Action: '*'
Resource: '*'
PipelineTriggerFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: src/trigger
Handler: codetrigger.handler
MemorySize: 256
Role: !GetAtt BasicLambdaRole.Arn
Runtime: python3.6
Timeout: 900
Environment:
Variables:
TestVariable: "TestValue"
Events:
CodeCommitPushEvent:
Type: CloudWatchEvent
Properties:
Pattern:
source:
- aws.codecommit
resources:
- !Sub 'arn:aws:codecommit:${AWS::Region}:${AWS::AccountId}:${RepositoryName}'
detail:
event:
- referenceCreated
- referenceUpdated
repositoryName:
- !Ref RepositoryName
referenceName:
- !Ref BranchName
Tags:
'owner': !Ref StackOwner
'task': !Ref RepositoryName
显然,要更好地指定lambda角色,而不是像示例中提供的那样授予所有权限 Codecommit repo是否驻留在Cloudformation模板中?如果不是,您可能需要使用cloudwatch解决方案规则,因为添加codecommit触发器的唯一方法似乎是来自AWS::codecommit::Repository的“触发器”对象。