Skip to main content

Cloud SDK for Antokel engineers

Project description

Antokel Cloud SDK

Example usage for S3

from antokel_cloud.aws import AntokelAws

aws = AntokelAws() # ... optional parameters for the region, access key and secret key. They're obtained from the env variables by default
# cloud = AntokelAws(region=..., access_key=..., secret_key=...)

s3 = aws.S3(bucket='bucket-name') # it can be positional too.
# s3 = aws.S3('bucket-name') 
# s3 = aws.S3('bucket-name', prefix='folder1/route/2') ... we can add an optional "prefix" that essentially establishes a folder/subfolder.
# s3 = aws.S3('bucket-name', prefix='folder1/route/2/')

s3.upload('path/to/local/file.pdf', 'path/without-prefix/on/s3.pdf')
# s3.upload(local='path/to/local/file.pdf', cloud='path/without-prefix/on/s3.pdf')
s3.remove('path/without-prefix/on/s3.pdf')
# s3.remove(cloud='path/without-prefix/on/s3.pdf')
s3.move('original/s3/path.pdf', 'new/s3/path.pdf') # this removes the original file and moves it to the new path.
# s3.move(local='original/s3/path.pdf', cloud='new/s3/path.pdf')

s3.download('path/without-prefix/on/s3.pdf', 'path/to/local/file.pdf')
# s3.download(cloud='path/without-prefix/on/s3.pdf', local='path/to/local/file.pdf')

s3.as_text.read('path/without-prefix/on/s3.txt') # this returns a string which reads the text from S3.
# s3.as_text.read(cloud='path/without-prefix/on/s3.txt')
content = 'example'
s3.as_text.write(content, 'path/without-prefix/on/s3.txt') # this returns a string which reads the text from S3.
# s3.as_text.write(content=content, cloud='path/without-prefix/on/s3.txt')

lines = s3.as_text.stream_lines('path/without-prefix/on/s3.csv') # this one streams, reading little by little, a file like a csv or a txt or similar as lines, which can be obtained from iterating it. It's billed by S3 as only ONE read.
# lines = s3.as_text.stream_lines(cloud='path/without-prefix/on/s3.csv')
for line in lines:
  print(line) # for example, a .CSV line

rows = s3.as_text.stream_csv('path/without-prefix/on/s3.csv')
for row in rows:
  print(row) # a dict obj, just like csv.DictReader would return

Example usage for EC2

from antokel_cloud.aws import AntokelAws

aws = AntokelAws()

ec2 = aws.EC2()

instances = ec2.find_by_name(regex=r"safegraph-.+") # this is a list of instances

bootup_script = '''
echo "hello world"
'''.strip()

script = ec2.user_data.ContainerFleet(
  ecr='112233445566.dkr.ecr.us-east-1.amazonaws.com/repo-tag',
  os='amazon_linux', # 'amazon_linux' by default. Can also be debian, ubuntu, macos, windows, red_hat, suse_linux.
  env={ # optional; empty by default. 
    "OPENAI_API_KEY": "...",
    "DEBUG": "true",
    ...
  },
  cmd='python main.py --concurrency 5'
)

instance = ec2.Instance(
  id='...', # optional; if not given, it'll create one using `instance.create()` and update the id. Otherwise, the programmer means the instance already exists and wants to communicate with it. In that case, the programmer should only have to give the instance id and not need to specify any of the other fields.
  name='my-machine', # optional
  machine='t4g.micro', # required if id not given; otherwise optional
  mode='spot', # optional, can be 'spot' or 'on-demand'. It's 'on-demand' by default 
  key_pair='keypair-name', # required if id not given; otherwise optional
  security_groups=['sg-01234', 'sg-98123'], # optional
  ami='ami_13290193013' # optional
  storage=[
    ec2.Volume(
      id='...', # optional; if given, it's referring to an existing volume snapshot that the ec2 instance should attach to. In that case, all other kwargs become optional. Otherwise, if not provided, it'll create a volume that will be destroyed on instance's termination
      gib=8, 
      mode='gp3', # optional, gp3 by default. It can be gp2 and standard as well.
    ),
    ...
  ], # optional; it'll create one volume that'll be deleted on instance termination with 8 GB and gp3 mode.
  user_data=bootup_script # optional; it can also be an `ec2.BaseUserData` object, which would be the `script` variable.
)

instance.create()
instance.start()
instance.stop()
instance.terminate()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

antokel_cloud-0.0.6.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

antokel_cloud-0.0.6-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

Details for the file antokel_cloud-0.0.6.tar.gz.

File metadata

  • Download URL: antokel_cloud-0.0.6.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for antokel_cloud-0.0.6.tar.gz
Algorithm Hash digest
SHA256 e7a37a3211c5d64c4b2e58acd76063f59c23001576763b669eb50a16d85e814d
MD5 3e2bccb258d560d0bfc5645747891bef
BLAKE2b-256 eff5a23c18f72080c2163898c5417a6302cc0fcb9fde57282cef646e5aa85f0f

See more details on using hashes here.

File details

Details for the file antokel_cloud-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: antokel_cloud-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.1

File hashes

Hashes for antokel_cloud-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 06a2f80b441f7479756ee0c18a856426aaccb0c521d309c719a0e3b53f67b00e
MD5 191b799f74b852b2a38978e6e941716f
BLAKE2b-256 849aae5770e03f6c7148a5b5e08f0c573836b9e36ad4999f757daec75b6ff469

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page