我是新手,必须使用aws go sdk从SQS读取AWS Config通知。 (AWS配置服务-> sns-> sqs) 我能够收到消息。但是我想进入消息获取诸如resourceType,resourceId,awsRegion之类的信息。 这是我的示例消息字符串(字符串化的json)。 https://gist.github.com/HarishAtGitHub/fcbb01515d11044d04bde14a3d9f6e7a
我来自python背景,在python中很容易做到,因为json就像字典一样。我们可以通过嵌套索引轻松获得它。 但是在执行过程中,似乎应该使用正确的结构来理解此消息。
有人可以将我指向正确的结构,或者是关于如何在消息中获取不同属性的任何想法吗?
答案 0 :(得分:2)
我总是使用this工具从JSON Blob生成结构定义。您唯一需要做的就是为null
值选择一个类型:它显然无法确定这些值,因此将它们设置为interface{}
(任何类型都可以实现)。
如果只想解组而不是反过来,可以省略struct标记(例如json:"changeType"
)。
type ConfigNotification struct {
ConfigurationItemDiff struct {
ChangedProperties struct {
} `json:"changedProperties"`
ChangeType string `json:"changeType"`
} `json:"configurationItemDiff"`
ConfigurationItem struct {
RelatedEvents []interface{} `json:"relatedEvents"`
Relationships []interface{} `json:"relationships"`
Configuration struct {
Attachments []interface{} `json:"attachments"`
AvailabilityZone string `json:"availabilityZone"`
CreateTime time.Time `json:"createTime"`
Encrypted bool `json:"encrypted"`
KmsKeyID interface{} `json:"kmsKeyId"`
Size int `json:"size"`
SnapshotID string `json:"snapshotId"`
State string `json:"state"`
VolumeID string `json:"volumeId"`
Iops int `json:"iops"`
Tags []struct {
Key string `json:"key"`
Value string `json:"value"`
} `json:"tags"`
VolumeType string `json:"volumeType"`
} `json:"configuration"`
SupplementaryConfiguration struct {
} `json:"supplementaryConfiguration"`
Tags struct {
Creator string `json:"creator"`
} `json:"tags"`
ConfigurationItemVersion string `json:"configurationItemVersion"`
ConfigurationItemCaptureTime time.Time `json:"configurationItemCaptureTime"`
ConfigurationStateID int64 `json:"configurationStateId"`
AwsAccountID string `json:"awsAccountId"`
ConfigurationItemStatus string `json:"configurationItemStatus"`
ResourceType string `json:"resourceType"`
ResourceID string `json:"resourceId"`
ResourceName interface{} `json:"resourceName"`
ARN string `json:"ARN"`
AwsRegion string `json:"awsRegion"`
AvailabilityZone string `json:"availabilityZone"`
ConfigurationStateMd5Hash string `json:"configurationStateMd5Hash"`
ResourceCreationTime time.Time `json:"resourceCreationTime"`
} `json:"configurationItem"`
NotificationCreationTime time.Time `json:"notificationCreationTime"`
MessageType string `json:"messageType"`
RecordVersion string `json:"recordVersion"`
}