1. S3 버킷 설정



2. 설정 추가

{

   "Version":"2012-10-17",

   "Id":"S3PolicyId1",

   "Statement":[

      {

         "Sid":"IPAllow",

         "Effect":"Allow",

         "Principal":"*",

         "Action":"s3:*",

         "Resource":"arn:aws:s3:::examplebucket/*",

         "Condition":{

            "NotIpAddress":{

               "aws:SourceIp":"0.0.0.0/32"

            },

            "IpAddress":{

               "aws:SourceIp":[

                  "54.240.143.0/24",

                  "54.241.143.0/24"

               ]

            }

         }

      }

   ]

}


3. 관련문서

 - https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-3

'CLOUD > AWS' 카테고리의 다른 글

[S3] 특정 IP만 사용 가능하도록 설정하는 법  (0) 2018.06.19
AWS, java, S3

1. 기존 메소드


AmazonS3 s3Client = new AmazonS3Client(new BasicAWSCredentials(accessKey, secretKey));

 - 해당 메소드 수석을 참고하면 아래와 같다.

/**
* Constructs a new Amazon S3 client using the specified AWS credentials to
* access Amazon S3.
*
* @param awsCredentials
* The AWS credentials to use when making requests to Amazon S3
* with this client.
*
* @see AmazonS3Client#AmazonS3Client()
* @see AmazonS3Client#AmazonS3Client(AWSCredentials, ClientConfiguration)
* @deprecated use {@link AmazonS3ClientBuilder#withCredentials(AWSCredentialsProvider)}
*/
@Deprecated
public AmazonS3Client(AWSCredentials awsCredentials) {
this(awsCredentials, configFactory.getConfig());
}


2. 변경된 메소드

BasicAWSCredentials creds = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 s3client = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();


 - 리전을 추가할 경우

.withRegion(Regions.valueOf("AP_NORTHEAST_2"))


'프로그래밍 > JAVA' 카테고리의 다른 글

AWS s3 upload source Tip  (0) 2018.06.05
json schema validator 사용하기 - 02  (0) 2018.05.23
AmazonS3Client, deprecated!!!  (0) 2018.05.21
json schema validator 사용하기 - 01  (0) 2018.04.18
시스템 종료 후 File 삭제  (0) 2018.04.12
Java에서 Tuple 사용하기.  (0) 2018.04.11




Aws:reinvent 2017!! 다녀왔다.


첫 미국 방문이라 설렘반 기대반!! (출발 직전에 촬영!! 피곤함의 시작이다....)

직항으로 나름 편하겠다 싶었지만... 그냥 비행기 11시간은 힘들었다. 밤에 출발했지만, 도착하니 출발한 날 낮이였다. 처음 느껴보는 시차! 낮에는 졸리고 밤에는 정신이 말짱해지는 마법같은 곳! 적응을 하니 집에 돌아갈때가 다 되었다. 엄청나게 신기했다. 그리고 힘들었다.

날씨!
작년 2016년 리인벤트 참석자들 이야기로는 추웠다고해서 옷을 단단히 챙겼더니, 덥다. 현지인들은 반팔을 입고 다닌다. 신기할 뿐이다. 덕분에 north-outlet에서 지름을 할 때 내년 봄을 생각한 구매가 가능했다. 단지 저렴해서 지름이 조금 많았다. 

만약에 다음에 또 오게된다면 얇은 외투와 맨투맨을 많이 챙겨와야할듯하다. 또 굉장히 건조하니 '미스트'와 '수분크림', '립밤'은 필수 일듯하다. 

호텔!

메인 컨퍼런스장인 베니션으로 정했다. 이름 값이 있으니 당연히 좋을것 같았고, 이전에 베니션을 마카오에서 관광하며 다녀왔던 기억이 있어서 굉장히 기대를 하며 왔다.



