forked from aws-powertools/powertools-lambda-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtemplate.yaml
More file actions
122 lines (106 loc) · 3.16 KB
/
Copy pathtemplate.yaml
File metadata and controls
122 lines (106 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: Hello world Direct Lambda Resolver
Globals:
Function:
Timeout: 5
Runtime: python3.12
Tracing: Active
Environment:
Variables:
# Powertools for AWS Lambda (Python) env vars: https://docs.powertools.aws.dev/lambda/python/latest/#environment-variables
POWERTOOLS_LOG_LEVEL: INFO
POWERTOOLS_LOGGER_SAMPLE_RATE: 0.1
POWERTOOLS_LOGGER_LOG_EVENT: true
POWERTOOLS_SERVICE_NAME: example
Resources:
TodosFunction:
Type: AWS::Serverless::Function
Properties:
Handler: getting_started_graphql_api_resolver.lambda_handler
CodeUri: ../src
Description: Sample Direct Lambda Resolver
# IAM Permissions and Roles
AppSyncServiceRole:
Type: "AWS::IAM::Role"
Properties:
AssumeRolePolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Principal:
Service:
- "appsync.amazonaws.com"
Action:
- "sts:AssumeRole"
InvokeLambdaResolverPolicy:
Type: "AWS::IAM::Policy"
Properties:
PolicyName: "DirectAppSyncLambda"
PolicyDocument:
Version: "2012-10-17"
Statement:
- Effect: "Allow"
Action: "lambda:invokeFunction"
Resource:
- !GetAtt TodosFunction.Arn
Roles:
- !Ref AppSyncServiceRole
# GraphQL API
TodosApi:
Type: "AWS::AppSync::GraphQLApi"
Properties:
Name: TodosApi
AuthenticationType: "API_KEY"
XrayEnabled: true
TodosApiKey:
Type: AWS::AppSync::ApiKey
Properties:
ApiId: !GetAtt TodosApi.ApiId
TodosApiSchema:
Type: "AWS::AppSync::GraphQLSchema"
Properties:
ApiId: !GetAtt TodosApi.ApiId
DefinitionS3Location: ../src/getting_started_schema.graphql
Metadata:
cfn-lint:
config:
ignore_checks:
- W3002 # allow relative path in DefinitionS3Location
# Lambda Direct Data Source and Resolver
TodosFunctionDataSource:
Type: "AWS::AppSync::DataSource"
Properties:
ApiId: !GetAtt TodosApi.ApiId
Name: "HelloWorldLambdaDirectResolver"
Type: "AWS_LAMBDA"
ServiceRoleArn: !GetAtt AppSyncServiceRole.Arn
LambdaConfig:
LambdaFunctionArn: !GetAtt TodosFunction.Arn
ListTodosResolver:
Type: "AWS::AppSync::Resolver"
Properties:
ApiId: !GetAtt TodosApi.ApiId
TypeName: "Query"
FieldName: "listTodos"
DataSourceName: !GetAtt TodosFunctionDataSource.Name
GetTodoResolver:
Type: "AWS::AppSync::Resolver"
Properties:
ApiId: !GetAtt TodosApi.ApiId
TypeName: "Query"
FieldName: "getTodo"
DataSourceName: !GetAtt TodosFunctionDataSource.Name
CreateTodoResolver:
Type: "AWS::AppSync::Resolver"
Properties:
ApiId: !GetAtt TodosApi.ApiId
TypeName: "Mutation"
FieldName: "createTodo"
DataSourceName: !GetAtt TodosFunctionDataSource.Name
Outputs:
TodosFunction:
Description: "Hello World Lambda Function ARN"
Value: !GetAtt TodosFunction.Arn
TodosApi:
Value: !GetAtt TodosApi.GraphQLUrl