AWS LocalStackは、AWSのクラウドサービスをローカル環境でエミュレートするためのオープンソースツール。AWSの機能を利用するアプリケーションやマイクロサービスを開発する際に、クラウド上でのテストやデバッグを容易にすることができるようになる。実際のAWS環境と同じAPI呼び出しを使用して、ローカルでサービスを起動およびテストできたりサービスの設定やリソースの作成もローカルで行うことができる。
パラメータストアの作成/取得をCLIからやってみる
$ aws ssm put-parameter \ --name sample-param \ --value sample-value \ --type String \ --endpoint-url=http://localhost:4566 \ --profile default $ aws ssm get-parameter \ --name sample-param \ --endpoint-url=http://localhost:4566 \ --profile default { "Parameter": { "Name": "sample-param", "Type": "String", "Value": "sample-value", "Version": 1, "LastModifiedDate": "2023-07-09T01:00:12.696000+09:00", "ARN": "arn:aws:ssm:ap-northeast-1:000000000000:parameter/sample-param", "DataType": "text" } }
LocalStackをGoから使用するには
package main import ( "fmt" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/s3" ) func main() { // LocalStackのエンドポイントURLを指定してセッションを作成 sess := session.Must(session.NewSession(&aws.Config{ Endpoint: aws.String("http://localhost:4566"), })) // LocalStackのセッションを使用してS3クライアントを作成 s3Client := s3.New(sess) // バケット名 bucketName := "my-test-bucket" // S3バケットを作成 _, err := s3Client.CreateBucket(&s3.CreateBucketInput{ Bucket: aws.String(bucketName), }) if err != nil { fmt.Println("Error creating bucket:", err) return } fmt.Println("Bucket created successfully!") }
料金体系とか
無料版(Free)では一部の機能で制限がある模様。以下でProとついていないものは使える
カバレッジも公開されているが"Feature fully supported by LocalStack maintainers; feature is guaranteed to pass all or the majority of tests"となっているのはSQSのみで他は完全エミュレートには対応していないとのこと。とはいえ今も進化の早いAWSの全機能サポートってどんな速度で開発しているのだろうというのは気になる。