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 }