access aws account and try boto3 总结

2 篇文章 0 订阅

1. Terminal configure root/iam account-keys/credential using:

aws configure --profile XXname

OR

aws configure 

Then type the keys.

echo %HOMEPATH%
cd .aws
.aws>dir

then you will see config(存放region和output(可以是json)信息) and credencials(存放keys信息) 2 files, check them:

.aws>type config
.aws>type credentials

<<
https://github.com/AutomationWithScripting/UdemyBoto3Scripts

2. Access IAM with boto3
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#service-resource

# session 和 resource 方式连接:
import boto3
aws_mag_console = boto3.session.Session(profile_name='账户名字'). # 进入console
iam_console_res = aws_mag_console.resource('iam') # 进入iam
# iam_console_res = aws_mag_console.resource(service_name='iam',region_name='us-west-2') # 进入iam,用dir(iam_console_res)可以查看可以直接调用的方法

for user in iam_console_res.users.all():
	print(user.name)

user_ob = iam_console_res.User('s3_developer')
print(user_ob.user_name)
# client方式连接。用client相比resource,用法会更麻烦一点,这是low level services access,而resource属于high level的object-oriented services access,可以直接调用方法,实现简单。
import boto3
iam_console_cli = aws_mag_console.client(service_name='iam',region_name='us-west-2') # 进入iam,用dir(iam_console_cli)发现不能直接调用方法,相比resource,用法会更麻烦一点,这是low level services access,而resource属于high level的object-oriented services access。
for user in iam_console_cli.list_users['Users']:
	print(user['UserName'])

3. Access s3 with boto3

aws_mag_console = boto3.session.Session(profile_name='root') # 进入console
s3 = aws_mag_console.resource('s3') # 进入s3
# s3 = boto3.resource('s3')  # 或者直接进入s3,跳过前2句,使用默认account

for bucket in s3.buckets.all():
    print(bucket.name)

4. Access ec2 with boto3
https://boto3.amazonaws.com/v1/documentation/api/latest/guide/ec2-example-managing-instances.html

import boto3
from pprint import pprint  # 适合打印json格式,很整齐
aws_mag_console = boto3.session.Session(profile_name='root') # 进入console
ec2 = aws_mag_console.client(service_name='ec2', region='us-west-2')
response = ec2.describe_instances()
# response = ec2.describe_instances(Filters=[f1, f2])
for x in response['Reservations']:
	for y in x['Instances']:
		print(y['InstanceId'])
		print('Image id is:{}\nInstanceId is:{} '.format(y['ImageId'], y['InstanceId']))
response_v = ec2.describe_volumes()['Volumes']
for x in response_v:
	print(x['VolumeId'])	
import boto3
from pprint import pprint  # 适合打印json格式,很整齐
aws_mag_console = boto3.session.Session(profile_name='root') # 进入console
ec2 = aws_mag_console.resource(service_name='ec2', region='us-west-2')
response = ec2.instances
# for x in response.limit(2):  # only select 2
f1 = {'Name':'instance-state-name','Values':['running','stopped']}  # f1 = {}
f2 = {'Name':'instance-type','Values':['t2.micro']}
# for x in response.filter(Filters=[f1, f2]):  # 
for x in response:
	print(x)

collections:

# for x in response.limit(2):  # only select 2
# for x in response.filter():  # 
# for x in response:

waiter

def start_inst(self,instant_id):
        # inst_obj = self.ec2_re.Instance(instant_id)
        # inst_obj.start()
        # inst_obj.wait_until_running()  # 40 checks, check every 15s??

        # below use client
        self.ec2_cli.start_instances(InstanceIds=[instant_id])
        waiter = self.ec2_cli.get_waiter('instance_running')
        waiter.wait(InstanceIds=[instant_id])  # # 40 checks, check every 5s till success, after 200s may get error

        print('It is running now!')

meta, resource 通过meta可以获取client信息,而不用再用client方法

import boto3
from pprint import pprint  # 适合打印json格式,很整齐
aws_mag_console = boto3.session.Session(profile_name='root') # 进入console
ec2 = aws_mag_console.client(service_name='ec2', region='us-west-2')
pprint(ec2_re.meta.client.describe_regions()['Regions'])  # get all regions info
  1. Access sts with boto3
    https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sts.html

  2. Paginator, client的方法

import boto3
ec2_cli = boto3.client('ec2','us-west-2') 
f_prod_bk = {'Name': 'tag:Prod', 'Values':['Backup', 'backup'] }
print('client ')
paginator = ec2_cli.get_paginator('describe_volumes')  #  ec2: 'describe_instances',iam: 'list_users', s3:'list_objects'
list_val_ids = []
for page in paginator.paginate(Filters=[f_prod_bk]):
    print(page)
    for vol in page['Volumes']:
        list_val_ids.append(vol['VolumeId'])

当我们链接的时候,不同的服务位于不同的区域,需要说明region——name,否则可能会出错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值