https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-server-refused-our-key/


처음 인스턴스를 생성할 때 다운로드 했던 pem 파일을 찾지 못한다면... 사망!! 처음부터 다시 구축하던가 백업해둔 이미지로 다시 생성!!


1. 해당 인스턴스를 실행 중지 시키고.. 


2. 작업 > 인스턴스 설정 > 사용자 데이터 보기/변경을 선택 (인스턴스가 완전히 종료되지 않은 상태에서 변경 불가)


3. 아래 코드를 붙여넣기 한 다음


#cloud-config
ssh_deletekeys: false
ssh_authorized_keys:
cloud_final_modules:
  - [ssh, always]

4. puttygen을 연 후, load 버튼을 눌러 저장해둔 pem 파일을 연다.


5. 그러면 상단 텍스트 박스에 public key 텍스트가 출력되는데 ssh-rsa로 시작하는 텍스트부터 끝까지 복사를 한다.


6. 붙여넣기 했던 위 코드 중 ssh_authorized_keys:  바로 옆에 복사한 내용을 붙여넣는다. 


7. 저장 하고 인스턴스를 다시 시작한다.


8. 다시 연결되는 것을 확인할 수 있다. 


위 링크의 내용을 그대로 가져왔지만 붙여 넣기 할 때 주의가 필요함. 

EC2 대시보드 -> 인스턴스 -> 인스턴스 시작 


여기서는 Amazon Linux AMI를 선택하려 한다. 




인스턴스 유형은 t2.micro (역시 프리 티어 사용 가능 ) 선택 후 "검토 및 시작" 버튼. 


 (인스턴스 구성 및 스토리지 추가 등이 필요하면 각 상세 항목을 설정할 수 있다. 각 항목은 추후 필요할 때 다시 설정할 예정이니 여기서는 넘어가자.)



"시작" 버튼을 누르면 키페어에 대한 질의가 나온다. "새 키 페어 생성"을 눌러보자.


키 페어 이름을 넣은 후 "키 페어 다운로드"를 해서 pem 파일을 만들어두자. 원격 제어를 위해 접근하려면 꼭 필요하다. 





그리고 인스턴스를 시작하면 생성 후 가동된다. 


이제 터미널에서 접속하는 과정을 보자. 


일단 다운받은 pem 파일을 원하는 위치에 놓고 터미널에서 해당 폴더로 이동한다.


그리고 pem 파일 권한에 읽기 권한을 아래와 같이 부여한다.


chmod 400 yourfilename.pem



그리고 터미널에서 ssh로 바로 접속해보자.


ssh -i yourfilename.pem ec2-user@yourec2domain


이제 EC2로 바로 접속할 수 있다. 


참고로 EC2 인스턴스를 활성화 시킨 후 재부팅 등이 이루어지면 IP와 도메인이 변경된다. 고정 IP를 할당하자면 비용이 추가되니 필요에 따라 선택이 필요하다. 









AWS 문서를 따라 했지만 안되는 문제가 발생했다. (공식 문서)


아래와 같은 방법으로 처리해야 whitelist를 적용할 수 있다.


1. 해당 bucket의 권한 탭에서 "버킷 정책"을 선택. 아래와 같이 정보를 입력한다.


{

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

    "Id": "Policy......",

    "Statement": [

        {

            "Sid": "WhiteListfor",

            "Effect": "Deny",

            "Principal": "*",

            "Action": "s3:*",

            "Resource": "arn:aws:s3:::your-bucket-name/*",

            "Condition": {

                "NotIpAddress": {

                    "aws:SourceIp": "Ip address range to allow"

                }

            }

        }

    ]

}

2. 해당 버킷의 필요한 파일, 폴더에 "everyone 읽기 속성"을 부여한다.


이렇게 하면 원하는 IP 대역에서만 접근이 가능해진다.


POST로 json데이터를 전달할 때,


서버 트리를 가지는 구조를 전달하면 400 bad request 를 리턴한다.


문제가 되는 구조는 아래와 같다. 


{ "msg" : { "to": "you", "from":"me"}}


text/plain으로 지정해서 보내봤지만 에러는 계속 발생한다. 



이를 아래와 같은 단일 구조로 만들어서 보내야 한다.


{"msgTo": "you", "msgFrom":"me"}




