검색결과 리스트
IT/Python3에 해당되는 글 22건
- 2020.10.14 문자열 대소문자 스왑 및 조건체크 빌트인함수
- 2020.10.14 파이썬3 Permutation
- 2020.10.14 파이썬 중복되는 공백 제거 및 스트링 재변환
- 2020.10.14 파이썬 날짜 비교
- 2020.08.17 AWS EBS 네임태그 자동화 람다
- 2020.08.10 AWS ELB 네임태그 생성 자동화 스크립트
글
문자열 대소문자 스왑 및 조건체크 빌트인함수
def swap_case(s):
result = ""
for i in s:
if i.islower() :
i = i.upper()
elif i.isupper() :
i = i.lower()
result = result + i
return result
if __name__ == '__main__':
s = input()
result = swap_case(s)
print(result)
# 스트링 정규식 빌트인함수
# isalnum() isalpha() isdigit() islower() isupper()
exit(0)
def 빌트인_정규표현식(string, case):
list_input = list(string)
if case == 1:
for e in list_input:
if e.isalnum():
return True
elif case ==2:
for e in list_input:
if e.isalpha():
return True
elif case ==3:
for e in list_input:
if e.isdigit():
return True
elif case ==4:
for e in list_input:
if e.islower():
return True
elif case ==5:
for e in list_input:
if e.isupper():
return True
return False
if __name__ == '__main__':
s = input()
print(f"{빌트인_정규표현식(s,1)}")
print(f"{빌트인_정규표현식(s,2)}")
print(f"{빌트인_정규표현식(s,3)}")
print(f"{빌트인_정규표현식(s,4)}")
print(f"{빌트인_정규표현식(s,5)}")'IT > Python3' 카테고리의 다른 글
| 파이썬 세트 연산 - 1 (0) | 2020.10.16 |
|---|---|
| 파이썬 람다식 예시 (0) | 2020.10.16 |
| 파이썬3 Permutation (0) | 2020.10.14 |
| 파이썬 중복되는 공백 제거 및 스트링 재변환 (0) | 2020.10.14 |
| 파이썬 날짜 비교 (0) | 2020.10.14 |
글
파이썬3 Permutation
# 퍼뮤테이션.
# 콜렉션을 통해, 가능한 모든 조합 서브콜렉션을 탄생시키는 라이브러리
from itertools import permutations
def 퍼뮤테이션(string, k) :
퍼뮤테이션_결과리스트 = list(permutations(string,k))
정렬출력위한_리스트 = []
for i in 퍼뮤테이션_결과리스트:
정렬출력위한_리스트.append("".join(i))
정렬출력위한_리스트.sort()
for i in 정렬출력위한_리스트:
print(i)
if __name__ == "__main__":
입력값 = input().split()
퍼뮤테이션(입력값[0], int(입력값[1]))'IT > Python3' 카테고리의 다른 글
| 파이썬 람다식 예시 (0) | 2020.10.16 |
|---|---|
| 문자열 대소문자 스왑 및 조건체크 빌트인함수 (0) | 2020.10.14 |
| 파이썬 중복되는 공백 제거 및 스트링 재변환 (0) | 2020.10.14 |
| 파이썬 날짜 비교 (0) | 2020.10.14 |
| AWS EBS 네임태그 자동화 람다 (0) | 2020.08.17 |
글
파이썬 중복되는 공백 제거 및 스트링 재변환
#AWS 시스템매니저 & SSM 을 이용한 프로세스 체크용 유틸
데이터 = 'root 12345 1 0 Sep28 ? 01:34:51 java -Xms1024m -Xmx4096m -Djava....jar'
b = " ".join(데이터.split()).split(" ")
for idx, value in enumerate(b) :
print(f"{idx} / {value}")'IT > Python3' 카테고리의 다른 글
| 문자열 대소문자 스왑 및 조건체크 빌트인함수 (0) | 2020.10.14 |
|---|---|
| 파이썬3 Permutation (0) | 2020.10.14 |
| 파이썬 날짜 비교 (0) | 2020.10.14 |
| AWS EBS 네임태그 자동화 람다 (0) | 2020.08.17 |
| AWS ELB 네임태그 생성 자동화 스크립트 (0) | 2020.08.10 |
글
파이썬 날짜 비교
from datetime import datetime
현재시간 = datetime.today()
기준시간1 = datetime(현재시간.year, 현재시간.month, 현재시간.day, 8,0,0)
기준시간2 = datetime(현재시간.year, 현재시간.month, 현재시간.day, 15,0,0)
if 기준시간1 <= 현재시간 and 현재시간 <= 기준시간2 :
print("문자 발송 가능시간")
else :
print("가능시간 아님")
print(현재시간)
-----------------------
[유닉스 에포치 타임으로도 가능]
시작원본 = datetime(2020,9,24,0,0,0).timestamp()
종료원본 = datetime(2020,9,24,23,59,59).timestamp()
기준1 = datetime(2020,9,24,9,0,0).timestamp()
기준2 = datetime(2020,9,24,13,0,0).timestamp()
기준3 = datetime(2020,9,24,18,0,0).timestamp()
예시_에포치타임 = 1600915320 #2020년 9월 24일 목요일 오전 12:00:00 #1600873200
# 1600873200 (0시)
# 1600873800 (0시 10분)
# 1600915320 (11시 42분)
print(datetime.fromtimestamp(예시_에포치타임))
if 기준1 <= 예시_에포치타임 and 예시_에포치타임 <= 기준2 :
print("범위 안에 들어왔다")
elif 기준2 <= 예시_에포치타임 and 예시_에포치타임 <= 기준3 :
print("2번 범위안에 들어왔다")
else :
print("범위 바깥")'IT > Python3' 카테고리의 다른 글
| 파이썬3 Permutation (0) | 2020.10.14 |
|---|---|
| 파이썬 중복되는 공백 제거 및 스트링 재변환 (0) | 2020.10.14 |
| AWS EBS 네임태그 자동화 람다 (0) | 2020.08.17 |
| AWS ELB 네임태그 생성 자동화 스크립트 (0) | 2020.08.10 |
| 파이썬 (Python) 리스트 (3) - 리스트 슬라이싱과 역인덱스 (0) | 2020.05.18 |
글
AWS EBS 네임태그 자동화 람다
클라우드 개발자 앙몬드의 람다를 정리하다보니, 구 버전 파이썬 람다를 살펴
볼일이 요즘 많습니다.
쿠버네티스에 대한 파이썬 스크립트를 사용하다보니, 과거 보토스 (boto3) 에 대한 AWS API들을 살펴보고 있죠.
오늘은 그와 더불어, 제가 EC2 에 탑재된 EBS 볼륨의 태그 네이밍을 자동화하는 람다를 리뷰할 겸, 본 글을 올립니다.
해당 이슈는, 본 블로그의 하기 테마로 분류되어 있습니다.
devloper-angmond.tistory.com/10?category=867517
AWS 태그 네이밍 람다 스크립트 트러블슈팅 일지
오늘은 참 신기한 일이 있었댜... 어쩌면 지금까지 맹신하고 있었던 AWS 리소스들에 대한 API 명세서를 다시 한번 읽어보아야겠다는 의심을 가지는 하루.. 먼저 플랫폼에 대한 아키텍처를 하기와 �
devloper-angmond.tistory.com
import boto3
import os
import sys
import uuid, json
from urllib.parse import unquote_plus
"""
EC2 인스턴스 네이밍을 이용한, EBS 네임태그 자동화 람다
@auth : 클라우드 개발자 앙몬드
@since : 2020-05-20
* 확인 이슈
(1) EC2 고정 인스턴스의 경우, 내 소유의 인스턴스로 판단하여, ec2.describe_instances() 결과로 포함되나,
ECS (도커스웜) / EKS (쿠버네티스) 로 스케일링아웃 (ASG그룹) 된 인스턴스들은,
결과가 포함되지 않는 이슈가 있어, 100% EBS 네임태그 자동화가 불가함.
(2) 상기 이슈에 대해서는 AWS 확인 필요
(3) 참조 레퍼런스
- https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/ec2.html#EC2.Client.describe_instances
* ec2.describe_instances API 명세서 요약
Describes the specified instances or all of AWS account's instances.
If you specify one or more instance IDs, Amazon EC2 returns information for those instances.
If you do not specify instance IDs, Amazon EC2 returns information for all relevant instances.
If you specify an instance ID that is not valid, an error is returned.
If you specify an instance that you do not own, it is not included in the returned results.
...(이후 생략)
"""
# ebs-name-tagging-lambda
def lambda_handler(event, context):
# (0) ec2 클라이언트 오픈 & 현재 어카운트의 인스턴스 정보 get
list_ec2_instances = boto3.client('ec2').describe_instances(MaxResults=999)["Reservations"]
print("원본 개수 : " + str(len(list_ec2_instances)))
# 콘솔 상의 EC2 인스턴스 개수와, CLI / boto3-sdk 인스턴스 개수와 다르다면,
# 해당 어카운트의 인스턴스가 스케일 아웃된 사례가 존재하는 것으로 판단함.
# (1) ec2 클라이언트 오픈 & 현재 어카운트의 인스턴스 정보 get
list_dict_of_instances_for_ebs_naming = []
for instance in list_ec2_instances :
instance = instance["Instances"][0]
list_dict_of_instances_for_ebs_naming.append(
{
"InstanceId" : instance["InstanceId"], # 인스턴스의 ID
"Tags" : instance["Tags"], # 해당 인스턴스의 태그 전체 (Name 포함)
"EBS" : instance["BlockDeviceMappings"], # 해당 인스턴스에 붙은 EBS 정보
}
)
# (2) EC2 인스턴스에서 가져온 볼륨 정보를 통해, EBS 네임태그 생성.
# 볼륨에 접근하기 위해서는, client가 아니라 resource 레벨에서 접근해야합니다.
ec2 = boto3.resource('ec2')
for instance in list_dict_of_instances_for_ebs_naming :
# (a) 인스턴스의 네임 태그값을 추출한다.
instance_name = ""
for dict_tag in instance["Tags"] :
if dict_tag["Key"] == "Name" :
instance_name = dict_tag["Value"]
break
# (b) 2개 이상의 볼륨이, 한 인스턴스에 마운트된 경우도 있으므로,
# instance["EBS"] 에 대하여 루프를 태운다.
# 루프 안에서는 하기와 같은 작업을 실행한다.
# (b-1) a에서 추출한 인스턴스 이름을 이용하여, EBS 네임태그를 룰에 맞게 생성한다.
# (b-2) EBS 볼륨 id를 추출해, EBS 네임태그를 생성한다.
# (EBS 네임태그 예시) vol-ec2-prd-seoul-bo-01/dev/xvda
for ebs_info in instance["EBS"]:
#(b-1)
ebs_tag_name = "vol-" + instance_name + ebs_info["DeviceName"]
#(b-2)
tag = ec2.Volume(ebs_info["Ebs"]["VolumeId"]).create_tags(
Tags=[ { 'Key': 'Name', 'Value': ebs_tag_name } ]
)'IT > Python3' 카테고리의 다른 글
| 파이썬 중복되는 공백 제거 및 스트링 재변환 (0) | 2020.10.14 |
|---|---|
| 파이썬 날짜 비교 (0) | 2020.10.14 |
| AWS ELB 네임태그 생성 자동화 스크립트 (0) | 2020.08.10 |
| 파이썬 (Python) 리스트 (3) - 리스트 슬라이싱과 역인덱스 (0) | 2020.05.18 |
| 파이썬 (Python) 리스트 (2) - 리스트 제어 함수 (0) | 2020.04.19 |
글
AWS ELB 네임태그 생성 자동화 스크립트
이전에 람다를 만들 때 실력이 쬐끔 녹스는 느낌이 들기에, 복습겸 공유겸 ELB 태그 네임 자동화 스크립트를 한번 쭉 훑어보고 있습니다.
퓨어한 파이썬3의 문법 내용은 아니므로, 스크립트 스캔 시 유의!
본 글은, ECS 클러스터 인스턴스 태그 네이밍 자동화 시, 같이 개발된 파이썬 런타임 람다 스크립트입니다.
devloper-angmond.tistory.com/10?category=867517
AWS 태그 네이밍 람다 스크립트 트러블슈팅 일지
오늘은 참 신기한 일이 있었댜... 어쩌면 지금까지 맹신하고 있었던 AWS 리소스들에 대한 API 명세서를 다시 한번 읽어보아야겠다는 의심을 가지는 하루.. 먼저 플랫폼에 대한 아키텍처를 하기와 �
devloper-angmond.tistory.com
import boto3
import os
import sys
import uuid, json
from urllib.parse import unquote_plus
"""
ELB 유니크 네임을 이용한, ELB 네임태그 자동화 람다
@auth : 클라우드 개발자 앙몬드
@since : 2020-08-10
"""
# elb-name-tagging-lambda
# (CLB + ALB + NLB)
def lambda_handler(event, context):
# (0) ELB 버전_1 (Classic Load Balancer) 커넥터 생성
clb = boto3.client('elb')
list_clb = clb.describe_load_balancers()["LoadBalancerDescriptions"]
# (1) ELB 버전_1 에 대하여, Name 태그 추가하기
for lb in list_clb :
clb.add_tags(
LoadBalancerNames = [ lb["LoadBalancerName"] ],
Tags = [
{
"Key" : "Name",
"Value" : "clb-" + lb["LoadBalancerName"],
}]
)
# (2) ELB 버전_2 (ALB & NLB) 커넥터 생성
elbv2 = boto3.client('elbv2')
list_elbv2 = elbv2.describe_load_balancers()["LoadBalancers"]
# (3) ELB 버전_2에 대하여, Name 태그 추가하기
# ELB_v2 는, 네트워크로드밸런서 & 어플리케이션로드밸런서, 타입이 2개이므로, 이에 따라 네이밍 분기조건이 필요
for lbv2 in list_elbv2:
lbv2_tag_name = ""
if lbv2["Type"] == "application" :
lbv2_tag_name = "alb-" + lbv2["LoadBalancerName"]
else :
lbv2_tag_name = "nlb-" + lbv2["LoadBalancerName"]
elbv2.add_tags(
ResourceArns=[ lbv2["LoadBalancerArn"] ],
Tags=[
{
'Key': 'Name',
'Value': lbv2_tag_name
}]
)'IT > Python3' 카테고리의 다른 글
| 파이썬 날짜 비교 (0) | 2020.10.14 |
|---|---|
| AWS EBS 네임태그 자동화 람다 (0) | 2020.08.17 |
| 파이썬 (Python) 리스트 (3) - 리스트 슬라이싱과 역인덱스 (0) | 2020.05.18 |
| 파이썬 (Python) 리스트 (2) - 리스트 제어 함수 (0) | 2020.04.19 |
| 파이썬 (Python) 리스트 (1) - 리스트를 만들어보쟈 (0) | 2020.04.15 |