问题
I have a SAM template that I am using to building 4 lambda functions integrated with API gateways.
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Specification template describing your function.
#To avoide 'stage' being created when deploying the Api gateway.
Globals:
Api:
OpenApiVersion: 3.0.1
Resources:
# api gateway model for all user methods
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_user
StageName: Development
Cors: "'*'"
# integrating lambda with api for loadeo_get_all_user function
GetAllUser:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_get_all_user
CodeUri: getAllUser/
Handler: get_all_user.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /get-all-user
Method: get
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_get_user_profile function
GetUserProfile:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_get_user_profile
CodeUri: getUserProfile/
Handler: get_user_profile.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /get-user-profile
Method: get
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_update_user_profile function
GetUserProfile:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_update_user_profile
CodeUri: updateUserProfile/
Handler: update_user_profile.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /update_user_profile-user
Method: patch
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_create_user function
GetUserProfile:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_create_user
CodeUri: createUser/
Handler: create_all_user.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /create-user
Method: put
RestApiId:
Ref: ApiGatewayApi
the next step after this to package and deploy the code.
I am using aws cloudformation package
as it is similar to sam package
and I have tried both.
As soon as I run the command the template file gets reduced. from 100 lines to 50 lines. when I observe the middle two functions are being omitted.
don't exactly know the reason for this. Is there any limit on the number of functions? or I am missing anything?
回答1:
two functions are being omitted.
The functions are skipped because they have same name of GetUserProfile
. So one overwrites the other as you have three of them. You have to rename them:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: An AWS Serverless Specification template describing your function.
#To avoide 'stage' being created when deploying the Api gateway.
Globals:
Api:
OpenApiVersion: 3.0.1
Resources:
# api gateway model for all user methods
ApiGatewayApi:
Type: AWS::Serverless::Api
Properties:
Name: loadeo_user
StageName: Development
Cors: "'*'"
# integrating lambda with api for loadeo_get_all_user function
GetAllUser:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_get_all_user
CodeUri: getAllUser/
Handler: get_all_user.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /get-all-user
Method: get
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_get_user_profile function
GetUserProfile:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_get_user_profile
CodeUri: getUserProfile/
Handler: get_user_profile.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /get-user-profile
Method: get
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_update_user_profile function
UpdateUserProfile:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_update_user_profile
CodeUri: updateUserProfile/
Handler: update_user_profile.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /update_user_profile-user
Method: patch
RestApiId:
Ref: ApiGatewayApi
# integrating lambda with api for loadeo_create_user function
CreateUser:
Type: AWS::Serverless::Function
Properties:
FunctionName: loadeo_create_user
CodeUri: createUser/
Handler: create_all_user.lambda_handler
Timeout: 5
Runtime: python3.8
Role: loadeo_lambda_execution
MemorySize: 128
Events:
GetAllUser:
Type: Api
Properties:
Path: /create-user
Method: put
RestApiId:
Ref: ApiGatewayApi
来源:https://stackoverflow.com/questions/66101560/sam-package-is-reducing-the-size-of-my-template