방이 참 좋아보였다. 화장실 전기가 안되고... 다 씻고나니 불이 안들어오기 전까지는 ㅋㅋㅋㅋ 컨시어지에 고장났다고 말하니 너무 당연하다는 듯 수리해주더라 ㅋ 또 같은 층에 얼음이 나오는 기계가 있어서 시원하게.... 술을 마셧다 ㅋㅋㅋ 단점은 커피포트기 라던가 온수를 구할 방법이 없어서 편의점에서는 파는 라면을 못 먹어 봤다. 심각하게 판매중인 커피포트기를 구매할까 고민 했다..ㅋㅋㅋㅋ


통신.....


현지에서 prepaid sim card를 구매할 목적으로 따로 로밍이나 와이파이를 신청하지 않았다. 허나.... 이건 뭐 불만이 나올만 한 시스템인거 같다. AT&T로 구매했는데 LTE는 물론 툭하면 '서비스 불가'로 불편을 많이 느꼇고, 생각보다 평소에 속도차이가 심하다. 사람이 많다 싶은 곳에서는 그냥 느리다..... 빨리 한국가서 평온한 인터넷 환경을 느끼고 싶다! 역시 한국! 인터넷강국!!

참고로 도시락(와이파이)도 그리 상태가 좋지는 않았다.... 그리고 나는 'Fasion Show' 몰에 있는 AT&T 매장에서 구매했다. 베니션 호텔에서 제일 가까웠다.


우버 사용기
한국에서 제대로 사용해보지 못한 우버! 여기서는 필수다! 택시를 이용하는 것보다 훨씬 저렴하고 편하게 이곳 저곳을 다녔다. 기사님들이 친절하고, 우버 시스템도 안정적이라서 아~ 왜 사람들이 우버~ 우버~ 하는지 조금은 이해가 간다. 

출발전에 한국에서 신용카드와 인증을 해놓고 오는게 베스트일 듯 하다. 현지오면 이것저것 걸리는게 많아서 생각보다 귀찮다. 그리고 출발지는 항상 정해져있다. Ride Share 라는 곳으로 가서 부르면 된다. 

라스베거스 쇼!!

Las vegas wynn hotel!!에서 하는 '르레브(Le Reve) 쇼' 그리고 MGM hotel에서 하는 'ka 쇼'를 보았다. 시작부터 완성도가 높았던 르레브 쇼'와 무대장치가 정말 엄청났던 'ka쇼'. 시간이 된다면 쇼를 보는 걸 추천한다. 생각보다 규모가 크고, 생각보다 화려하다. 

(르레브 쇼)

(KA 쇼)



그랜드캐년!
예약했던 당일, 바람이 너무 많이 불어서 취소 또는 연기 또는 1시간 10분짜리 경비행기투어만 가능하다고 했다. 오기전에 경비행기만 타는건 그냥 영상보는거 같아서 별로라고 해서, 시간이 있으니 조금 미루자고 했다. 지금 생각해보면 엄청나게 잘한 선택같다. 일단 눈으로 봐야만 느낄 수 있는 곳이고, 그 느낌은 딱 어떤 단어로 표현할 수 없을 만큼 대단했다. 기회가 된다면 버스투어로 길게~ 또 더 깊게 들어가서 보고싶다.

경비행기 안에서 찍은 후버댐​



만약 11월달에 가게된다면 긴팔에 외투하나는 필수다. 생각보다 춥다. 해가 뜨면 조금 괜찮기는 하지만, 그 전까지는 덜덜덜 떨린다...

행사!
엄청나게 기대했던 Aws re:invent! But..... 서글픈 walk up seat.... 한시간을 기다렸는데 앞에서 sorry..... 아 진짜ㅠㅠ 조금만 더 빨리 예약할걸 이라는 생각도 들었다. 거기다 예약이 되서 편하게 입장한 세션들은 너무 뻔한 이야기들만해서 중간에 나온 세션도 있었다. (외국인들은 시작하고 조금 지나니, 우르르 나가더라. 본인이 아니다 싶으면 바로 나가는듯 했다.) 그래도 여기와서 느낀 점은 복도 좌우에 코드만 있다하면, 노트북을 켜고 코딩도 하고 무언가를 열심히 정리하고 있었다. 굉장히 열정적이라고 느꼇지만, 한편으로는 회사에서 연락이 와서 일하는건가?! 라고 생각이 들었다. 뭐가되었든 자극 받아서 나도 그들 옆에 앉아서 노트북을 켯다! 들었던 세션에 관련된 내용을 검색하고 정리하다보니, 기분이 묘~ 하더라~ 이렇게 열정적으로 학생때 공부를 했으면....ㅋㅋㅋㅋ

