Python boto3를 이용한 AWS 리소스 컨트롤-세션등록 및 함수출력하기

2019-12-17

.

import boto3 ##ec2 tag 등록
session = boto3.session.Session(profile_name="default")
ec2_cli = session.resource(service_name="ec2", region_name="ap-northeast-2")
tag_change = ec2_cli.create_tags(Resources=['i-0f7ac7a56b2d76e35'], Tags=[{"Key" : "Name", "Value" : "minman"}])
#Session 등록(credential에 등록된 것에 대해 session 등록)
session = boto3.session.Session(profile_name='default')
ec2_res = session.resource(service_name='ec2', region_name='ap-northeast-2')
print(ec2_res)
dir(ec2_res)   # 해당 서비스에 대한 함수 출력하는 것
ec2.ServiceResource()





['ClassicAddress',
 'DhcpOptions',
 'Image',
 'Instance',
 'InternetGateway',
 'KeyPair',
 'NetworkAcl',
 'NetworkInterface',
 'NetworkInterfaceAssociation',
 'PlacementGroup',
 'Route',
 'RouteTable',
 'RouteTableAssociation',
 'SecurityGroup',
 'Snapshot',
 'Subnet',
 'Tag',
 'Volume',
 'Vpc',
 'VpcAddress',
 'VpcPeeringConnection',
 '__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'classic_addresses',
 'create_dhcp_options',
 'create_instances',
 'create_internet_gateway',
 'create_key_pair',
 'create_network_acl',
 'create_network_interface',
 'create_placement_group',
 'create_route_table',
 'create_security_group',
 'create_snapshot',
 'create_subnet',
 'create_tags',
 'create_volume',
 'create_vpc',
 'create_vpc_peering_connection',
 'dhcp_options_sets',
 'disassociate_route_table',
 'get_available_subresources',
 'images',
 'import_key_pair',
 'instances',
 'internet_gateways',
 'key_pairs',
 'meta',
 'network_acls',
 'network_interfaces',
 'placement_groups',
 'register_image',
 'route_tables',
 'security_groups',
 'snapshots',
 'subnets',
 'volumes',
 'vpc_addresses',
 'vpc_peering_connections',
 'vpcs']
#session 등록하고 해당 서비스에 대한 함수 보기 좋게 출력
import pprint
session = boto3.session.Session(profile_name='default')
ec2_res = session.resource(service_name='ec2', region_name='ap-northeast-2')
print(pprint.pprint(dir(ec2_res)))
['ClassicAddress',
 'DhcpOptions',
 'Image',
 'Instance',
 'InternetGateway',
 'KeyPair',
 'NetworkAcl',
 'NetworkInterface',
 'NetworkInterfaceAssociation',
 'PlacementGroup',
 'Route',
 'RouteTable',
 'RouteTableAssociation',
 'SecurityGroup',
 'Snapshot',
 'Subnet',
 'Tag',
 'Volume',
 'Vpc',
 'VpcAddress',
 'VpcPeeringConnection',
 '__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 'classic_addresses',
 'create_dhcp_options',
 'create_instances',
 'create_internet_gateway',
 'create_key_pair',
 'create_network_acl',
 'create_network_interface',
 'create_placement_group',
 'create_route_table',
 'create_security_group',
 'create_snapshot',
 'create_subnet',
 'create_tags',
 'create_volume',
 'create_vpc',
 'create_vpc_peering_connection',
 'dhcp_options_sets',
 'disassociate_route_table',
 'get_available_subresources',
 'images',
 'import_key_pair',
 'instances',
 'internet_gateways',
 'key_pairs',
 'meta',
 'network_acls',
 'network_interfaces',
 'placement_groups',
 'register_image',
 'route_tables',
 'security_groups',
 'snapshots',
 'subnets',
 'volumes',
 'vpc_addresses',
 'vpc_peering_connections',
 'vpcs']
