inital commit

This commit is contained in:
2021-07-24 16:28:35 +09:00
parent aa71a7a3cc
commit c6cf7cc88b
39 changed files with 949 additions and 66 deletions

1
main-web/serverless/go/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
pkg/

Binary file not shown.

Binary file not shown.

View 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

View 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

View 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"

View 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

View 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)
}

View 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)
}

View 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"