alicloud/resource_alicloud_log_store.go (717 lines of code) (raw):
// Package alicloud. This file is generated automatically. Please do not modify it manually, thank you!
package alicloud
import (
"fmt"
"log"
"strings"
"time"
"github.com/PaesslerAG/jsonpath"
"github.com/alibabacloud-go/tea/tea"
sls "github.com/aliyun/aliyun-log-go-sdk"
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
)
func resourceAliCloudSlsLogStore() *schema.Resource {
return &schema.Resource{
Create: resourceAliCloudSlsLogStoreCreate,
Read: resourceAliCloudSlsLogStoreRead,
Update: resourceAliCloudSlsLogStoreUpdate,
Delete: resourceAliCloudSlsLogStoreDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Timeouts: &schema.ResourceTimeout{
Create: schema.DefaultTimeout(5 * time.Minute),
Update: schema.DefaultTimeout(5 * time.Minute),
Delete: schema.DefaultTimeout(5 * time.Minute),
},
Schema: map[string]*schema.Schema{
"append_meta": {
Type: schema.TypeBool,
Optional: true,
Default: true,
},
"auto_split": {
Type: schema.TypeBool,
Optional: true,
},
"create_time": {
Type: schema.TypeInt,
Computed: true,
},
"enable_web_tracking": {
Type: schema.TypeBool,
Optional: true,
},
"encrypt_conf": {
Type: schema.TypeList,
Optional: true,
Computed: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"encrypt_type": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"enable": {
Type: schema.TypeBool,
Optional: true,
Computed: true,
},
"user_cmk_info": {
Type: schema.TypeList,
Optional: true,
Computed: true,
ForceNew: true,
MaxItems: 1,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cmk_key_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"region_id": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
"arn": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
},
},
},
},
},
},
},
"hot_ttl": {
Type: schema.TypeInt,
Optional: true,
},
"infrequent_access_ttl": {
Type: schema.TypeInt,
Optional: true,
},
"logstore_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ExactlyOneOf: []string{"logstore_name", "name"},
ForceNew: true,
},
"max_split_shard_count": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: IntBetween(0, 256),
},
"metering_mode": {
Type: schema.TypeString,
Optional: true,
Computed: true,
},
"mode": {
Type: schema.TypeString,
Optional: true,
Computed: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
if new == "" {
return true
}
return old != "" && new != "" && old == new
},
},
"project_name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
ExactlyOneOf: []string{"project_name", "project"},
ForceNew: true,
},
"retention_period": {
Type: schema.TypeInt,
Optional: true,
Default: 30,
},
"shard_count": {
Type: schema.TypeInt,
Optional: true,
ForceNew: true,
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
if old == "" {
return false
}
return true
},
Default: 2,
},
"telemetry_type": {
Type: schema.TypeString,
Optional: true,
ForceNew: true,
},
"project": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Deprecated: "Field 'project' has been deprecated since provider version 1.215.0. New field 'project_name' instead.",
ForceNew: true,
},
"name": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Deprecated: "Field 'name' has been deprecated since provider version 1.215.0. New field 'logstore_name' instead.",
ForceNew: true,
},
"shards": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
},
"status": {
Type: schema.TypeString,
Computed: true,
},
"begin_key": {
Type: schema.TypeString,
Computed: true,
},
"end_key": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
},
}
}
func resourceAliCloudSlsLogStoreCreate(d *schema.ResourceData, meta interface{}) error {
if v, ok := d.GetOk("telemetry_type"); ok && v == "Metrics" {
client := meta.(*connectivity.AliyunClient)
projectName := d.Get("project_name").(string)
if v, ok := d.GetOkExists("project"); ok {
projectName = v.(string)
}
logstoreName := d.Get("logstore_name").(string)
if v, ok := d.GetOkExists("name"); ok {
logstoreName = v.(string)
}
logstore := buildLogStore(d)
var requestinfo *sls.Client
err := resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
raw, err := client.WithLogClient(func(slsClient *sls.Client) (interface{}, error) {
return nil, slsClient.CreateMetricStore(projectName, logstore)
})
if err != nil {
if IsExpectedErrors(err, []string{"InternalServerError", LogClientTimeout}) {
time.Sleep(10 * time.Second)
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug("CreateMetricStore", raw, requestinfo, map[string]interface{}{
"project": projectName,
"logstore": logstore,
})
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alicloud_log_store", "CreateLogStoreV2", AliyunLogGoSdkERROR)
}
d.SetId(fmt.Sprintf("%s%s%s", projectName, COLON_SEPARATED, logstoreName))
return resourceAliCloudSlsLogStoreUpdate(d, meta)
}
client := meta.(*connectivity.AliyunClient)
action := fmt.Sprintf("/logstores")
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]*string)
body := make(map[string]interface{})
hostMap := make(map[string]*string)
var err error
request = make(map[string]interface{})
request["logstoreName"] = d.Get("logstore_name")
hostMap["project"] = StringPointer(d.Get("project_name").(string))
if v, ok := d.GetOkExists("project"); ok {
hostMap["project"] = tea.String(v.(string))
}
if v, ok := d.GetOkExists("name"); ok {
request["logstoreName"] = v
}
request["shardCount"] = 2
if v, ok := d.GetOkExists("shard_count"); ok {
request["shardCount"] = v
}
if v, ok := d.GetOk("auto_split"); ok {
request["autoSplit"] = v
}
if v, ok := d.GetOk("append_meta"); ok {
request["appendMeta"] = v
}
if v, ok := d.GetOk("telemetry_type"); ok {
request["telemetryType"] = v
}
if v, ok := d.GetOk("hot_ttl"); ok {
request["hot_ttl"] = v
}
if v, ok := d.GetOk("mode"); ok {
request["mode"] = v
}
objectDataLocalMap := make(map[string]interface{})
if v := d.Get("encrypt_conf"); !IsNil(v) {
enable1, _ := jsonpath.Get("$[0].enable", d.Get("encrypt_conf"))
if enable1 != nil && enable1 != "" {
objectDataLocalMap["enable"] = enable1
}
encryptType, _ := jsonpath.Get("$[0].encrypt_type", d.Get("encrypt_conf"))
if encryptType != nil && encryptType != "" {
objectDataLocalMap["encrypt_type"] = encryptType
}
user_cmk_info := make(map[string]interface{})
cmkKeyId, _ := jsonpath.Get("$[0].user_cmk_info[0].cmk_key_id", d.Get("encrypt_conf"))
if cmkKeyId != nil && cmkKeyId != "" {
user_cmk_info["cmk_key_id"] = cmkKeyId
}
arn1, _ := jsonpath.Get("$[0].user_cmk_info[0].arn", d.Get("encrypt_conf"))
if arn1 != nil && arn1 != "" {
user_cmk_info["arn"] = arn1
}
regionId, _ := jsonpath.Get("$[0].user_cmk_info[0].region_id", d.Get("encrypt_conf"))
if regionId != nil && regionId != "" {
user_cmk_info["region_id"] = regionId
}
user_cmk_info_map, _ := jsonpath.Get("$[0].user_cmk_info[0]", v)
if !IsNil(user_cmk_info_map) {
objectDataLocalMap["user_cmk_info"] = user_cmk_info
}
request["encrypt_conf"] = objectDataLocalMap
}
request["ttl"] = 30
if v, ok := d.GetOk("retention_period"); ok {
request["ttl"] = v
}
if v, ok := d.GetOk("max_split_shard_count"); ok {
request["maxSplitShard"] = v
}
if v, ok := d.GetOk("enable_web_tracking"); ok {
request["enable_tracking"] = v
}
if v, ok := d.GetOk("infrequent_access_ttl"); ok {
request["infrequentAccessTTL"] = v
}
body = request
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
response, err = client.Do("Sls", roaParam("POST", "2020-12-30", "CreateLogStore", action), query, body, nil, hostMap, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alicloud_log_store", action, AlibabaCloudSdkGoERROR)
}
d.SetId(fmt.Sprintf("%v:%v", *hostMap["project"], request["logstoreName"]))
return resourceAliCloudSlsLogStoreUpdate(d, meta)
}
func resourceAliCloudSlsLogStoreRead(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
slsServiceV2 := SlsServiceV2{client}
objectRaw, err := slsServiceV2.DescribeSlsLogStore(d.Id())
if err != nil {
if !d.IsNewResource() && NotFoundError(err) {
log.Printf("[DEBUG] Resource alicloud_log_store DescribeSlsLogStore Failed!!! %s", err)
d.SetId("")
return nil
}
return WrapError(err)
}
if objectRaw["appendMeta"] != nil {
d.Set("append_meta", objectRaw["appendMeta"])
}
if objectRaw["autoSplit"] != nil {
d.Set("auto_split", objectRaw["autoSplit"])
}
if objectRaw["createTime"] != nil {
d.Set("create_time", objectRaw["createTime"])
}
if objectRaw["enable_tracking"] != nil {
d.Set("enable_web_tracking", objectRaw["enable_tracking"])
}
if objectRaw["hot_ttl"] != nil {
d.Set("hot_ttl", objectRaw["hot_ttl"])
}
if objectRaw["infrequentAccessTTL"] != nil {
d.Set("infrequent_access_ttl", objectRaw["infrequentAccessTTL"])
}
if objectRaw["maxSplitShard"] != nil {
d.Set("max_split_shard_count", objectRaw["maxSplitShard"])
}
if objectRaw["mode"] != nil {
d.Set("mode", objectRaw["mode"])
}
if objectRaw["ttl"] != nil {
d.Set("retention_period", objectRaw["ttl"])
}
if objectRaw["shardCount"] != nil {
d.Set("shard_count", objectRaw["shardCount"])
}
if objectRaw["telemetryType"] != nil {
d.Set("telemetry_type", objectRaw["telemetryType"])
}
if objectRaw["logstoreName"] != nil {
d.Set("logstore_name", objectRaw["logstoreName"])
}
encryptConfMaps := make([]map[string]interface{}, 0)
encryptConfMap := make(map[string]interface{})
encrypt_conf1Raw := make(map[string]interface{})
if objectRaw["encrypt_conf"] != nil {
encrypt_conf1Raw = objectRaw["encrypt_conf"].(map[string]interface{})
}
if len(encrypt_conf1Raw) > 0 {
encryptConfMap["enable"] = encrypt_conf1Raw["enable"]
encryptConfMap["encrypt_type"] = encrypt_conf1Raw["encrypt_type"]
userCmkInfoMaps := make([]map[string]interface{}, 0)
userCmkInfoMap := make(map[string]interface{})
user_cmk_info1Raw := make(map[string]interface{})
if encrypt_conf1Raw["user_cmk_info"] != nil {
user_cmk_info1Raw = encrypt_conf1Raw["user_cmk_info"].(map[string]interface{})
}
if len(user_cmk_info1Raw) > 0 {
userCmkInfoMap["arn"] = user_cmk_info1Raw["arn"]
userCmkInfoMap["cmk_key_id"] = user_cmk_info1Raw["cmk_key_id"]
userCmkInfoMap["region_id"] = user_cmk_info1Raw["region_id"]
userCmkInfoMaps = append(userCmkInfoMaps, userCmkInfoMap)
}
encryptConfMap["user_cmk_info"] = userCmkInfoMaps
encryptConfMaps = append(encryptConfMaps, encryptConfMap)
}
if objectRaw["encrypt_conf"] != nil {
if err := d.Set("encrypt_conf", encryptConfMaps); err != nil {
return err
}
}
objectRaw, err = slsServiceV2.DescribeGetLogStoreMeteringMode(d.Id())
if err != nil {
return WrapError(err)
}
if objectRaw["meteringMode"] != nil {
d.Set("metering_mode", objectRaw["meteringMode"])
}
parts := strings.Split(d.Id(), ":")
d.Set("project_name", parts[0])
d.Set("logstore_name", parts[1])
d.Set("project", d.Get("project_name"))
d.Set("name", d.Get("logstore_name"))
logService := LogService{client}
object, err := logService.DescribeLogStore(d.Id())
if err != nil {
if NotFoundError(err) {
d.SetId("")
return nil
}
return err
}
var shards []*sls.Shard
err = resource.Retry(d.Timeout(schema.TimeoutRead), func() *resource.RetryError {
shards, err = object.ListShards()
if err != nil {
if IsExpectedErrors(err, []string{"InternalServerError"}) {
time.Sleep(10 * time.Second)
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug("ListShards", shards)
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alicloud_log_store", "ListShards", AliyunLogGoSdkERROR)
}
var shardList []map[string]interface{}
for _, s := range shards {
mapping := map[string]interface{}{
"id": s.ShardID,
"status": s.Status,
"begin_key": s.InclusiveBeginKey,
"end_key": s.ExclusiveBeginKey,
}
shardList = append(shardList, mapping)
}
d.Set("shards", shardList)
return nil
}
func resourceAliCloudSlsLogStoreUpdate(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
var request map[string]interface{}
var response map[string]interface{}
var query map[string]*string
var body map[string]interface{}
update := false
d.Partial(true)
parts := strings.Split(d.Id(), ":")
logstore := parts[1]
action := fmt.Sprintf("/logstores/%s", logstore)
var err error
request = make(map[string]interface{})
query = make(map[string]*string)
body = make(map[string]interface{})
hostMap := make(map[string]*string)
hostMap["project"] = StringPointer(parts[0])
if !d.IsNewResource() && d.HasChange("auto_split") {
update = true
}
if v, ok := d.GetOk("auto_split"); ok || d.HasChange("auto_split") {
request["autoSplit"] = v
}
if !d.IsNewResource() && d.HasChange("append_meta") {
update = true
}
if v, ok := d.GetOk("append_meta"); ok || d.HasChange("append_meta") {
request["appendMeta"] = v
}
if !d.IsNewResource() && d.HasChange("hot_ttl") {
update = true
}
if v, ok := d.GetOk("hot_ttl"); ok || d.HasChange("hot_ttl") {
request["hot_ttl"] = v
}
if !d.IsNewResource() && d.HasChange("mode") {
update = true
}
if v, ok := d.GetOk("mode"); ok || d.HasChange("mode") {
request["mode"] = v
}
if !d.IsNewResource() && d.HasChange("retention_period") {
update = true
}
request["ttl"] = 30
if v, ok := d.GetOk("retention_period"); ok {
request["ttl"] = v
}
if !d.IsNewResource() && d.HasChange("max_split_shard_count") {
update = true
}
if v, ok := d.GetOk("max_split_shard_count"); ok || d.HasChange("max_split_shard_count") {
request["maxSplitShard"] = v
}
if !d.IsNewResource() && d.HasChange("enable_web_tracking") {
update = true
}
if v, ok := d.GetOk("enable_web_tracking"); ok || d.HasChange("enable_web_tracking") {
request["enable_tracking"] = v
}
if !d.IsNewResource() && d.HasChange("encrypt_conf") {
update = true
}
objectDataLocalMap := make(map[string]interface{})
if v := d.Get("encrypt_conf"); !IsNil(v) || d.HasChange("encrypt_conf") {
enable1, _ := jsonpath.Get("$[0].enable", v)
if enable1 != nil && (d.HasChange("encrypt_conf.0.enable") || enable1 != "") {
objectDataLocalMap["enable"] = enable1
}
encryptType, _ := jsonpath.Get("$[0].encrypt_type", v)
if encryptType != nil && (d.HasChange("encrypt_conf.0.encrypt_type") || encryptType != "") {
objectDataLocalMap["encrypt_type"] = encryptType
}
user_cmk_info := make(map[string]interface{})
cmkKeyId, _ := jsonpath.Get("$[0].user_cmk_info[0].cmk_key_id", v)
if cmkKeyId != nil && (d.HasChange("encrypt_conf.0.user_cmk_info.0.cmk_key_id") || cmkKeyId != "") {
user_cmk_info["cmk_key_id"] = cmkKeyId
}
arn1, _ := jsonpath.Get("$[0].user_cmk_info[0].arn", v)
if arn1 != nil && (d.HasChange("encrypt_conf.0.user_cmk_info.0.arn") || arn1 != "") {
user_cmk_info["arn"] = arn1
}
regionId, _ := jsonpath.Get("$[0].user_cmk_info[0].region_id", v)
if regionId != nil && (d.HasChange("encrypt_conf.0.user_cmk_info.0.region_id") || regionId != "") {
user_cmk_info["region_id"] = regionId
}
user_cmk_info_map, _ := jsonpath.Get("$[0].user_cmk_info[0]", v)
if !IsNil(user_cmk_info_map) {
objectDataLocalMap["user_cmk_info"] = user_cmk_info
}
request["encrypt_conf"] = objectDataLocalMap
}
if !d.IsNewResource() && d.HasChange("infrequent_access_ttl") {
update = true
}
if v, ok := d.GetOk("infrequent_access_ttl"); ok || d.HasChange("infrequent_access_ttl") {
request["infrequentAccessTTL"] = v
}
if v, ok := d.GetOk("telemetry_type"); ok && v == "Metrics" {
projectName := d.Get("project_name").(string)
if v, ok := d.GetOkExists("project"); ok {
projectName = v.(string)
}
logstore := buildLogStore(d)
var requestinfo *sls.Client
err = resource.Retry(d.Timeout(schema.TimeoutCreate), func() *resource.RetryError {
raw, err := client.WithLogClient(func(slsClient *sls.Client) (interface{}, error) {
return nil, slsClient.UpdateMetricStore(projectName, logstore)
})
if err != nil {
if IsExpectedErrors(err, []string{"InternalServerError", LogClientTimeout}) {
time.Sleep(10 * time.Second)
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug("UpdateMetricStore", raw, requestinfo, map[string]interface{}{
"project": projectName,
"logstore": logstore,
})
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, "alicloud_log_store", "CreateLogStoreV2", AliyunLogGoSdkERROR)
}
update = false
}
body = request
if update {
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = client.Do("Sls", roaParam("PUT", "2020-12-30", "UpdateLogStore", action), query, body, nil, hostMap, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
}
update = false
parts = strings.Split(d.Id(), ":")
logstore = parts[1]
action = fmt.Sprintf("/logstores/%s/meteringmode", logstore)
request = make(map[string]interface{})
query = make(map[string]*string)
body = make(map[string]interface{})
hostMap = make(map[string]*string)
hostMap["project"] = StringPointer(parts[0])
slsServiceV2 := SlsServiceV2{client}
objectRaw, _ := slsServiceV2.DescribeGetLogStoreMeteringMode(d.Id())
if d.HasChange("metering_mode") && objectRaw["meteringMode"] != d.Get("metering_mode") {
update = true
}
request["meteringMode"] = d.Get("metering_mode")
body = request
if update {
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutUpdate), func() *resource.RetryError {
response, err = client.Do("Sls", roaParam("PUT", "2020-12-30", "UpdateLogStoreMeteringMode", action), query, body, nil, hostMap, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
}
d.Partial(false)
return resourceAliCloudSlsLogStoreRead(d, meta)
}
func resourceAliCloudSlsLogStoreDelete(d *schema.ResourceData, meta interface{}) error {
client := meta.(*connectivity.AliyunClient)
parts := strings.Split(d.Id(), ":")
logstore := parts[1]
action := fmt.Sprintf("/logstores/%s", logstore)
var request map[string]interface{}
var response map[string]interface{}
query := make(map[string]*string)
hostMap := make(map[string]*string)
var err error
request = make(map[string]interface{})
hostMap["project"] = StringPointer(parts[0])
wait := incrementalWait(3*time.Second, 5*time.Second)
err = resource.Retry(d.Timeout(schema.TimeoutDelete), func() *resource.RetryError {
response, err = client.Do("Sls", roaParam("DELETE", "2020-12-30", "DeleteLogStore", action), query, nil, nil, hostMap, false)
if err != nil {
if NeedRetry(err) {
wait()
return resource.RetryableError(err)
}
return resource.NonRetryableError(err)
}
addDebug(action, response, request)
return nil
})
if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
return nil
}
func buildLogStore(d *schema.ResourceData) *sls.LogStore {
logstore := &sls.LogStore{
Name: d.Get("logstore_name").(string),
TTL: d.Get("retention_period").(int),
ShardCount: d.Get("shard_count").(int),
WebTracking: d.Get("enable_web_tracking").(bool),
AutoSplit: d.Get("auto_split").(bool),
MaxSplitShard: d.Get("max_split_shard_count").(int),
AppendMeta: d.Get("append_meta").(bool),
TelemetryType: d.Get("telemetry_type").(string),
Mode: d.Get("mode").(string),
}
if v, ok := d.GetOkExists("name"); ok {
logstore.Name = v.(string)
}
if hotTTL, ok := d.GetOk("hot_ttl"); ok {
logstore.HotTTL = int32(hotTTL.(int))
}
if encrypt := buildEncrypt(d); encrypt != nil {
logstore.EncryptConf = encrypt
}
return logstore
}
func buildEncrypt(d *schema.ResourceData) *sls.EncryptConf {
var encryptConf *sls.EncryptConf
if field, ok := d.GetOk("encrypt_conf"); ok {
encryptConf = new(sls.EncryptConf)
value := field.([]interface{})[0].(map[string]interface{})
encryptConf.Enable = value["enable"].(bool)
encryptConf.EncryptType = value["encrypt_type"].(string)
cmkInfo := value["user_cmk_info"].([]interface{})
if len(cmkInfo) > 0 {
cmk := cmkInfo[0].(map[string]interface{})
encryptConf.UserCmkInfo = &sls.EncryptUserCmkConf{
CmkKeyId: cmk["cmk_key_id"].(string),
Arn: cmk["arn"].(string),
RegionId: cmk["region_id"].(string),
}
}
}
return encryptConf
}