Copilot addons

hyeonjun

HyeonJun

Posted on June 13, 2022

Copilot addons

addons yml 설정하기

기본 템플릿은 아래와 같습니다.
경로는 copilot/{serviceName} 폴더 아래에 addons 폴더를 추가하고 {name}.yml 파일 추가하여서 작성하면됩니다.
최종 경로는 copilot/{serviceName}/addons/{name}.yml가 됩니다.

Parameters:
  App:
    Type: String
  Env:
    Type: String
  Name:
    Type: String

Resources:
  SQSAccessPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid:
            Effect:
            Action:
            Resource:
Outputs:
  SQSAccessPolicyArn:
    Description:
    Value: !Ref SQSAccessPolicy
Enter fullscreen mode Exit fullscreen mode

Parameters는 AWS Copilot에서 항상 요구하는 필수 항목입니다. (참고. copilot-cli)
AWS Copilot always requires the App, Env, and Name parameters to be defined in your template.

Resources는 실제 사용할 AWS Resource PolicyDocument Statement에 사용할 Resource의 Sid, Effect, Action, Resource를 작성하면 됩니다.

Sid: SQS-A
Effect: Allow
Action:
  - sqs:SendMessage
Resource: arn:aws:sqs:ap-northeast-2:000000000000:sqs-a
Enter fullscreen mode Exit fullscreen mode

예를 들어, sqs-a에 sqs message 전송 권한을 주고싶으면 위와 같이 Action에 권한 Resource에는 실제 arn값을 작성하면됩니다. Sid는 StatementId 입니다. (참고. IAM sid)

추가로 sqs-b에 전송 권한을 주고싶다면 아래와같이 작성하면 됩니다.

Sid: SQS-B
Effect: Allow
Action:
  - sqs:SendMessage
Resource: arn:aws:sqs:ap-northeast-2:000000000000:sqs-b
Enter fullscreen mode Exit fullscreen mode

작성된 전체 yml은 아래와 같습니다. IAM 권한은 copilot이 deploy되면서 addons yml에 따라서 자동으로 IAM 권한을 만들어서 설정해줍니다.

Parameters:
  App:
    Type: String
  Env:
    Type: String
  Name:
    Type: String

Resources:
  SQSAccessPolicy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      PolicyDocument:
        Version: 2012-10-17
        Statement:
          - Sid: SQS-A
            Effect: Allow
            Action:
              - sqs:SendMessage
            Resource: arn:aws:sqs:ap-northeast-2:000000000000:sqs-a
          - Sid: SQS-B
            Effect: Allow
            Action:
              - sqs:SendMessage
            Resource: arn:aws:sqs:ap-northeast-2:000000000000:sqs-b

Outputs:
  SQSAccessPolicyArn:
    Description: "Sqs 메시지 전송 권한"
    Value: !Ref SQSAccessPolicy
Enter fullscreen mode Exit fullscreen mode

기대효과

  • IAM 권한이 템플릿화 되어서 이상적인 서버 구조가 될 수 있음!!
💖 💪 🙅 🚩
hyeonjun
HyeonJun

Posted on June 13, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related