어딜가나 사람이 많았다...​



키노트!!!!!
항상 영상 또는 기사로만 봤던 키노트! 현장에서 보기위해 아침 6시에 눈도 제대로 못뜬 상태로 행사장으로 갔고, 한시간 가까이를 기다렸다. 동시통역이 있었지만, 부족한 영어실력으로 앤디제시가 폼나게 발표하는 내용을 집중해서 들었다. 차분하게 우린 이번에 이런걸 만들었어~ 이런것도 있고 아! 오라클은... 뭐.... 이런식으로 역시나 올해도 오라클 디스를 하고, 본인들은 재미난거 많아~ 그러니까 너네도 공부해서 써봐~ 엄청 좋아~~~~ 허나 그 이면에는 좋은데~ 비싸~~~ 가 있다ㅋㅋㅋ 무튼 작년처럼 트럭이 입장하는 임팩트는 없었지만 20가지 정도 되는 내용을 발표하는데, 와~~~ 하면서 aws 개발자들 엄청나게 힘들었겠다. 라고 생각이 들더라...ㅋㅋㅋ 무튼 좋은 자극 많이 받고 간다!!​

Aws re:invent에 참석하게 된다면 키노트는 무조건 필수다. 꼭 시작 시간보다 한시간은 일찍가서, 자리를 잡는게 중요하다!! 정말 신선한 자극이였다.


먹거리~~~

Lobster Me

시간이 된다면 베니션 2층에 있는 Lobster me를 방문해보기를 바란다. 굉장히 맛있다.


Joe`s !!

시저스에 있는 Joe`s ! 분위기가 상당히 좋았다. 단지 가격이 조금 비쌋지만 여기서 먹은 게요리와 새우는 맛있었다!!

TIP. 우버를 타고 가야한다면 시저스 호텔을 검색하지 말고, 음식점으로 검색해서 가는게 좋다. 호텔 정문에서 Joe`s까지는 생각보다 거리가 멀다. 또 Joe`s 바로 앞에 우버를 타고 내릴 수 있는 곳이 있다!


Wicked Spoon Buffet 

코스모폴리탄에 있는 뷔페! 메뉴도 다양하고 점심에 가면 저렴하게 배부르게 먹고 나올 수 있다. 특히 디저트가 일품이다. 


IN-N-OUT Buger

LinQ 옆에 있고, 한국에는 없는 버거라서 찾아갔는데 맛이 상당하다! 햄버거는 진짜 패티맛이구나!! 싶을 정도로 패티가 맛있고, 감자튀김도 기름지지 않아서 너무 좋았다. 가격도 저렴해서 100달러를 냇다가 의심을 받았었다 ㅋㅋㅋㅋ





귀국행 비행기를 타러가기전 작성하는 중인데, 참~ 자극많이 받고, 에너지 많이 충전해서 간다. 전세계 개발자들이 모이는 자리에 나도 참석을 했고, 그들이 모여 그들이 가진 고민을 전혀다른 사람들과 이야기를 통해 해결해가는 듯한 모습들을 보면서, 내가 조금만 더 영어를 잘했다면, 그들과 함께 내 고민도 해결해주겠니? 하고 대화에 끼어 들었을테지만, 생각보다 용기가 쉽게 나지를 않았다. 그게 제일 큰 아쉬움이었다. 

다음에 기회가 또 된다면 그때는 '해커톤'에도 참석해보고 싶고, 여러 개발자들과 이야기도 많이 나눠보고 싶다. 


