def s3(s3_base):
    client = get_boto3_client()
    client.create_bucket(Bucket=s3_test_bucket_name, ACL="public-read")

    from s3fs.core import S3FileSystem

    S3FileSystem.clear_instance_cache()
    s3 = S3FileSystem(anon=False,
                      client_kwargs={"endpoint_url": s3_endpoint_uri})
    s3.invalidate_cache()
    yield s3
Esempio n. 2
0
def s3(s3_base):
    from botocore.session import Session
    # NB: we use the sync botocore client for setup
    session = Session()
    client = session.create_client('s3', endpoint_url=endpoint_uri)
    client.create_bucket(Bucket=test_bucket_name, ACL='public-read')

    client.create_bucket(
        Bucket=versioned_bucket_name, ACL='public-read')
    client.put_bucket_versioning(
        Bucket=versioned_bucket_name,
        VersioningConfiguration={
            'Status': 'Enabled'
        }
    )

    # initialize secure bucket
    client.create_bucket(
        Bucket=secure_bucket_name, ACL='public-read')
    policy = json.dumps({
        "Version": "2012-10-17",
        "Id": "PutObjPolicy",
        "Statement": [
            {
                "Sid": "DenyUnEncryptedObjectUploads",
                "Effect": "Deny",
                "Principal": "*",
                "Action": "s3:PutObject",
                "Resource": "arn:aws:s3:::{bucket_name}/*".format(
                    bucket_name=secure_bucket_name),
                "Condition": {
                    "StringNotEquals": {
                        "s3:x-amz-server-side-encryption": "aws:kms"
                    }
                }
            }
        ]
    })
    client.put_bucket_policy(Bucket=secure_bucket_name, Policy=policy)
    for flist in [files, csv_files, text_files, glob_files]:
        for f, data in flist.items():
            client.put_object(Bucket=test_bucket_name, Key=f, Body=data)

    S3FileSystem.clear_instance_cache()
    s3 = S3FileSystem(anon=False, client_kwargs={'endpoint_url': endpoint_uri})
    s3.invalidate_cache()
    yield s3
Esempio n. 3
0
def s3():
    # writable local S3 system
    with moto.mock_s3():
        from botocore.session import Session
        session = Session()
        client = session.create_client('s3')
        client.create_bucket(Bucket=test_bucket_name, ACL='public-read')

        client.create_bucket(Bucket=versioned_bucket_name, ACL='public-read')
        client.put_bucket_versioning(
            Bucket=versioned_bucket_name,
            VersioningConfiguration={'Status': 'Enabled'})

        # initialize secure bucket
        client.create_bucket(Bucket=secure_bucket_name, ACL='public-read')
        policy = json.dumps({
            "Version":
            "2012-10-17",
            "Id":
            "PutObjPolicy",
            "Statement": [{
                "Sid":
                "DenyUnEncryptedObjectUploads",
                "Effect":
                "Deny",
                "Principal":
                "*",
                "Action":
                "s3:PutObject",
                "Resource":
                "arn:aws:s3:::{bucket_name}/*".format(
                    bucket_name=secure_bucket_name),
                "Condition": {
                    "StringNotEquals": {
                        "s3:x-amz-server-side-encryption": "aws:kms"
                    }
                }
            }]
        })
        client.put_bucket_policy(Bucket=secure_bucket_name, Policy=policy)

        for k in [a, b, c, d]:
            try:
                client.delete_object(Bucket=test_bucket_name, Key=k)
            except:
                pass
        for flist in [files, csv_files, text_files, glob_files]:
            for f, data in flist.items():
                client.put_object(Bucket=test_bucket_name, Key=f, Body=data)
        S3FileSystem.clear_instance_cache()
        s3 = S3FileSystem(anon=False)
        s3.invalidate_cache()
        yield s3
        for flist in [files, csv_files, text_files, glob_files]:
            for f, data in flist.items():
                try:
                    client.delete_object(Bucket=test_bucket_name,
                                         Key=f,
                                         Body=data)
                    client.delete_object(Bucket=secure_bucket_name,
                                         Key=f,
                                         Body=data)
                except:
                    pass
        for k in [a, b, c, d]:
            try:
                client.delete_object(Bucket=test_bucket_name, Key=k)
                client.delete_object(Bucket=secure_bucket_name, Key=k)
            except:
                pass