{"id":13413915,"url":"https://github.com/elgohr/go-localstack","last_synced_at":"2025-03-15T10:31:01.542Z","repository":{"id":36985622,"uuid":"248162798","full_name":"elgohr/go-localstack","owner":"elgohr","description":"Go Wrapper for using localstack","archived":false,"fork":false,"pushed_at":"2024-04-29T01:49:56.000Z","size":10422,"stargazers_count":75,"open_issues_count":0,"forks_count":18,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-01T12:35:20.529Z","etag":null,"topics":["aws","cloudformation","cloudwatch","dynamodb","ec2","elasticsearch","go","golang","golang-library","iam","lambda","localstack","redshift","route53","s3","secretsmanager","ses","sns","sqs","testing"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elgohr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-03-18T07:13:02.000Z","updated_at":"2024-05-04T17:43:48.730Z","dependencies_parsed_at":"2023-10-16T15:01:38.080Z","dependency_job_id":"c022384a-e315-4c29-8c9d-fef291807797","html_url":"https://github.com/elgohr/go-localstack","commit_stats":{"total_commits":810,"total_committers":9,"mean_commits":90.0,"dds":"0.45679012345679015","last_synced_commit":"9339b8b49d43316a27527cf2728be9579b8c4e53"},"previous_names":["elgohr/golang-localstack"],"tags_count":79,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgohr%2Fgo-localstack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgohr%2Fgo-localstack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgohr%2Fgo-localstack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elgohr%2Fgo-localstack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elgohr","download_url":"https://codeload.github.com/elgohr/go-localstack/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243718807,"owners_count":20336589,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","cloudformation","cloudwatch","dynamodb","ec2","elasticsearch","go","golang","golang-library","iam","lambda","localstack","redshift","route53","s3","secretsmanager","ses","sns","sqs","testing"],"created_at":"2024-07-30T20:01:52.654Z","updated_at":"2025-03-15T10:30:56.526Z","avatar_url":"https://github.com/elgohr.png","language":"Go","readme":"# go-localstack\n\n[![Test](https://github.com/elgohr/go-localstack/workflows/Test/badge.svg)](https://github.com/elgohr/go-localstack/actions/workflows/test.yml)\n[![codecov](https://codecov.io/gh/elgohr/go-localstack/branch/main/graph/badge.svg)](https://codecov.io/gh/elgohr/go-localstack)\n[![CodeQL](https://github.com/elgohr/go-localstack/workflows/CodeQL/badge.svg)](https://github.com/elgohr/go-localstack/actions/workflows/codeql-analysis.yml)\n[![Go Report Card](https://goreportcard.com/badge/github.com/elgohr/go-localstack)](https://goreportcard.com/report/github.com/elgohr/go-localstack)\n[![PkgGoDev](https://pkg.go.dev/badge/github.com/elgohr/go-localstack)](https://pkg.go.dev/github.com/elgohr/go-localstack)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/gojp/goreportcard/blob/master/LICENSE)\n\nGo Wrapper for using [localstack](https://github.com/localstack/localstack) in go testing\n\n# Installation\n\nPlease make sure that you have Docker installed.\n\n```bash\ngo get github.com/elgohr/go-localstack\n```\n\n# Usage\n\nWith SDK V2 (using EndpointResolverV2).\nPlease have a look at [resolvers](resolver.go) for a complete list of resolvers.\n```go\nfunc ExampleLocalstackSdkV2EndpointResolverV2(t *testing.T) {\n    l, err := localstack.NewInstance()\n    if err != nil {\n        t.Fatalf(\"Could not connect to Docker %v\", err)\n    }\n    if err := l.Start(); err != nil {\n        t.Fatalf(\"Could not start localstack %v\", err)\n    }\n    t.Cleanup(func() {\n        if err := l.Stop(); err != nil {\n            t.Fatalf(\"Could not stop localstack %v\", err)\n        }\n    })\n    \n    cfg, err := config.LoadDefaultConfig(ctx,\n        config.WithRegion(\"us-east-1\"),\n        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(\"dummy\", \"dummy\", \"dummy\")),\n    )\n    if err != nil {\n        t.Fatalf(\"Could not get config %v\", err)\n    }\n    resolver := localstack.NewDynamoDbResolverV2(i)\n    client := dynamodb.NewFromConfig(cfg, dynamodb.WithEndpointResolverV2(resolver))\n\t\n    myTestWithV2Client(client)\n}\n```\n\nWith SDK V2 (using EndpointResolverV1)\n```go\nfunc ExampleLocalstackSdkV2(t *testing.T) {\n    l, err := localstack.NewInstance()\n    if err != nil {\n        t.Fatalf(\"Could not connect to Docker %v\", err)\n    }\n    if err := l.Start(); err != nil {\n        t.Fatalf(\"Could not start localstack %v\", err)\n    }\n    t.Cleanup(func() {\n        if err := l.Stop(); err != nil {\n            t.Fatalf(\"Could not stop localstack %v\", err)\n        }\n\t})\n    \n    cfg, err := config.LoadDefaultConfig(ctx,\n        config.WithRegion(\"us-east-1\"),\n        config.WithEndpointResolverWithOptions(aws.EndpointResolverWithOptionsFunc(func(_, _ string, _ ...interface{}) (aws.Endpoint, error) {\n            return aws.Endpoint{\n\t\t\t    PartitionID:       \"aws\", \n\t\t\t    URL:               l.EndpointV2(localstack.SQS), \n\t\t\t    SigningRegion:     \"us-east-1\", \n\t\t\t    HostnameImmutable: true,\n\t\t    }, nil\n        })),\n        config.WithCredentialsProvider(credentials.NewStaticCredentialsProvider(\"dummy\", \"dummy\", \"dummy\")),\n    )\n    if err != nil {\n        t.Fatalf(\"Could not get config %v\", err)\n    }\n    \n    myTestWithV2(cfg)\n}\n```\n\nWith SDK V1\n```go\nfunc TestWithLocalStack(t *testing.T) {\n    l, err := localstack.NewInstance()\n    if err != nil {\n        t.Fatalf(\"Could not connect to Docker %v\", err)\n    }\n    if err := l.Start(); err != nil {\n        t.Fatalf(\"Could not start localstack %v\", err)\n    }\n    t.Cleanup(func() {\n        if err := l.Stop(); err != nil {\n            t.Fatalf(\"Could not stop localstack %v\", err)\n        }\n    })\n\n    myTestWith(\u0026aws.Config{\n        Credentials: credentials.NewStaticCredentials(\"not\", \"empty\", \"\"),\n        DisableSSL:  aws.Bool(true),\n        Region:      aws.String(endpoints.UsWest1RegionID),\n        Endpoint:    aws.String(l.Endpoint(localstack.SQS)),\n    })\n}\n```\n\n","funding_links":[],"categories":["Testing","测试","Client libraries","Mock","测试相关","Template Engines","测试相关`测试库和测试数据集生成库`"],"sub_categories":["HTTP Clients","Mock","HTTP客户端","查询语"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgohr%2Fgo-localstack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felgohr%2Fgo-localstack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felgohr%2Fgo-localstack/lists"}