inital commit
This commit is contained in:
1
main-web/serverless/go/.gitignore
vendored
Normal file
1
main-web/serverless/go/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
pkg/
|
||||
BIN
main-web/serverless/go/bin/go-outline
Normal file
BIN
main-web/serverless/go/bin/go-outline
Normal file
Binary file not shown.
BIN
main-web/serverless/go/bin/gopls
Normal file
BIN
main-web/serverless/go/bin/gopls
Normal file
Binary file not shown.
21
main-web/serverless/go/src/catherine-fc-api/.gitignore
vendored
Normal file
21
main-web/serverless/go/src/catherine-fc-api/.gitignore
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
# Serverless directories
|
||||
.serverless
|
||||
|
||||
# golang output binary directory
|
||||
bin
|
||||
|
||||
# golang vendor (dependencies) directory
|
||||
vendor
|
||||
|
||||
# Binaries for programs and plugins
|
||||
*.exe
|
||||
*.exe~
|
||||
*.dll
|
||||
*.so
|
||||
*.dylib
|
||||
|
||||
# Test binary, build with `go test -c`
|
||||
*.test
|
||||
|
||||
# Output of the go coverage tool, specifically when used with LiteIDE
|
||||
*.out
|
||||
91
main-web/serverless/go/src/catherine-fc-api/Gopkg.lock
generated
Normal file
91
main-web/serverless/go/src/catherine-fc-api/Gopkg.lock
generated
Normal file
@@ -0,0 +1,91 @@
|
||||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
digest = "1:1f2ee62e40b3b0ca8403e49a07afb9ae8c0980391be1986e9f6c4ac9de1b1a90"
|
||||
name = "github.com/aws/aws-lambda-go"
|
||||
packages = [
|
||||
"events",
|
||||
"lambda",
|
||||
"lambda/handlertrace",
|
||||
"lambda/messages",
|
||||
"lambdacontext",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "55dc88be4cdfaaf4bb4d9f65debd8d4310e0a83c"
|
||||
version = "v1.19.1"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:913aa8374d300095f235fe6762f74a9ca82bf1fb30d4f830540b2a5dd6f993e4"
|
||||
name = "github.com/aws/aws-sdk-go"
|
||||
packages = [
|
||||
"aws",
|
||||
"aws/awserr",
|
||||
"aws/awsutil",
|
||||
"aws/client",
|
||||
"aws/client/metadata",
|
||||
"aws/corehandlers",
|
||||
"aws/credentials",
|
||||
"aws/credentials/ec2rolecreds",
|
||||
"aws/credentials/endpointcreds",
|
||||
"aws/credentials/processcreds",
|
||||
"aws/credentials/stscreds",
|
||||
"aws/csm",
|
||||
"aws/defaults",
|
||||
"aws/ec2metadata",
|
||||
"aws/endpoints",
|
||||
"aws/request",
|
||||
"aws/session",
|
||||
"aws/signer/v4",
|
||||
"internal/context",
|
||||
"internal/ini",
|
||||
"internal/sdkio",
|
||||
"internal/sdkmath",
|
||||
"internal/sdkrand",
|
||||
"internal/sdkuri",
|
||||
"internal/shareddefaults",
|
||||
"internal/strings",
|
||||
"internal/sync/singleflight",
|
||||
"private/protocol",
|
||||
"private/protocol/json/jsonutil",
|
||||
"private/protocol/jsonrpc",
|
||||
"private/protocol/query",
|
||||
"private/protocol/query/queryutil",
|
||||
"private/protocol/rest",
|
||||
"private/protocol/xml/xmlutil",
|
||||
"service/ssm",
|
||||
"service/sts",
|
||||
"service/sts/stsiface",
|
||||
]
|
||||
pruneopts = ""
|
||||
revision = "2bec4e3ae9cb717c0082a489e75ab9db71c98b23"
|
||||
version = "v1.34.22"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:a67f9275b42e8bb95ba38f705062175ef65538bcdc107e0771763e6cde80c3c3"
|
||||
name = "github.com/go-sql-driver/mysql"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "17ef3dd9d98b69acec3e85878995ada9533a9370"
|
||||
version = "v1.5.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:13fe471d0ed891e8544eddfeeb0471fd3c9f2015609a1c000aefdedf52a19d40"
|
||||
name = "github.com/jmespath/go-jmespath"
|
||||
packages = ["."]
|
||||
pruneopts = ""
|
||||
revision = "c2b33e84"
|
||||
|
||||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
input-imports = [
|
||||
"github.com/aws/aws-lambda-go/events",
|
||||
"github.com/aws/aws-lambda-go/lambda",
|
||||
"github.com/aws/aws-sdk-go/aws",
|
||||
"github.com/aws/aws-sdk-go/aws/session",
|
||||
"github.com/aws/aws-sdk-go/service/ssm",
|
||||
"github.com/go-sql-driver/mysql",
|
||||
]
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
25
main-web/serverless/go/src/catherine-fc-api/Gopkg.toml
Normal file
25
main-web/serverless/go/src/catherine-fc-api/Gopkg.toml
Normal file
@@ -0,0 +1,25 @@
|
||||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project"
|
||||
# version = "1.0.0"
|
||||
#
|
||||
# [[constraint]]
|
||||
# name = "github.com/user/project2"
|
||||
# branch = "dev"
|
||||
# source = "github.com/myfork/project2"
|
||||
#
|
||||
# [[override]]
|
||||
# name = "github.com/x/y"
|
||||
# version = "2.4.0"
|
||||
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/aws/aws-lambda-go"
|
||||
version = "1.x"
|
||||
12
main-web/serverless/go/src/catherine-fc-api/Makefile
Normal file
12
main-web/serverless/go/src/catherine-fc-api/Makefile
Normal file
@@ -0,0 +1,12 @@
|
||||
.PHONY: build clean deploy
|
||||
|
||||
build:
|
||||
dep ensure -v
|
||||
env GOOS=linux go build -ldflags="-s -w" -o bin/archive archive/main.go
|
||||
env GOOS=linux go build -ldflags="-s -w" -o bin/guide guide/main.go
|
||||
|
||||
clean:
|
||||
rm -rf ./bin ./vendor Gopkg.lock
|
||||
|
||||
deploy: clean build
|
||||
sls deploy --verbose
|
||||
72
main-web/serverless/go/src/catherine-fc-api/archive/main.go
Normal file
72
main-web/serverless/go/src/catherine-fc-api/archive/main.go
Normal file
@@ -0,0 +1,72 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
|
||||
"github.com/aws/aws-lambda-go/events"
|
||||
"github.com/aws/aws-lambda-go/lambda"
|
||||
"github.com/aws/aws-sdk-go/aws"
|
||||
"github.com/aws/aws-sdk-go/aws/session"
|
||||
"github.com/aws/aws-sdk-go/service/ssm"
|
||||
)
|
||||
|
||||
// Response is of type APIGatewayProxyResponse since we're leveraging the
|
||||
// AWS Lambda Proxy Request functionality (default behavior)
|
||||
//
|
||||
// https://serverless.com/framework/docs/providers/aws/events/apigateway/#lambda-proxy-integration
|
||||
type Response events.APIGatewayProxyResponse
|
||||
|
||||
// Handler is our lambda handler invoked by the `lambda.Start` function call
|
||||
func Handler(ctx context.Context) (Response, error) {
|
||||
svc := ssm.New(session.New(), &aws.Config{
|
||||
Region: aws.String("ap-northeast-1"),
|
||||
})
|
||||
res, _ := svc.GetParameter(&ssm.GetParameterInput{
|
||||
Name: aws.String("db-endpoint"),
|
||||
WithDecryption: aws.Bool(true),
|
||||
})
|
||||
dbendpoint := *res.Parameter.Value
|
||||
|
||||
/*
|
||||
res, _ = svc.GetParameter(&ssm.GetParameterInput{
|
||||
Name: aws.String("db-username"),
|
||||
WithDecryption: aws.Bool(true),
|
||||
})
|
||||
dbusername := *res.Parameter.Value
|
||||
res, _ = svc.GetParameter(&ssm.GetParameterInput{
|
||||
Name: aws.String("db-password"),
|
||||
WithDecryption: aws.Bool(true),
|
||||
})
|
||||
dbpassword := *res.Parameter.Value
|
||||
*/
|
||||
var buf bytes.Buffer
|
||||
|
||||
body, err := json.Marshal(map[string]interface{}{
|
||||
"message": "Okay so your other function also executed successfully!",
|
||||
"dbendpoint": dbendpoint,
|
||||
})
|
||||
if err != nil {
|
||||
return Response{StatusCode: 404}, err
|
||||
}
|
||||
json.HTMLEscape(&buf, body)
|
||||
|
||||
resp := Response{
|
||||
StatusCode: 200,
|
||||
IsBase64Encoded: false,
|
||||
Body: buf.String(),
|
||||
Headers: map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
"X-MyCompany-Func-Reply": "world-handler",
|
||||
},
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
lambda.Start(Handler)
|
||||
}
|
||||
45
main-web/serverless/go/src/catherine-fc-api/guide/main.go
Normal file
45
main-web/serverless/go/src/catherine-fc-api/guide/main.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/aws/aws-lambda-go/events"
|
||||
"github.com/aws/aws-lambda-go/lambda"
|
||||
)
|
||||
|
||||
// Response is of type APIGatewayProxyResponse since we're leveraging the
|
||||
// AWS Lambda Proxy Request functionality (default behavior)
|
||||
//
|
||||
// https://serverless.com/framework/docs/providers/aws/events/apigateway/#lambda-proxy-integration
|
||||
type Response events.APIGatewayProxyResponse
|
||||
|
||||
// Handler is our lambda handler invoked by the `lambda.Start` function call
|
||||
func Handler(ctx context.Context) (Response, error) {
|
||||
var buf bytes.Buffer
|
||||
|
||||
body, err := json.Marshal(map[string]interface{}{
|
||||
"message": "Go Serverless v1.0! Your function executed successfully!",
|
||||
})
|
||||
if err != nil {
|
||||
return Response{StatusCode: 404}, err
|
||||
}
|
||||
json.HTMLEscape(&buf, body)
|
||||
|
||||
resp := Response{
|
||||
StatusCode: 200,
|
||||
IsBase64Encoded: false,
|
||||
Body: buf.String(),
|
||||
Headers: map[string]string{
|
||||
"Content-Type": "application/json",
|
||||
"X-MyCompany-Func-Reply": "hello-handler",
|
||||
},
|
||||
}
|
||||
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
lambda.Start(Handler)
|
||||
}
|
||||
152
main-web/serverless/go/src/catherine-fc-api/serverless.yml
Normal file
152
main-web/serverless/go/src/catherine-fc-api/serverless.yml
Normal file
@@ -0,0 +1,152 @@
|
||||
# Welcome to Serverless!
|
||||
#
|
||||
# This file is the main config file for your service.
|
||||
# It's very minimal at this point and uses default values.
|
||||
# You can always add more config options for more control.
|
||||
# We've included some commented out config examples here.
|
||||
# Just uncomment any of them to get that config option.
|
||||
#
|
||||
# For full config options, check the docs:
|
||||
# docs.serverless.com
|
||||
#
|
||||
# Happy Coding!
|
||||
|
||||
service: catherine-fc-api
|
||||
# app and org for use with dashboard.serverless.com
|
||||
#app: your-app-name
|
||||
#org: your-org-name
|
||||
custom:
|
||||
VpcId:
|
||||
dev: "vpc-c54553a2"
|
||||
sqa: "vpc-c54553a2"
|
||||
int: "vpc-c54553a2"
|
||||
uat: "vpc-c54553a2"
|
||||
prd: "vpc-c54553a2"
|
||||
Subnet1:
|
||||
dev: "subnet-0d0fdf45"
|
||||
sqa: "subnet-0d0fdf45"
|
||||
int: "subnet-0d0fdf45"
|
||||
uat: "subnet-0d0fdf45"
|
||||
prd: "subnet-0d0fdf45"
|
||||
Subnet2:
|
||||
dev: "subnet-4dcecc16"
|
||||
sqa: "subnet-4dcecc16"
|
||||
int: "subnet-4dcecc16"
|
||||
uat: "subnet-4dcecc16"
|
||||
prd: "subnet-4dcecc16"
|
||||
|
||||
# You can pin your service to only deploy with a specific Serverless version
|
||||
# Check out our docs for more details
|
||||
# frameworkVersion: "=X.X.X"
|
||||
frameworkVersion: '>=1.28.0 <=2.0.0'
|
||||
|
||||
provider:
|
||||
name: aws
|
||||
runtime: go1.x
|
||||
region: ap-northeast-1
|
||||
versionFunctions: false
|
||||
logRetentionInDays: 14
|
||||
memorySize: 128
|
||||
deploymentBucket: catherine-fc-serverless-bucket
|
||||
stage: dev
|
||||
# you can overwrite defaults here
|
||||
# stage: dev
|
||||
# region: us-east-1
|
||||
iamRoleStatements:
|
||||
- Effect: "Allow"
|
||||
Action:
|
||||
- "lambda:InvokeFunction"
|
||||
Resource:
|
||||
- "arn:aws:lambda:*:*:function:*"
|
||||
|
||||
- Effect: "Allow"
|
||||
Action:
|
||||
- "logs:CreateLogGroup"
|
||||
- "logs:CreateLogStream"
|
||||
- "logs:PutLogEvents"
|
||||
Resource:
|
||||
- "arn:aws:logs:*:*:*"
|
||||
|
||||
- Effect: "Allow"
|
||||
Action:
|
||||
- "ssm:GetParameter"
|
||||
Resource:
|
||||
- "arn:aws:ssm:*:*:parameter/*"
|
||||
|
||||
# you can define service wide environment variables here
|
||||
# environment:
|
||||
# variable1: value1
|
||||
|
||||
package:
|
||||
exclude:
|
||||
- ./**
|
||||
include:
|
||||
- ./bin/**
|
||||
|
||||
functions:
|
||||
guideAPI:
|
||||
handler: bin/guide
|
||||
timeout: 3
|
||||
events:
|
||||
- http:
|
||||
path: guide
|
||||
method: get
|
||||
archiveAPI:
|
||||
handler: bin/archive
|
||||
timeout: 3
|
||||
events:
|
||||
- http:
|
||||
path: archive
|
||||
method: get
|
||||
# The following are a few example events you can configure
|
||||
# NOTE: Please make sure to change your handler code to work with those events
|
||||
# Check the event documentation for details
|
||||
# events:
|
||||
# events:
|
||||
# - http:
|
||||
# path: users/create
|
||||
# method: get
|
||||
# - websocket: $connect
|
||||
# - s3: ${env:BUCKET}
|
||||
# - schedule: rate(10 minutes)
|
||||
# - sns: greeter-topic
|
||||
# - stream: arn:aws:dynamodb:region:XXXXXX:table/foo/stream/1970-01-01T00:00:00.000
|
||||
# - alexaSkill: amzn1.ask.skill.xx-xx-xx-xx
|
||||
# - alexaSmartHome: amzn1.ask.skill.xx-xx-xx-xx
|
||||
# - iot:
|
||||
# sql: "SELECT * FROM 'some_topic'"
|
||||
# - cloudwatchEvent:
|
||||
# event:
|
||||
# source:
|
||||
# - "aws.ec2"
|
||||
# detail-type:
|
||||
# - "EC2 Instance State-change Notification"
|
||||
# detail:
|
||||
# state:
|
||||
# - pending
|
||||
# - cloudwatchLog: '/aws/lambda/hello'
|
||||
# - cognitoUserPool:
|
||||
# pool: MyUserPool
|
||||
# trigger: PreSignUp
|
||||
# - alb:
|
||||
# listenerArn: arn:aws:elasticloadbalancing:us-east-1:XXXXXX:listener/app/my-load-balancer/50dc6c495c0c9188/
|
||||
# priority: 1
|
||||
# conditions:
|
||||
# host: example.com
|
||||
# path: /hello
|
||||
|
||||
# Define function environment variables here
|
||||
# environment:
|
||||
# variable2: value2
|
||||
|
||||
# you can add CloudFormation resource templates here
|
||||
#resources:
|
||||
# Resources:
|
||||
# NewResource:
|
||||
# Type: AWS::S3::Bucket
|
||||
# Properties:
|
||||
# BucketName: my-new-bucket
|
||||
# Outputs:
|
||||
# NewOutput:
|
||||
# Description: "Description for the output"
|
||||
# Value: "Some output value"
|
||||
Reference in New Issue
Block a user