Freesunny

EC2 - curl 명령으로 public IP 확인하는 방법

AWS

curl 명령으로 할당된 public ip를 확인할 수 있다.

# public ip 출력
curl http://169.254.169.254/latest/meta-data/public-ipv4

[awscli] s3 버킷 라이브사이클 설정

AWS

# 설정 확인

# aws s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME
{
    "Rules": [
        {
            "ID""Convert IA",
            "Filter": {
                "Prefix"""
            },
            "Status""Enabled",
            "Transitions": [
                {
                    "Days"30,
                    "StorageClass""STANDARD_IA"
                }
            ],
            "AbortIncompleteMultipartUpload": {
                "DaysAfterInitiation"7
            }
        }
    ]
}
 

 

# 설정 삭제

# aws s3api  delete-bucket-lifecycle --bucket BUCKET_NAME

 

# 설정 추가

# aws s3api put-bucket-lifecycle-configuration --bucket BUCKET_NAME --lifecycle-configuration file://LIFECYCLE_POLICY.JSON

 

[awscli] 볼륨 출력

AWS

인스턴스에서 사용 중인 볼륨 출력 (인스턴스에 Attached 되어 있는)

$ aws ec2 describe-volumes --region ap-northeast-2 \
  --filters Name=status,Values=in-use --query 'Volumes[].VolumeId'

$ aws ec2 describe-volumes --region ap-northeast-2 \
  --filters Name=attachment.status,Values=attached --query 'Volumes[*].VolumeId'

 

 

인스턴스에 연결되어 있지 않은 볼륨 출력 (인스턴스에 Detached 되어 있는)

$ aws ec2 describe-volumes --region us-east-1 \
  --filters Name=status,Values=available --query 'Volumes[].VolumeId'

 

 

특정 tag 가 있는 볼륨 출력 (zsh에서는 오류 발생 bash 실행)

$ aws ec2 describe-volumes --region ap-northeast-2 \
  --filters Name=tag:kubernetes.io/cluster/test-cluster,Values=* \
  --query 'Volumes[*].VolumeId[]'

 

 

특정 tag 의 특정 값이 있는 볼륨 출력

$ aws ec2 describe-volumes --region ap-northeast-2 \
  --filters Name=tag:kubernetes.io/cluster/test-cluster,Values=owned \
  --query 'Volumes[*].VolumeId[]'

 

 

특정 tag가 지정되지 않는 볼륨 출력

$ aws ec2 describe-volumes --region ap-northeast-2 \
  --query 'Volumes[?Tags[?Key != `Serivce`]].VolumeId'

[Python] credentials 파일 내에 profile 사용하는 방법

AWS

~/.aws/credentials 파일에 여러 개의 profile 이 있을 경우에 profile 을 선택하는 방법이다.

import boto3

def ListEc2InstanceId(profile, region):
	session = boto3.Session(profile_name=profile)
	ec2 = session.resource('ec2', region_name=region)

	for instance in ec2.instances.all():
		print(instance.id, instance.instance_type)

if __name__ == '__main__':
	ListEc2InstanceId('dev', 'ap-northeast-2')

[Python] 미사용 Elastic IP 확인 및 릴리즈

AWS

미사용 Elastic IP 확인 및 릴리즈를 하는 방법

import boto3

client = boto3.client('ec2', region_name='ap-southeast-1')

addresses_dict = client.describe_addresses()
for eip_dict in addresses_dict['Addresses']:
    if "NetworkInterfaceId" not in eip_dict:
        print(eip_dict['PublicIp'])
        client.release_address(AllocationId=eip_dict['AllocationId'])

[Python] EC2 인스턴스의 Public IP 와 Ip Owner ID 확인

AWS

아래의 명령으로 해당 EC2 인스턴스의 public ip 와 ip owner id 를 확인할수 있다.

  

import boto3

ec2 = boto3.resource('ec2', region_name='ap-northeast-2')

instance = ec2.Instance('i-0f129db467cc63be9')

for network in instance.network_interfaces_attribute:
    publicip = network.get('Association')
    print(publicip.get('PublicIp'), publicip.get('IpOwnerId'))

 

IpOwnerId 가 'amazon' 이면 Elastic IP가 아니다.

## 결과 예시 ##

54.180.125.255 amazon

 

IpOwnerId가 AWS Account ID 가 출력되면 Elastic IP 이다.

## 결과 예시 ##

13.124.148.58 552573234252

[awscli] EC2 인스턴스에서 사용하는 Public IP 출력

AWS

아래의 명령으로 EC2 인스턴스에 할당된 Public IP를 확인 가능하다.

# aws ec2 describe-instances --region ap-northeast-2 \
  --filters Name=instance-id,Values=i-0f129db467cc63be9 \
  --query 'Reservations[].Instances[].NetworkInterfaces[].PrivateIpAddresses[].Association.PublicIp'

 

[awscli] 특정 EC2 인스턴스 정보 출력

AWS

아래의 명령으로 인스턴스의 정보를 출력할 수 있다.

# aws ec2 describe-instances --region ap-northeast-2 \
  --filters Name=instance-id,Values=i-0f129db467cc63be9 \
  --query 'Reservations[].Instances[]'