github.com/mohanarpit/terraform@v0.6.16-0.20160909104007-291f29853544/builtin/providers/aws/resource_aws_lambda_alias.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/lambda"
     9  	"github.com/hashicorp/terraform/helper/schema"
    10  )
    11  
    12  func resourceAwsLambdaAlias() *schema.Resource {
    13  	return &schema.Resource{
    14  		Create: resourceAwsLambdaAliasCreate,
    15  		Read:   resourceAwsLambdaAliasRead,
    16  		Update: resourceAwsLambdaAliasUpdate,
    17  		Delete: resourceAwsLambdaAliasDelete,
    18  
    19  		Schema: map[string]*schema.Schema{
    20  			"description": &schema.Schema{
    21  				Type:     schema.TypeString,
    22  				Optional: true,
    23  			},
    24  			"function_name": &schema.Schema{
    25  				Type:     schema.TypeString,
    26  				Required: true,
    27  			},
    28  			"function_version": &schema.Schema{
    29  				Type:     schema.TypeString,
    30  				Required: true,
    31  			},
    32  			"name": &schema.Schema{
    33  				Type:     schema.TypeString,
    34  				Required: true,
    35  			},
    36  		},
    37  	}
    38  }
    39  
    40  // resourceAwsLambdaAliasCreate maps to:
    41  // CreateAlias in the API / SDK
    42  func resourceAwsLambdaAliasCreate(d *schema.ResourceData, meta interface{}) error {
    43  	conn := meta.(*AWSClient).lambdaconn
    44  
    45  	functionName := d.Get("function_name").(string)
    46  	aliasName := d.Get("name").(string)
    47  
    48  	log.Printf("[DEBUG] Creating Lambda alias: alias %s for function %s", aliasName, functionName)
    49  
    50  	params := &lambda.CreateAliasInput{
    51  		Description:     aws.String(d.Get("description").(string)),
    52  		FunctionName:    aws.String(functionName),
    53  		FunctionVersion: aws.String(d.Get("function_version").(string)),
    54  		Name:            aws.String(aliasName),
    55  	}
    56  
    57  	aliasConfiguration, err := conn.CreateAlias(params)
    58  	if err != nil {
    59  		return fmt.Errorf("Error creating Lambda alias: %s", err)
    60  	}
    61  
    62  	d.SetId(*aliasConfiguration.AliasArn)
    63  
    64  	return resourceAwsLambdaAliasRead(d, meta)
    65  }
    66  
    67  // resourceAwsLambdaAliasRead maps to:
    68  // GetAlias in the API / SDK
    69  func resourceAwsLambdaAliasRead(d *schema.ResourceData, meta interface{}) error {
    70  	conn := meta.(*AWSClient).lambdaconn
    71  
    72  	log.Printf("[DEBUG] Fetching Lambda alias: %s:%s", d.Get("function_name"), d.Get("name"))
    73  
    74  	params := &lambda.GetAliasInput{
    75  		FunctionName: aws.String(d.Get("function_name").(string)),
    76  		Name:         aws.String(d.Get("name").(string)),
    77  	}
    78  
    79  	aliasConfiguration, err := conn.GetAlias(params)
    80  	if err != nil {
    81  		return err
    82  	}
    83  
    84  	d.Set("description", aliasConfiguration.Description)
    85  	d.Set("function_version", aliasConfiguration.FunctionVersion)
    86  	d.Set("name", aliasConfiguration.Name)
    87  
    88  	return nil
    89  }
    90  
    91  // resourceAwsLambdaAliasDelete maps to:
    92  // DeleteAlias in the API / SDK
    93  func resourceAwsLambdaAliasDelete(d *schema.ResourceData, meta interface{}) error {
    94  	conn := meta.(*AWSClient).lambdaconn
    95  
    96  	log.Printf("[INFO] Deleting Lambda alias: %s:%s", d.Get("function_name"), d.Get("name"))
    97  
    98  	params := &lambda.DeleteAliasInput{
    99  		FunctionName: aws.String(d.Get("function_name").(string)),
   100  		Name:         aws.String(d.Get("name").(string)),
   101  	}
   102  
   103  	_, err := conn.DeleteAlias(params)
   104  	if err != nil {
   105  		return fmt.Errorf("Error deleting Lambda alias: %s", err)
   106  	}
   107  
   108  	d.SetId("")
   109  
   110  	return nil
   111  }
   112  
   113  // resourceAwsLambdaAliasUpdate maps to:
   114  // UpdateAlias in the API / SDK
   115  func resourceAwsLambdaAliasUpdate(d *schema.ResourceData, meta interface{}) error {
   116  	conn := meta.(*AWSClient).lambdaconn
   117  
   118  	log.Printf("[DEBUG] Updating Lambda alias: %s:%s", d.Get("function_name"), d.Get("name"))
   119  
   120  	params := &lambda.UpdateAliasInput{
   121  		Description:     aws.String(d.Get("description").(string)),
   122  		FunctionName:    aws.String(d.Get("function_name").(string)),
   123  		FunctionVersion: aws.String(d.Get("function_version").(string)),
   124  		Name:            aws.String(d.Get("name").(string)),
   125  	}
   126  
   127  	_, err := conn.UpdateAlias(params)
   128  	if err != nil {
   129  		return fmt.Errorf("Error updating Lambda alias: %s", err)
   130  	}
   131  
   132  	return nil
   133  }