class Convection::Model::Template::Resource::S3BucketPolicy

@example

s3_bucket_policy 'BucketPolicy' do
  bucket "my-bucket"

  allow do
    principal :AWS => '*'
    s3_resource "my-bucket", '*'
    action 's3:GetObject'
  end
end

Attributes

document[R]

Public Class Methods

new(*args) click to toggle source
# File lib/convection/model/template/resource/aws_s3_bucket_policy.rb, line 28
def initialize(*args)
  super
  @document = Model::Mixin::Policy.new(:name => false, :template => @template)
end

Public Instance Methods

render() click to toggle source
# File lib/convection/model/template/resource/aws_s3_bucket_policy.rb, line 55
def render
  super.tap do |r|
    document.render(r['Properties'])
  end
end
terraform_import_commands(*) click to toggle source
# File lib/convection/model/template/resource/aws_s3_bucket_policy.rb, line 33
def terraform_import_commands(*)
  commands = ['# Run the following commands to import your infrastructure into terraform management.', '# ensure :module_path is set correctly', '']
  commands << '# Import s3 bucket and s3 bucket policy: '
  # commands << "terraform import #{module_prefix}aws_s3_bucket.#{name.underscore} #{stack.resources[name].physical_resource_id}"
  commands << ''
  commands
end
to_hcl_json(*) click to toggle source
# File lib/convection/model/template/resource/aws_s3_bucket_policy.rb, line 41
def to_hcl_json(*)
  policy_json = resources[name] && resources[name].document.document.to_json.gsub(stack.resources[name].physical_resource_id, bucket)
  policy_resource = {
    name.underscore => {
      bucket: bucket,
      policy: policy_json
    }
  }

  data = [{ aws_region: { current: { current: true } } }]
  vars = [{ cloud: { description: 'The cloud name for this resource.' } }]
  { resource: { aws_s3_bucket_policy: policy_resource }, data: data, variable: vars }.to_json
end