gpt4 book ai didi

aws-lambda - 我可以通过 CloudFormation 将代码提交触发器添加到我的 lambda 函数吗

转载 作者:行者123 更新时间:2023-12-03 07:21:17 25 4
gpt4 key购买 nike

我正在编写一个 lambda 函数,我希望有人更新存储库的主分支来触发该函数。该存储库已存在于帐户中。

cloudformation 中有没有一种方法可以将触发器添加到 lambda 函数?我想我可以创建一些 cloudwatch 规则来触发 lambda,但宁愿将其全部保留在 lambda 内。

谢谢

最佳答案

如果您使用 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 角色,不要授予示例中提供的所有权限。

关于aws-lambda - 我可以通过 CloudFormation 将代码提交触发器添加到我的 lambda 函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55873973/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com