인증을 설정하지 않았어도 일반적인 웹브라우져에 주소를 입력하는 방식으로는 


{"message":"Missing Authentication Token"}  


이라는 메세지만 볼 수 있다.


Unity c# 코드를 기준으로 테스트를 해 보았다. 


----- UntyWebRequest 사용 시


WWWForm form = new WWWFrom();

form.AddField("test", "value");

UnityWebRequest www = UnityWebRequest.Post(apiAddr , form);

yield return www.SendWebRequest();     >> 실패. API 문서를 봐도 이 코드가 실패할 이유는 없는 듯 한데.. 안됨.


(* 참고 코드 : https://docs.unity3d.com/Manual/UnityWebRequest-SendingForm.html )



----- WWW 사용 시


string dataString ="json format data";

var encoding = new System.Text.UTF8Encoding();

Hashtable header = new Hashtable();

header.Add("Content-Type", "text/json");

header.Add("Content-Length", dataString.Length);

WWW www = new WWW(apiAddr, encoding.GetBytes(dataString));

yield return www;         >> 성공. 



음.. 무슨 차이지.. 당연히 UnityWebRequest API 공식 메뉴얼을 보고 코드를 작성했는데, 수동으로 헤더 설정해서 보낸 것과 무슨 차이가 발생하는걸까. 


-_-+++++++




mobile analytics에 기록되는 정보는 기본적으로 2 주가 지나면 자동으로 삭제되는데, 중요한 데이터를 s3에 저장하고 싶을 때 사용할 수 있다. 



하단 링크 참고

https://aws.amazon.com/ko/blogs/aws/new-auto-export-for-amazon-mobile-analytics/



인생 처음 참가해 본 행사. 게임을 만드는 직종에 종사하고 있었기에 게임 개발 대회 같은건 생각도 안해봤다. 


그리고 당일 모든 작업을 마쳐야 된다고 생각하고 있어서, 힘들지 않을까 했는데..


이 행사는 aws의 시스템을 잘 활용한 예제를 만들기 위한 행사였기에 사전에 가능한 많은 준비를 해오길 원했던 것!! 그걸 행사 5일전에 겨우 알았고, 나와 나의 팀원 1명은 화요일에 이 행사에 대한 아이디어를 구성하기 시작했다. 


처음이고 하니 입상보다는 차기작에 AWS 도입을 위해 공부를 하자는 취지로 시작. 나중에 생각해보니 같이 참여한 팀원은 디자이너 였기 때문에, 아마 입상했으면 하는 생각과 자신의 능력을 시험해 볼 기회라고 생각하지 않았을까.


그런데 막상 3등 (그것도 1등이 2팀에 11팀 신청에 최종 남은 팀은 7팀중에) 하고보니 별의 별 후회가 다 한번에 몰려오더라.


그래도 이런 행사가 어떻게 진행되는지도 알았고, 다음에는 1등 해보자는 결의도 해보고, 특히 Unity와 AWS에 대해서 짧은 기간에 집중적으로 공부할 수 있었던게 큰 도움이 되었다. 


여러모로 재밌었고, 조금 부끄럽지만 그래도 3등해서 상품도 받았고... (아직 실물은 손에 없지만.. ㅋ)


인상적이었던건 AWS 직업분들이 정말 너무 잘 도와주셨다. 자사 제품 행사니까 그렇겠지만 그런걸 떠나서도 인간적으로, 행사 당일 준비도 거의 쵝오였다. 


다음에 다시 한번 참여해서 꼭 1등 해야지 +_+






아.. 그리고 당일 모든 팀 중, Windows PC를 사용하는 인원은 우리 둘 뿐 이었음. ;; 맥.. 사야되나.

  1. 이우상 2015.09.07 14:56 신고

    멋졌습니다 :)
    파도 한 번이나 괴물이 한 번 치면 죽는 설정이 기억에..ㅎㅎ
    그리고 불특정한 유저에게서 받는 유리병은 정말 재미있었습니다!

    • 가끔.하늘 가온아 2015.09.10 12:20 신고

      감사합니다. ^^ 올해안에 진짜 릴리즈를 ... 할 지도.. 모르지만.. 하여간.. 저도 즐거웠어요. ^^

Putty로 접속하기


http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/putty.html



EC2에 파일 업로드하기


http://arisu1000.tistory.com/27557

+ Recent posts