タイトル : テンプレートを確認(12-16) AWSサーバーレス2025
更新日 : 2025-01-26
カテゴリ : プログラミング
テンプレートを確認しましょう
12から16のテンプレートを確認です
-
VPC、SecurityGroup(12より)
EfsLambdaVpc: Type: AWS::EC2::VPC Properties: CidrBlock: "10.0.0.0/16" EfsLambdaSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: "EFS + Lambda on SAM Security Group" VpcId: !Ref EfsLambdaVpc SecurityGroupEgress: - CidrIp: "0.0.0.0/0" FromPort: 0 ToPort: 65535 IpProtocol: tcp SecurityGroupIngress: - CidrIp: "0.0.0.0/0" FromPort: 0 ToPort: 65535 IpProtocol: tcp EfsLambdaSubnetA: Type: AWS::EC2::Subnet Properties: VpcId: !Ref EfsLambdaVpc AvailabilityZone: !Select [ 0, !GetAZs '' ] MapPublicIpOnLaunch: false CidrBlock: "10.0.0.0/24" EfsLambdaSubnetB: Type: AWS::EC2::Subnet Properties: VpcId: !Ref EfsLambdaVpc AvailabilityZone: !Select [ 1, !GetAZs '' ] MapPublicIpOnLaunch: false CidrBlock: "10.0.1.0/24"
-
メディアタイプ(16より)
Api: BinaryMediaTypes: - image/png - image/jpg - image/jpeg
テンプレート
$ cat template12/template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
template12
Sample SAM Template for template12
Globals:
Function:
Timeout: 3
Resources:
EfsLambdaVpc:
Type: AWS::EC2::VPC
Properties:
CidrBlock: "10.0.0.0/16"
EfsLambdaSecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: "EFS + Lambda on SAM Security Group"
VpcId: !Ref EfsLambdaVpc
SecurityGroupEgress:
- CidrIp: "0.0.0.0/0"
FromPort: 0
ToPort: 65535
IpProtocol: tcp
SecurityGroupIngress:
- CidrIp: "0.0.0.0/0"
FromPort: 0
ToPort: 65535
IpProtocol: tcp
EfsLambdaSubnetA:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref EfsLambdaVpc
AvailabilityZone: !Select [ 0, !GetAZs '' ]
MapPublicIpOnLaunch: false
CidrBlock: "10.0.0.0/24"
EfsLambdaSubnetB:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref EfsLambdaVpc
AvailabilityZone: !Select [ 1, !GetAZs '' ]
MapPublicIpOnLaunch: false
CidrBlock: "10.0.1.0/24"
EfsFileSystem:
Type: AWS::EFS::FileSystem
MountTargetA:
Type: AWS::EFS::MountTarget
Properties:
FileSystemId: !Ref EfsFileSystem
SubnetId: !Ref EfsLambdaSubnetA
SecurityGroups:
- !Ref EfsLambdaSecurityGroup
MountTargetB:
Type: AWS::EFS::MountTarget
Properties:
FileSystemId: !Ref EfsFileSystem
SubnetId: !Ref EfsLambdaSubnetB
SecurityGroups:
- !Ref EfsLambdaSecurityGroup
AccessPoint:
Type: AWS::EFS::AccessPoint
Properties:
FileSystemId: !Ref EfsFileSystem
PosixUser:
Gid: "1000"
Uid: "1000"
RootDirectory:
Path: "/lambda"
CreationInfo:
OwnerGid: "1000"
OwnerUid: "1000"
Permissions: "755"
HelloEfsFunction:
Type: AWS::Serverless::Function
DependsOn:
- MountTargetA
- MountTargetB
Properties:
CodeUri: hello_efs/
Handler: app.lambda_handler
Runtime: python3.12
Architectures:
- x86_64
Policies:
- EFSWriteAccessPolicy:
FileSystem: !Ref EfsFileSystem
AccessPoint: !Ref AccessPoint
VpcConfig:
SecurityGroupIds:
- !Ref EfsLambdaSecurityGroup
SubnetIds:
- !Ref EfsLambdaSubnetA
- !Ref EfsLambdaSubnetB
FileSystemConfigs:
- Arn: !GetAtt AccessPoint.Arn
LocalMountPath: /mnt/lambda
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
Outputs:
HelloEfsApi:
Description: "API Gateway endpoint URL for Prod stage for Hello EFS function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/"
$
$ cat template13/template.yaml
# This is the SAM template that represents the architecture of your serverless application
# https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html
# The AWSTemplateFormatVersion identifies the capabilities of the template
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/format-version-structure.html
AWSTemplateFormatVersion: 2010-09-09
Description: >-
template13
# Transform section specifies one or more macros that AWS CloudFormation uses to process your template
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html
Transform:
- AWS::Serverless-2016-10-31
# Resources declares the AWS resources that you want to include in the stack
# https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html
Resources:
getAllItemsFunctionToTableConnector:
Type: AWS::Serverless::Connector # More info about Connector Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-connector.html
Properties:
Source:
Id: getAllItemsFunction
Destination:
Id: SampleTable
Permissions:
- Read
getByIdFunctionToTableConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: getByIdFunction
Destination:
Id: SampleTable
Permissions:
- Read
putItemFunctionToTableConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: putItemFunction
Destination:
Id: SampleTable
Permissions:
- Write
# Each Lambda function is defined by properties:
# https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
# This is a Lambda function config associated with the source code: get-all-items.js
getAllItemsFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get_all_items.getAllItemsHandler
Runtime: python3.12
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP get method to get all items from a DynamoDB table.
Environment:
Variables:
# Make table name accessible as environment variable from function code during execution
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /
Method: GET
# Each Lambda function is defined by properties:
# https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
# This is a Lambda function config associated with the source code: get-by-id.js
getByIdFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/get_by_id.getByIdHandler
Runtime: python3.12
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP get method to get one item by id from a DynamoDB table.
Environment:
Variables:
# Make table name accessible as environment variable from function code during execution
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /{id}
Method: GET
# Each Lambda function is defined by properties:
# https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
# This is a Lambda function config associated with the source code: put-item.js
putItemFunction:
Type: AWS::Serverless::Function
Properties:
Handler: src/handlers/put_item.putItemHandler
Runtime: python3.12
MemorySize: 128
Timeout: 100
Description: A simple example includes a HTTP post method to add one item to a DynamoDB table.
Environment:
Variables:
# Make table name accessible as environment variable from function code during execution
SAMPLE_TABLE: !Ref SampleTable
Events:
Api:
Type: Api
Properties:
Path: /
Method: POST
# Simple syntax to create a DynamoDB table with a single attribute primary key, more in
# https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlesssimpletable
# DynamoDB table to store item: {id: <ID>, name: <NAME>}
SampleTable:
Type: AWS::Serverless::SimpleTable
Properties:
PrimaryKey:
Name: id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 2
WriteCapacityUnits: 2
Outputs:
WebEndpoint:
Description: "API Gateway endpoint URL for Prod stage"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/"
$
$ cat template14/template.yaml
AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: >
template14
Sample SAM Template for template14
Resources:
SfnToStockCheckerFunctionConnector:
Type: AWS::Serverless::Connector # More info about Connector Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-connector.html
Properties:
Source:
Id: StockTradingStateMachine
Destination:
Id: StockCheckerFunction
Permissions:
- Write
SfnToStockBuyerFunctionConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: StockTradingStateMachine
Destination:
Id: StockBuyerFunction
Permissions:
- Write
SfnToStockSellerFunctionConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: StockTradingStateMachine
Destination:
Id: StockSellerFunction
Permissions:
- Write
SfnToTransactionTableConnector:
Type: AWS::Serverless::Connector
Properties:
Source:
Id: StockTradingStateMachine
Destination:
Id: TransactionTable
Permissions:
- Write
StockTradingStateMachine:
Type: AWS::Serverless::StateMachine # More info about State Machine Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-statemachine.html
Properties:
DefinitionUri: statemachine/stock_trader.asl.json
DefinitionSubstitutions:
StockCheckerFunctionArn: !GetAtt StockCheckerFunction.Arn
StockSellerFunctionArn: !GetAtt StockSellerFunction.Arn
StockBuyerFunctionArn: !GetAtt StockBuyerFunction.Arn
DDBPutItem: !Sub arn:${AWS::Partition}:states:::dynamodb:putItem
DDBTable: !Ref TransactionTable
Events:
HourlyTradingSchedule:
Type: Schedule # More info about Schedule Event Source: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-property-statemachine-schedule.html
Properties:
Description: Schedule to run the stock trading state machine every hour
Enabled: False # This schedule is disabled by default to avoid incurring charges.
Schedule: "rate(1 hour)"
Policies:
- CloudWatchPutMetricPolicy: {}
StockCheckerFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html
Properties:
CodeUri: functions/stock_checker/
Handler: app.lambda_handler
Runtime: python3.12
StockSellerFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/stock_seller/
Handler: app.lambda_handler
Runtime: python3.12
StockBuyerFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: functions/stock_buyer/
Handler: app.lambda_handler
Runtime: python3.12
TransactionTable:
Type: AWS::Serverless::SimpleTable # More info about SimpleTable Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-simpletable.html
Properties:
PrimaryKey:
Name: Id
Type: String
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1
Outputs:
# StockTradingStateMachineHourlyTradingSchedule is an implicit Schedule event rule created out of Events key under Serverless::StateMachine
# Find out more about other implicit resources you can reference within SAM
# https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-generated-resources.html
StockTradingStateMachineArn:
Description: "Stock Trading State machine ARN"
Value: !Ref StockTradingStateMachine
StockTradingStateMachineRoleArn:
Description: "IAM Role created for Stock Trading State machine based on the specified SAM Policy Templates"
Value: !GetAtt StockTradingStateMachineRole.Arn
$
$ cat template15/template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
template15
Sample SAM Template for template15
# More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst
Globals:
Function:
Timeout: 3
Resources:
Table:
Type: AWS::Serverless::SimpleTable # More info about SimpleTable Resource: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-simpletable.html
Properties:
PrimaryKey:
Name: id
Type: String
PutFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Metadata:
BuildMethod: rust-cargolambda # More info about Cargo Lambda: https://github.com/cargo-lambda/cargo-lambda
Properties:
CodeUri: ./rust_app # Points to dir of Cargo.toml
Handler: bootstrap # Do not change, as this is the default executable name produced by Cargo Lambda
Runtime: provided.al2
Architectures:
- x86_64
Events:
HelloWorld:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /{id}
Method: put
Environment:
Variables:
TABLE_NAME: !Ref Table
Policies:
- DynamoDBWritePolicy: # More info about SAM policy templates: https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-policy-templates.html
TableName: !Ref Table
Outputs:
# ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
# Find out more about other implicit resources you can reference within SAM
# https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
PutApi:
Description: "API Gateway endpoint URL for Prod stage for Put function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.${AWS::URLSuffix}/Prod/"
PutFunction:
Description: "Put Lambda Function ARN"
Value: !GetAtt PutFunction.Arn
PutTable:
Description: "DynamoDB table name"
Value: !GetAtt Table.Arn
$
$ cat template16/template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Globals:
Function:
Timeout: 50
MemorySize: 5000
Api:
BinaryMediaTypes:
- image/png
- image/jpg
- image/jpeg
Resources:
InferenceFunction:
Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction
Properties:
PackageType: Image
Architectures:
- x86_64
Events:
Inference:
Type: Api # More info about API Event Source: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#api
Properties:
Path: /classify_digit
Method: post
Metadata:
Dockerfile: Dockerfile
DockerContext: ./app
DockerTag: 2-v1
Outputs:
# ServerlessRestApi is an implicit API created out of Events key under Serverless::Function
# Find out more about other implicit resources you can reference within SAM
# https://github.com/awslabs/serverless-application-model/blob/master/docs/internals/generated_resources.rst#api
InferenceApi:
Description: "API Gateway endpoint URL for Prod stage for Inference function"
Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/classify_digit/"
InferenceFunction:
Description: "Inference Lambda Function ARN"
Value: !GetAtt InferenceFunction.Arn
InferenceFunctionIamRole:
Description: "Implicit IAM Role created for Inference function"
Value: !GetAtt InferenceFunctionRole.Arn
$