@solid(<EOL>name='<STR_LIT>',<EOL>config_field=Field(<EOL>Dict(<EOL>fields={<EOL>'<STR_LIT>': Field(String, description='<STR_LIT>'),<EOL>'<STR_LIT:key>': Field(String, description='<STR_LIT>'),<EOL>'<STR_LIT>': Field(<EOL>Any,  <EOL>description='<STR_LIT>',<EOL>is_optional=True,<EOL>),<EOL>}<EOL>)<EOL>),<EOL>inputs=[InputDefinition('<STR_LIT>', Bytes, description='<STR_LIT>')],<EOL>description='<STR_LIT>',<EOL>outputs=[<EOL>OutputDefinition(<EOL>String, description='<STR_LIT>', name='<STR_LIT>'<EOL>),<EOL>OutputDefinition(String, description='<STR_LIT>', name='<STR_LIT:key>'),<EOL>],<EOL>)<EOL>def upload_to_s3(context, file_obj):
bucket = context.solid_config['<STR_LIT>']<EOL>key = context.solid_config['<STR_LIT:key>']<EOL>context.resources.s3.put_object(<EOL>Bucket=bucket, Body=file_obj.read(), Key=key, **(context.solid_config.get('<STR_LIT>') or {})<EOL>)<EOL>yield Result(bucket, '<STR_LIT>')<EOL>yield Result(key, '<STR_LIT:key>')<EOL>
Upload a file to s3.

    Args:
        info (ExpectationExecutionInfo): Must expose a boto3 S3 client as its `s3` resource.

    Returns:
        (str, str):
            The bucket and key to which the file was uploaded.