Study

ARN이란 ?

TTOII 2022. 10. 18. 10:55
728x90

ARN이란 ? 

Amazon Resource Number의 약자로 AWS 서비스를 생성할 때 생성되는 일련번호를 말한다. 

AWS는 각각의 서비스에서 만든 리소스들을 ARN으로 구분하고 ARN이 다르면 서로 다르게 취급한다. 

 

ARN/파티션 구분자/서비스 명/리전/계정 번호 + 서비스마다 상세 구분자 

ex) arn:aws:lambda:region:account-id:function:function-name

 

람다 함수의 경우 상세 구분자로 function과 function-name이 있다. 

그 이유는 람다 함수에 layer라는 서비스도 있기 때문에 layer일 경우 layer:layer-name으로 구분지어준다.

 

람다 함수의 layer란 ?


공통으로 사용되는 패키지 또는 라이브러리를 압축하여 업로드 함으로써 여러 람다 함수에서 접근하여 코드 수정 없이 사용하는 것

 

여기서 중요한 것은 함수 이름이 다르면 완전히 다른 리소스로 처리한다는 것이다.

람다 함수의 이름을 바꾸고 싶다면 새로운 람다 함수를 만들어 소스 코드를 붙여넣기 하는 수 밖에 없다.

ARN에 함수 이름이 포함되기 대문에 완전히 다른 개체로 봐야하기 때문이다.

 

ARN은 많은 정보를 포함하고 있지만 가용 영역의 정보는 없다. 

그래서 가용 영역을 바꾼다고 했을 때 새로운 함수를 만들 필요가 없고 언제든 가용 영역이 바뀔 수 있다.

따라서 가용 영역 C에서 불이난다면 가용 영역을 A로 바꾸어 동작할 수 있는 것이다. 

 

ARN 형식은 IAM을 통해 권한을 설정할 때 많은 도움이 된다.

{ "Effect": "Allow", 
  "Action": "lambda:*", 
  "Resource": [ "     arn:aws:lambda:ap-northeast-2:964581251123123:function:lambda_api_billing",

해당 IAM 정책을 해석하면 lambda_api_billing이라는 lambda 함수의 모든 설정을 부여한다는 것이다.

 

또한, 콘솔로 생성한 리소스를 Terraform으로 관리하려 할 때 Terraform import 명령을 사용해야 하는데 이 때 arn이 필요하다.

 

 

ARN 예제

1. Elastic Beanstalk의 Application Version을 지정하기 위한 ARN
<!-- Elastic Beanstalk application version -->
arn:aws:elasticbeanstalk:us-east-1:123456789012:environment/My App/MyEnvironment


2. IAM의 User의 Name 자원을 지정하기 위한 ARN
<!-- IAM user name -->
arn:aws:iam::123456789012:user/David

3. RDS 인스턴스를 위한 ARN
<!-- Amazon RDS instance used for tagging -->
arn:aws:rds:eu-west-1:123456789012:db:mysql-db

 

 

 

참고

728x90