awsiotdevice

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Nov 14, 2024 License: MIT Imports: 16 Imported by: 0

README

go-aws-iot-device

GoDoc Go Report Card MIT License

Package awsiotdevice implements AWS IoT features.

Implemented features:

  • Provisioning

Requirements

Go 1.21 and beyond.

Install

go get -u github.com/crow-misia/go-aws-iot-device

Build

go build
Create certification and key
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile certificate.pem --public-key-outfile public.key --private-key-outfile private.key
endpoint
aws iot describe-endpoint --endpoint-type iot:Data-ATS

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTLSConfig added in v0.2.0

func NewTLSConfig(rootCA []byte, certificate tls.Certificate) (*tls.Config, error)

Types

type Client

type Client interface {
	Disconnect(ctx context.Context) error
	Done() <-chan struct{}
	AwaitConnection(ctx context.Context) error
	Authenticate(ctx context.Context, a *paho.Auth) (*paho.AuthResponse, error)
	Subscribe(ctx context.Context, s *paho.Subscribe) (*paho.Suback, error)
	Unsubscribe(ctx context.Context, u *paho.Unsubscribe) (*paho.Unsuback, error)
	Publish(ctx context.Context, p *paho.Publish) (*paho.PublishResponse, error)
	PublishWithReply(ctx context.Context, p *paho.Publish) (*paho.Publish, error)
	PublishViaQueue(ctx context.Context, p *autopaho.QueuePublish) error
	AddOnPublishReceived(f func(autopaho.PublishReceived) (bool, error)) func()
}

Client is AWS IoT Core Client.

func NewConnection added in v0.2.0

func NewConnection(ctx context.Context, config autopaho.ClientConfig) (Client, error)

NewConnection returns a new AWS IoT Core Client instance.

type CreateCertificateFromCsrRequest

type CreateCertificateFromCsrRequest struct {
	CertificateSigningRequest string `json:"certificateSigningRequest"`
}

type CreateCertificateFromCsrResponse

type CreateCertificateFromCsrResponse struct {
	CertificateId             string `json:"certificateId"`
	CertificatePem            string `json:"certificatePem"`
	CertificateOwnershipToken string `json:"certificateOwnershipToken"`
}

type CreateKeysAndCertificateResponse

type CreateKeysAndCertificateResponse struct {
	CertificateId             string `json:"certificateId"`
	CertificatePem            string `json:"certificatePem"`
	PrivateKey                string `json:"privateKey"`
	CertificateOwnershipToken string `json:"certificateOwnershipToken"`
}

type Provisioner

type Provisioner interface {
	Client
	Provisioning(ctx context.Context, templateName string, parameters map[string]interface{}) (*ProvisioningResponse, error)
	ProvisioningWithCsr(ctx context.Context, templateName string, parameters map[string]interface{}) (*ProvisioningResponse, error)
}

func CreateProvisioner

func CreateProvisioner(client Client, options ...ProvisionerOption) Provisioner

type ProvisionerOption

type ProvisionerOption func(provisioner *provisioner)

ProvisionerOption type

func WithCurve

func WithCurve(curve elliptic.Curve) ProvisionerOption

WithCurve is curve implements setter

func WithSignatureAlgorithm

func WithSignatureAlgorithm(signatureAlgorithm x509.SignatureAlgorithm) ProvisionerOption

WithSignatureAlgorithm is signature algorithm setter

type ProvisioningErrorResponse

type ProvisioningErrorResponse struct {
	StatusCode   int    `json:"statusCode"`
	ErrorCode    string `json:"errorCode"`
	ErrorMessage string `json:"errorMessage"`
}

type ProvisioningResponse

type ProvisioningResponse struct {
	DeviceConfiguration map[string]interface{}
	ThingName           string
	CertificateId       string
	Certificate         string
	PrivateKey          string
}

type RegisterThingRequest

type RegisterThingRequest struct {
	CertificateOwnershipToken string                 `json:"certificateOwnershipToken"`
	Parameters                map[string]interface{} `json:"parameters"`
}

type RegisterThingResponse

type RegisterThingResponse struct {
	DeviceConfiguration map[string]interface{} `json:"deviceConfiguration"`
	ThingName           string                 `json:"thingName"`
}

type SlogLogger added in v0.1.1

type SlogLogger struct {
	// contains filtered or unexported fields
}

func NewSlogLogger added in v0.1.1

func NewSlogLogger(ctx context.Context, logger *slog.Logger, level slog.Level) *SlogLogger

func (SlogLogger) Printf added in v0.1.1

func (s SlogLogger) Printf(format string, v ...interface{})

func (SlogLogger) Println added in v0.1.1

func (s SlogLogger) Println(v ...interface{})

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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