Lambda+Apex+Go로 slack에게 메시지 보내기
개요
내용
① IAM에서 "lambda_apex_go"그룹 만들기
인라인 정책은 다음과 같습니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:Create*",
"iam:Attach*",
"iam:PassRole",
"lambda:*"
],
"Resource": "*"
}
]
}
② 자신의 IAM 유저에게 "lambda_apex_go" 그룹 부착
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iam:Create*",
"iam:Attach*",
"iam:PassRole",
"lambda:*"
],
"Resource": "*"
}
]
}
③ 여기에서 로컬 작업. apex를 설치하고 작업 디렉토리를 파십시오.
### apexインストール
$ curl https://raw.githubusercontent.com/apex/apex/master/install.sh | sh
$ mkdir apex-sample-go
$ cd apex-sample-go
### ~/.aws/configは。。設定してると思うからスルーするね!
### init
$ go get github.com/apex/go-apex
$ apex init
_ ____ _______ __
/ \ | _ \| ____\ \/ /
/ _ \ | |_) | _| \ /
/ ___ \| __/| |___ / \
/_/ \_\_| |_____/_/\_\
Enter the name of your project. It should be machine-friendly, as this
is used to prefix your functions in Lambda.
Project name: apex-sample-golang
Enter an optional description of your project.
Project description: apex-samle-golang
[+] creating IAM apex-sample-golang_lambda_function role
[+] creating IAM apex-sample-golang_lambda_logs policy
[+] attaching policy to lambda_function role.
[+] creating ./project.json
[+] creating ./functions
Setup complete, deploy those functions!
$ apex deploy
### 確認
$ tree
.
├── functions
│ └── hello
│ └── index.js
└── project.json
④ 통지용 프로그램 작성
index.js
를 제거하십시오 $ tree
.
├── functions
│ └── hello
│ ├── main.go
│ └── run.go
└── project.json
main.go
package main
import (
"encoding/json"
"github.com/apex/go-apex"
)
type message struct {
Hello string `json:"hello"`
}
func main() {
apex.HandleFunc(func(event json.RawMessage, ctx *apex.Context) (interface{}, error) {
Run()
return nil, nil
})
}
run.go (채널 이름을 편집하십시오)
package main
import (
"encoding/json"
"net/http"
"net/url"
)
type Slack struct {
Text string `json:"text"`
Username string `json:"username"`
IconEmoji string `json:"icon_emoji"`
IconURL string `json:"icon_url"`
Channel string `json:"channel"`
}
func LoadSlackParam() *Slack {
return &Slack{
Text: "testだよ!",
Username: "test",
IconEmoji: ":bow:",
IconURL: "",
Channel: "チャンネル名書いてね",
}
}
func Run() {
URL := "https://hooks.slack.com/services/xxxxxx/xxxxx/xxxxxxxxxxxxxxxxx"
params, _ := json.Marshal(LoadSlackParam())
resp, _ := http.PostForm(
URL,
url.Values{"payload": {string(params)}},
)
defer resp.Body.Close()
}
⑤deploy한다
$ apex deploy
# deployが終わった、lambdaでapex-sample-golang_hello関数ができてるはずです
⑥ 실행해 본다
### apexで掘ったディレクトリ内であれば
$ apex invoke hello
### aws cli経由であれば
$ aws lambda invoke --function-name apex-sample-golang_hello --invocation-type Event outputfile.txt
⑦ 삭제할 때는?
### apexから削除
$ apex delete
yes
# ウェブコンソールから削除しても良いです
### コンソール上でIAMから下記を削除
使ったPolicy
使ったrole
Reference
이 문제에 관하여(Lambda+Apex+Go로 slack에게 메시지 보내기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sion_cojp/items/cf203c9ff8473f934512텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)