{"id":4277,"library":"tentaclio-s3","title":"Tentaclio S3","description":"Tentaclio-s3 is a Python package that provides all the necessary dependencies to enable S3 protocol support within the `tentaclio` library. The `tentaclio` library itself simplifies handling streams from various protocols (like file, ftp, sftp, s3) and manages credentials. Tentaclio-s3, currently at version 0.0.3, acts as an 'extra' dependency for tentaclio, not a standalone library for direct S3 interaction.","status":"active","version":"0.0.3","language":"python","source_language":"en","source_url":"https://github.com/octopus-energy/tentaclio-s3","tags":["s3","aws","storage","io","streams","tentaclio","cloud"],"install":[{"cmd":"pip install tentaclio-s3","lang":"bash","label":"Install with pip"}],"dependencies":[{"reason":"This package provides S3 protocol handling for the core tentaclio library.","package":"tentaclio"},{"reason":"Used under the hood for AWS S3 authentication and interaction.","package":"boto3","optional":false}],"imports":[{"note":"tentaclio-s3 is an 'extra' package for tentaclio; core functionality is accessed via the main tentaclio library.","symbol":"open","correct":"from tentaclio import open"}],"quickstart":{"code":"import os\nfrom tentaclio import open\n\n# Ensure AWS credentials are set via environment variables (e.g., AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)\n# or other boto3-supported methods (IAM role, ~/.aws/credentials).\n# For demonstration, we'll use a dummy bucket and key.\nS3_BUCKET = os.environ.get('TEST_S3_BUCKET', 'your-test-s3-bucket')\nS3_KEY = os.environ.get('TEST_S3_KEY', 'path/to/my_file.txt')\nS3_PATH = f\"s3://{S3_BUCKET}/{S3_KEY}\n\n# Example: Write to an S3 file\ncontent_to_write = \"Hello from tentaclio-s3!\"\ntry:\n    with open(S3_PATH, mode=\"w\") as writer:\n        writer.write(content_to_write)\n    print(f\"Content successfully written to {S3_PATH}\")\n\n    # Example: Read from an S3 file\n    with open(S3_PATH, mode=\"r\") as reader:\n        read_content = reader.read()\n    print(f\"Content read from {S3_PATH}: {read_content}\")\n\nexcept Exception as e:\n    print(f\"An error occurred: {e}\")\n    print(\"Please ensure your AWS credentials are configured and the S3 bucket/key are accessible.\")\n","lang":"python","description":"This quickstart demonstrates how to use `tentaclio.open` to write to and read from an S3 path. It assumes AWS credentials (e.g., `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`) are configured in the environment or via other `boto3` supported methods. The `tentaclio-s3` package is automatically utilized when an `s3://` URL is provided to `tentaclio.open`."},"warnings":[{"fix":"Ensure your imports are from `tentaclio` (e.g., `from tentaclio import open`) and that `tentaclio-s3` is installed as a dependency to enable S3 scheme support.","message":"Tentaclio-s3 is an 'extra' package for the main `tentaclio` library. You should always import and interact with S3 via `tentaclio.open` (or `tentaclio.copy`, `tentaclio.remove`, etc.) rather than attempting to import directly from `tentaclio_s3`.","severity":"gotcha","affected_versions":"0.0.1+"},{"fix":"Set appropriate AWS environment variables, configure `~/.aws/credentials`, or ensure your execution environment (e.g., EC2) has an attached IAM role with S3 access permissions.","message":"Authentication for S3 resources relies on `boto3`'s credential resolution chain. This means AWS credentials must be configured in your environment (e.g., `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION`), via an IAM role for EC2 instances, or in `~/.aws/credentials`.","severity":"gotcha","affected_versions":"0.0.1+"},{"fix":"Upgrade your Python interpreter to version 3.9 or newer.","message":"The `tentaclio` library, which `tentaclio-s3` extends, requires Python 3.9 or higher. Ensure your environment meets this minimum Python version.","severity":"gotcha","affected_versions":"0.0.1+"}],"env_vars":null,"search_vec":"'0.0.3':49 'act':50 'aw':66 'cloud':71 'credenti':42 'current':46 'depend':15,54 'direct':62 'enabl':17 'extra':53 'file':36 'ftp':37 'handl':30 'interact':64 'io':68 'librari':24,27,60 'like':35 'manag':41 'necessari':14 'packag':9 'protocol':19,34 'provid':11 'python':8 's3':2,5,18,39,45,63,65 'sftp':38 'simplifi':29 'standalon':59 'storag':67 'stream':31,69 'support':20 'tentaclio':1,4,23,26,44,56,70 'tentaclio-s3':3,43 'various':33 'version':48 'within':21","created_at":"2026-04-12T03:48:30.169027+00:00","updated_at":"2026-04-16T22:49:14.065025+00:00","problems":[{"fix":"Install 'tentaclio-s3' using `pip install tentaclio-s3`.","cause":"The 'tentaclio-s3' package, which provides S3 protocol handling for 'tentaclio', is not installed or correctly registered.","error":"tentaclio.exceptions.URLParseError: Protocol 's3' not supported."},{"fix":"Configure your AWS credentials using the AWS CLI (`aws configure`) or by setting environment variables.","cause":"AWS credentials are not configured in your environment (e.g., ~/.aws/credentials, environment variables AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, or IAM role).","error":"botocore.exceptions.NoCredentialsError: Unable to locate credentials"},{"fix":"Use `tentaclio.open('s3://...', 'r')` instead of attempting to call `open` directly from `tentaclio_s3`.","cause":"The 'tentaclio-s3' package is an extension for 'tentaclio', not a standalone library; S3 streams are opened directly via 'tentaclio.open()'.","error":"AttributeError: module 'tentaclio_s3' has no attribute 'open'"},{"fix":"Update the IAM policy associated with your AWS credentials to grant the necessary S3 permissions (e.g., `s3:GetObject`, `s3:PutObject`, `s3:ListBucket`).","cause":"The AWS credentials configured have insufficient permissions to perform the requested S3 operation (e.g., read, write) on the specified bucket or object.","error":"botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the GetObject operation: Access Denied"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.0.3","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":null,"docs":null,"changelog":null,"pypi":"https://pypi.org/project/tentaclio-s3/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["aws"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-28","last_verified":"2026-08-29","next_check":"2026-07-28","install_tag":null}}