github.com/in4it/ecs-deploy@v0.0.42-0.20240508120354-ed77ff16df25/provider/ecs/sns.go (about)

     1  package ecs
     2  
     3  // SNS payload
     4  type SNSPayload struct {
     5  	Message          string `json:"Message"`
     6  	MessageId        string `json:"MessageId"`
     7  	Signature        string `json:"Signature"`
     8  	SignatureVersion string `json:"SignatureVersion"`
     9  	SigningCertURL   string `json:"SigningCertURL"`
    10  	SubscribeURL     string `json:"SubscribeURL"`
    11  	Subject          string `json:"Subject"`
    12  	Timestamp        string `json:"Timestamp"`
    13  	Token            string `json:"Token"`
    14  	TopicArn         string `json:"TopicArn"`
    15  	Type             string `json:"Type" binding:"required"`
    16  	UnsubscribeURL   string `json:"UnsubscribeURL"`
    17  }
    18  
    19  // generic payload (to check detail type)
    20  type SNSPayloadGeneric struct {
    21  	Version    string `json:"version"`
    22  	Id         string `json:"id"`
    23  	DetailType string `json:"detail-type" binding:"required"`
    24  }
    25  
    26  // ECS SNS Event
    27  type SNSPayloadEcs struct {
    28  	Version    string              `json:"version"`
    29  	Id         string              `json:"id"`
    30  	DetailType string              `json:"detail-type" binding:"required"`
    31  	Source     string              `json:"source"`
    32  	Account    string              `json:"account"`
    33  	Time       string              `json:"time"`
    34  	Region     string              `json:"region"`
    35  	Resources  []string            `json:"resources"`
    36  	Detail     SNSPayloadEcsDetail `json:"detail"`
    37  }
    38  type SNSPayloadEcsDetail struct {
    39  	ClusterArn           string                          `json:"clusterArn"`
    40  	ContainerInstanceArn string                          `json:"containerInstanceArn"`
    41  	Ec2InstanceId        string                          `json:"ec2InstanceId"`
    42  	RegisteredResources  []ContainerInstanceResource     `json:"registeredResources"`
    43  	RemainingResources   []ContainerInstanceResource     `json:"remainingResources"`
    44  	Status               string                          `json:"status"`
    45  	Version              int64                           `json:"version"`
    46  	VersionInfo          EcsVersionInfo                  `json:"versionInfo"`
    47  	UpdatedAt            string                          `json:"updatedAt"`
    48  	RegisteredAt         string                          `json:"registeredAt"`
    49  	Attributes           []SNSPayloadEcsDetailAttributes `json:"attributes"`
    50  }
    51  type SNSPayloadEcsDetailAttributes struct {
    52  	Name  string `json:"name"`
    53  	Value string `json:"value"`
    54  }
    55  
    56  // lifecycle event
    57  type SNSPayloadLifecycle struct {
    58  	Version    string                    `json:"version"`
    59  	Id         string                    `json:"id"`
    60  	DetailType string                    `json:"detail-type" binding:"required"`
    61  	Source     string                    `json:"source"`
    62  	Account    string                    `json:"account"`
    63  	Time       string                    `json:"time"`
    64  	Region     string                    `json:"region"`
    65  	Resources  []string                  `json:"resources"`
    66  	Detail     SNSPayloadLifecycleDetail `json:"detail"`
    67  }
    68  type SNSPayloadLifecycleDetail struct {
    69  	LifecycleActionToken string `json:"LifecycleActionToken"`
    70  	AutoScalingGroupName string `json:"AutoScalingGroupName"`
    71  	LifecycleHookName    string `json:"LifecycleHookName"`
    72  	EC2InstanceId        string `json:"EC2InstanceId"`
    73  	LifecycleTransition  string `json:"LifecycleTransition"`
    74  }