(미국시간)2017년 12월 1일 15시 49분 라스베거스 베니션 호텔 스타벅스에서... 비행기를 기다리며 ㅠ_ㅠ


'개인 > 단상' 카테고리의 다른 글

2018-06-05 : Cloud Native Day in seoul  (0) 2018.06.05
2018-05-01  (0) 2018.05.01
Aws re:invent 2017! 후기  (0) 2017.12.02
2016-10-01  (0) 2016.10.01
2016-09-08  (0) 2016.09.08


* 시작전 필요사항

 - Elastic Stack에 대한 사전 지식

 - ElasticSearch가 설치되어 있어야함. ( https://www.google.co.kr/search?q=elasticsearch+install )

 - Logstash가 설치되어 있어야함. (https://www.google.co.kr/search?q=logstash+install)

 - Kibana가 설치되어 있어야함.(https://www.google.co.kr/search?q=kibana+install)


 - 해당 자료는 6.2.4 Set로 수정되었습니다.


1. 구성

  - ELB 로그를 S3에 저장한다.

  - Logstash로 간단하게 가지고와서, ElasticSearch에 넣는다.

  - Kibana로 간단하게 본다.


2. AWS Elb Log `ON`

 - AWS Console에서 쉽게 켤 수 있다.

 - https://docs.aws.amazon.com/ko_kr/elasticloadbalancing/latest/classic/access-log-collection.html

- 위에 S3 Location에 원하는 버킷 정보를 넣으면 된다.



3. Logstash Config 파일

 - config 파일



 - 실행 명령어

{LOGSTASH_PAHT}/logstash -f ''elb-access-logstash-conf.conf


4. ElasticSearch Index 확인하기

 - Rest API로 확인

curl -X GET 'http://localhost:9200/_cat/indices?v='


 - logstash-{날짜} 형태로 추가되어 있는지를 확인함.


5. Kibana 꾸미기

 1) Index Pattern 생성

  - Management에서 생성하면됨.

  - logstash-* 형태로 생성될 index들의 맵핑을 만들어 주면된다.


 2) Visualize 설정

  - 원하는 차트를 고르면된다.


  - Vertical Bar 로 표현할 예정



3) 차트 보기

 - 아래와 같이 설정하면 기본적인 차트를 볼 수 있음.

 - 필요한 형태로 변경하여 보면 됨.


6. 추가

 1) logstash로 생성한 모든 index 삭제

curl -X DELETE http://localhost:9200/logstash-%2A


 2) GeoIP

  - logstash Config 파일을 보면 Geoip 기능을 추가해놓음.

  - Map 으로 그려보면 재미남.


 3) 차트 꾸밀때 일정 설정...

  - 초기에 특정일자의 데이터만 수집해서 보는데, 데이터가 안나와서 삽질을 했다.

  - 시간을 최근 5분꺼만으로 세팅해놔서였다... 삽질하지말자!!



* 참고페이지

 - https://logz.io/blog/aws-elb-log-analysis/

 - https://medium.com/sharmin-anee/aws-elb-logs-from-s3-on-elk-stack-c463e2e2ec0

1. 환경

 - CF + ELB + EC2(nginx)

 

2. 문제

 - 클라이언트 ip주소에 ELB, CloudFront IP들이 덧씌워진다. (ex : 1.1.1.1, 2.2.2.2, 3.3.3.3)

 - ip deny or was에서 처리할때 문제가 발생한다.

 

3. 해결방법

 1) nginx real ip 기능(참고자료)

real_ip_header X-Forwarded-For;
set_real_ip_from 0.0.0.0/0;

 - 위 방법은 또 다른 문제를 발생 시킬 수 있음.

 - 아래 curl을 날려보자.

curl --header "X-Forwarded-For: 1.2.3.4" "http://example.com/"

  - nginx 로그를 켜서 보게되면 사용자 ip가 1.2.3.4로 나오게 될 겁니다.

 

2) nginx real ip + make-nginx-real-ip-conf(소스링크) 사용

 - make-nginx-real-ip-conf로 만든 conf 파일을 include 시킨다. 끝!

 - 아래는 make-nginx-real-ip-conf 프로그램으로 생성한 파일입니다.

