Console
SST Console을 통해 앱을 관리하고 모니터링하세요.
콘솔
콘솔은 여러분의 SST 앱을 관리할 수 있는 웹 기반 대시보드입니다. 이를 통해 함수를 호출하고, 문제를 디버깅하며, 로그를 확인하고, 팀과 함께 git push로 앱을 배포할 수 있습니다. — console.sst.dev
시작하기
먼저 계정을 만들고 AWS 계정을 연결하세요.
-
이메일로 계정 만들기
나중에 팀원을 워크스페이스에 초대할 수 있도록 회사 이메일을 사용하는 것이 좋습니다. — console.sst.dev
-
워크스페이스 생성
앱을 추가하고 팀원을 워크스페이스에 초대할 수 있습니다. 워크스페이스는 개인 프로젝트나 회사 팀을 위해 만들 수 있습니다. 원하는 만큼 워크스페이스를 생성할 수 있습니다.
-
AWS 계정 연결
이 과정에서 AWS 계정에 CloudFormation 스택을 생성하라는 메시지가 표시됩니다. 이 스택이 us-east-1에 추가되는지 확인한 후 아래로 스크롤하여 스택 생성을 클릭하세요.
이 스택은 계정의 모든 리전에서 SST 앱을 스캔하고 구독합니다. 생성이 완료되면 모든 앱, 스테이지, 그리고 앱 내의 함수를 확인할 수 있습니다.
-
팀원 초대
팀원의 이메일 주소를 사용하여 초대하세요. 초대받은 팀원은 해당 이메일로 로그인하면 워크스페이스에 참여할 수 있습니다.
작동 원리
전체적인 작동 방식을 간단히 설명하면 다음과 같습니다.
-
우리 측에서 호스팅
여러분이 배포한 리소스에 대한 메타데이터를 저장합니다. 향후 자체 호스팅이 가능한 버전을 제공할 예정입니다.
-
모든 앱과 스테이지를 확인 가능
AWS 계정을 연결하면 별도의 CloudFormation 스택을 배포하고, 해당 스택 내의 SST 앱에 연결됩니다. 그러면 모든 앱과 스테이지가 자동으로 표시됩니다.
-
앱 관리 기능 제공
앱 내의 모든 함수를 확인할 수 있습니다. 소스 맵이 자동으로 적용된 상태에서 함수의 문제를 실시간으로 확인할 수 있습니다. 로그를 확인하거나 함수를 호출하고, 호출을 재생할 수도 있습니다. 이벤트 페이로드를 작업 공간에 저장할 수도 있습니다.
Live로 실행 중인 함수의 경우, 로그가 로컬 머신에서 실시간으로 스트리밍됩니다.
-
오픈소스이며 SST로 구축, Seed로 배포
콘솔은 풀스택 SST 앱입니다. GitHub에서 소스 코드를 확인할 수 있습니다.
보안
콘솔에서 사용하는 CloudFormation 스택은 여러분의 계정에 IAM 역할을 생성하여 리소스를 관리합니다. 프로덕션 환경에서 이 부분이 우려된다면 몇 가지 옵션이 있습니다.
기본적으로 이 역할에는 AdministratorAccess 권한이 부여되지만, 접근을 제한하도록 커스텀할 수 있습니다. 아래에서 이에 대해 살펴보겠습니다. 또한, BAA(Business Associate Agreement) 서명을 원하시면 문의하기를 통해 연락 주세요.
AWS 계정에서 데이터가 외부로 유출되는 것을 원하지 않는 경우도 있을 수 있습니다. 이를 위해 향후 콘솔을 자체 호스팅할 수 있도록 지원할 예정입니다.
IAM 권한
콘솔의 권한은 읽기와 쓰기 두 가지 범주로 나뉩니다:
-
읽기 권한: 콘솔은 여러분의 SST 앱 내 리소스에 대한 정보를 표시하기 위해 특정 권한이 필요합니다.
목적 AWS IAM 액션 스택 출력 가져오기 cloudformation:DescribeStacks함수 런타임 및 크기 조회 lambda:GetFunction스택 메타데이터 접근 ec2:DescribeRegionss3:GetObjects3:ListBucket함수 로그 표시 logs:DescribeLogStreamslogs:FilterLogEventslogs:GetLogEventslogs:StartQuery호출 사용량 모니터링 cloudwatch:GetMetricData포괄적인 읽기 접근을 위해 IAM 역할에
arn:aws:iam::aws:policy/ReadOnlyAccessAWS 관리형 정책을 연결하세요. -
쓰기 권한: 콘솔은 다음과 같은 쓰기 권한이 필요합니다.
목적 AWS IAM 액션 부트스트랩 버킷 이벤트를 이벤트 버스로 전달 s3:PutBucketNotification콘솔로 이벤트 전송 events:PutRuleevents:PutTargets콘솔을 위한 이벤트 버스 접근 권한 부여 iam:CreateRoleiam:DeleteRoleiam:DeleteRolePolicyiam:PassRoleiam:PutRolePolicy이슈가 로그를 구독할 수 있도록 설정 logs:CreateLogGrouplogs:PutSubscriptionFilterLambda 함수 호출 및 호출 재생 lambda:InvokeFunction
이 정책들을 주기적으로 검토하고 업데이트하는 것이 좋습니다.
정책 커스터마이징
CloudFormation 스택에 대한 IAM 권한을 커스터마이징하려면:
-
CloudFormation 스택 생성 페이지에서 기본
template.json파일을 다운로드합니다. -
필요한 변경 사항을 적용하여 템플릿 파일을 수정합니다.
템플릿 변경 사항 보기
template.json "SSTRole": {"Type": "AWS::IAM::Role","Properties": {..."ManagedPolicyArns": ["arn:aws:iam::aws:policy/AdministratorAccess""arn:aws:iam::aws:policy/ReadOnlyAccess"],"Policies": [{"PolicyName": "SSTPolicy","PolicyDocument": {"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["s3:PutBucketNotification"],"Resource": ["arn:aws:s3:::sstbootstrap-*"]},{"Effect": "Allow","Action": ["events:PutRule","events:PutTargets"],"Resource": {"Fn::Sub": "arn:aws:events:*:${AWS::AccountId}:rule/SSTConsole*"}},{"Effect": "Allow","Action": ["iam:CreateRole","iam:DeleteRole","iam:DeleteRolePolicy","iam:PassRole","iam:PutRolePolicy"],"Resource": {"Fn::Sub": "arn:aws:iam::${AWS::AccountId}:role/SSTConsolePublisher*"}},{"Effect": "Allow","Action": ["logs:CreateLogGroup","logs:PutSubscriptionFilter"],"Resource": {"Fn::Sub": "arn:aws:logs:*:${AWS::AccountId}:log-group:*"}},{"Effect": "Allow","Action": ["lambda:InvokeFunction"],"Resource": {"Fn::Sub": "arn:aws:lambda:*:${AWS::AccountId}:function:*"}}]}}]}} -
수정한
template.json파일을 S3 버킷에 업로드합니다. -
CloudFormation 스택 생성 페이지로 돌아가서 페이지 URL의 템플릿 URL을 교체합니다.
가격 정책
콘솔 가격은 여러분의 SST 앱에 있는 Lambda 함수가 한 달 동안 호출된 횟수를 기준으로 책정됩니다. 아래와 같은 요금제를 사용합니다.
| 호출 횟수 | 요금 (호출당) |
|---|---|
| 처음 100만 회 | 무료 |
| 100만 - 1000만 회 | $0.00002 |
| 1000만 회 이상 | $0.000002 |
주의할 점은 다음과 같습니다.
- 이 요금은 특정 작업 공간에 대해 매월 계산됩니다.
- 개인용 스테이지에는 적용되지 않으며, 영원히 무료입니다.
- 모든 계정에 대해 Issues에 대한 소프트 리밋이 있습니다.
- 대량 요금제에 대해서는 문의하기를 통해 연락 주세요.
기능
콘솔이 제공하는 주요 기능을 소개합니다.
- 로그: 앱 내 함수의 로그를 확인
- 이슈: 함수에서 발생한 오류에 대한 실시간 알림
- 로컬 로그: 로컬
sst dev세션의 로그 확인 - 리소스: 앱 내 리소스와 그 기록 확인
- 자동 배포: 저장소에 git push 시 앱 자동 배포
로그
콘솔을 사용하면 함수, 컨테이너 및 기타 로그 그룹의 로그를 확인하기 위해 CloudWatch로 이동할 필요가 없습니다. 다음을 확인할 수 있습니다:
- 과거 로그
- 실시간 로그
- 특정 시간으로 이동

이슈
콘솔은 여러분의 Node.js Lambda 함수에서 발생하는 모든 오류를 실시간으로 보여줍니다. 그리고 Slack이나 이메일을 통해 알림을 보냅니다.

이슈 기능에는 다음과 같은 특징이 있습니다:
- 설정할 필요 없음, 코드를 수정할 필요 없음
- 소스 맵이 자동으로 지원됨
- 성능이나 콜드 스타트에 영향 없음, 함수가 수정되지 않기 때문
현재 이슈 기능은 Node.js 함수만 지원합니다. 다른 런타임과 컨테이너 지원은 로드맵에 있습니다.
내부 동작 방식
작동 방식을 설명합니다.
- 앱이 배포되거나 계정이 처음 동기화될 때, 여러분의 Lambda 함수에 로그 구독자를 추가합니다.
- 최대 2개의 구독자만 허용됩니다. 자세한 내용은 아래에서 설명합니다.
- 구독자는 오류처럼 보이는 항목을 필터링하고 해당 로그 라인을 처리합니다.
- 오류 스택 트레이스에 소스 맵을 적용합니다.
- 마지막으로 비슷해 보이는 오류들을 그룹화합니다.
로그 구독자 추가
Lambda 함수에 로그 구독자를 추가하는 과정이 실패할 수 있습니다. 이는 다음과 같은 경우에 발생할 수 있습니다:
- 구독자를 추가할 충분한 권한이 없는 경우. 이 경우 Console에 부여한 권한을 업데이트해야 합니다.
- 구독자 수 제한에 도달한 경우. 이 문제를 해결하려면 기존 구독자 중 하나를 제거하면 됩니다.
이러한 오류는 Issues 탭에서 확인할 수 있습니다. 문제를 해결한 후 Retry를 클릭하면 구독자를 다시 추가하려고 시도합니다.
오류 감지
이슈 보고서는 Lambda 함수 실패를 알려줍니다. 또한 Node.js의 경우 console.error(new Error("my-error"))를 사용하여 로깅된 오류도 보고합니다.
콘솔이 자동으로 오류를 보고하려면 console.error 호출 시 오류 객체를 전달해야 합니다.
console.error(new Error("my-error"));제한 사항
워크스페이스당 시간당 10,000개의 이슈라는 소프트 제한이 있습니다. 계정이 이 제한을 초과하면 이슈가 일시적으로 중지됩니다. 이런 상황이 발생하면 문의하기를 통해 연락할 수 있습니다.
로컬 로그
콘솔이 시작되면, 여러분이 로컬에서 sst dev를 실행 중인지 확인합니다. 만약 그렇다면, 로컬 터미널에서 실시간 로그를 보여줍니다. 이 기능은 SST CLI의 일부로 실행되는 로컬 서버에 연결하여 작동합니다.

로컬 서버는 localhost와 console.sst.dev에서만 접근을 허용합니다.
로컬 로그는 모든 브라우저와 환경에서 작동합니다. 하지만 Safari나 Brave, Gitpod 같은 특정 브라우저에서는 추가 설정이 필요합니다.
Safari & Brave
Safari와 Brave 같은 특정 브라우저는 브라우저와 sst dev CLI 간의 로컬 연결이 HTTPS로 실행되어야 합니다.
SST는 sst cert 커맨드를 사용해 로컬에서 신뢰할 수 있는 인증서를 자동으로 생성할 수 있습니다.
sst cert이 명령은 여러분의 머신에서 한 번만 실행하면 됩니다.
Gitpod
Gitpod를 사용 중이라면, Gitpod Local Companion 앱을 사용해 Gitpod 워크스페이스 내에서 실행 중인 sst dev 프로세스에 연결할 수 있습니다.
시작하려면:
- Gitpod Local Companion 앱 설치
- Companion 앱 실행
- 브라우저에서 콘솔로 이동
Companion 앱은 로컬에서 실행되며 Gitpod 워크스페이스로 터널링된 연결을 생성합니다.
리소스
콘솔은 여러분의 앱에 있는 리소스의 상태를 완벽하게 보여줍니다. 다음을 확인할 수 있습니다:
- 앱 내의 각 리소스
- 리소스 간의 관계
- 특정 리소스의 출력값
- 리소스의 전체 URN
- 리소스가 생성되거나 수정된 업데이트

업데이트 기록
콘솔은 앱에 적용된 모든 업데이트와 업데이트 과정에서 수정된 리소스를 추적합니다.
또한 업데이트를 트리거한 SST 커맨드도 표시됩니다. 만약 업데이트가 자동 배포의 일부였다면, 관련된 git 커밋도 함께 보여줍니다.
자동 배포
콘솔은 여러분이 GitHub 저장소에 git push를 할 때 앱을 자동으로 배포할 수 있습니다. 자동 배포는 여러분의 계정에서 AWS CodeBuild를 사용하여 빌드를 실행합니다.

우리는 자동 배포를 GitHub Actions나 CircleCI 같은 대안들보다 SST 앱에 더 적합하도록 설계했습니다.
- 시작하기 쉬움
- 자동 배포는 표준 브랜치와 PR 워크플로우를 기본적으로 지원합니다. 시작하기 위해 설정 파일이 필요하지 않습니다.
- AWS 자격 증명을 구성하는 데 복잡한 단계가 없습니다. 여러분의 AWS 계정이 이미 콘솔에 연결되어 있기 때문입니다.
- 구성 가능
sst.config.ts를 통해 자동 배포가 어떻게 동작하는지 직접 구성할 수 있습니다.- 타입 안전하며, 콜백을 통해 들어오는 git 이벤트에 어떻게 응답할지 커스터마이즈할 수 있습니다.
- 여러분의 AWS 계정에서 실행
- 빌드는 여러분의 AWS 계정에서 실행됩니다.
- VPC에서 실행되도록 구성할 수도 있습니다. 이는 빌드가 프라이빗 리소스에 접근해야 할 때 유용합니다.
- 콘솔과 통합
- 배포에서 어떤 리소스가 업데이트되었는지 확인할 수 있습니다.
- 리소스 업데이트는 관련된 git 커밋도 보여줍니다.
자동 배포는 베타 버전 동안 무료입니다. 하지만 AWS는 사용된 CodeBuild 빌드 시간에 대해 요금을 청구합니다. CodeBuild 가격에 대해 자세히 알아보기.
설정
Autodeploy를 시작하려면 다음 단계를 따르세요:
-
GitHub 통합 활성화
워크스페이스 설정 > 통합으로 이동하여 GitHub를 활성화하세요. GitHub에 로그인하라는 메시지가 표시되며, 연결하려는 GitHub 조직이나 사용자를 선택하라는 메시지가 나타납니다.
여러 GitHub 조직이 있는 경우, 콘솔에서 여러 워크스페이스를 생성할 수 있습니다.
-
리포지토리 연결
앱을 자동 배포하려면 앱 설정 > Autodeploy로 이동하여 앱의 리포지토리를 선택하세요.
-
환경 구성
다음으로, 스테이지를 선택하여 AWS 계정에 배포할 브랜치나 PR 환경을 구성할 수 있습니다. 필요에 따라 환경 변수도 구성할 수 있습니다.
기본적으로 스테이지는 브랜치 이름이나 PR을 기반으로 합니다. 이에 대해 아래에서 자세히 살펴보겠습니다.
-
Git push
마지막으로, 구성한 환경에 _git push_를 하고 앱의 Autodeploy 탭으로 이동하여 동작을 확인하세요.
예를 들어,
production스테이지에 대한 브랜치 환경을 구성하면,production브랜치에 git push할 때마다 자동으로 배포됩니다. 마찬가지로, 새로운 PR(예: PR#12)을 생성하면 콘솔에서pr-12라는 스테이지를 자동으로 배포합니다.또한, 콘솔에서 Git ref와 배포할 스테이지를 전달하여 수동으로 배포를 트리거할 수도 있습니다.
-
알림 설정
배포가 정상적으로 작동하면, 콘솔에서 배포에 대한 알림을 설정할 수 있습니다. 워크스페이스 설정 > 알림으로 이동하여 Autodeploy에 대한 알림을 추가하거나, Autodeploy 오류 시에만 알림을 받도록 설정할 수 있습니다.
Autodeploy는 기본적으로 표준 브랜치 및 PR 워크플로를 지원하지만, sst.config.ts를 통해 세부적으로 구성할 수 있습니다.
설정
위 내용은 sst.config.ts 파일의 console.autodeploy 옵션을 통해 설정할 수 있습니다.
export default $config({ // 앱 설정 app(input) { }, // 앱 리소스 async run() { }, // 앱 Console 설정 console: { autodeploy: { target(event) { if (event.type === "branch" && event.branch === "main" && event.action === "pushed") { return { stage: "production" }; } } } }});위 예제에서는 console.autodeploy.target 옵션을 사용해 git 이벤트에 연결된 스테이지를 변경합니다. main 브랜치에 푸시가 발생할 때만 production 스테이지로 자동 배포됩니다.
target이 undefined를 반환하면 배포가 건너뛰어집니다. 또한 target 콜백을 직접 제공하면 기본 동작을 덮어씁니다.
console.autodeploy.runner 옵션을 통해 사용할 러너를 설정할 수 있습니다. 예를 들어, 타임아웃을 2시간으로 늘릴 수 있습니다.
console: { autodeploy: { runner: { timeout: "2 hours" } }}이 옵션은 스테이지 이름도 받기 때문에 특정 스테이지에 대한 러너 설정을 할 수 있습니다.
console: { autodeploy: { runner(stage) { if (stage === "production") return { timeout: "3 hours" }; } }}빌드를 VPC 내부에서 실행하도록 설정할 수도 있습니다.
console: { autodeploy: { runner: { vpc: { id: "vpc-0be8fa4de860618bb", securityGroups: ["sg-0399348378a4c256c"], subnets: ["subnet-0b6a2b73896dc8c4c", "subnet-021389ebee680c2f0"] } } }}또는 캐시할 파일과 디렉토리를 지정할 수 있습니다.
console: { autodeploy: { runner: { cache: { paths: ["node_modules", "/path/to/cache"] } } }}console.autodeploy 설정에 대해 더 알아보세요.
환경 설정
콘솔은 자동 배포를 수행할 계정을 알아야 합니다. 이 설정은 앱 설정 > 자동 배포에서 구성할 수 있습니다. 각 환경은 다음 정보를 포함합니다:
-
스테이지
배포할 스테이지입니다. 기본적으로 스테이지 이름은 브랜치 이름에서 가져옵니다. 브랜치 이름은 문자, 숫자, 하이픈만 포함하도록 정리됩니다. 예를 들어:
production브랜치에 푸시하면production스테이지로 배포됩니다.- PR#12에 푸시하면
pr-12스테이지로 배포됩니다.
위에서 언급한 대로,
sst.config.ts를 통해 이 설정을 커스터마이징할 수 있습니다.여러 스테이지가 동일한 환경을 공유하는 경우, glob 패턴을 사용할 수 있습니다. 예를 들어,
pr-*는pr-로 시작하는 모든 스테이지와 일치합니다. -
AWS 계정
배포할 AWS 계정입니다.
-
환경 변수
빌드 프로세스에 필요한 환경 변수입니다. 이 변수들은
sst.config.ts에서process.env.*로 사용할 수 있습니다.
동작 원리
여러분이 브랜치, 풀 리퀘스트, 태그에 _git push_를 하면 다음과 같은 과정이 진행됩니다:
console.autodeploy.target콜백을 기반으로 스테이지 이름이 생성됩니다.- 콜백이 없으면 브랜치나 태그의 이름을 정제한 버전이 스테이지 이름으로 사용됩니다.
- 콜백이 있지만 스테이지가 반환되지 않으면 배포가 건너뜁니다.
- 스테이지는 Console의 환경과 매칭되어 AWS 계정과 배포에 필요한 환경 변수를 가져옵니다.
console.autodeploy.runner를 기반으로 러너 설정이 생성됩니다. 또는 기본값이 사용됩니다.- 위의 설정을 기반으로 배포가 실행됩니다.
이 과정은 git 이벤트에만 적용됩니다. Console을 통해 배포를 트리거하면 배포할 스테이지를 지정하라는 메시지가 표시됩니다. 이 경우 위의 1단계를 건너뛰고 console.autodeploy.target을 호출하지 않습니다.
target과 runner는 모두 선택 사항이며 기본값이 제공되지만, 커스터마이징할 수 있습니다.
FAQ
-
SST를 사용하려면 Console이 필요한가요?
SST를 사용하기 위해 Console이 필요하지 않습니다. Console은 터미널의 로컬 로그를 더 편리한 UI로 보여줍니다.
-
Console 비용을 지불하고 싶지 않다면 어떻게 해야 하나요?
여전히 팀원을 초대하고 로컬 로그와 스테이지를 확인하는 데 사용할 수 있습니다.
-
시작하려면 신용카드가 필요한가요?
Console은 시작할 때 무료이며 신용카드가 필요하지 않습니다.
-
어떤 Lambda 함수가 호출 횟수에 포함되나요?
호출 횟수는 SST 앱의 Lambda 함수에만 적용됩니다. AWS 계정의 다른 Lambda 함수는 포함되지 않습니다.
-
개인 스테이지의 함수도 호출 횟수에 포함되나요?
로컬에서 호출된 Lambda 함수는 포함되지 않습니다.
-
무료 티어를 초과하면 개인 스테이지에 접근할 수 있나요?
프로덕션 스테이지에서 무료 티어를 초과하더라도 개인 스테이지에 접근할 수 있습니다. 단,
sst dev가 로컬에서 실행 중인지 확인해야 합니다. 그렇지 않으면 Console이 개인 스테이지임을 감지할 수 없습니다. -
호출량이 나열된 티어보다 훨씬 높습니다. 다른 옵션이 있나요?
문의하기를 통해 적합한 가격 정책을 논의할 수 있습니다.
추가 질문이 있다면 이메일로 문의해 주세요.
