0 명령서버 1대 생성 aws s3 ls global 버전 ec2로 생성하면 권한이 부여되어 있다. 없다면, role로 권한 주기 1 1단계: AWS 사전 준비 (Console) 가장 먼저 모델 사용 권한을 확보해야 합니다. AWS Console 로그인 후 서울 리전(ap-northeast-2) 선택. Amazon Bedrock > 모델 카탈로그 메뉴 이동. Claude 3.5 Sonnet 모델 Amazon Bedrock에서 번거로운 'Model Access' 신청 페이지가 사라지고, 처음 호출할 때 자동으로 활성화되는 방식으로 바뀌었네요. (사용자 입장에서 훨씬 편해졌습니다!) 하지만 공유해 주신 메시지 안에 여전히 "Access Denied"가 발생할 수 있는 결정적인 힌트가 들어있습니다. 다음 두 가지를 확인해 보세요. 1. Anthropic 모델의 '추가 정보 제출' (가장 유력) 메시지 중간을 보시면 이렇게 적혀 있습니다: "Note that for Anthropic models, first-time users may need to submit use case details before they can access the model." Claude 모델(Anthropic)을 처음 사용하는 계정이라면, 단순히 호출만 해서는 안 되고 사용 사례(Use Case) 정보를 한 번은 제출해야 할 수도 있습니다. 해결 방법: AWS 콘솔에서 Bedrock > Model catalog로 이동하여 Claude 3.5 Sonnet을 선택한 뒤, Playground에서 아무 질문이나 던져보세요. 이때 사용 사례 정보를 입력하라는 팝업이 뜨면 내용을 작성해 제출해야 합니다. 그 작업이 완료되어야 Terraform API 호출도 정상 작동합니다. 2 2단계: 에이전트의 '손' 만들기 (Lambda) 에이전트가 실제로 업무(API 호출 등)를 수행할 로직을 작성하고 압축합니다. 코드 작성: index.py 파일 생성 (앞서 만든 행운 메시지 코드 등). 압축: zip lambda_function.zip index.py 실행. 이 파일이 있어야 Terraform이 에러 없이 배포됩니다. # 1. Lambda 소스 코드 작성 (간단한 행운 메시지 생성기) cat < index.py import random def handler(event, context): fortunes = [ "오늘은 새로운 기회가 찾아올 것입니다!", "진행 중인 프로젝트가 성공적으로 마무리될 기미가 보입니다.", "동료와의 협업에서 큰 영감을 얻을 날입니다.", "잠시 쉬어가는 것이 더 큰 도약을 만들어줄 거예요." ] message = random.choice(fortunes) # Bedrock Agent 응답 규격 response_body = { "TEXT": { "body": f"오늘의 업무 행운 메시지: {message}" } } return { 'response': { 'actionGroup': event['actionGroup'], 'apiPath': event['apiPath'], 'httpMethod': event['httpMethod'], 'httpStatusCode': 200, 'responseBody': response_body } } EOF # 2. Lambda 코드 압축 zip lambda_function.zip index.py # 3. Terraform 메인 코드 작성 cat < main.tf provider "aws" { region = "ap-northeast-2" # 서울 리전 } # IAM Role: Bedrock Agent용 resource "aws_iam_role" "agent_role" { name = "simple-agent-role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [{ Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "bedrock.amazonaws.com" } }] }) } resource "aws_iam_role_policy" "agent_policy" { name = "bedrock-agent-policy" role = aws_iam_role.agent_role.id policy = jsonencode({ Version = "2012-10-17" Statement = [{ Action = "bedrock:InvokeModel" Effect = "Allow" Resource = "arn:aws:bedrock:ap-northeast-2::foundation-model/anthropic.claude-3-5-sonnet-20240620-v1:0" }] }) } # Bedrock Agent 생성 resource "aws_bedrockagent_agent" "simple_agent" { agent_name = "simple-fortune-agent" foundation_model = "anthropic.claude-3-5-sonnet-20240620-v1:0" instruction = "당신은 사용자의 업무 사기를 북돋아주는 비서입니다. 행운 메시지 API를 호출하여 사용자에게 긍정적인 메시지를 전달하세요. 한국어로 답변하세요." agent_resource_role_arn = aws_iam_role.agent_role.arn idle_session_ttl_in_seconds = 600 } # IAM Role: Lambda용 resource "aws_iam_role" "lambda_role" { name = "simple-agent-lambda-role" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [{ Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "lambda.amazonaws.com" } }] }) } resource "aws_iam_role_policy_attachment" "lambda_basic" { role = aws_iam_role.lambda_role.name policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" } # Lambda 함수 생성 resource "aws_lambda_function" "fortune_lambda" { filename = "lambda_function.zip" function_name = "fortune-api-handler" role = aws_iam_role.lambda_role.arn handler = "index.handler" runtime = "python3.11" } # Bedrock이 Lambda를 호출할 수 있게 허용 resource "aws_lambda_permission" "allow_bedrock" { statement_id = "AllowBedrockInvocation" action = "lambda:InvokeFunction" function_name = aws_lambda_function.fortune_lambda.function_name principal = "bedrock.amazonaws.com" source_arn = aws_bedrockagent_agent.simple_agent.agent_arn } EOF 3단계: 인프라 정의 및 배포 (Terraform) cat 명령어로 만든 main.tf를 실행하여 모든 리소스를 한 번에 생성합니다. terraform init terraform apply -auto-approve 초기화: terraform init (Provider 및 모듈 다운로드). 검토: terraform plan (생성될 리소스 확인). 실행: terraform apply -auto-approve (실제 배포). ---------- 11. 생성된거 확인하는법 1 작성하신 Terraform 코드는 Amazon Bedrock Agent와 이를 지원하는 Lambda 함수를 구성하는 코드입니다. 배포가 완료된 후 AWS 콘솔에서 리소스를 확인하는 방법을 단계별로 안내해 드립니다. 1. Bedrock Agent 확인 (가장 중요) Bedrock Agent는 설정이 조금 깊숙이 숨어 있습니다. AWS Console에 로그인 후 Amazon Bedrock 서비스로 이동합니다. 왼쪽 사이드바 메뉴에서 건축(Orchestration) 섹션 아래의 Agents를 클릭합니다. 목록에서 simple-fortune-agent라는 이름의 에이전트를 클릭합니다. 상세 페이지 확인 사항: Model: Claude 3.5 Sonnet이 설정되어 있는지 확인합니다. Instructions: 입력하신 "당신은 사용자의 업무 사기를 북돋아주는 비서입니다..." 문구가 잘 들어갔는지 확인합니다. Action Groups: (현재 코드에는 Action Group 정의가 생략되어 있으나, 실제 작동을 위해서는 여기서 Lambda와 연결된 액션 그룹이 보여야 합니다.) 2 2. Lambda 함수 확인 Bedrock Agent가 실제 '행운 메시지'를 가져오기 위해 호출하는 뒷단(Backend)입니다. Lambda 서비스로 이동합니다. Functions 목록에서 fortune-api-handler를 찾아 클릭합니다. 확인 사항: Code 탭: index.py 파일의 내용이 잘 업로드되었는지 확인합니다. Configuration 탭 > Permissions: 아래쪽에 Resource-based policy statements 부분에 bedrock.amazonaws.com이 이 함수를 호출할 수 있는 권한(AllowBedrockInvocation)이 있는지 확인합니다. 3 3. IAM 역할(Role) 확인 권한 문제로 에이전트가 작동하지 않는 경우가 많으니 여기서 확인하세요. IAM 서비스로 이동하여 Roles를 클릭합니다. 두 가지 역할을 검색합니다: simple-agent-role: Trust relationships 탭에 bedrock.amazonaws.com이 있어야 합니다. simple-agent-lambda-role: Permissions 탭에 AWSLambdaBasicExecutionRole이 연결되어 있어야 합니다. 4 추가 팁: 에이전트 테스트하기 리소스를 확인하는 것만으로는 실제로 작동하는지 알기 어렵습니다. Bedrock Agent 콘솔 우측에는 Test window가 있습니다. Bedrock Agent 상세 페이지 우측의 Test 창을 엽니다. 채팅창에 "오늘 내 운세가 어때?" 또는 "응원 메시지 하나 줘"라고 입력해 보세요. 오늘 내 운세가 어때? 응원 메시지 하나 줘 --------------- 주의: 현재 코드에는 aws_bedrockagent_agent_action_group 리소스가 빠져 있어, 에이전트가 Lambda를 호출해야 한다는 사실을 모를 수 있습니다. 제대로 작동하게 하려면 Terraform에 Action Group 설정을 추가하고 Prepare Agent 버튼을 눌러야 합니다. 4 참고 사항 서울 리전(ap-northeast-2)에서 Bedrock 모델을 사용하려면, Bedrock 콘솔 > Model access 메뉴에서 Anthropic - Claude 3.5 Sonnet 모델 사용 권한이 'Access granted' 상태여야 합니다. 권한이 없다면 [Edit] 버튼을 눌러 요청(Request)해야 리소스 생성이 정상적으로 완료됩니다. ----------------- 4단계: 에이전트 구성 완료 (Bedrock Console) Terraform으로 뼈대를 만들었다면, 이제 에이전트가 배운 내용을 적용해야 합니다. Bedrock > Agents에서 생성된 에이전트(simple-fortune-agent) 선택. Prepare: 수정 사항이 반영되도록 'Prepare' 버튼 클릭. Alias & Version: (선택 사항) 테스트가 끝나면 버전을 생성하여 고정된 엔드포인트를 만듭니다. 5단계: 대화 및 테스트 (Verification) 실제로 에이전트가 가상화된 환경에서 잘 작동하는지 확인합니다. Test window: 에이전트 상세 페이지 우측의 테스트 창 활용. 프롬프트 입력: "오늘의 행운 메시지 알려줘" 또는 "업무 자동화 시작해" 입력. 오늘 내 운세가 어때? 응원 메시지 하나 줘 결과 확인: 에이전트가 Lambda를 호출하여 값을 가져오고 자연스러운 한국어로 답변하는지 확인. 요약 체크 리스트 1. 모델 권한 활성화 AWS Console 2. 실행 로직(Python) 작성 및 압축 터미널 (zip) 3. 인프라 자동 배포 Terraform 4. 에이전트 준비(Prepare) 및 빌드 Bedrock Console 5. 최종 기능 테스트 Bedrock Test 창 --------------------------