None
# resource, client 별로 지원하는 함수 확인
session = boto3.session.Session(profile_name='default')
ec2_res = session.client(service_name='ec2', region_name='ap-northeast-2')
print(pprint.pprint(dir(ec2_res)))
['_PY_TO_OP_NAME',
 '__class__',
 '__delattr__',
 '__dict__',
 '__dir__',
 '__doc__',
 '__eq__',
 '__format__',
 '__ge__',
 '__getattr__',
 '__getattribute__',
 '__gt__',
 '__hash__',
 '__init__',
 '__init_subclass__',
 '__le__',
 '__lt__',
 '__module__',
 '__ne__',
 '__new__',
 '__reduce__',
 '__reduce_ex__',
 '__repr__',
 '__setattr__',
 '__sizeof__',
 '__str__',
 '__subclasshook__',
 '__weakref__',
 '_cache',
 '_client_config',
 '_convert_to_request_dict',
 '_emit_api_params',
 '_endpoint',
 '_exceptions',
 '_exceptions_factory',
 '_get_waiter_config',
 '_load_exceptions',
 '_loader',
 '_make_api_call',
 '_make_request',
 '_register_handlers',
 '_request_signer',
 '_response_parser',
 '_serializer',
 '_service_model',
 'accept_reserved_instances_exchange_quote',
 'accept_transit_gateway_vpc_attachment',
 'accept_vpc_endpoint_connections',
 'accept_vpc_peering_connection',
 'advertise_byoip_cidr',
 'allocate_address',
 'allocate_hosts',
 'apply_security_groups_to_client_vpn_target_network',
 'assign_ipv6_addresses',
 'assign_private_ip_addresses',
 'associate_address',
 'associate_client_vpn_target_network',
 'associate_dhcp_options',
 'associate_iam_instance_profile',
 'associate_route_table',
 'associate_subnet_cidr_block',
 'associate_transit_gateway_route_table',
 'associate_vpc_cidr_block',
 'attach_classic_link_vpc',
 'attach_internet_gateway',
 'attach_network_interface',
 'attach_volume',
 'attach_vpn_gateway',
 'authorize_client_vpn_ingress',
 'authorize_security_group_egress',
 'authorize_security_group_ingress',
 'bundle_instance',
 'can_paginate',
 'cancel_bundle_task',
 'cancel_capacity_reservation',
 'cancel_conversion_task',
 'cancel_export_task',
 'cancel_import_task',
 'cancel_reserved_instances_listing',
 'cancel_spot_fleet_requests',
 'cancel_spot_instance_requests',
 'confirm_product_instance',
 'copy_fpga_image',
 'copy_image',
 'copy_snapshot',
 'create_capacity_reservation',
 'create_client_vpn_endpoint',
 'create_client_vpn_route',
 'create_customer_gateway',
 'create_default_subnet',
 'create_default_vpc',
 'create_dhcp_options',
 'create_egress_only_internet_gateway',
 'create_fleet',
 'create_flow_logs',
 'create_fpga_image',
 'create_image',
 'create_instance_export_task',
 'create_internet_gateway',
 'create_key_pair',
 'create_launch_template',
 'create_launch_template_version',
 'create_nat_gateway',
 'create_network_acl',
 'create_network_acl_entry',
 'create_network_interface',
 'create_network_interface_permission',
 'create_placement_group',
 'create_reserved_instances_listing',
 'create_route',
 'create_route_table',
 'create_security_group',
 'create_snapshot',
 'create_snapshots',
 'create_spot_datafeed_subscription',
 'create_subnet',
 'create_tags',
 'create_traffic_mirror_filter',
 'create_traffic_mirror_filter_rule',
 'create_traffic_mirror_session',
 'create_traffic_mirror_target',
 'create_transit_gateway',
 'create_transit_gateway_route',
 'create_transit_gateway_route_table',
 'create_transit_gateway_vpc_attachment',
 'create_volume',
 'create_vpc',
 'create_vpc_endpoint',
 'create_vpc_endpoint_connection_notification',
 'create_vpc_endpoint_service_configuration',
 'create_vpc_peering_connection',
 'create_vpn_connection',
 'create_vpn_connection_route',
 'create_vpn_gateway',
 'delete_client_vpn_endpoint',
 'delete_client_vpn_route',
 'delete_customer_gateway',
 'delete_dhcp_options',
 'delete_egress_only_internet_gateway',
 'delete_fleets',
 'delete_flow_logs',
 'delete_fpga_image',
 'delete_internet_gateway',
 'delete_key_pair',
 'delete_launch_template',
 'delete_launch_template_versions',
 'delete_nat_gateway',
 'delete_network_acl',
 'delete_network_acl_entry',
 'delete_network_interface',
 'delete_network_interface_permission',
 'delete_placement_group',
 'delete_queued_reserved_instances',
 'delete_route',
 'delete_route_table',
 'delete_security_group',
 'delete_snapshot',
 'delete_spot_datafeed_subscription',
 'delete_subnet',
 'delete_tags',
 'delete_traffic_mirror_filter',
 'delete_traffic_mirror_filter_rule',
 'delete_traffic_mirror_session',
 'delete_traffic_mirror_target',
 'delete_transit_gateway',
 'delete_transit_gateway_route',
 'delete_transit_gateway_route_table',
 'delete_transit_gateway_vpc_attachment',
 'delete_volume',
 'delete_vpc',
 'delete_vpc_endpoint_connection_notifications',
 'delete_vpc_endpoint_service_configurations',
 'delete_vpc_endpoints',
 'delete_vpc_peering_connection',
 'delete_vpn_connection',
 'delete_vpn_connection_route',
 'delete_vpn_gateway',
 'deprovision_byoip_cidr',
 'deregister_image',
 'describe_account_attributes',
 'describe_addresses',
 'describe_aggregate_id_format',
 'describe_availability_zones',
 'describe_bundle_tasks',
 'describe_byoip_cidrs',
 'describe_capacity_reservations',
 'describe_classic_link_instances',
 'describe_client_vpn_authorization_rules',
 'describe_client_vpn_connections',
 'describe_client_vpn_endpoints',
 'describe_client_vpn_routes',
 'describe_client_vpn_target_networks',
 'describe_conversion_tasks',
 'describe_customer_gateways',
 'describe_dhcp_options',
 'describe_egress_only_internet_gateways',
 'describe_elastic_gpus',
 'describe_export_image_tasks',
 'describe_export_tasks',
 'describe_fast_snapshot_restores',
 'describe_fleet_history',
 'describe_fleet_instances',
 'describe_fleets',
 'describe_flow_logs',
 'describe_fpga_image_attribute',
 'describe_fpga_images',
 'describe_host_reservation_offerings',
 'describe_host_reservations',
 'describe_hosts',
 'describe_iam_instance_profile_associations',
 'describe_id_format',
 'describe_identity_id_format',
 'describe_image_attribute',
 'describe_images',
 'describe_import_image_tasks',
 'describe_import_snapshot_tasks',
 'describe_instance_attribute',
 'describe_instance_credit_specifications',
 'describe_instance_status',
 'describe_instance_type_offerings',
 'describe_instance_types',
 'describe_instances',
 'describe_internet_gateways',
 'describe_key_pairs',
 'describe_launch_template_versions',
 'describe_launch_templates',
 'describe_moving_addresses',
 'describe_nat_gateways',
 'describe_network_acls',
 'describe_network_interface_attribute',
 'describe_network_interface_permissions',
 'describe_network_interfaces',
 'describe_placement_groups',
 'describe_prefix_lists',
 'describe_principal_id_format',
 'describe_public_ipv4_pools',
 'describe_regions',
 'describe_reserved_instances',
 'describe_reserved_instances_listings',
 'describe_reserved_instances_modifications',
 'describe_reserved_instances_offerings',
 'describe_route_tables',
 'describe_scheduled_instance_availability',
 'describe_scheduled_instances',
 'describe_security_group_references',
 'describe_security_groups',
 'describe_snapshot_attribute',
 'describe_snapshots',
 'describe_spot_datafeed_subscription',
 'describe_spot_fleet_instances',
 'describe_spot_fleet_request_history',
 'describe_spot_fleet_requests',
 'describe_spot_instance_requests',
 'describe_spot_price_history',
 'describe_stale_security_groups',
 'describe_subnets',
 'describe_tags',
 'describe_traffic_mirror_filters',
 'describe_traffic_mirror_sessions',
 'describe_traffic_mirror_targets',
 'describe_transit_gateway_attachments',
 'describe_transit_gateway_route_tables',
 'describe_transit_gateway_vpc_attachments',
 'describe_transit_gateways',
 'describe_volume_attribute',
 'describe_volume_status',
 'describe_volumes',
 'describe_volumes_modifications',
 'describe_vpc_attribute',
 'describe_vpc_classic_link',
 'describe_vpc_classic_link_dns_support',
 'describe_vpc_endpoint_connection_notifications',
 'describe_vpc_endpoint_connections',
 'describe_vpc_endpoint_service_configurations',
 'describe_vpc_endpoint_service_permissions',
 'describe_vpc_endpoint_services',
 'describe_vpc_endpoints',
 'describe_vpc_peering_connections',
 'describe_vpcs',
 'describe_vpn_connections',
 'describe_vpn_gateways',
 'detach_classic_link_vpc',
 'detach_internet_gateway',
 'detach_network_interface',
 'detach_volume',
 'detach_vpn_gateway',
 'disable_ebs_encryption_by_default',
 'disable_fast_snapshot_restores',
 'disable_transit_gateway_route_table_propagation',
 'disable_vgw_route_propagation',
 'disable_vpc_classic_link',
 'disable_vpc_classic_link_dns_support',
 'disassociate_address',
 'disassociate_client_vpn_target_network',
 'disassociate_iam_instance_profile',
 'disassociate_route_table',
 'disassociate_subnet_cidr_block',
 'disassociate_transit_gateway_route_table',
 'disassociate_vpc_cidr_block',
 'enable_ebs_encryption_by_default',
 'enable_fast_snapshot_restores',
 'enable_transit_gateway_route_table_propagation',
 'enable_vgw_route_propagation',
 'enable_volume_io',
 'enable_vpc_classic_link',
 'enable_vpc_classic_link_dns_support',
 'exceptions',
 'export_client_vpn_client_certificate_revocation_list',
 'export_client_vpn_client_configuration',
 'export_image',
 'export_transit_gateway_routes',
 'generate_presigned_url',
 'get_capacity_reservation_usage',
 'get_console_output',
 'get_console_screenshot',
 'get_default_credit_specification',
 'get_ebs_default_kms_key_id',
 'get_ebs_encryption_by_default',
 'get_host_reservation_purchase_preview',
 'get_launch_template_data',
 'get_paginator',
 'get_password_data',
 'get_reserved_instances_exchange_quote',
 'get_transit_gateway_attachment_propagations',
 'get_transit_gateway_route_table_associations',
 'get_transit_gateway_route_table_propagations',
 'get_waiter',
 'import_client_vpn_client_certificate_revocation_list',
 'import_image',
 'import_instance',
 'import_key_pair',
 'import_snapshot',
 'import_volume',
 'meta',
 'modify_capacity_reservation',
 'modify_client_vpn_endpoint',
 'modify_default_credit_specification',
 'modify_ebs_default_kms_key_id',
 'modify_fleet',
 'modify_fpga_image_attribute',
 'modify_hosts',
 'modify_id_format',
 'modify_identity_id_format',
 'modify_image_attribute',
 'modify_instance_attribute',
 'modify_instance_capacity_reservation_attributes',
 'modify_instance_credit_specification',
 'modify_instance_event_start_time',
 'modify_instance_metadata_options',
 'modify_instance_placement',
 'modify_launch_template',
 'modify_network_interface_attribute',
 'modify_reserved_instances',
 'modify_snapshot_attribute',
 'modify_spot_fleet_request',
 'modify_subnet_attribute',
 'modify_traffic_mirror_filter_network_services',
 'modify_traffic_mirror_filter_rule',
 'modify_traffic_mirror_session',
 'modify_transit_gateway_vpc_attachment',
 'modify_volume',
 'modify_volume_attribute',
 'modify_vpc_attribute',
 'modify_vpc_endpoint',
 'modify_vpc_endpoint_connection_notification',
 'modify_vpc_endpoint_service_configuration',
 'modify_vpc_endpoint_service_permissions',
 'modify_vpc_peering_connection_options',
 'modify_vpc_tenancy',
 'modify_vpn_connection',
 'modify_vpn_tunnel_certificate',
 'modify_vpn_tunnel_options',
 'monitor_instances',
 'move_address_to_vpc',
 'provision_byoip_cidr',
 'purchase_host_reservation',
 'purchase_reserved_instances_offering',
 'purchase_scheduled_instances',
 'reboot_instances',
 'register_image',
 'reject_transit_gateway_vpc_attachment',
 'reject_vpc_endpoint_connections',
 'reject_vpc_peering_connection',
 'release_address',
 'release_hosts',
 'replace_iam_instance_profile_association',
 'replace_network_acl_association',
 'replace_network_acl_entry',
 'replace_route',
 'replace_route_table_association',
 'replace_transit_gateway_route',
 'report_instance_status',
 'request_spot_fleet',
 'request_spot_instances',
 'reset_ebs_default_kms_key_id',
 'reset_fpga_image_attribute',
 'reset_image_attribute',
 'reset_instance_attribute',
 'reset_network_interface_attribute',
 'reset_snapshot_attribute',
 'restore_address_to_classic',
 'revoke_client_vpn_ingress',
 'revoke_security_group_egress',
 'revoke_security_group_ingress',
 'run_instances',
 'run_scheduled_instances',
 'search_transit_gateway_routes',
 'send_diagnostic_interrupt',
 'start_instances',
 'stop_instances',
 'terminate_client_vpn_connections',
 'terminate_instances',
 'unassign_ipv6_addresses',
 'unassign_private_ip_addresses',
 'unmonitor_instances',
 'update_security_group_rule_descriptions_egress',
 'update_security_group_rule_descriptions_ingress',
 'waiter_names',
 'withdraw_byoip_cidr']
None
#S3
s3_res = boto3.resource('s3')
for bucket in s3_res.buckets.all():
    print(bucket.name)
minman
bucket_name = 'minman'
s3_res = boto3.resource('s3')
each_bucket = s3_res.Bucket(bucket_name)
version = each_bucket.objects
for ver in version.all():
    print(ver.bucket_name)
    print(ver.key)
    print(ver.storage_class)