使用AWS CloudFormation为CloudWatch授予调用Lambda的权限,可以通过以下步骤完成:
Resources:
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: LambdaExecutionRole
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: Allow
Principal:
Service: cloudwatch.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
- arn:aws:iam::aws:policy/service-role/CloudWatchEventsFullAccess
- arn:aws:iam::aws:policy/AWSLambda_FullAccess
- arn:aws:iam::aws:policy/AWSLambda_InvokeFunction
Resources:
MyLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: MyLambdaFunction
Handler: index.handler
Role: !GetAtt LambdaExecutionRole.Arn
Runtime: python3.8
Code:
ZipFile: |
import json
def handler(event, context):
# Add your code logic here
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
Resources:
MyCloudWatchEventRule:
Type: AWS::Events::Rule
Properties:
Name: MyCloudWatchEventRule
Description: Trigger Lambda function on CloudWatch event
EventPattern:
source:
- aws.cloudwatch
detail-type:
- 'Scheduled Event'
State: ENABLED
Targets:
- Arn: !GetAtt MyLambdaFunction.Arn
Id: TargetLambdaFunction
通过以上步骤,您将成功使用AWS CloudFormation为CloudWatch授予调用Lambda的权限,并创建一个能够处理CloudWatch事件的Lambda函数。