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  }