AWSのgo用SDKでSQSに入ってくるメッセージを取得する

目的 インスタンスからgo用のAWS SDK でSQSに届くメッセージを取得したい。 公式APIリファレンスの場所 AWS SDK for Go API Reference インストール 先にgo getしておきましょう。 go get github.com/aws/aws-sdk-go/... 使い方 対象のSQSのキューのARNだけをリソースとして指定したPolicyを作り、ロールにアタッチする EC2等にそのロールを付与する ソースコード package main import ( "flag" "fmt" "log" "os" "time" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/sqs" ) // // GetMessage will get messages in SQS queue. // func GetMessage() { params := &sqs.ReceiveMessageInput{ QueueUrl: aws.String(queueUrl), // Number of messages are got in one time. MaxNumberOfMessages: aws.Int64(10), // If there are no messages, keeping connection in 20 sec. [続きを読む]
AWS  Go  SQS 

AWSのgo用SDKでLambdaを呼び出す

目的 インスタンスからgo用のAWS SDK でLambdaを呼び出したい 注意)Lambdaをgoで書きたいとか、Lambda to Lambdaをgoで書きたいとかではない(でもやってることはほぼ同じ) 公式APIリファレンスの場所 AWS SDK for Go API Reference インストール 先にgo getしておきましょう。 go get github.com/aws/aws-sdk-go/... 使い方 credentialをインスタンスに保存するのは嫌なので、インスタンスに対して、Lambdaを起動させるためのロールを設定している前提. Lambdaを実行するだけなら、設定するロールは以下の2つだけで良いようだ。 lambda:InvokeFunction lambda:InvokeAsync ソースコード package main import ( "encoding/json" "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/lambda" ) // for response type Response struct { Message string `json:"message"` Ok bool `json:"ok"` } // data to input to Lambda type Data struct { Key1 string `json:"key1"` Key2 string `json:"key2"` Key3 string `json:"key3"` } // function to call Lambda func Handler() (Response, error) { // Data that is to send to the Lambda payload := Data{ Key1: "1", Key2: "2", Key3: "3", } // and transform it to json bytes. [続きを読む]
AWS  Go