class AwsS3BucketObject
author: Matthew Dromazos
def fetch_from_api
def fetch_from_api backend = BackendFactory.create(inspec_runner) catch_aws_errors do begin # Just use get_object to detect if the bucket exists backend.get_object(bucket: bucket_name, key: key) rescue Aws::S3::Errors::NoSuchBucket @exists = false return rescue Aws::S3::Errors::NoSuchKey @exists = false return end end @exists = true end
def object_acl
def object_acl return @object_acl if defined? @object_acl catch_aws_errors do @object_acl = BackendFactory.create(inspec_runner).get_object_acl(bucket: bucket_name, key: key).grants end @object_acl end
def public?
def public? # first line just for formatting false || \ object_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AllUsers/ } || \ object_acl.any? { |g| g.grantee.type == 'Group' && g.grantee.uri =~ /AuthenticatedUsers/ } end
def to_s
def to_s # keep the format that aws uses. "s3://#{@bucket_name}/#{@key}" end
def validate_params(raw_params)
def validate_params(raw_params) validated_params = check_resource_param_names( raw_params: raw_params, allowed_params: [:bucket_name, :key, :id], ) if validated_params.empty? or !validated_params.key?(:bucket_name) or !validated_params.key?(:key) raise ArgumentError, 'You must provide a bucket_name and key to aws_s3_bucket_object.' end validated_params end