goacm

package module
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2022 License: MIT Imports: 11 Imported by: 0

README

goacm

goacm is a simple package for using AWS Certificate Manager from applications implimented golang.

Features

  • List Certificates
  • Get a Certificate
  • Delete a Certificate
    • with Route 53 RecordSet that validates the domain (if validation method is DNS)
  • Issue an SSL Certificate
    • Create Certificate
    • Create Route 53 RecordSet for validating the domain (if validation method is DNS)

Example

Create goacm client

ctx := context.TODO()
g, err := goacm.NewGoACM(ctx, "ap-northeast-1")
if err != nil {
	fmt.Println(err.Error())
	return
}

List Certificats

ctx := context.TODO()
if certificates, err := goacm.ListCertificates(ctx, g.ACMClient); err != nil {
	fmt.Println(err.Error())
} else {
	fmt.Println("DomainName\tStatus\tARN")
	for _, c := range certificates {
		fmt.Printf("%s\t%s\t%s\n", c.DomainName, c.Status, c.Arn)
	}
}

Get a Certificate

arn := "arn:aws:acm:ap-northeast-1:000000000000:certificate/xxxxxxxx-1111-1111-1111-11111111xxxx"
ctx := context.TODO()
c, err := goacm.GetCertificate(ctx, g.ACMClient, arn)
if err != nil {
	fmt.Println(err.Error())
	return
}

fmt.Println("DomainName\tStatus\tARN")
fmt.Printf("%s\t%s\t%s\n", c.DomainName, c.Status, c.Arn)

Issue a SSL Certificate

Request an ACM Certificate and create a RecordSet in Route 53 to validate the domain.

method := "DNS"
targetDomain := "sample.exapmle.com"
hostedDomain := "example.com"
ctx := context.TODO()
res, err := goacm.IssueCertificate(ctx, g.ACMClient, g.Route53Client, method, targetDomain, hostedDomain)
if err != nil {
	fmt.Println(err.Error())
	return
}

fmt.Printf("ARN: %v", res.CertificateArn)

Delete a Certificate

Delete the Route 53 RecordSet that was created for ACM Certificate and Domain validation.

