goacm

package module
v0.2.5 Latest Latest
Warning

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

Go to latest
Published: Mar 5, 2021 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

package main

import (
	"fmt"

	"github.com/michimani/goacm"
)

func main() {
	gacm, err := goacm.NewGoACM("ap-northeast-1")
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	// List certificates and print each ARN.
	fmt.Println("List certificates and print each ARN.")
	listCertificate(gacm)

	// Issue an SSL certificate.
	fmt.Println("Issue an SSL certificate.")
	issueCertificate(gacm)
}

func listCertificate(g *goacm.GoACM) {
	if certificates, err := goacm.ListCertificates(g.ACMClient); err != nil {
		fmt.Println(err.Error())
	} else {
		for _, c := range certificates {
			fmt.Println(c.Arn)
		}
	}
}

func issueCertificate(g *goacm.GoACM) {
	targetDomain := "goacm.example.com"
	hostedDomain := "example.com"
	var validationMethod goacm.ValidationMethod = "DNS"
	if res, err := goacm.IssueCertificate(g.ACMClient, g.Route53Client, validationMethod, targetDomain, hostedDomain); err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Printf("%v", res)
	}
}
$ go run main.go

List certificates and print each ARN.
arn:aws:acm:ap-northeast-1:000000000000:certificate/00000000-xxxx-xxxx-0000-xxxxxxxxxxxx
arn:aws:acm:ap-northeast-1:000000000000:certificate/00000001-xxxx-xxxx-0000-xxxxxxxxxxxx
arn:aws:acm:ap-northeast-1:000000000000:certificate/00000002-xxxx-xxxx-0000-xxxxxxxxxxxx
arn:aws:acm:ap-northeast-1:000000000000:certificate/00000003-xxxx-xxxx-0000-xxxxxxxxxxxx
arn:aws:acm:ap-northeast-1:000000000000:certificate/00000004-xxxx-xxxx-0000-xxxxxxxxxxxx
Issue an SSL certificate.
{arn:aws:acm:ap-northeast-1:000000000000:certificate/00000005-xxxx-xxxx-0000-xxxxxxxxxxxx goacm.example.com example.com /hostedzone/Z3XXXXXXXXXXXX DNS _32xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.goacm.example.com. _80xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxx.acm-validations.aws.}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeleteCertificate

func DeleteCertificate(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(aAPI ACMAPI, rAPI Route53API, rs RecordSet) error

DeleteRoute53RecordSet deletes a Route 53 record set.

func ListCertificateSummaries

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

ListCertificateSummaries returns a list of certificate summary.

func RollbackIssueCertificate

func RollbackIssueCertificate(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(api ACMDescribeCertificateAPI, arn string) (Certificate, error)

GetCertificate returns the details of the certificate.

func ListCertificates

func ListCertificates(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(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(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 GenerateMockACMAPI

func GenerateMockACMAPI(mockParams []MockACMParams) MockACMAPI

GenerateMockACMAPI 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 GenerateMockACMDeleteCertificateAPI

func GenerateMockACMDeleteCertificateAPI(mockParams []MockACMParams) MockACMDeleteCertificateAPI

GenerateMockACMDeleteCertificateAPI 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 GenerateMockACMDescribeCertificateAPI

func GenerateMockACMDescribeCertificateAPI(mockParams []MockACMParams) MockACMDescribeCertificateAPI

GenerateMockACMDescribeCertificateAPI 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 GenerateMockACMListCertificatesAPI

func GenerateMockACMListCertificatesAPI(mockParams []MockACMParams) MockACMListCertificatesAPI

GenerateMockACMListCertificatesAPI returns MockACMDescribeCertificateAPI.

type MockACMParams added in v0.2.0

type MockACMParams struct {
	Arn             string
	DomainName      string
	Status          string
	CertificateType string
	FailureReason   string
	Count           int
}

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 GenerateMockACMRequestCertificateAPI

func GenerateMockACMRequestCertificateAPI(mockParams []MockACMParams) MockACMRequestCertificateAPI

GenerateMockACMRequestCertificateAPI 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 GenerateMockChangeResourceRecordSetsAPI added in v0.2.0

func GenerateMockChangeResourceRecordSetsAPI(mockParams []MockRoute53Params) MockChangeResourceRecordSetsAPI

GenerateMockChangeResourceRecordSetsAPI 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 GenerateMockListHostedZonesAPI added in v0.2.0

func GenerateMockListHostedZonesAPI(mockParams []MockRoute53Params) MockListHostedZonesAPI

GenerateMockListHostedZonesAPI returns MockListHostedZonesAPI.

type MockRoute53API added in v0.2.0

type MockRoute53API struct {
	ListHostedZonesAPI          MockListHostedZonesAPI
	ChangeResourceRecordSetsAPI MockChangeResourceRecordSetsAPI
}

MockRoute53API is a struct that represents a Route 53 client.

func GenerateMockRoute53API added in v0.2.0

func GenerateMockRoute53API(mockParams []MockRoute53Params) MockRoute53API

GenerateMockRoute53API 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.

type MockRoute53Params added in v0.2.0

type MockRoute53Params struct {
	HostedDomainName string
	RecordSet        RecordSet
}

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
}

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.

Jump to

Keyboard shortcuts

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