github.com/koding/terraform@v0.6.4-0.20170608090606-5d7e0339779d/builtin/providers/aws/data_source_aws_ssm_parameter.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/aws/aws-sdk-go/aws" 8 "github.com/aws/aws-sdk-go/service/ssm" 9 "github.com/hashicorp/errwrap" 10 "github.com/hashicorp/terraform/helper/schema" 11 ) 12 13 func dataSourceAwsSsmParameter() *schema.Resource { 14 return &schema.Resource{ 15 Read: dataAwsSsmParameterRead, 16 Schema: map[string]*schema.Schema{ 17 "name": { 18 Type: schema.TypeString, 19 Required: true, 20 }, 21 "type": { 22 Type: schema.TypeString, 23 Computed: true, 24 }, 25 "value": { 26 Type: schema.TypeString, 27 Computed: true, 28 Sensitive: true, 29 }, 30 }, 31 } 32 } 33 34 func dataAwsSsmParameterRead(d *schema.ResourceData, meta interface{}) error { 35 ssmconn := meta.(*AWSClient).ssmconn 36 37 log.Printf("[DEBUG] Reading SSM Parameter: %s", d.Id()) 38 39 paramInput := &ssm.GetParametersInput{ 40 Names: []*string{ 41 aws.String(d.Get("name").(string)), 42 }, 43 WithDecryption: aws.Bool(true), 44 } 45 46 resp, err := ssmconn.GetParameters(paramInput) 47 48 if err != nil { 49 return errwrap.Wrapf("[ERROR] Error describing SSM parameter: {{err}}", err) 50 } 51 52 if len(resp.InvalidParameters) > 0 { 53 return fmt.Errorf("[ERROR] SSM Parameter %s is invalid", d.Get("name").(string)) 54 } 55 56 param := resp.Parameters[0] 57 d.SetId(*param.Name) 58 d.Set("name", param.Name) 59 d.Set("type", param.Type) 60 d.Set("value", param.Value) 61 62 return nil 63 }