#Make at 20170907162608
#your ELB IP
set_real_ip_from 110.0.0.0/8;
set_real_ip_from 172.16.0.0/12;
set_real_ip_from 192.168.0.0/16;

#AWS CloudFront IP/CIDR range
set_real_ip_from 13.113.203.0/24;
set_real_ip_from 13.124.199.0/24;
set_real_ip_from 13.228.69.0/24;
set_real_ip_from 13.32.0.0/15;
set_real_ip_from 13.54.63.128/26;
set_real_ip_from 13.59.250.0/26;
set_real_ip_from 204.246.164.0/22;
set_real_ip_from 204.246.168.0/22;
set_real_ip_from 204.246.174.0/23;
set_real_ip_from 204.246.176.0/20;
set_real_ip_from 205.251.192.0/19;
set_real_ip_from 205.251.249.0/24;
set_real_ip_from 205.251.250.0/23;
set_real_ip_from 205.251.252.0/23;
set_real_ip_from 205.251.254.0/24;
set_real_ip_from 216.137.32.0/19;
set_real_ip_from 34.195.252.0/24;
set_real_ip_from 34.226.14.0/24;
set_real_ip_from 35.158.136.0/24;
set_real_ip_from 35.162.63.192/26;
set_real_ip_from 35.167.191.128/26;
set_real_ip_from 52.15.127.128/26;
set_real_ip_from 52.199.127.192/26;
set_real_ip_from 52.212.248.0/26;
set_real_ip_from 52.220.191.0/26;
set_real_ip_from 52.222.128.0/17;
set_real_ip_from 52.46.0.0/18;
set_real_ip_from 52.52.191.128/26;
set_real_ip_from 52.56.127.0/25;
set_real_ip_from 52.57.254.0/24;
set_real_ip_from 52.66.194.128/26;
set_real_ip_from 52.78.247.128/26;
set_real_ip_from 52.84.0.0/15;
set_real_ip_from 54.182.0.0/16;
set_real_ip_from 54.192.0.0/16;
set_real_ip_from 54.230.0.0/16;
set_real_ip_from 54.233.255.128/26;
set_real_ip_from 54.239.128.0/18;
set_real_ip_from 54.239.192.0/19;
set_real_ip_from 54.240.128.0/18;
set_real_ip_from 2600:9000::/28;

# always put the following 2 lines in the bottom of ip list
real_ip_header X-Forwarded-For;
real_ip_recursive on;


3) make-nginx-real-ip-conf 란??

  - AWS에서는 사용중인 ip를  json으로 공유해줍니다.

  - 그중 CloudFront 대역 Ip v4, Ip v6만 파싱합니다.

  - 내부 아이피 대역을 추가합니다. (지인의 말리퀘로 추가된 부분입니다.)

  - nginx real ip에 필요한 CloudFront, ELB 대역만 정리하여 파일로 생성해주는 프로그램입니다.

  * 참고로 https://ip-ranges.amazonaws.com/ip-ranges.json 가 변경되는 내용을 AWS SNS Topic으로 받을 수 있고, 해당 이벤트로 람다를 실행 시킬 수 있습니다.

 

 

 

* 참고링크

 - http://serverfault.com/questions/331531/nginx-set-real-ip-from-aws-elb-load-balancer-address

1. Aws Console

 1) Connect 에서 정보 확인



 2) 받은 *.pem 파일을 ~/.ssh/ 에 저장

- mv .pem ~/.ssh/.pem


 3) 권한 설정

- chmod 400 *.pem


 4) Example에 있는 명령어 입력

- ssh -i .pem ec2-user@.compute.amazonaws.com


'OS > Mac' 카테고리의 다른 글

사용중인 포트 확인 및 닫기  (0) 2017.04.02
Mac Terminal에서 ll 사용하기  (0) 2017.02.17
Mac 터미널에서 EC2 접속하기  (0) 2016.08.13

+ Recent posts