arn := "arn:aws:acm:ap-northeast-1:000000000000:certificate/xxxxxxxx-1111-1111-1111-11111111xxxx"
ctx := context.TODO()
if err := goacm.DeleteCertificate(ctx, g.ACMClient, g.Route53Client, arn); err != nil {
	fmt.Println(err.Error())
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteCertificate

func DeleteCertificate(ctx context.Context, aAPI ACMAPI, rAPI Route53API, arn string) error

DeleteCertificate returns an error if deleting the certificate fails.

func DeleteRoute53RecordSet added in v0.2.0

func DeleteRoute53RecordSet(ctx context.Context, aAPI ACMAPI, rAPI Route53API, rs RecordSet) error

DeleteRoute53RecordSet deletes a Route 53 record set.

func ListCertificateSummaries

func ListCertificateSummaries(ctx context.Context, api ACMListCertificatesAPI) ([]acmTypes.CertificateSummary, error)

ListCertificateSummaries returns a list of certificate summary.

func RollbackIssueCertificate

func RollbackIssueCertificate(ctx context.Context, aAPI ACMAPI, rAPI Route53API, arn string) error

RollbackIssueCertificate rollbacks to issue an SSL certificate.

Types

type ACMAPI

ACMAPI is an interface that defines ACM API.

type ACMDeleteCertificateAPI

type ACMDeleteCertificateAPI interface {
	DeleteCertificate(ctx context.Context, params *acm.DeleteCertificateInput, optFns ...func(*acm.Options)) (*acm.DeleteCertificateOutput, error)
}

ACMDeleteCertificateAPI is an interface that defines the set of ACM API operations required by the DeleteCertificate function.

type ACMDescribeCertificateAPI

type ACMDescribeCertificateAPI interface {
	DescribeCertificate(ctx context.Context, params *acm.DescribeCertificateInput, optFns ...func(*acm.Options)) (*acm.DescribeCertificateOutput, error)
}

ACMDescribeCertificateAPI is an interface that defines the set of ACM API operations required by the DescribeCertificate function.

type ACMListCertificatesAPI

type ACMListCertificatesAPI interface {
	ListCertificates(ctx context.Context, params *acm.ListCertificatesInput, optFns ...func(*acm.Options)) (*acm.ListCertificatesOutput, error)
}

ACMListCertificatesAPI is an interface that defines the set of ACM API operations required by the ListCertificates function.

type ACMRequestCertificateAPI

type ACMRequestCertificateAPI interface {
	RequestCertificate(ctx context.Context, params *acm.RequestCertificateInput, optFns ...func(*acm.Options)) (*acm.RequestCertificateOutput, error)
}

ACMRequestCertificateAPI is an interface that defines the set of ACM API operations required by the DeleteCertificate function.

type Certificate

type Certificate struct {
	Arn                 string
	Region              string
	DomainName          string
	Type                string
	Status              string
	FailureReason       string
	ValidationMethod    string
	ValidationRecordSet RecordSet
}

Certificate is a structure that represents a Certificate.

func GetCertificate

func GetCertificate(ctx context.Context, api ACMDescribeCertificateAPI, arn string) (Certificate, error)

GetCertificate returns the details of the certificate.

func ListCertificates

func ListCertificates(ctx context.Context, api ACMAPI) ([]Certificate, error)

ListCertificates returns list of certificate.

type GoACM

type GoACM struct {
	ACMClient     *acm.Client
	Route53Client *route53.Client
	Region        string
}

GoACM is a structure that wraps an ACM client.

func NewGoACM

func NewGoACM(ctx context.Context, region string) (*GoACM, error)

NewGoACM returns a new GoACM object.

type IssueCertificateResult added in v0.1.6

type IssueCertificateResult struct {
	CertificateArn        string
	DomainName            string
	HostedDomainName      string
	HosteZoneID           string
	ValidationMethod      string
	ValidationRecordName  string
	ValidationRecordValue string
}

IssueCertificateResult is a structure that represents a reault of IssueCertificate.

func IssueCertificate

func IssueCertificate(ctx context.Context, aAPI ACMAPI, rAPI Route53API, method, targetDomain, hostedDomain string) (IssueCertificateResult, error)

IssueCertificate issues an SSL certificate for the specified domain.

type MockACMAPI

type MockACMAPI struct {
	ListCertificatesAPI    MockACMListCertificatesAPI
	DescribeCertificateAPI MockACMDescribeCertificateAPI
	DeleteCertificateAPI   MockACMDeleteCertificateAPI
	RequestCertificateAPI  MockACMRequestCertificateAPI
}

MockACMAPI is a struct that represents an ACM client.

func NewMockACMAPI added in v0.3.2

func NewMockACMAPI(mockParams []MockACMParams) MockACMAPI

NewMockACMAPI return MockACMAPI.

func (MockACMAPI) DeleteCertificate

func (m MockACMAPI) DeleteCertificate(ctx context.Context, params *acm.DeleteCertificateInput, optFns ...func(*acm.Options)) (*acm.DeleteCertificateOutput, error)

DeleteCertificate returns a function that mock original of ACM DeleteCertificate.

func (MockACMAPI) DescribeCertificate

func (m MockACMAPI) DescribeCertificate(ctx context.Context, params *acm.DescribeCertificateInput, optFns ...func(*acm.Options)) (*acm.DescribeCertificateOutput, error)

DescribeCertificate returns a function that mock original of ACM DescribeCertificate.

func (MockACMAPI) ListCertificates

func (m MockACMAPI) ListCertificates(ctx context.Context, params *acm.ListCertificatesInput, optFns ...func(*acm.Options)) (*acm.ListCertificatesOutput, error)

ListCertificates returns a function that mock original of ACM ListCertificates.

func (MockACMAPI) RequestCertificate

func (m MockACMAPI) RequestCertificate(ctx context.Context, params *acm.RequestCertificateInput, optFns ...func(*acm.Options)) (*acm.RequestCertificateOutput, error)

RequestCertificate returns a function that mock original of ACM RequestCertificate.

type MockACMDeleteCertificateAPI

type MockACMDeleteCertificateAPI func(ctx context.Context, params *acm.DeleteCertificateInput, optFns ...func(*acm.Options)) (*acm.DeleteCertificateOutput, error)

MockACMDeleteCertificateAPI is a type that represents a function that mock ACM's DeleteCertificate.

func NewMockACMDeleteCertificateAPI added in v0.3.2

func NewMockACMDeleteCertificateAPI(mockParams []MockACMParams) MockACMDeleteCertificateAPI

NewMockACMDeleteCertificateAPI returns MockACMDeleteCertificateAPI

type MockACMDescribeCertificateAPI

type MockACMDescribeCertificateAPI func(ctx context.Context, params *acm.DescribeCertificateInput, optFns ...func(*acm.Options)) (*acm.DescribeCertificateOutput, error)

MockACMDescribeCertificateAPI is a type that represents a function that mock ACM's DescribeCertificate.

func NewMockACMDescribeCertificateAPI added in v0.3.2

func NewMockACMDescribeCertificateAPI(mockParams []MockACMParams) MockACMDescribeCertificateAPI

NewMockACMDescribeCertificateAPI returns MockACMDescribeCertificateAPI.

type MockACMListCertificatesAPI

type MockACMListCertificatesAPI func(ctx context.Context, params *acm.ListCertificatesInput, optFns ...func(*acm.Options)) (*acm.ListCertificatesOutput, error)

MockACMListCertificatesAPI is a type that represents a function that mock ACM's ListCertificates.

func NewMockACMListCertificatesAPI added in v0.3.2

func NewMockACMListCertificatesAPI(mockParams []MockACMParams) MockACMListCertificatesAPI

NewMockACMListCertificatesAPI returns MockACMDescribeCertificateAPI.

type MockACMParams added in v0.2.0

type MockACMParams struct {
	Certificate Certificate
}

MockACMParams is a structure with the elements needed to generate a mock.

type MockACMRequestCertificateAPI

type MockACMRequestCertificateAPI func(ctx context.Context, params *acm.RequestCertificateInput, optFns ...func(*acm.Options)) (*acm.RequestCertificateOutput, error)

MockACMRequestCertificateAPI is a type that represents a function that mock ACM's RequestCertificate.

func NewMockACMRequestCertificateAPI added in v0.3.2

func NewMockACMRequestCertificateAPI(mockParams []MockACMParams) MockACMRequestCertificateAPI

NewMockACMRequestCertificateAPI returns MockACMRequestCertificateAPI

type MockChangeResourceRecordSetsAPI added in v0.2.0

type MockChangeResourceRecordSetsAPI func(ctx context.Context, params *route53.ChangeResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ChangeResourceRecordSetsOutput, error)

MockChangeResourceRecordSetsAPI is a type that represents a function that mock Route 53's MockChangeResourceRecordSets.

func NewMockChangeResourceRecordSetsAPI added in v0.3.2

func NewMockChangeResourceRecordSetsAPI(mockParams []MockRoute53Params) MockChangeResourceRecordSetsAPI

NewMockChangeResourceRecordSetsAPI returns MockChangeResourceRecordSetsAPI.

type MockListHostedZonesAPI added in v0.2.0

type MockListHostedZonesAPI func(ctx context.Context, params *route53.ListHostedZonesInput, optFns ...func(*route53.Options)) (*route53.ListHostedZonesOutput, error)

MockListHostedZonesAPI is a type that represents a function that mock Route 53's MockListHostedZones.

func NewMockListHostedZonesAPI added in v0.3.2

func NewMockListHostedZonesAPI(mockParams []MockRoute53Params) MockListHostedZonesAPI

NewMockListHostedZonesAPI returns MockListHostedZonesAPI.

type MockListResourceRecordSetsAPI added in v0.2.8

type MockListResourceRecordSetsAPI func(ctx context.Context, params *route53.ListResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ListResourceRecordSetsOutput, error)

MockListResourceRecordSetsAPI is a type that represents a function that mock Route 53's MockListResourceRecordSets.

func NewMockListResourceRecordSetsAPI added in v0.3.2

func NewMockListResourceRecordSetsAPI(mockParams []MockRoute53Params) MockListResourceRecordSetsAPI

NewMockListResourceRecordSetsAPI returns MockListResourceRecordSetsAPI.

type MockRoute53API added in v0.2.0

type MockRoute53API struct {
	ListHostedZonesAPI          MockListHostedZonesAPI
	ListResourceRecordSetsAPI   MockListResourceRecordSetsAPI
	ChangeResourceRecordSetsAPI MockChangeResourceRecordSetsAPI
}

MockRoute53API is a struct that represents a Route 53 client.

func NewMockRoute53API added in v0.3.2

func NewMockRoute53API(mockParams []MockRoute53Params) MockRoute53API

NewMockRoute53API returns MockRoute53API.

func (MockRoute53API) ChangeResourceRecordSets added in v0.2.0

func (m MockRoute53API) ChangeResourceRecordSets(ctx context.Context, params *route53.ChangeResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ChangeResourceRecordSetsOutput, error)

ChangeResourceRecordSets returns a function that mock original of Route 53 ChangeResourceRecordSets.

func (MockRoute53API) ListHostedZones added in v0.2.0

func (m MockRoute53API) ListHostedZones(ctx context.Context, params *route53.ListHostedZonesInput, optFns ...func(*route53.Options)) (*route53.ListHostedZonesOutput, error)

ListHostedZones returns a function that mock original of Route 53 ListHostedZones.

func (MockRoute53API) ListResourceRecordSets added in v0.2.8

func (m MockRoute53API) ListResourceRecordSets(ctx context.Context, params *route53.ListResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ListResourceRecordSetsOutput, error)

ListResourceRecordSets returns a function that mock original of Route 53 ListResourceRecordSets.

type MockRoute53Params added in v0.2.0

type MockRoute53Params struct {
	RecordSet           RecordSet
	ChangeAction        types.ChangeAction
	IsPrivateHostedZone bool
}

MockRoute53Params is a structure with the elements needed to generate a mock.

type RecordSet added in v0.2.0

type RecordSet struct {
	HostedDomainName string
	Name             string
	Value            string
	Type             string
	TTL              int64
}

RecordSet is a structure that reopresents a record set for Route 53.

type Route53API

Route53API is an interface that defines Route53 API.

type Route53ChangeResourceRecordSetsAPI

type Route53ChangeResourceRecordSetsAPI interface {
	ChangeResourceRecordSets(ctx context.Context, params *route53.ChangeResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ChangeResourceRecordSetsOutput, error)
}

Route53ChangeResourceRecordSetsAPI is an interface that defines the set of Route 53 API operations required by the ChangeResourceRecordSets function.

type Route53ListHostedZonesAPI added in v0.1.1

type Route53ListHostedZonesAPI interface {
	ListHostedZones(ctx context.Context, params *route53.ListHostedZonesInput, optFns ...func(*route53.Options)) (*route53.ListHostedZonesOutput, error)
}

Route53ListHostedZonesAPI is an interface that defines the set of Route 53 API operations required by the ListHostedZone function.

type Route53ListResourceRecordSetsAPI added in v0.2.8

type Route53ListResourceRecordSetsAPI interface {
	ListResourceRecordSets(ctx context.Context, params *route53.ListResourceRecordSetsInput, optFns ...func(*route53.Options)) (*route53.ListResourceRecordSetsOutput, error)
}

Route53ListResourceRecordSetsAPI is an interface that defines the set of Route 53 API operations required by the ListResourceRecordSets function.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL