Merge pull request #14334 from hashicorp/f-govcloud-s3-tags

Don't error out getting s3 object tags in govcloud
This commit is contained in:
Evan Phoenix 2017-05-10 14:45:13 -07:00 committed by GitHub
commit f1a8b2888b

View File

@ -127,6 +127,8 @@ func resourceAwsS3BucketObject() *schema.Resource {
func resourceAwsS3BucketObjectPut(d *schema.ResourceData, meta interface{}) error { func resourceAwsS3BucketObjectPut(d *schema.ResourceData, meta interface{}) error {
s3conn := meta.(*AWSClient).s3conn s3conn := meta.(*AWSClient).s3conn
restricted := meta.(*AWSClient).IsGovCloud() || meta.(*AWSClient).IsChinaCloud()
var body io.ReadSeeker var body io.ReadSeeker
if v, ok := d.GetOk("source"); ok { if v, ok := d.GetOk("source"); ok {
@ -192,6 +194,10 @@ func resourceAwsS3BucketObjectPut(d *schema.ResourceData, meta interface{}) erro
} }
if v, ok := d.GetOk("tags"); ok { if v, ok := d.GetOk("tags"); ok {
if restricted {
return fmt.Errorf("This region does not allow for tags on S3 objects")
}
// The tag-set must be encoded as URL Query parameters. // The tag-set must be encoded as URL Query parameters.
values := url.Values{} values := url.Values{}
for k, v := range v.(map[string]interface{}) { for k, v := range v.(map[string]interface{}) {
@ -216,6 +222,8 @@ func resourceAwsS3BucketObjectPut(d *schema.ResourceData, meta interface{}) erro
func resourceAwsS3BucketObjectRead(d *schema.ResourceData, meta interface{}) error { func resourceAwsS3BucketObjectRead(d *schema.ResourceData, meta interface{}) error {
s3conn := meta.(*AWSClient).s3conn s3conn := meta.(*AWSClient).s3conn
restricted := meta.(*AWSClient).IsGovCloud() || meta.(*AWSClient).IsChinaCloud()
bucket := d.Get("bucket").(string) bucket := d.Get("bucket").(string)
key := d.Get("key").(string) key := d.Get("key").(string)
@ -269,15 +277,17 @@ func resourceAwsS3BucketObjectRead(d *schema.ResourceData, meta interface{}) err
d.Set("storage_class", resp.StorageClass) d.Set("storage_class", resp.StorageClass)
} }
tagResp, err := s3conn.GetObjectTagging( if !restricted {
&s3.GetObjectTaggingInput{ tagResp, err := s3conn.GetObjectTagging(
Bucket: aws.String(bucket), &s3.GetObjectTaggingInput{
Key: aws.String(key), Bucket: aws.String(bucket),
}) Key: aws.String(key),
if err != nil { })
return fmt.Errorf("Failed to get object tags (bucket: %s, key: %s): %s", bucket, key, err) if err != nil {
return fmt.Errorf("Failed to get object tags (bucket: %s, key: %s): %s", bucket, key, err)
}
d.Set("tags", tagsToMapS3(tagResp.TagSet))
} }
d.Set("tags", tagsToMapS3(tagResp.TagSet))
return nil return nil
} }