Amazon Lightsailのインスタンス情報の取得や各種制御(インスタンスの起動や停止など)はAWS CLIから行うことが可能です。
各種プログラミング言語に対応したAWS SDKも提供されており、AWS EC2の場合はそれを使ってプログラムからインスタンスの制御をすることができます。
AWS CLIでLightsailのインスタンス情報を取得してみた
時々「Amazon Lightsail」でインスタンスを立てます。 安価でいろいろセットになっていて手軽なのでちょっとしたテスト用途のときは専らLightsailです。 Lightsailにつ...
Go言語でAWS EC2インスタンスを制御してみた
AWS EC2インスタンスをいじる際、AWSコンソールを使うことが多いかと思います。 しかし、起動中/停止中の確認や、起動/停止をするためだけにAWSコンソールにアクセスす...
Lightsailについてはサンプルコードのページに記述がありません。
非対応なのかと思いましたがSDKのソースを見てみるとそれらしいディレクトリがあり「もしかしたらいけるのでは…」ということで調べてみました。
aws-doc-sdk-examples/gov2 at main · awsdocs/aws-doc-sdk-examples
Welcome to the AWS Code Examples Repository. This repo contains code examples used in the AWS documentation, AWS SDK Developer Guides, and more. For more inform...
aws-sdk-go-v2/service/lightsail at main · aws/aws-sdk-go-v2
AWS SDK for the Go programming language. . Contribute to aws/aws-sdk-go-v2 development by creating an account on GitHub.
目次
結論
EC2用のサンプルコードをLightsail用のメソッドなどに変更することで制御できます。
コード例
コードは下記のようになります。
(インスタンス情報の取得部分を一部抜粋)
package main import ( "context" "errors" "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/lightsail" "github.com/aws/aws-sdk-go-v2/service/lightsail/types" "github.com/aws/smithy-go" ) type LSGetInstancesAPI interface { GetInstances(ctx context.Context, params *lightsail.GetInstancesInput, optFns ...func(*lightsail.Options)) (*lightsail.GetInstancesOutput, error) } func getLsStatus(config aws.Config) (*lightsail.GetInstancesOutput, error) { client := lightsail.NewFromConfig(config) input := &lightsail.GetInstancesInput{} return getLsInstances(context.TODO(), client, input) } func getLsInstances(c context.Context, api LSGetInstancesAPI, input *lightsail.GetInstancesInput) (*lightsail.GetInstancesOutput, error) { return api.GetInstances(c, input) }
getLsStatusメソッドを呼び出すことでインスタンス情報の入ったJSONが返ってきますので必要に応じてパースします。
まとめ
今回の記事ではIAMユーザーの認証周りなどについては言及しておりません。
そのあたりの情報は前述の記事に記載してありますのでご覧ください。
大雑把に言えば前述の記事において「ec2云々」となっている部分を「lightsail云々」に変えれば動く感じです。
この記事がGo言語でLightsailインスタンスを制御しようとしている方の参考になれば幸いです。
コメント