2016년 8월 24일 수요일

[AWS] CLI Profile 이용 region 을 변경해가며 사용해보기

여러곳의 리전이나 유저를 생성하려면 profiles 을 만들어서  CLI 를 이용할 수 있다.

먼저 credentials 에서 user 의 access key id 와 secret key 를 입력하고
~/.aws/credentials

config 파일에서 region 을 선택해주면 해당 region 을 이용가능하다.
~/.aws/config

사용은 아래와 같이 하면 된다.

내경우는 서울과 도쿄의 리전을 프로파일을 만들어 아래와 같이 리전 값드를 불러오거나 생성할 때 사용하니 편리한것 같다.

aws ec2 describe-instances --profile seoul

aws ec2 describe-instances --profile tokyo
aws ec2 describe-instances --profile oregon

각 리전의 security 그룹복사를 할수 없어 해당 스크립트들을 만들어서 사용하니 편함..


아래는 AWS 공식 가이드이다.  참고하길.

Named Profiles
The AWS CLI supports named profiles stored in the config and credentials files. You can configure additional profiles by using aws configure with the --profile option or by adding entries to the config and credentials files.
The following example shows a credentials file with two profiles:
~/.aws/credentials
[default]
aws_access_key_id=AKIAIOSFODNN7EXAMPLE
aws_secret_access_key=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

[user2]
aws_access_key_id=AKIAI44QH8DHBEXAMPLE
aws_secret_access_key=je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY
Each profile uses different credentials—perhaps from two different IAM users—and can also use different regions and output formats.
~/.aws/config
[default]
region=us-west-2
output=json

[profile user2]
region=us-east-1
output=text
Important
The AWS credentials file uses a different naming format than the CLI config file for named profiles. Do not include the 'profile ' prefix when configuring a named profile in the AWS credentials file.

Using Profiles with the AWS CLI

To use a named profile, add the --profile option to your command. The following example lists running instances using the user2 profile from the previous section.
$ aws ec2 describe-instances --profile user2



[NAT] AWS 인스턴스로 NAT 구성해보기


AWS 에서 제공하는 NAT 을 이용해도 되지만 범용으로 사용하기 위해 인스턴스에 NAT 기능을 주고 이용
하기 위해 인스턴스에  NAT 구성을 하는 법을 알아 보겠습니다.

먼져 인스턴스를 생성한후 route Table 에 생성한 인스턴스를 라우트테이블에 할당 해주고, NAT 으로 설정된 인스턴스에서 IP forword 를 활성화 해주면 NAT  이 됩니다. 물론 방화벽 설정(Security Group 설정)은 해줘야합니다.

아래 내용대로 진행하면 문제 없이 되는것 같네요..


AWS 콘솔에서 하는 설정

1. Instance 생성

2. Source Destnation Check 해제
이것을 해제 하지 않으면 들어오는 패킷이 폐기 됩니다.

3. 라우팅 테이블에
0.0.0.0/0 으로 향하는 패킷이 NAT 인스턴스로 향하도록 라우팅 테이블을 수정해줍니다.

4. Security Group 에서  In-bound 에 80 을 추가해줍니다.

모든 포트를 다 열어주면 모든 인터넷이 될것입니다. 하지만 보안상 취약할 수 있으므로

패키지 레파지토리를 업데이트 하거나 패키지설치를 위해  80 포트만 열어줍니다.

아래 설정은 ubuntu 14.04에서 수행한 것입니다.



NAT 인스턴스에서하는 설정

1. /etc/sysctl.conf ip forward 활성화
net.ipv4.ip_forward=1 
2. iptables 설정
 
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
3. 부티시 자동으로 부팅되도록 /etc/rc.local 에 iptable 설정 추가
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE