github.com/rmenn/terraform@v0.3.8-0.20150225065417-fc84b3a78802/builtin/providers/aws/resource_aws_s3_bucket.go (about) 1 package aws 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/hashicorp/terraform/helper/schema" 8 9 "github.com/awslabs/aws-sdk-go/aws" 10 "github.com/awslabs/aws-sdk-go/gen/s3" 11 ) 12 13 func resourceAwsS3Bucket() *schema.Resource { 14 return &schema.Resource{ 15 Create: resourceAwsS3BucketCreate, 16 Read: resourceAwsS3BucketRead, 17 Delete: resourceAwsS3BucketDelete, 18 19 Schema: map[string]*schema.Schema{ 20 "bucket": &schema.Schema{ 21 Type: schema.TypeString, 22 Required: true, 23 ForceNew: true, 24 }, 25 26 "acl": &schema.Schema{ 27 Type: schema.TypeString, 28 Default: "private", 29 Optional: true, 30 ForceNew: true, 31 }, 32 }, 33 } 34 } 35 36 func resourceAwsS3BucketCreate(d *schema.ResourceData, meta interface{}) error { 37 s3conn := meta.(*AWSClient).s3conn 38 awsRegion := meta.(*AWSClient).region 39 40 // Get the bucket and acl 41 bucket := d.Get("bucket").(string) 42 acl := d.Get("acl").(string) 43 44 log.Printf("[DEBUG] S3 bucket create: %s, ACL: %s", bucket, acl) 45 46 req := &s3.CreateBucketRequest{ 47 Bucket: aws.String(bucket), 48 ACL: aws.String(acl), 49 CreateBucketConfiguration: &s3.CreateBucketConfiguration{ 50 LocationConstraint: aws.String(awsRegion), 51 }, 52 } 53 54 _, err := s3conn.CreateBucket(req) 55 if err != nil { 56 return fmt.Errorf("Error creating S3 bucket: %s", err) 57 } 58 59 // Assign the bucket name as the resource ID 60 d.SetId(bucket) 61 62 return nil 63 } 64 65 func resourceAwsS3BucketRead(d *schema.ResourceData, meta interface{}) error { 66 s3conn := meta.(*AWSClient).s3conn 67 68 err := s3conn.HeadBucket(&s3.HeadBucketRequest{ 69 Bucket: aws.String(d.Id()), 70 }) 71 if err != nil { 72 return err 73 } 74 return nil 75 } 76 77 func resourceAwsS3BucketDelete(d *schema.ResourceData, meta interface{}) error { 78 s3conn := meta.(*AWSClient).s3conn 79 80 log.Printf("[DEBUG] S3 Delete Bucket: %s", d.Id()) 81 err := s3conn.DeleteBucket(&s3.DeleteBucketRequest{ 82 Bucket: aws.String(d.Id()), 83 }) 84 if err != nil { 85 return err 86 } 87 return nil 88 }